数字钟课程设计.ppt_第1页
数字钟课程设计.ppt_第2页
数字钟课程设计.ppt_第3页
数字钟课程设计.ppt_第4页
数字钟课程设计.ppt_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

半导体显示(led),液晶显示(lcd),共阳极,每字段是一只 发光二极管,三、显示译码器,数码显示器,0 0 0 0 0 0 1,1 0 0 1 1 1 1,0 0 1 0 0 1 0,0 0 0 0 1 1 0,1 0 0 1 1 0 0,0 1 0 0 1 0 0,0 1 0 0 0 0 0, 低电平驱动,0 0 0 1 1 1 1,0 0 0 0 0 0 0,0 0 0 0 1 0 0,设计一个能显示:星期、时、分、秒的数字钟。,#include #define uchar unsigned char uchar code seg710=0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f; /09数字的7段码(共阴) uchar code week_seg78=0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x7f,; /星期 uchar act8=0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f; /位选线,1有效 uchar deda, sec, min, hour, week=1; /星期、时、分、秒 变量 uchar cnt; / 刷新8个数码管的循环显示计数。,#include #define uchar unsigned char uchar code seg710 /09数字的7段码 uchar code week_seg78 /07数字的7段码表示 星期 uchar act8 /8个数码管的位选线 uchar deda, sec, min, hour, week=1; /定义变量 (50ms计数,秒、 分、 时、 星期) uchar cnt; / 刷新8个数码管的循环显示计数。,设计一个数字钟: 1、能显示:星期、时、分、秒。,void main(void) init(); while(1) conv(); ,void init(void) tmod=0x11; th0=(65536 - 50000) / 256; /t0赋初值,延时50毫秒 tl0=(65536 - 50000) % 256; et0=1; tr0=1; th1=(65536 - 1000) / 256; /t1赋初值,延时1毫秒 tl1=(65536 - 1000) % 256; et1=1; tr1=1; ea=1; ,void time0 ( void ) interrupt 1 th0=(65536 - 50000) / 256; /t0重装初值,延时50毫秒 tl0=(65536 - 50000) % 256; deda+; /每定时50毫秒,计数加 1 . ,void conv(void) if (deda=20) deda=0; sec+; if (sec=60) sec=0; min+; if (min=60) min=0; hour+; if (hour=24) hour=0;week+; if (week7) week=1; ,void time1 ( void ) interrupt 3 /刷新 显示数码管 th1=(65536 - 1000) / 256; /t1重置初值,延时1毫秒 tl1=(65536 - 1000) % 256; if(+cnt7)cnt=0; / 每8毫秒 刷新 一遍 8个数码管 switch (cnt) case 0: p0=seg7sec%10; p1=act0; break; case 1: p0=seg7sec/10; p1=act1; break; case 2: p0=seg7min%10; p1=act2; break; case 3: p0=seg7min/10; p1=act3; break; case 4: p0=seg7hour%10; p1=act4; break; case 5: p0=seg7hour/10; p1=act5; break; case 6: p0=0x00; p1=0xff; break; case 7: p0=week_seg7week; p1=act7; break; default: break; ,void main(void) init(); while(1) conv(); ,void delay(uint k) / 延时 uint data i, j; for(i=0;ik;i+) for(j=0;j121;j+); ,设计一个数字钟: 1、能显示:星期、时、分、秒。 2、能调整:星期、时、分。,uchar scan_key( void ) / 查询是否有键按下 uchar temp; p3=0xff; temp=p3; if(temp!=0xff) delay(20); temp=p3; if(temp!=0xff) return temp; / 返回键值 return 0; /无键按下,返回值为0 ,void main(void) uchar key_flag; init(); while(1) conv(); key_flag=scan_key(); / 判断是否有(调分/时/周)键按下 switch(key_flag) / 0xfb( p3.2 ), 0xf7 ( p3.3) ,0xef ( p3.4) case 0xfb: if(+min59)min=0; delay(300);

温馨提示

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

评论

0/150

提交评论