




免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、数字时钟的基本原理数字时钟是用数字集成电路组成,用数码管显示的一种现代化计数器。数字时钟实际上是一个对标准频率(1hz)进行计数的计数电路。振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果“时”、“分”、“秒”的数字显示出来。秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后又开始下一轮的循环计数。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需在电路上加一个校时电路可以对分和时进行校时。二、数字时钟的硬件设计1、数字时钟的电路原理图2、原器件清单序号器件名称参数数量1usb座无12usb线无13双排针(2)无14跳帽无35电容0.1uf76led灯无17电阻2k1840针座无19stc89c51无110晶振12mhz111电容20pf212复位键无113电阻10k114蜂鸣器无115三极管9015无916电阻33091716针座无118max232无119单排针(5)无120按键无421单排针(3)无1224位led无223电阻4.7k8三、数字时钟的软件设计1、程序流程图开始 清显示缓冲区 初始化定时计数器 赋时钟初值开定时器调整时间数码管显示当前时钟值2、源程序#include /定义按键端口sbit key_1=p30;/用于小时增加sbit key_2=p31;/用于分钟增加sbit key_3=p32;/用于分钟减少sbit key_4=p33;/用于秒钟增加/定义所需变量unsigned char shi=12,fen=00, miao=00;/定义十分秒并初始化为12:00:00code unsigned char tab=0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90;/定义共阳极数码管编码表unsigned char sbuff8;/定义数据缓冲数组void init() /定义初始化函数对定时器0和定时器1进行初始化 tmod=0x11; /定时器0和1均为模式1 et0=1;/开定时器0中断 et1=1;/开定时器1中断 th0=0xd8; tl0=0xf0; /定时10ms th1=0xfc; tl1=0x18;/定时0.1ms tr1=1;/t1开始计时 tr0=1;/t0开始计时 ea=1;/开总中断 /显示数值写入缓冲区函数void displayset() sbuff7=tab(shi/10);/显示小时的十位 sbuff6=tab(shi%10);/显示小时的个位 sbuff5=0xbf;/ 显示-号 sbuff4=tab(fen/10);/显示分钟十位 sbuff3=tab(fen%10);/显示分钟个位 sbuff2=0xbf;/显示-号 sbuff1=tab(miao/10);/显示秒钟十位 sbuff0=tab(miao%10);/显示秒钟个位/延时子函数void delay(unsigned char z) while(z-) unsigned char j; for(j=0;j123;j+); void key_scan() if(!key_1) /按键1去抖以及动作 delay(100); if(!key_1) shi+; if(shi=24) shi=0; /正常时间 小时 加1 displayset(); if(!key_2) /按键2去抖以及动作 delay(100); if(!key_2) fen+; if(fen=60) fen=0; /分增加1 displayset(); if(!key_3) /按键去抖以及动作 delay(100); if(!key_3) fen-; if(fen=255) fen=59;/分减1 displayset(); if(!key_4) /按键去抖以及动作 delay(100); if(!key_4) miao+; if(miao=60) miao=0; /秒增加1 displayset(); /主函数void main() init();/调用初始化定时器函数 displayset();/调用显示设置函数 while(1)/主循环用于不断检测按键是否被按下 key_scan(); /调用按键检测函数 /以下是中断程序/t0中断用于计时void timer(void) interrupt 1 using 0 static unsigned char counter;/用于计进中断次数,即 走过了多少个10毫秒 th0=0xd8; tl0=0xf0;/重新装入初值 counter+; switch(counter) case 0: case 20: case 40: case 60: case 80:displayset(); break; default:break;/在一秒内隔一段时间送一次时分秒到缓冲区 if(counter=100) counter=0; miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0; shi+; if(shi=24) shi=0; /定时器1服务程序用于扫描显示void scan() interrupt 3 using 1 static unsigned char number; th1=0xfc; tl1=0x18;/重新装入初值 switch(number) case 0:p0=0xff;p2=0xfe;p0=sbuffnumber;break; case 1:p0=0xff;p2=0xfd;p0=sbuffnumber;break; case 2:p0=0xff;p2=0xfb;p0=sbuffnumber;break; case 3:p0=0xff;p2=0xf7;p0=sbuffnumber;break; case 4:p0=0xff;p2=0xef;p0=sbuffnumber;break; case 5:p0=0xff;p2=0xdf;p0=sbuffnumber;break; case 6:p0=0xff;p2=0xbf;p0=sbuffnumber;break; case 7:p0=0xff;p2=0x7f;p0=sbuffnumber;break;/轮流选中数码管并赋值显示 default:break; number+; if(number=8)/扫描8次依次点亮8个数码管 number=0;四、 课程设计总结本次课程设计是用8052单片机cpu及接口电路设计一个数字时钟,经过近一个星期的调试,结果满足设计要求,验证无误。设计主要用到了多种芯片,程序也比较长比较麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。关于显示模块,在以前的实验中做过,所以问题很容易解决。通过本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安阳疾控考试题库及答案
- 语文成教考试题库及答案
- 易班安全考试题库及答案
- 化工原理A2期末考试题库及答案
- 2025年锅炉水处理作业人员(特种作业)考试题库(含答案)
- 2025年新疆甜菜种植与农业技术推广应用合同
- 2025年贵州社区工作者考试备考题库及答案
- 浙江省高考试题及答案
- 港口督导员考试题及答案
- 水城县农机安全培训课件
- 教师岗位聘任申请书模板合集
- 2025年贵州省毕节市辅警招聘考试题库及答案
- 2025重庆市公安局江北区分局辅警招聘60人考试参考题库及答案解析
- 巴中市恩阳区2025年专项招聘卫生专业技术人员的(50人)考试参考题库及答案解析
- 车规级芯片设计-洞察及研究
- 道路运输业安全培训课件
- 一年级新生家长会校长讲话:习惯奠基成长路家校同行护萌娃
- 2025【粮食购销合同范本】粮食购销合同
- 德邦防御性驾驶培训课件
- 煤场安全生产知识培训课件
- 2025-2026学年人教版(2024)小学体育与健康二年级全一册《防溺水知危险》教学设计
评论
0/150
提交评论