#include <STC89C5xRC.H>//此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned char u8; //無符號字符形數據類型進行聲明定義 定義名稱u8 所占位數8位 范圍0~255
typedef unsigned int u16; //無符號整形數據類型進行聲明定義 定義名稱u16 所占位數16位 范圍0~65535
u8 code ma[11]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //數字"0123456789-" 共陰
u8 code wei[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //位 第一位開始點亮 0x7f 0111 1111 .........
u8 wei_num[8]; //存儲記錄數碼管8個段碼位的值 要發送數字到哪一位的暫存區
u8 shi,fen,miao; //時 分 秒 變量
/*12T 12M晶振 延時函數 Delay_ms(1)時大約1ms*/
void Delay_ms(u16 ms)
{
u8 t;
while(ms--)
{
for(t = 0; t < 98; t ++);
}
}
/*主函數*/
void main()
{
u8 i;
while(1)
{
/*數碼管顯示處理*/
wei_num[7]=ma[shi%100/10]; //顯示 時
wei_num[6]=ma[shi%10]; //
wei_num[5]=ma[10]; //顯示"-"
wei_num[4]=ma[fen%100/10]; //顯示 分
wei_num[3]=ma[fen%10]; //
wei_num[2]=ma[10]; //顯示"-"
wei_num[1]=ma[miao%100/10]; //顯示 秒
wei_num[0]=ma[miao%10]; //
for(i=0; i<8; i++)
{
P0=wei_num; //發送段碼
P2=wei; //位
Delay_ms(1); //間隔一段時間掃描
P0=0x00;//消隱
}
}
}
難道這樣還不夠明朗嗎 加上定時器加上按鍵就可以了 再說你那按鍵用while(!xx); 按鍵按下是會卡死 數碼管消滅 |