收藏 分销(赏)

基于单片机的数字电子钟.docx

上传人:xrp****65 文档编号:5868894 上传时间:2024-11-22 格式:DOCX 页数:30 大小:651.16KB 下载积分:10 金币
下载 相关 举报
基于单片机的数字电子钟.docx_第1页
第1页 / 共30页
基于单片机的数字电子钟.docx_第2页
第2页 / 共30页


点击查看更多>>
资源描述
CHANGZHOU INSTITUTE OF TECHNOLOGY 科研实践 题目:基于单片机的数字电子钟 二级学院(直属学部): 延陵学院 专业: 电气工程及其自动化 班级: 10电Y2 学生姓名: 学号: 10120827 指导教师姓名: 范力旻 职称: 副教授 2013年12月30日至2014年1月10日 目 录 一、绪 论 3 1.1课题研究的背景和意义 3 1.2 课题研究的目的 3 二、课题设计概况 4 2.1 课题主要实现功能 4 2.2 课题功能分析 4 2.3 课题功能实现过程的描述 4 三、总体设计方案 5 3.1 单片机的选择 5 3.2数字电子钟显示方案论证 5 四、硬件设计 6 4.1 总体设计结构图 6 4.2 单片机最小系统的设计 6 4.3 输入电路的设计 7 4.4 输出电路的设计 8 五、软件设计 10 5.1 主程序结构图 10 5.2 主程序流程图 10 5.3 主要程序模块分析 12 5.3.1 延时程序 12 5.3.2 计24小时程序 12 5.3.3 暂停/继续程序 14 5.3.4 校时灯闪程序 14 5.3.5 16进制转BCD码程序 15 六、Protues和keil仿真 16 6.1 proteus软件的介绍及使用 16 6.2 Keil软件的介绍及使用 16 6.3 数字电子钟的仿真 16 七、实物制作 21 7.1电路板焊接 21 7.2电路板调试 21 八、总结和展望 22 8.1科研实践总结 22 8.2对未来的展望 22 附 录 23 参考文献 23 元器件清单 23 原理图和PCB图 24 C语言程序代码 25 实物图 30 一、绪 论 1.1课题研究的背景和意义 20世纪末,电子技术获得了飞速发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记时间,忘记了要做的事情,但是,一旦重要的事情,一时的耽误可能酿成大祸。  目前,单片机正朝着高性能和多品种方向发展,发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。  单片机模块中最常见的是数字钟,数字钟是一种利用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛使用。  数字电子钟是采用数字电路对时、分、秒数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们日常生活中不可缺少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们的生产生活带来了极大的方便,而且大大的扩展了钟表原来的报时功能,因此研究数字钟及扩大其应用,有着日常现实的意义。 1.2 课题研究的目的 复习KEIL软件的使用方法; 学会编写数字电子钟的C语言程序; 学会画数字电子钟的PROTEUS图; 学会稳压电源的制作方法; 学会制作相应的实物。 二、课题设计概况 2.1 课题主要实现功能 1、该单片机数字电子钟能在LED 数码管准确显示24小时(显示格式为:时时,分分,秒秒); 2、可暂停时间的变动, 同时在暂停的时候可以通过调秒、调分和调时按钮校正时间,继续计时的时候按调整后的时间变动。每调整一次时间相对应的LED灯会亮三次,计时的时候灯不亮; 3、每次上电的时候数码管显示“000000”,校时之后方可正常使用。 2.2 课题功能分析 1、为了实现计时功能,必须有合适精确的秒源; 2、通过进位的方法可以实现分钟和小时的显示; 3、时、分、秒计到24、60、60要清零; 4、给暂停和校时功能分别设置按钮,每按一次校时按钮相应的数码管显示加1,相应的LED灯亮; 5、通过软件编程课实现上述功能。 2.3 课题功能实现过程的描述 给单片机上电之后,数码管显示时间为00时00分00秒,按下暂停/继续键后,通过三个校时按钮把时间校准到实际时间,再次按下暂停/继续键恢复计时。 每一次校时的时候相应的灯就会闪,不调时的时候灯就灭。 三、总体设计方案 3.1 单片机的选择 AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。而ATMEL公司的89C52单片机,是增强型RISC内载Flash的单片机。   由于单片机的种类很多,在选择单片机时要依据实际设计要求选择合适的单片机。本数字电子钟产生的数据量并不大,但是为了确保程序的运行,所以选择C51单片机。    表3-1 51和52的比较 数据存储器 程序存储器 定时器 中断 51系列 128B 4KB 2 5 52系列 256B 8KB 3 8 3.2数字电子钟显示方案论证 本设计可以选择的方案有数码管显示和LCD显示。 由于只要实现时分秒的显示,LCD的显示尽管多,但无论在软件上还是硬件上都需要添加其它部件,比较复杂,因此选择数码管即可。 四、硬件设计 4.1 总体设计结构图 数字电子钟总体设计结构图如下: 图4-1 数字电子钟的总体设计结构图 4.2 单片机最小系统的设计 1、时钟电路如下: 单片机必须在时钟的驱动下才能工作.由之前所学的《单片机原理》最小系统内容,在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)。为了匹配单片机的频率,经过试验选择匹配电容为30pF。 时钟电路如下(注意接的是单片机18、19引脚): 图4-2 时钟电路 2、 复位电路 51单片机通常有两种复位方式,上电复位和按钮复位,本论文采用上电复位。由于本设计的晶体振荡器采用的是12M,因此RC采用典型值。复位时间计算:当取100us时为高电平,所以可以达到复位作用。 复位电路图如下(请忽略时钟电路): 图4-3 复位电路 4.3 输入电路的设计 1、暂停和校时电路如下: 由于在P0口,所以要选择上拉电阻.参照总体结构设计图,最多顾及LED参数 (2.2V,10mA),计算(5-2.2)/0.01=280,为了保证完全满足参数要求,选一定可以满足条件的500,电流<10mA。各个按钮的功能已经在下图中标明(按钮选择常见的TD-03B即可)。 图4-4 暂停和校时电路 2、稳压电源计算如下: 在实际做硬件实物的时候制作出实际的5V直流稳压电源也是必要的一部分。由于主屏幕上的空间不够,所以并没有接稳压电源的线,让其参与仿真。 图4-5 稳压电路 4.4 输出电路的设计 1、校时时灯闪电路如下: 上拉电阻选择同上。LED选择Φ5的T1型红色灯就行了(电流从参数已在上文叙述)。 图4-6 校时时灯闪电路 2、数码管显示电路如下: 本电子钟设计只牵涉到6位数码管的显示,因此采用6个7SEG-COM-CATHODE就够了。此数码管共阴极接地。端口引出还要加74LS48译码器接单片机,这样软件编程的内容就能清楚地显示了。 图4-7 数码管显示电路 五、软件设计 5.1 主程序结构图 系统初始化模块 按键模块 计时模块 校时模块 数码管显示模块 暂停继续模块 灯闪模块 图5-1 主程序结构图 5.2 主程序流程图 流程图是使用图形表示算法的思路是一种极好的方法,不论采用何种程序设计方法,程序总体结构确定后,一般以程序流程图的形式对其进行描述。总体框图中的各个子模块或各个子任务也应该结合具体的教学模型和算法画出较详细的程序流程图,供后面编写具体程序和阅读程序使用。 开始 定义输入输出端口 开始计时显示 按暂停继续按钮 Y N 按调秒按钮 Y N 调秒闪灯 按调分按钮 Y N 调分闪灯 时间暂停 Y N 调分闪灯 按调时按钮 按暂停继续钮就 继续计时 Y N 继续暂停 结束 图5-2 主程序流程图 5.3 主要程序模块分析 所有的程序详见附录。 5.3.1 延时程序 通过软件和晶振电路的配合实现提供1ms的延时程序,当调用ms函数时,通过嵌套调用100us、50us、5us的乘法关系来实现1ms的输出。 当晶振为12MHz时,由可知程序的确可以延时5us乃至1ms。考虑误差程序用的是11.0592MHz。 流程图如下:   图5-3 延时程序流程图 5.3.2 计24小时程序 由得到的10ms乘以100次可以得到1s,然后进行加法运算,满60秒进1清零,满60分进1清零,满24时清零。 流程图如下: Y 是否满24h? 显示缓冲单元清0 返回 N Y 是否满60m? 小时加1 分值加1 N 计数器重新加载 循环次数加1 是否满1s? 是否满60s? 秒值加1 N 开始 图5-4 计24小时程序 5.3.3 暂停/继续程序 通过确认暂停/继续键是否松开这样的去抖程序可以使得按下这一键以及按暂停键之后的动作得以完美执行。 流程图如下: 再按一次恢复运行 确认暂停键低电平 开始 去抖暂停 图5-5 暂停/继续程序 5.3.4 校时灯闪程序 参照上一个模块,在去抖之后可以执行相应的程序。 校时模块:时分秒的思路其实是一样的,按下相应的键一次,把相应端口的值加1,时的端口时加1,分的端口分加1,秒的端口秒加1。只要在暂停的情况下按几下校对时间的键相应端口的数码管就加几。 灯闪模块:在端口加1之后,通过延时程序让LED亮0.1秒灭0.1秒,重复2次,以表明在校时。 流程图如下: 开始 按校秒分时键后去抖 秒分时值加1 送相应的端口显示 相应的灯闪烁3次 结束暂停的时候灭灯 结束 图5-6 秒分时校时闪灯程序 5.3.5 16进制转BCD码程序 用十位乘以16加个位得到。 流程图省略。 六、Protues和keil仿真 6.1 proteus软件的介绍及使用 Proteus软件是Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如按键、LED、数码管等等。通过Proteus仿真软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。   Proteus仿真时只需在AT89C52单片机中加载Keil软件生成的.HEX格式文件,即可启动仿真。 6.2 Keil软件的介绍及使用 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境、将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。  本设计使用的keil软件是keil uvision4版本的,protues仿真前要通过工程选项,在output选项卡把生成.HEX文件勾选上,然后编译生成.HEX文件供protues软件仿真使用。 6.3 数字电子钟的仿真 根据设计思路做好以下几步: 查找所需的元器件; 摆好元器件的位置; 连线; 添加KEIL生成的HEX文件进行仿真。仿真图如下: 图6-1 整体仿真图 按下暂停/继续键,如下: 图6-2 按下暂停/继续键的图 按下秒校时键: 图6-3 按下秒计时键 按下分校时键: 图6-4 按下分校时键 按下时校时键 图6-5 按下时校时键 连续校时也可以满足: 图6-6 连续校时 按下暂停/继续键继续走时 图6-7 继续走时 七、实物制作 7.1电路板焊接 一般来说,造成硬件问题的首要问题就是焊接了,也就是说焊接的好与坏直接响产品的正常运行。造成焊接质量不高的常见原因是: ①焊锡用量过多,形成焊点的锡堆积;焊锡过少,不足以包裹焊点。 ②冷焊。焊接时烙铁温度过低或加热时间不足,焊锡未完全熔化、浸润、焊锡表面不光亮(不光滑),有细小裂纹(如同豆腐渣一样!)。 ③夹松香焊接,焊锡与元器件或印刷板之间夹杂着一层松香,造成电连接不良。若夹杂加热不足的松香,则焊点下有一层黄褐色松香膜;若加热温度太高,则焊点下有一层碳化松香的黑色膜。对于有加热不足的松香膜的情况,可以用烙铁进行补焊。对形成的黑膜,要"吃"净焊锡,清洁被焊元器件或印刷板表面,重新进行焊接才行。 ④焊锡连桥。指焊锡量过多,造成元器件的焊点之间短路。这在对超小元器件及细小印刷电路板进行焊接时要尤为注意。 ⑤焊剂过量,焊点明围松香残渣很多。当少量松香残留时,可以用电烙铁再轻轻加热一下,让松香挥发掉,也可以用蘸有无水酒精的棉球,擦去多余的松香或焊剂。 ⑥焊点表面的焊锡形成尖锐的突尖。这多是由于加热温度不足或焊剂过少,以及烙铁离开焊点时角度不当浩成的内。 7.2电路板调试 最小系统的电路不工作,首先应该确认电源电压是否正常。用电压表测量接地引脚跟电源引脚之间的电压,看是否符合电源电压,常用的是5V左右。接下来就是检测复位引脚的电压是否正常,EA引脚的电压要正常为5V左右。 如果补焊电源后最小系统还是不能工作,有可能是AT89C51单片机坏掉了,重新选择一个AT89C51单片机焊接。如果是工作但是不能按需要的功能执行,也可用更换AT89C51单片机方法调试,但在此之前可以选择检查对应的模块是否有焊接问题,若没有再进行更换。 八、总结和展望 8.1科研实践总结 经过近两周的的努力,在老师和同学的商讨和帮助下,我较好的完成了设计任务,通过此次课程设计,我重新认识到了自学的重要性,以及学以致用的道理。我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用。通过此次的抢答器的设计,让我重新拾起了以前所学习的电子知识,及我觉得此次设计让我更加巩固了所学的知识并在设计的过程中学会了与时俱进,克服了编程的枯燥感,让我受益匪浅。在学习单片机这门课程的时候,我们应该好好你的记笔记,课下好好的做练习题才能把C程序设计灵活的运用到单片机程序的设计上,在单片机这门课程的学习上,我们还应该知道一种常用的仿真软件proteus软件,可以让你我们更为清晰的掌握AT89C51单片机的实际应用上的设计。在今后的学习过程中,应该多到图书馆看一些专业方面的书籍,以丰富自己的知识。也使我加深了对单片机及接口技术的理解和应用,由于知识水平的局限,设计中可能会存在着一些不足,我真诚的接受老师和同学的批评和指正。 8.2对未来的展望 经过两周的科研实践,我深刻明白了理论知识与社会实践相结合的道理,也得到了以前书本知识所不曾得到的知识,更加明白了如今信息时代电子技能知识的重要性。 本设计增强了我对单片机、C语言等技能方面的认识,掌握了分析、处理问题的方法、逻辑思维能力等基本技能的训练,具有了一定程度的实际工作能力。 面对如此激烈的市场竞争体系,只有努力掌握好单片机知识方可在竞争中立于不败之地,我对从事电子设计、C语言编程和研究产生了浓厚的兴趣。希望自己以后能通过自己的不懈努力取得更大的进步。 附 录 参考文献 [1]高伟.单片机原理及应用[M].北京:国防工业出版社,2008年. [2]范力旻.《单片机原理及应用技术》.电子工业出版社. [3]胡文金 杨健.《单片机应用技术实训教程》.重庆大学出版社. [4]杨加国.《单片机原理与应用及C51程序设计》.清华大学出版社,2006年. [5]齐 朱宁西.单片机应用系统设计实验(C51).电子工业出版社,2013年. 元器件清单 序号 名称 型号规格 数量 元件编号 1 直流电源 9V 1 V1 2 电解电容 220uF和10uF 1和1 C3~C4 3 瓷片电容 0.022uF和30pF 1和2 C5、C1~C2 4 三端稳压器 7805 1 U8 5 电阻 500,1k 8,1 R1~R7,R8 6 晶振 11.0592MHz 1 X1 7 单片机 STC89C51 1 U1 8 LED-RED φ5 3 LED1~LED3 9 轻触按钮 TD-03B 4 S1~S4 10 数码管 7SEG-COM-CATHODE 6 DIG1~DIG6 11 译码器 74LS48 6 U2~U7 原理图和PCB图 C语言程序代码 #include<REG52.h> //片内寄存器定义 #include<stdio.h> // 输入输出函数库 #include<intrins.h> // 内部函数库 sbit pauseButton=P0^0; //暂停 /继续按钮 sbit secButton=P0^1; //调秒按钮 sbit minButton=P0^2; //调分按钮 sbit houButton=P0^3; //调时按钮 sbit Led1=P0^4; //调分的时候闪灯 sbit Led3=P0^6; //调时的时候闪灯 void time(unsigned int ucMs); /延时单位:ms /*HEXtoBCD*/ unsigned char HEXtoBCD (unsigned char hex) { return ((hex/10)*16+(hex%10)); } /*main C*/ void main(void) { int i; unsigned char uc10ms=0,uc1s=0,uc60s=0,uc1h=0; while(1) { P1=HEXtoBCD(uc1s); //显示秒 P2=HEXtoBCD(uc60s); //显示分 P3=HEXtoBCD(uc1h); //显示时 time(10); //延时0.01秒 uc10ms++; if(uc10ms==100) { uc10ms=0;uc1s++; } if(uc1s==60) { //满60秒,即一分 uc1s=0;uc60s++; } P1=HEXtoBCD(uc1s); if(uc60s==60) { //满60分,即一小时 uc60s=0;uc1h++; } P2=HEXtoBCD(uc60s); if(uc1h==24) //满一天,归零 { uc1h=0; } P3=HEXtoBCD(uc1h); Led1=1; Led2=1; Led3=1; if(!pauseButton) //暂停/继续,用来校时 { while(!pauseButton); while(pauseButton) { if(!secButton) //校准秒 { while(!secButton); uc1s++; if(uc1s==60)uc1s=0; P1=HEXtoBCD(uc1s); for(i=0;i<2;i++) //校准秒时led1亮 { Led1=1; time(100); Led1=0; time(100); } } if(!minButton) //校准分 { while(!minButton); uc60s++; if(uc60s==60)uc60s=0; P2=HEXtoBCD(uc60s); for(i=0;i<2;i++) //校准分时led2亮 { Led2=1; time(100); Led2=0; time(100); } } if(!houButton) //校准时 { while(!houButton); uc1h++; if(uc1h==24)uc1h=0; P3=HEXtoBCD(uc1h); for(i=0;i<2;i++) //校准时时led3亮 { Led3=1; time(100); Led3=0; time(100); } } } while(!pauseButton); } } } /*晶振11.0592MHz要2个_nop_(),22.1184MHz要4个*/ void delay_5us(void) { _nop_(); _nop_(); //_nop_(); //_nop_(); } /*delay_50us*/ void delay_50us(void) { unsigned char i; for(i=0;i<4;i++) { delay_5us(); } } /*延时100us*/ void delay_100us(void) { delay_50us(); delay_50us(); } /*延时单位:ms*/ void time(unsigned int ucMs) { unsigned char j; while(ucMs>0) { for(j=0;j<10;j++) delay_100us(); ucMs--; } } 实物图
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服