电子时钟程序代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#define uchar unsigned char
#define uint unsigned int
uchar code weixuan[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //位选,控制哪个数码管亮。(从右到左)
uchar
code
duanxuan[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf, 0xff}; //0-9,'-','灭'
uchar data timedata[3]={0x00,0x00,0x00}; //时间缓冲区,分别为:秒、时、分。
uchar data datetime[8]={0xc0,0xc0,0xbf,0xc0,0xc0,0xbf,0xc0,0xc0}; //时间缓冲区,初始化显示00-00-00。
uchar tt1,tt2,tt,tt0,num=0;
uchar flag,flag1,flag2,flash;
sbit key1=P1^3;
sbit key2=P1^5;
sbit key3=P1^7;
//**************延时函数*********************************
void delay(uint del)
{
uchar i, j;
for(i=0; i for(j=0; j<=148; j++); } //********************调用显示************************ void display() { datetime[0]=timedata[0]%10; datetime[1]=timedata[0]/10; //秒 datetime[3]=timedata[1]%10; datetime[4]=timedata[1]/10; //分 datetime[6]=timedata[2]%10; datetime[7]=timedata[2]/10; //时 if(!flag) { P2=0X80; //秒显示 P0=duanxuan[datetime[0]]; delay(2); P2=0X40; P0=duanxuan[datetime[1]]; delay(2); } else { P2=0X80; //秒显示 P0=duanxuan[datetime[0]]|flash; delay(2); P2=0X40; P0=duanxuan[datetime[1]]|flash; delay(2); } P2=0X20; //显示'-' P0=duanxuan[10]; delay(2); if(!flag1) { P2=0X10; //分显示 P0=duanxuan[datetime[3]]; delay(2); P2=0X08; P0=duanxuan[datetime[4]]; delay(2); } else { P2=0X10; //分显示 P0=duanxuan[datetime[3]]|flash; delay(2); P2=0X08; P0=duanxuan[datetime[4]]|flash; delay(2); } P2=0X04; //显示'-' P0=duanxuan[10]; delay(2); if(!flag2) { P2=0X02; //小时 P0=duanxuan[datetime[6]]; delay(2); P2=0X01; P0=duanxuan[datetime[7]]; delay(2); } else { P2=0X02; //小时 P0=duanxuan[datetime[6]]|flash; delay(2); P2=0X01; P0=duanxuan[datetime[7]]|flash; delay(2); } } /******************按键调节时间*****************************/ void keyscan() { if(key1==0) { delay(10); if(key1==0) { num++; while(!key1); while(1) { if(num==1) { flag=1; flag1=0; flag2=0; if(key2==0) { delay(10); if(key2==0) { timedata[0]--; if(timedata[0]==-1) timedata[0]=60; while(!key2); } } if(key3==0) { delay(10); if(key3==0) { timedata[0]++; if(timedata[0]==60) timedata[0]=0; while(!key3); } } } if(key1==0) { delay(10); if(key1==0) num++; while(!key1); }