电子按键时钟仿真+程序数码管显示

电子按键时钟仿真+程序数码管显示

ID:1239288

大小:106.00 KB

页数:9页

时间:2017-11-09

电子按键时钟仿真+程序数码管显示_第1页
电子按键时钟仿真+程序数码管显示_第2页
电子按键时钟仿真+程序数码管显示_第3页
电子按键时钟仿真+程序数码管显示_第4页
电子按键时钟仿真+程序数码管显示_第5页
资源描述:

《电子按键时钟仿真+程序数码管显示》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、所用到元件程序#include#includesbitk1=P3^0;sbitk2=P3^1;sbitk3=P3^2;sbitLED=P3^3;sbitLED1=P3^7;//---定义ds1302使用的IO口---//sbitDSIO=P3^4;sbitRST=P3^5;sbitSCLK=P3^6;//---定义全局函数---//voidDs1302Write(ucharaddr,uchardat);ucharDs1302Read(ucharaddr);voidDs1302Init();voidD

2、s1302ReadTime();ucharTIME[7];voiddelay(uchari);voiddelay1(uchari);voidSet_RTC();voidzzh();uchartemp[4]={0xe,0x0d,0xb,0x07},DisplayData[7]={0},temp1[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voidmain(){uchari,zzh6;Ds1302Init();LED=1;LED1=1;zzh6=TIME[0];while(

3、1){Ds1302ReadTime();//读取数值DisplayData[3]=TIME[2]/16;//小时DisplayData[2]=TIME[2]&0x0f;DisplayData[1]=TIME[1]/16;//分DisplayData[0]=TIME[1]&0x0f;for(i=0;i<4;i++)//数码管显示{P0=temp1[DisplayData[3-i]];//数码管位选P2=temp[i];//数码管段选if(zzh6!=TIME[0]){zzh6=TIME[0];LED=~LED;}delay1(10);P0=

4、0x00;}if(k3==0)//判断调时按健是否按下{delay(22);if(k3==0)zzh();}}}voidzzh(){uchari,j=0;delay(20);while(1){if(k1==0){//分调数按键delay(20);if(k1==0){j=0;while((j<50)&&(k1!=0))//抖动检测{delay(10);j++;}if(DisplayData[0]<9)//读取分按键调试数值并存取DisplayData[0]++;else{DisplayData[0]=0;if(DisplayData[1]<

5、5)DisplayData[1]++;elseDisplayData[1]=0;}}}if(k2==0){//时调数按键检测delay(20);if(k2==0){j=0;while((j<50)&&(k2!=0))//抖动检测{delay(10);j++;}if(DisplayData[3]<2)//读时分按键调试数值并存取{if(DisplayData[2]<9)DisplayData[2]++;else{DisplayData[2]=0;DisplayData[3]++;}}if(DisplayData[3]==2){if(Disp

6、layData[2]<3)DisplayData[2]++;else{DisplayData[2]=0;DisplayData[3]=0;}}}}for(i=0;i<4;i++)//显示当前调试的数字{P0=temp1[DisplayData[3-i]];P2=temp[i];delay1(1);P0=0x00;}if(k3==0){delay(20);while((j<50)&&(k3!=0))//抖动检测{delay(10);j++;}Set_RTC();break;}}}voidSet_RTC()//写入改变的时间{ucharcod

7、eWRITE_RTC_ADDR1[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};uchari,*p=WRITE_RTC_ADDR1,zzh2[2]={0};zzh2[0]=DisplayData[0]+DisplayData[1]*16;zzh2[1]=DisplayData[2]+DisplayData[3]*16;Ds1302Write(0x8E,0X00);for(i=1;i<3;i++)//2次写入分时{p++;Ds1302Write(*p,zzh2[i-1]);}Ds1302Write(0x8E

8、,0x80);}voiddelay(uchari)//延时函数{uchark,j;while(i--)for(j=0;j<10;j++)for(k=130;k>0;k++);}voiddela

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。