根据51单片机可调数字钟的设计_第1页
根据51单片机可调数字钟的设计_第2页
根据51单片机可调数字钟的设计_第3页
根据51单片机可调数字钟的设计_第4页
根据51单片机可调数字钟的设计_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

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

文档简介

1、安阳师范学院单片机技术课程实践基于89C51单片机可调数字钟的仿真设计班级: 姓名:学号:辅导老师:设计时间:1.设计目的1.1设计目的(1)掌握51系列内部定时/计数器的原理和基本应用;(2)掌握使用单片机处理复杂逻辑的方法;(3)掌握多位数码管动态显示的方法;(4)掌握独立式(和矩阵)键盘的编程方法;(5)掌握利用汇编语言编写单片机系统的应用软件的方法;(6)巩固,加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解 决工业控 制的能力;(7)培养针对课题需要,选择和查阅有关手册,图表及文献资料的自学能力,提高 组成系统,编程,调试的动手能力;(8)熟悉单片机用系统开发,研制的过程,

2、软硬件设计方法,内容及步骤(9)了解数字钟的组成及工作原理1. 2设计性能(1)用51单片机的定时/计数器TMRO产生一秒的定时时间,作为秒计数时间;(2)当一秒产生时,秒计数加1;(3)开机时,显示00.00.00,并开始连续计时;(4)计时满23. 29. 59时,返回00. 00. 00重新开始计时;(5)在以上设计基础上,在单片机的I/O口上分别接入四个按键:K0控制“秒”的调整,每按一次加1秒;K1控制“分”的调整,每按一次加1分;K2控制“时”的调整,每按一次加1小时;K3时间复位按键。2.系统电路的方案2. 1实现时钟计时的基本方法用AT89C51单片机的定时/计数器TO产生一秒

3、的定时时间,作为秒计数时间,当一 秒产生时,秒计数加1开机时。显示00-00-00的时间,开始计时;计时满23-59-59时,返回00-00-00重新计时AT89C51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作 在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄 存器TMOD ,即可完成。定时/计数器何时工作也是通过TCON特殊功能寄存器来设置的。在此设计中,选择16位定时工作方式。对于T0来说,系统时钟为12MHz ,最大定 时也只有65536us ,即65. 536ms,无法达到我们所需要的1秒的定时,因此,必须通过 软件来处理这个

4、问题,假设取T0的最大定时为50ms ,即要定时1秒需要经过20次的50ms的定时。对于这20次计数,就可以采用软件的方法来统计了。设定TMOD二01H,设置定时/计数器0工作在方式1。给TO定时/计数器的THO , TLO装入预置初值,通过下面的公式可以计算出:N=t/Ty= (50X10A-3)/(l X10A-6) =50000X二65536-50000二15536二3CB0H即TH0=3CH, TLO=OBOH.这样,当定时/计数器0计满50ms时,产生一个中断,我们可以在中断服务程序中,对 中断次数加以统计,以实现数字钟的逻辑功能。2 2数字钟的时间显示显示器的时间显示采用动态扫描电

5、路驱动形式,以达到简化电路的目的。但要注意所需的驱动电流比静态驱动时要大,因此要增加驱动电路。可采用74LS244或者晶体管;其中74LS244是用来驱动段选码,晶体管是驱动位选码。电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元LED8LED7LED6LED5LED4LED3LED2LED137H36H35H34H33H32H31H30H小时分隔符分钟分隔符秒3系统的硬件设计3. 1单片机的功能介绍AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位 微处理器,俗 称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储

6、器的单片机。单片机的可 擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输岀管脚相兼 容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高 效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示U119XTAL2F i D/AD0PO 1/AD1PC 2/AD2PC 3/AD3 re4VAD4PO 5/AD5POE/ADBPC A AD/3A,37送35TH32P2. Q/WP2. 1/A9-2

7、 2 y J =2禺iM 1 P2.W12 P2.5/A13 P2.&/A14 P2.715L1F1 2 ri 3ri 4 r is lieli:TT1?irieI?PS. TRLjXDXD而T门TIOR/T係4/3.s 32 3 gj口P3旳飞图3. 1单片机AT89C52引脚功能简化图3 2时钟振荡电路时钟振荡器即时钟脉冲发生器,产生整个芯片内部各功能电路正常操作所需的时钟脉冲和 定时信号。最常用的一种电路连接方法是,在XTAL1和XTAL2这2只引脚之间外接一只晶体 振荡器XTAL和2只电容C1和C2到地(如图5-3所示),与片内电路共同构成一个多谐振 荡器电路。其振荡频率取决于

8、外接石英晶体振荡器元件XTAL的固有频率,常选取12MHZ或6MHZ的晶振。典型的晶振取11. 0592MHz(因为可以准确地得到9600波特率和19200波 特率,用于 有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)特别注意对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平 时,复位后直接从外部ROM的0000H开始执行。3 3键盘控制电路键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘 别的称为非编码键盘;C2亠C1C2C1.而靠软件编程来识在单片机

9、组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。下图是非编码键盘式5-6控制电路。图3. 3键盘控制电路按键在闭合和断开时,触点会存在抖动现象为使CPU能正确地读出端口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用的去抖动的方法有两种: 硬件方法和软件方法。单片机中常用软件法,软件法其实很简单,就是在单片机获得端口为低 的信息后,不是立即认定按键已被按下,而是延时10毫秒或更长一些时间后再次检测端口,如 果仍为低,说明按键的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键 释放后(端口为高)再延

10、时5-10个毫秒,消除后沿的抖动,然后再对键值处理。不过一般情 况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。4系统的软件设计4. 1系统软件设计流程图这次的数字钟设计用到很多子程序,最好将它们分为若干个相对独立且相互联系的部分。主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,开始小时计数值清0图4.1数字钟工作流程图4 2系统中断流程图单片机一般允许有多个中断源,当几个中断源同时向CPU请求中断时,就存在CPU优先响应哪一个中断检测完后,就可以显不时间O以下是数字钟工作的流程图。 显示初始化,设置定时器,定时50毫秒,根据计数值显示时间请求源的问题(优先

11、级问题),一般根据中断源的轻重缓急排队,优先 处理最紧急事件的中断请求,于是便规定每一个中断源都有一个中断优先级别,并且CPU总 是响应级别最高的中断请求。当CPU正在处理一个中断源请求的时候,又发生了另一个优先级比它高的中断源请求, 如果CPU能够暂时中止对原来中断处理程序的执行,转而去处理优先级更高的中断源请求, 待处理完以后,再继续执行原来的低级中断处理程序,这样的过程称为中断嵌套。以下图是定时器中断服务子程序流程图图4. 2定时器屮断服务子程序流程图4. 3子程序说明4. 3. 1按键扫描按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检 测分按键是否按下,分

12、按键如果按下,分就加1;如果没有按下,就 检测时按键是否按下,时 按键如果按下,时就加1;如果没有按下,就检测复位键是否按下,复位健按键如果按下, 时钟就复位。如果没有按下,把时间显示出来。4. 3. 2数码管动态扫描时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显 示,再然后 是分十位显示,再就是时个位计算显示,最后是时十位显示。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管 有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和 相应的位选,利用发光管的余辉和人眼视觉暂留特性,使人的感觉好像各位数码管同时都在 显刀

13、J5.数字钟元件清单和软件介绍5. 1数字钟元件清单列元件清单的主要目的是为了更好地理论联系实际,为了硬件设计和仿真起到了不可磨灭的作用,做到心中有数。以下是数字钟的元件清单兀件名称规格型号数量(个)单片机AT89C511电阻RES/10K, RES/2205,8晶振11.0592MHz1电容30pF/220uf2,1按键BUTTON4排阻RESPACK-8/10K1锁存器74LS2451液晶显示7SEG-MPX6-CC1二极管1N41484表5.1电子钟元器件清单5. 2软件调试打开程序调试软件keil uVision3,在里面新建一个工程,接着新建文件,编写相应程序。编写好的各个程序进行编

14、译与连接。但若是在该过程中,看见我们编好的程序 有错误,那么根据他相应的提示来修改错误,直到该程序能够正确 编译为止。能够正常编译的 程序说明没有什么问题了,此时我们在点击相关栏目,让它生成我们在硬件仿真时所需要 的.HEX文件。5. 3硬件调试打开Proteus仿真软件,按照方案所选的电路元件来设计整体电路,先把芯片按一定的 位置放好,然后按相应的对象进行连接,连接时需仔细,以免调试 时发生错误。做好之后把编 程所生成的。HEX文件加载到AT89C52中,运行仿真软件,查看运行效果。如果运行出错那 么就根据他相应的提示来修改错误,直 到仿真成功为止。总结通过本次仿真的设计,我遇到很多自己不理

15、解的问题及书本上或是我以前没 有看见过的 知识点。在面对这些问题时,我首先采用的是上网搜寻的方法,在根 据别人的提示,想想 自己的问题出在哪里,该怎么解决。当我还是无法想到解决的办法时,我就带着自己的问题 到图书馆查阅资料或找同学互相交流,如果我的问题还是没有解决,我就带着问题去问我们 的指导老师,让他帮我解决。采用这样的方法,我的很多问题都迎刃而解了!其次,我不但 努力解决自己遇到的问题,还帮助同学解决他们遇到的问题。这样一来,我的知识得到了进 一步的巩固,同学的问题也得到了相应的解决,我达到了一举双收的效果,我为此而感到高 兴。让我觉得仿真的最大成果是:知道了将理论用到实际当中时,会遇到很

16、多的问题。需要 我们一个一个地把它解决,根据自己所学的专业基础知识分析具体原因,具体问题具体分 析,再逐一把它克服掉。知道理论与实际的差距,所以以后 要多加强实际动手的能力。因 此,学习就应该采取理论与实践相结合的方式,理 论的问题,也就是实践性的课题。这种做 法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和 解决问题的能力。最后,我相信以后不管遇到什么困难和挫折,不要畏惧,要敢于向前探 索。这样问题才能迎刃而解附录一系统程序源代码START:MOVDPTR, STABLEMOVHOUR, #0;初始化MOVMINUTE, #0MOVSECOND,#0S_SE

17、T BIT Pl. 0;数字钟秒控制位M_SET BIT Pl. 1;分钟控制位H_SET BIT Pl. 2;小时控制位RESET BIT Pl. 3;复位键SECONDEQU30HMINUTEEQU31HHOUREQU32HTCNTEQU34H0000HORGSJMPSTARTORGOBHLJMPINT TO;定时器0溢出中断矢量MOVTCNT, #0;计数值赋0MOVTMOD, #01H;定时器/计数器工作在方式1MOVTHO, #3CH;定时50毫秒MOVTLO, #0B0HMOV IE, #82H ;EA中断总允许位置1 SETB TRO;允许TO累加计数。;判断是否有控制键按下,是

18、哪一个键按下Al: LCALLDISPLAYMOVPl, #OFFH;把Pl脚置成高电平JNBS_SET, SIJNBM_SET, S2JNBH_SET, S3JNBRESET, S4LJMPAl;如果没有键按下重新检测SI: LCALLDELAY;有$SET键按下去抖动JB S_SET, Al;确实有键按下进入下面处理,否则为干扰重新检测INCSECOND;秒值加1LCALLDISPLAYMOVA, SECONDCJNEA, #60, JO;判断是否加到60秒MOVSECOND, #0LJMPJO;等待按键弹起来,按一次,只加一次S2: LCALL DELAY;有M_SET键按下去抖动JB

19、M_SET, AlINCMINUTE;分钟值加1LCALLDISPLAYMOVA, MINUTECJNEA, #60, JI;判断是否加到60分MOVMINUTE, #0LJMPJIS3: LCALL DELAY;有H_SET键按下去抖动JB H_SET, AlINCHOUR;小时值加1LCALLDISPLAYMOVA, HOURCJNEA, #24, J2;判断是否加到24小时MOVHOUR, #0LJMPJ2S4: LCALL DELAY有RESET键按下去抖动JB RESET, AlLJMP STARTJO: JB S_SET, AlLCALL DISPLAYSJMP JOJI: JB

20、M_SET, AlLCALL DISPLAYSJMP JIJ2: JB H_SET, AlLCALL DISPLAYSJMP J2;定时器中断服务程序(每50ms中断一次),对秒,分钟和小时的计数INT_T0: MOVTHO, #3CHMOVTLO, #OBOHINCTCNTMOVA, TCNTCJNEA, #20, RETUNE;计时1秒INCSECONDMOVTCNT, #0MOVA, SECONDCJNEA, #60, RETUNEINCMINUTEMOVSECOND, #0MOV A, MINUTECJNE A, #60, RETUNEINCHOURMOVMINUTE, #0MOVA, HOURCJNEA, #24, RETUNEMOVHOUR, #0MOVMINUTE, #0MOVSECOND, #0MOVTCNT, #0RETUNE: RETI;显示控制子程序DISPLAY:MOVA, SECOND:显示秒MOVB, #10DIVAB;商和余数分别保留在A和BCLRP3. 6MOVCA, A+DPTR;把A+DPTR指定单元内容复制到AMOVPO, A;将A中查得结果送PO端口显示LCALLDELAYSETBP3. 6MOVA, BCLRP3. 7MOVCA,

温馨提示

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

评论

0/150

提交评论