基于单片机的数字电子钟.doc_第1页
基于单片机的数字电子钟.doc_第2页
基于单片机的数字电子钟.doc_第3页
基于单片机的数字电子钟.doc_第4页
基于单片机的数字电子钟.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用课程设计报告课题名称:基于单片机的电子钟的设计 姓 名: 院 系:应 用 技 术 学 院 专业:07电子信息工程(仪器仪表)学 号:200715190125 指导教师: 谢 辉 完成时间: 2009 年 12 月 28 日目录摘要 .1第一章 方案论证.21.1 设计目的.21.2 设计任务.21.3 设计思路.21.3.1 方案论证.21.3.2 芯片的选择.21.3.3 显示模块选择方案和论证.21.3.4 时钟信号的选择方案和论证.21.3.5 最终方案决定.2第二章 硬件系统的设计.32.1 74LS164相关的参数和功.32.1.1 74LS164的管脚图.32.1.2 74LS164逻辑符合表.42.1.3 芯片功能.42.2 七段数码管.42.2.1 LED数码管简介.42.2.2 常见LED数码管的外形及内部结构.52.3 AT89C AT89C51的原理及说明.52.3.2 主要性能参数.62.3.3 引脚功能.62.4 PCB图.7第三章 软件系统的设计.8第四章 系统调试.104.1 软件调试.104.2 硬件调试.10第五章 设计心得.11第六章 参考文献.12附录 .12基于电子数字时钟的设计重庆三峡学院应用技术学院 石有霞摘要数字钟是对.年、月、日、时、分、秒,数字显示及到时提醒的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便。最常见的数字钟通常使用单片机模块控制,一种用单片机原理实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。本次设计就是通过用单片机为主控制,通过电路仿真而实现。首先使用Proteus 7 Professional软件进行绘制硬件电路图,用keil软件进行编程与调试,最终生成hex文件,传入单片机内部,从而实现仿真效果。此次设计的多功能数字时钟具有显示时、分、秒及对时间的调整、校正功能,界面简洁、直观、易于操作。关键词:数字钟、仿真、单片机第一章 方案论证1.1 设计任务(1) 根据具体题目要求,设计以单片机为控制核心的测量系统或控制系统,完成对指定目标或对象的测量及控制。(2) 设计单片机与测量及控制对象的接口并进行硬件调试。(3) 针对要求测量或控制的对象完成程序的编制。(4) 硬件软件联调,完成题目所要求的功能。(5) 设计能支持时、分、秒的时钟,时钟要具有时间调整功能。1.2 设计目的(1) 通过课程设计,使我们能够深入理解单片机系统的工作原理,接口电路的设计及调试方法,培养综合运用所学理论知识分析和解决实际问题的能力。(2) 使用AT89C51芯片的串口功能,利用六片8位并行输出串行移位寄存器74LS164,实现时,分,秒的显示。(3) 用keil软件进行编程与调试,利用Proteus 7 Professional软件进行绘制硬件电路图且进行仿真。1.3 设计思路1.3.1 方案论证本时钟的设计具体有两种方法。一是通过单纯的数字电路来实现;二是使用单片机来控制实现。本次设计选取了较为简单的单片机控制;而选择这一方法后还要进行各个芯片的选择。以下是我在这次设计中所用的方案。1.3.2 芯片的选择采用AT89C51芯片,其为高性能CMOS 8位单片机,该芯片内含有4k bytes的可反复擦写的只读程序存储器(PEROM)、128 bytes的随机存取数据存储器(RAM)、 32位可编程I/O口线、2个16位定时/计数器、6个中断源、可编程串行UART通道及低功耗空闲和掉电模式。因此,我们选用AT89C51。1.3.3 显示模块选择方案和论证采用LED数码管显示,显示较为清楚直观,便于观察和调试 1.3.4 时钟信号的选择方案和论证直接采用单片机定时计数器提供的秒信号,使用程序实现时、分、秒计数。采用此种方案可减少芯片的使用,节约成本,实现的时间误差较小。1.3.5 最终方案决定综上方案所述,对此次数字时钟的方案选定为: 采用AT89C51通过串行输出静态显示作为主控制系统,来实现时、分、秒的显示。电路原理图如下:注:由于采用数码管显示,电路图中涉及到的连线比较多,故通过引脚标示,相同的引脚表示两个管脚相连。第二章 硬件系统的设计2.1 74LS164相关的参数和功能:2.1.1 74LS164的管脚图:74ls164是一个串入并出的8位移位寄存器,它常用于单片机系统中,其主要电特性的典型值如下:54/74164 185mW 54/74LS164 80mW引脚功能:CLOCK :时钟输入端CLEAR: 同步清除输入端(低电平有效) A,B :串行数据输入端Q0Q7: 输出端2.1.2 74LS164逻辑符合表:2.1.3 芯片功能当清除端(CLEAR)为低电平时,输出端(Q0QH7)均为低电平。 串行数据输入端(A,B)可控制数据。当 A、B任意一个为 低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0 为低电平。当A、B 有一个为高电平,则另一个就允许输入数据,并在CLOCK 上升沿作用下决定Q0 的状态。 1. 串行输入带锁存 2. 时钟输入,串行输入带缓冲 3.异步清除 4. 最高时钟频率可高达36Mhz 5.功耗:10mW/bit 6. 74系列工作温度: 0C to 70C 7. Vcc最高电压:7V 8. 输入最高电压:7V 9.最大输出驱动能力:高电平:0.4mA ,低电平:8mA2.2 七段数码管2.2.1 LED数码管简介 LED数码管是由发光二极管构成的,亦称半导体数码管。将条状发光二极管按照共阴极(负极)或共阳极(正极)的方法连接,组成“8”字,再把发光二极管另一电极作笔段电极,就构成了LED数码管。若按规定使某些笔段上的发光二极管发光,就能显示从09的系列数字。它具有:体积小、功耗低、耐震动、寿命长、亮度高、单色性好、发光响应的时间短,能与TTL、CMOS电路兼容等的数显器件。2.2.2 常见LED数码管的外形及内部结构 图1(b)属于共阳极结构, 图1(c)采用共阴极结构。 +、一分别表示公共阳极和公共阴极。ag是7个笔段电极,DP为小数点2.3 AT89C512.3.1 AT89C51的原理及说明AT89C51是美国Intel公司生产的低电压,高性能CHMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和蔼可亲128 bytes的随机存取数据存储器(RAM),器件采用Intel公司的高密度、非易失性存储技术生产,片内置通用4位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机适合于许多较为复杂控制应用场合。AT89C51引脚图2.3.2 主要性能参数:与MCS-51产品指令和引脚完全兼容4k字节可重擦写Flash闪速存储器1000次擦写周期全静态操作:0Hz24MHz三级加密程序存储器1288字节内部RAM32个可编程I/O口线2个16位定时/计数器5个中断源可编程串行UART通道低功耗空闲和掉电模式2.3.3 引脚功能Vcc(40):电源电压 GND(20):接地P0口(32-39):P0口是一个8位双向I/O接口,也即地址/数据总线复用口。作为输出口用时,每位吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器时,这组口线分时转换地址(低8位)和数据总线复用。P1口(1-8):P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”通过内部的上拉电阻把端口拉到高电平时,此时可作输入口。作为输入品使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。RST(9):复位信号输入端。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG(30):地址锁存有效信号输出端。当访问片外程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节,一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的,要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。XTAL1(19):振荡器反相放大器的及内部时钟发生器的输入端。XTAL1(18):振荡器反相放大器的输出端。通过XTAL1、XTAL2外接晶振后,即可构成自激振荡器,驱动内部时钟发生器向主机提供时钟信号。2.4 PCB图此次单片机数字时钟的设计采用AT89C51为主控制芯片,并由其定时器提供时钟,利用七段数码管进行时间显示。PCB图顶层:PCB图底层:第三章 软件系统的设计主程序: 显示子程序: 定时中断子程序: 第四章 系统调试4.1 软件调试1. 双击桌面“Keil uVision3”快捷方式图标,打开Keil uVision3 IDE。单击菜单“Project-New Project”后,出现对话窗口,在对话框内选择工程目录,并将此工程命名为“CLOCKJT.uv2”,点击保存。2. 在建立工程以后,还应该为工程选择合适的目标器件选择目标器件方法为:点击菜单“Project-Select Device for Targect”,弹出对话框,我们选择AT89C51。选择目标器件完毕后可以看到在Project 窗口出现了一个Target1 的工程点,右击Target1,选择“Options for TargetTarget1”,在弹出的对话框单击Output,勾选Create HEX复选框。该目录里面还会有“Source Group1”的分组名,可以在该组下放置源程序文件。用鼠标右键点击“Source Group1” ,在弹出的菜单中选择“Add files to Group Source Group1”。在弹出的对话窗口中选择待添加的程序文件,点击“Add” 即可将此文件增加到源文件组内,点击“Close”返回。如要增加新文件到文件组“Source Group1”, 要先使用菜单“File- New”建立文件名为“CLOCKJT.ASM”(源程序见附录),再进行“添加程序文件” 。3. 编译和连接:右击Target1,选择Build Target,此时将在Output Window显示编译连接的结果,若有错,单击错误提示即可在源程序里定位错误的位置,修改完毕,再次编译,知道没有错误为止,编译连接正确后,会生成“CLOCKJT.HEX”文件。4. 调试:点击菜单Debug-Start/Stop Debug Session将进入调试状态,单击Peripheral-Serial;单击Peripheral-Timer-Timer0。在Keil 中有以下几种运行方式:(1)Run 全速运行遇到断点停下或用户按动Stop按钮或RST CPU按钮停止。(2)Step info 单步跟踪运行一条指令,如果该语句为C 中的调用子程序语句或汇编中的CALL指令,Step info 指令将跟踪进入子程序内部。(3)Step over 单步运行完一条指令,如果该语句为C 中的调用子程序语句或汇编中的CALL指令,Step over 指令将全速完成该子程序的运行,停在下一指令处。(4)Run till Cursor Line 从当前位置运行到光标处。4.2 硬件调试打开Proteus 7.5 Professional软件,按照方案所选的电路元件来设计整体电路,线把个芯片按一定的位置放好,然后对相应的对象进行连接,连接时需仔细,以免调试时发生错误。做好之后把编程所生成的。HEX文件加载到AT89C51中,运行仿真软件,查看运行效果。如果运行出错那么就根据他相应的提示来修改错误,直到仿真成功为止。打开Topwin软件,装载CLOCKJT.HEX,通过编程器将该文件烧写入AT89C51中。将AT89C51插入实验仪相应的插座上,在实验仪上按照电路原理图连线。打开电源,观察数码管的变化。第五章 设计心得通过两个星期的课程设计,我的理论知识和动手能力在一定程度上都得到了提高,也学到很多新知识。此次实训主要是让我们进一步深入理解单片机系统的工作原理,对接口电路的设计及调试方法;理论联系实际,结合专业知识来分析解决问题;掌握用单片机进行实际产品开发的基本过程,加强模块化设计思想的培养,增加对专业的兴趣,从而为我们以后的工作打下基础。课程设计中最主要的部分就是程序。对于单片机我们都还是初学者,只懂得一点最基本的东西,对更深层次的理解还有一定的困难,因此程序是在老师的帮助下完成的,大部分都是老师给我们写的,我们主要是读懂程序,理解程序的运行过程,进而分析电子钟是如何工作的。时、分、秒的加1程序段比较难理解,分和秒是在计数到59的时候加1,而时则是计数到23的时候就清零,故在设计程序的时候一定要注意到这一点。显示子程序这部分也有一定的难度。实验箱上只有四位数码管,而设计要求是六位,故在实验箱上验证的时候要对程序进行修改,主要就是将显示位数改为四位,这一点在主程序和显示子程序上都要改。由于加上小数点能更好的区分时、分、秒,故对于小数点的显示程序也要修改。还有一点比较重要的就是数码管的代码,一定要先检验数码管是共阴极的还是共阳极的,这对后面的写程序和焊接都很重要。程序设计好以后就对其进行编译仿真,这通过keil软件来完成。我们根据相应的提示对程序进行修改,当编译不再出错就可以进行仿真。仿真时需将相应的对话框调出来,程序一步步执行,我们观察对话框中内容的变化,从而更好的理解程序。软件通过后就是硬件的焊接,这一过程我们已经做过很多遍了,从我们大一的时候就开始练习,虽然有了一定经验,但是仍然比较麻烦,很容易出现虚焊,还有就是连线太多,布线也是一个难题,所以焊接这部分要很仔细。总的来说这次课程设计比较成功,我们的软件通过了,但是硬件部分还是有问题,但还算可以。在整个过程中,我们得到了老师的很大帮助,老师每天都会准时到实验室跟每一组同学指导,讲解,受益很多。我们这组很团结,大家分工合作,都把自己负责的部分做的很好,真正体现了团队合作精神。 第六章 参考文献1.单片机的C语言应用程序设计马忠梅 马忠梅 主编 北京航空航天大学出版社2.单片机原理及接口技术(第2版) 李全利 主编 高等教育出版社3.C语言程序设计(第三版) 谭浩强 主编 清华大学出版4.Protel DXP从入门到精通附录1. 元器件清单表名称数量名称个数七段数码管6个10uF电解电容1个74LS1646个AT89C51芯片1块1K电阻6个发光二极管1个10K电阻1个40管脚座子3个6M晶振1个14管脚座子6个30pF瓷片电容2个微动开关1个印制电路板1块导线若干2.实训产品照片3. 程序代码ORG 0H LJMP MAIN ORG 000BH LJMP PIT0 ORG 0100H MAIN:MOV SP,#60H ;确立堆栈区 MOV R0,#79H ;显示缓冲区首地址 MOV R7,#06H ;显示位数 ML1:MOV R0,#00H ;显示缓冲单元清0 INC R0 DJNZ R7,ML1;- MOV SCON,#00H;串行口方式0;- MOV TMOD,#02H ;定时器0,工作方式2 MOV TH0,#06H ;定时器定时500s MOV TL0,#06H MOV 30H,#100 ;1s=10020500s MOV 31H,#20 SETB EA ;EA置1,中断总允许 SETB ET0 ;ET0置1,定时器0中断允许 SETB TR0 ;TR0置1,定时开始 ML0:SJMP ML0 ;-1s定时中断子程序(包括调时及显示子程序)- PIT0:PUSH PSW ;中断服务程序,现场保护 PUSH ACC ; SETB PSW.3 ;RS1 RS0=01,选1组通用寄存器 MOV A,30H ;循环次数减1 DEC A MOV 30H,A JNZ RET0 ;不满100次,转RETO返回 MOV 30H,#20 MOV A,31H DEC A MOV 31H,A JNZ RET0 ;1s时间到否? ;- LCALL DISP ;调显示子程序 ;-调时程序- MOV 31H,#20 ;满20次,1s时间到,开始计时操作 MOV R0,#7AH ;移显示缓冲单元地址 ACALL DAAD1 ;移加1 MOV A,R2 ;加1后秒值在R2中 XRL A,#60H ;判是否到60秒 JNZ RET0 ;不到,转RETO返回 ACALL CLR0 ;到60,秒显示缓冲单元清0 MOV R0,#7CH ;分显示缓冲单元地址 ACALL DAAD1 ;分加1 MOV A,R2 ; XRL A,#60H ;判是否到60分 JNZ RET0 ACALL CLR0 ;判60,分显示缓冲单元清0 MOV R0,#7EH ;时显示缓冲单元清0 ACALL DAAD1 ;时加1 MOV A,R2 XRL A,#24H ;判是否到24时 JNZ RET0 ACALL CLR0 ;判24时,时显示缓冲单元清0 RET0:CLR PSW.3 ;RS1 RS0=00,恢复0组通用寄存器 POP ACC ;现场恢复 POP PSW RETI;十进制调整 DAAD1:MOV A,R0 ;加1子程序,十位数送A DEC R0

温馨提示

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

评论

0/150

提交评论