程序清單如下:
#include < reg51.h >// 51單片機頭文件
#define uchar unsigned char// 宏定義,用uchar替代無符號字符型
#define uint ?unsigned int// 宏定義,用uint 替代無符號整數型
sbit Key = P2 ^ 7;
uchar Count = 0;?
uchar code DataChar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'P'
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
};//延時N毫秒
void DelayNms( uint N )// 利用x、y作簡單的自減運算,消耗單片機指令周期,達到延時的目的
{
uint x,y;
for( x=N; x>0; x-- )
for( y=110; y>0; y-- );
}
//數碼管顯示? // 顯示方式為動態掃描,視覺暫留原理
void Display( uchar Num )// *p指向Main函數中的數組ShowNum的首地址
{
P0 = DataChar[ Num ];// 向P0賦段碼值
DelayNms(2);// 短暫的延時
P0 = 0x00;// 讓數碼管熄滅,否則會造成數字重疊
}
void main( void )
{
while(1)
{
if( Key == 0 )
{
DelayNms(30);
if( Key == 0 )
{
Count += 1;
Count = (Count>9)? 0 : Count;
}
while( !Key );
}
Display( Count );
}
}
擴展資料
8051單片機具有如下功能:
8位CPU·4kbytes程序存儲器(ROM) (52為8K)
128bytes的數據存儲器(RAM) (52有256bytes的RAM)
32條I/O口線·111條指令,大部分為單字節指令
21個專用寄存器
2個可編程定時/計數器·5個中斷源,2個優先級(52有6個)
壹個全雙工串行通信口
外部數據存儲器尋址空間為64kB
外部程序存儲器尋址空間為64kB
邏輯操作位尋址功能·雙列直插40PinDIP封裝
單壹+5V電源供電
CPU:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能寄存器;
RAM:用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據;
ROM:用以存放程序、壹些原始數據和表格;
I/O口:四個8位並行I/O口,既可用作輸入,也可用作輸出
T/C:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;
五個中斷源的中斷控制系統;
壹個全雙工UART(通用異步接收發送器)的串行I/O口,用於實現單片機之間或單片機與微機之間的串行通信;
片內振蕩器和時鐘產生電路,石英晶體和微調電容需要外接。最佳振蕩頻率為6M—12M。
百度百科-51單片機