?? main.c
字號:
//大蝦電子網為大蝦時鐘實驗板所配程序
//可以鍵切換顯示時/分顯示時鐘或者秒/分秒顯示
//可以鍵控時鐘停止和運行
//電路圖和產品地址http://shop.daxia.com/product.asp?id=682
#define uchar unsigned char //定義一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一個52標準內核的頭文件
sbit K1= P3^2; //第一個按鍵
sbit K2= P3^3; //第二個按鍵
sbit K3= P3^4; //第三個按鍵
sbit K4= P3^5; //第四個按鍵
//自己可以定義更多的按鍵
uchar code dx516[3] _at_ 0x003b;//這是為了仿真設置的
//共33個字模:依次為16個無小數點的LED顯示數碼+16個有小數點的LED數碼+1個全滅 (有些數碼管沒有小數點,其中2個小數點位置在中間的時鐘點上)
//"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","0.","1.","2.","3.","4.","5.","6.","7.","8.","9.","A.","B.","C.","D.","E.","F."," "
uchar code numcode[33]={0xa0,0xbe,0x62,0x2a,0x3c,0x29,0x21,0xba,0x20,0x28,0x30,0x25,0xe1,0x26,0x61,0x71,0x80,0x9e,0x42,0x0a,0x1c,0x09,0x01,0x9a,0x00,0x08,0x10,0x05,0xc1,0x06,0x41,0x51,0xff};
//定義時,分,秒,分秒
uchar hour=8;//小時
uchar min=0; //分
uchar sec=0; //秒
uchar fsec=0; //分秒
uchar mode=1;//顯示模式,默認為顯示秒和分秒
bit run=1; //是否計時 =1計時,=0暫停
uchar dis[4]; //4位顯示緩存
void main(void) // 主程序
{
uchar i;
RCAP2H =0xee; //1/400秒中斷一次
RCAP2L =0x00;
TR2=1; //啟動定時器
ET2=1; //打開定時器2中斷
PT2=1; //定時器2優先
EA=1; //打開總中斷
while(1) //程序循環
{
//顯示數據
if(mode==0) //顯示小時+分鐘模式
{
dis[3]=hour/10; //顯示小時
dis[2]=hour%10;
if((fsec>50)) //每一秒中的一半滅掉和顯示時鐘點
{
dis[1]=min/10; //不顯示時鐘點
dis[0]=min%10;
}
else
{
dis[1]=min/10+16; //顯示時鐘點
dis[0]=min%10+16;
}
}
else if(mode==1) //顯示秒+分秒模式
{
dis[3]=sec/10;
dis[2]=sec%10;
dis[1]=fsec/10+16; //+16把中間的時鐘點同時顯示出來
dis[0]=fsec%10+16;
}
//掃描開關
if(!K1) //顯示時,分
{
mode=0;
while(!K1);
for(i=0;i<255;i++);
}
if(!K2) //顯示秒,分秒
{
mode=1;
while(!K2);
for(i=0;i<255;i++);
}
if(!K3) //啟動計時
{
run=1;
while(!K3);
for(i=0;i<255;i++);
}
if(!K4) //停止計時
{
run=0;
while(!K4);
for(i=0;i<255;i++);
}
}
}
//定時器2中斷,兼LED掃描和時鐘
timer2() interrupt 5
{
uchar code p1line[4]={0xf7,0xfb,0xfd,0xfe}; //P1掃描線,輪流用低點品掃描4條線,掃描4個數碼管
static uchar t;
TF2=0;
t++;
//時間計時
if(t==4)
{
t=0;
if(run)fsec++; //分秒加1
if(fsec==100)
{
fsec=0;
sec++; //秒加1
if(sec==60)
{
sec=0;
min++; //分加1
if(min==60)
{
min=0;
hour++; //小時加1
if(hour==24)hour=0;
}
}
}
}
//掃描數碼管
P1= 0xff; //這句是防止出現鬼影,
P2=numcode[dis[t]];
P1= p1line[t];
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -