用89C2051的最简单的电子钟(含电路图及用C51编写的源程....doc_第1页
用89C2051的最简单的电子钟(含电路图及用C51编写的源程....doc_第2页
用89C2051的最简单的电子钟(含电路图及用C51编写的源程....doc_第3页
用89C2051的最简单的电子钟(含电路图及用C51编写的源程....doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

用89C2051的最简单的电子钟(含电路图及用C51编写的源程序清单)附:用C51编写的源程序清单(已由实验板运行通过)#include /*包含器件配置文件*/#define uchar unsigned char#define uint unsigned intchar DATA_7SEG10=0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90,;/*09的数码管段码*/uchar hour=0,min=0,sec=0;/*时、分、秒单元清零*/uchar deda=0; /*5mS计数单元清零*/ uchar t_hour=0,t_min=0; /*闹时时、分单元清零*/bit d_05s=0; /*0.5秒标志*/bit o_f=0; /*闹时启/停标志*/uchar set=0;/*模式设定标志*/uchar m=0;uchar flag=0;/*RAM掉电标志*/void delay(uint k);/*延时子函数*/void conv();/*走时单元转换*/void p_out();/*判别闹时到否子函数*/void dirve();/*走时时间输出驱动子函数*/void t_dirve();/*闹时时间输出驱动子函数*/*闹时启/停子函数*/void time1_of()uchar m;if(P3_7=0)delay(1);if(P3_7=0)o_f=1;for(m=0;m30;m+)t_dirve();P1=DATA_7SEGt_min/10;P3=0xfd;delay(1);if(P3_1=0)if(o_f=1)P1_7=0;else P1_7=1;delay(1);if(P3_5=0)delay(1);if(P3_5=0)o_f=0;for(m=0;m=4)set=0;if(set=1)flag=0x55;F0:if(P3_4=0)goto F0;/*按键未释放,在此等候*/*延时子函数*/void delay(uint k)uint i,j;for(i=0;ik;i+)for(j=0;j121;j+);/*5mS定时中断服务子函数*/void zd(void) interrupt 1 TH0=-(4800/256);TL0=-(4800%256);deda+;/*调整走时时间*/void time_adj()uchar m;if(P3_5=0)delay(1);if(P3_5=0)hour+;if(hour=24)hour=0;for(m=0;m30;m+)dirve();if(P3_2=0)P1_7=0;else P1_7=1;delay(1);if(P3_7=0)delay(1);if(P3_7=0)min+;if(min=60)min=0;for(m=0;m30;m+)dirve();if(P3_2=0)P1_7=0;else P1_7=1;delay(1);/*调整闹时时间*/void time1_adj()uchar m;if(P3_5=0)delay(1);if(P3_5=0)t_hour+;if(t_hour=24)t_hour=0;for(m=0;m30;m+)t_dirve();if(P3_7=0)delay(1);if(P3_7=0)t_min+;if(t_min=60)t_min=0;for(m=0;m30;m+)t_dirve();/*时、分、秒单元及走时单元转换*/void conv()if(deda=200)sec+;deda=0;if(sec=60)min+;sec=0;if(min=60)hour+;min=0;if(hour=24)hour=0;/*走时时间输出驱动子函数*/void dirve()P1=DATA_7SEGhour/10;P3=0xf7;delay(1);P1=DATA_7SEGhour%10;P3=0xfb;delay(1);if(d_05s=1)if(P3_2=0)P1_7=0;else P1_7=1;delay(1);P1=DATA_7SEGmin/10;P3=0xfd;delay(1);if(o_f=1)if(P3_1=0)P1_7=0;else P1_7=1;delay(1);P1=DATA_7SEGmin%10;P3=0xfe;delay(1);/*闹时时间输出驱动子函数*/void t_dirve()P1=DATA_7SEGt_hour/10;P3=0xf7;delay(1);if(P3_3=0)P1_7=0;else P1_7=1;delay(1);P1=DATA_7SEGt_hour%10;P3=0xfb;delay(1);P1=DATA_7SEGt_min/10;P3=0xfd;delay(1);P1=DATA_7SEGt_min%10;P3=0xfe;delay(1);/*判别闹时到否子函数*/void p_out()if(o_f=1)if(t_hour=hour)if(t_min=min)if(P3_0=0)P1_7=0;delay(1);else P1_7=1;/*主函数*/void main()init_timer(); /*定时器T0初始化*/while(1)/*无限循环*/if(P3_4=0)scan_key();/*有按键,调用按键扫描子函数*/switch(set)/*根据set键值散转*/case 0:time();break;/*走时时间程序*/case 1:time1_adj();break;/*闹时时间调整*/case 2:time_adj();break;/*走时时间调整*/case 3:time1_of();break;/*启/停闹时*/default:break;/*其它退出*/ if(flag!=0x55)/*判断掉电标志*/for(m=0;m100;m+)/*点亮四个8字400mS*/P1=0x80;P3=0xf7;de

温馨提示

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

评论

0/150

提交评论