基于51单片机的电子钟C语言程序[4页]
![基于51单片机的电子钟C语言程序[4页]_第1页](https://file2.sobing.com/fileroot2/2021-10/17/a8df8df7-fd1a-4b3e-baca-ee2c9aa0fcda/a8df8df7-fd1a-4b3e-baca-ee2c9aa0fcda1.gif)
![基于51单片机的电子钟C语言程序[4页]_第2页](/images/s.gif)
![基于51单片机的电子钟C语言程序[4页]_第3页](/images/s.gif)
《基于51单片机的电子钟C语言程序[4页]》由会员分享,可在线阅读,更多相关《基于51单片机的电子钟C语言程序[4页](5页珍藏版)》请在装配图网上搜索。
1、
基于51单片机的电子钟C语言程序
#include
2、har seconde=0; uchar minite=0; uchar hour=12; uchar mstcnt=0; sbit P1_0=P1^0; // second 调整定义 sbit P1_1=P1^1; //minite调整定义 sbit P1_2=P1^2; //hour调整定义 /*函数声明*/ void delay(uchar k ); //延时子程序 void time_pro( ); //时间处理子程序 void display( );
3、 //显示子程序 void keyscan( ); //键盘扫描子程序 /*****************************/ /*延时子程序*/ /****************************/ void delay (uchar k) { uchar j; while((k--)!=0) { for(j=0;j<125;j++) {;} } } /**************************/ /*时间处理子程序*/ /*****************
4、*********/ void time_pro( void) { if(seconde==60) //秒钟设为60进制 { seconde=0; minite++; if( minite==60) //分钟设为60进制 { minite=0; hour++; if(hour==24) //时钟设为24进制
5、 {hour=0; } } } } /*****************************/ /* 显示子程序*/ /*****************************/ void display(void) { P2=0xfe; P0=dispcode[hour/10]; //显示小时的十位 delay(4); P2=0xfd; P0=(d
6、ispcode[(hour%10)])|0X80; //显示小时的个位 delay(4); P2=0xfb; P0=dispcode[minite/10]; //显示分的十位 delay(4); P2=0xf7; P0=(dispcode[minite%10])|0X80; //显示分的个位 delay(4); P2=0xef; P0=dispcode[seconde/10];
7、 //显示秒的十位 delay(4); P2=0xdf; P0=dispcode[seconde%10]; //显示秒的个位 delay(4); } /*******************************/ /*键盘扫描子程序*/ /*******************************/ void keyscan (void) { if(P1_0==0) //按键1秒的调整
8、 { delay(30); if(P1_0==0) { seconde++; if(seconde==60) {seconde=0; } } } if(P1_1==0) //按键2分的调整 { delay
9、(30); if(P1_1==0) { minite++; if(minite==60) {minite=0;} } } if(P1_2==0) //按键3小时的调整 { delay(30); if(P1_2==0)
10、 { hour++; if(hour==24) {hour=0; } } } } void timer0(void) interrupt 1 using 0 //定时器0方式1,50ms中断一次 { TH0=0x3c; TMOD = 0x11; mstcnt++; if(mstcnt==20) {
11、 seconde++; mstcnt=0; //注意点。对计数单元的清零十分的重要,本次调试中就是 } //因为忽略了这一点,给我早成了很大的被动。 } /**************************/ /*主函数*/ /**************************/ void main(void) { P1=0xff; //初始化p1口,全设为1 TMOD = 0x11; //time0为定时器,方式1 TH0=0x3c; //预置计数初值 TL0=0xb0; EA=1; ET0=1; TR0=1; while (1) { keyscan( ); //按键扫描 time_pro( ); //时间处理 display( ); //显示时间 } }
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。