单片机电子钟的完整源程序12m晶振.doc_第1页
单片机电子钟的完整源程序12m晶振.doc_第2页
单片机电子钟的完整源程序12m晶振.doc_第3页
单片机电子钟的完整源程序12m晶振.doc_第4页
单片机电子钟的完整源程序12m晶振.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include #define uchar unsigned char#define uint unsigned intsbit key11=P33;sbit key12=P34;sbit key13=P35;sbit led14=P14;sbit led15=P15;unsigned char code table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/unsigned char code table=0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,008H,05EH,082H,042H,054H,041H,001H,05AH,000H,040H;/我自己板子的字库uchar hou1,hou2,min1,min2,flag;uchar i,j,k,l;uint tt,tt2;void init();void keyscan();void count();void display(uchar,uchar,uchar,uchar);void delay(uint);main()init();while(1)while(flag=0)/时钟运行状态keyscan();count();display(hou1,hou2,min1,min2);if(i=k&j=l)led14=0;if(tt%20=15)led15=0;if(tt%20=19)led15=1;while(flag=1)/时钟分钟设定状态TR0=0;keyscan();count();display(hou1,hou2,min1,min2);while(flag=2)/时钟小时设定状态keyscan();count();display(hou1,hou2,min1,min2);while(flag=3)/闹钟分钟设定状态keyscan();count();display(hou1,hou2,min1,min2);while(flag=4)/闹钟小时设定状态keyscan();count();display(hou1,hou2,min1,min2);void init()i=12;j=0;k=6;l=0;hou1=1;hou2=2;min1=0;min2=0;flag=0;TMOD=0X11;/定时器01设置方式1 一次时间0.05s0.01sTH0=(65536-50000)/256; TL0=(65535-50000)%256;TH1=(65536-20000)/256; TL1=(65535-20000)%256;EA=1;/开总中断ET0=1;/开定时器0中断ET1=1;/开定时器1中断EX0=1;/开外部中断0TR0=1;/定时器0开始工作TR1=1;/定时器1开始工作IT0=1;/外部中断下降沿触发void keyscan()/扫描独立键盘if(key11=0)delay(1);if(key11=0)/消抖flag+;if(flag=5)flag=0;TR0=1;while(!key11)/等待按键释放count();display(hou1,hou2,min1,min2);if(flag=1)/此后为时钟设定分钟扫描if(key12=0)delay(1);if(key12=0)/消抖j+;while(!key12)/等待按键释放count();display(hou1,hou2,min1,min2);if(key13=0)delay(1);if(key13=0)/消抖j-;while(!key13)/等待按键释放count();display(hou1,hou2,min1,min2);if(flag=2)/此后为时钟设定小时扫描if(key12=0)delay(1);if(key12=0)/消抖i+;while(!key12)/等待按键释放count();display(hou1,hou2,min1,min2);if(key13=0)delay(1);if(key13=0)/消抖i-;while(!key13)/等待按键释放count();display(hou1,hou2,min1,min2);if(flag=3)/此后为闹钟设定分钟扫描if(key12=0)delay(1);if(key12=0)/消抖l+;while(!key12)/等待按键释放count();display(hou1,hou2,min1,min2);if(key13=0)delay(1);if(key13=0)/消抖l-;while(!key13)/等待按键释放count();display(hou1,hou2,min1,min2);if(flag=4)/此后为闹钟设定小时扫描if(key12=0)delay(1);if(key12=0)/消抖k+;while(!key12)/等待按键释放count();display(hou1,hou2,min1,min2);if(key13=0)delay(1);if(key13=0)/消抖k-;while(!key13)/等待按键释放count();display(hou1,hou2,min1,min2);void count()if(j=60)j=00;if(flag=0)i+;if(i=24)i=00;if(j=255)j=59;if(i=255)i=23;if(l=60)l=00;if(k=24)k=00;if(l=255)l=59;if(k=255)k=23;if(flag=0|flag=1|flag=2)hou1=i/10;hou2=i%10+10;min1=j/10;min2=j%10;elsehou1=k/10;hou2=k%10+10;min1=l/10;min2=l%10;void display(uchar one,uchar two,uchar three,uchar four)P2=0x02;if(flag=2|flag=4)if(tt210)P2=0x00;P0=tableone;delay(5);P2=0x04;if(flag=2|flag=4)if(tt210)P2=0x00;P0=tabletwo;delay(5);P2=0x08;if(flag=1|flag=3)if(tt210)P2=0x00;P0=tablethree;delay(5);P2=0x10;if(flag=1|flag=3)if(tt210)P2=0x00;P0=tablefour;delay(5); void delay(uint z) /延时子函数1msuint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void et0() interrupt 1 TH0=(65536-50000)/256;TL0=(65535

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论