ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:219.09KB ,
资源ID:1465116      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1465116.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机数字时钟课程设计Word文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机数字时钟课程设计Word文档格式.docx

1、完成显示由秒加1,一直加1至59,再恢复为00;分加1,一直加1至59,再恢复00;时加1,一直加1至23,再恢复00。* 按键功能* 1.启动时,数字时钟从23:59:00 开始自动计时; 2.按键S1控制对“时”的调整,每按一次时计数值加1; 3.按键S2控制对“分”的调整,每按一次分计数值加1; 4.按键S3控制对“秒”的调整,每按一次秒计数值加1; 5.按键S4控制对“时”的调整,每按一次时计数值减1; 6.按键S5控制对“分”的调整,每按一次分计数值减1; 7.按键S6控制对“秒”的调整,每按一次秒计数值减1。 4.1 数字时钟框图设计图1 数字时钟框图4.2 选用芯片简介 4.2.

2、1 80C51简介虽然目前单片机的品种很多,但其中最具代表性的当属Intel公司的MCS-51单片机系列。MCS-51以其典型的结构、完善的总线、SFR的集中管理模式、位操作系统和面向控制功能的丰富的指令系统,为单片机的发展奠定了良好的基础。MCS-51系列的典型芯片是80C51(CHMOS型的8051)。为此,众多的厂商都介入了以80C51为代表的8位单片机的发展,如Philips、Siemens(Infineon)、Dallas、ATMEL等公司,我们把这些公司生产的与80C51兼容的单片机统称为80C51系列。特别是在近年来,80C51系列又有了许多发展,推出了一些新产品,主要是改善单片

3、机的控制功能,如内部集成了高速I/O口、ADC、PWM、WDT等,以及低电压、微功耗、电磁兼容、串行扩展总线和控制网络总线性能等。 鉴于80C51系列在硬件方面的的广泛性、代表性和先进性以及指令系统的兼容性,可用其作为本教材的介绍对象;至于其他类型的单片机,在深入学习和掌握了80C51单片机之后再去学习已不是什么难事。图2 80C51单片机管脚图 单片机内部结构图为如图3所示: 图3单片机内部结构图 80C51单片机管脚说明VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程

4、序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被

5、外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为80C51的一些特殊功能口,如下所示:口管脚备选功能P3.0

6、 RXD串行输入口P3.1 TXD串行输出口P3.2 /INT0外部中断0P3.3 /INT1外部中断1P3.4 T0记时器0外部输入P3.5 T1记时器1外部输入P3.6 /WR外部数据存储器写选通P3.7 /RD外部数据存储器读选通表1 管脚P3口表P0,P1,P2,P3口引脚图为如图4: 图4 P0,P1,P2,P3口银角图 其中我们用了P0口和P1口。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率

7、周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否

8、有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 4.2.2 BCD 7段译码74LS47简介 该电路是由与非门、输入缓冲器和7 个与或非门组成的BCD-7 段译码器/驱动器。通常是低电平有效,高的灌入电流的输出可直接驱动显示器。7 个与非门和一个驱动器成对连接,以产生可用的BCD 数据及其补码至7 个与或非译码门。剩下的与非门和3 个输入缓冲器作为试灯输入(LT)端、灭灯输

9、入/动态灭灯输出(BI/RBO)端及动态灭灯输入(RBI )端。 该电路接受4 位二进制编码十进制数(BCD)输入并借助于辅助输入端状态将输入数据译码后去驱动一个七段显示器。输出结构设计成能承受7 段显示所需要的相当高的电压。驱动显示器各段所需的高达24mA 的电流可以由其高性能的输出晶体管来直接提供。BCD 输入计数9 以上的显示图案是鉴定输入条件的唯一信号。 该电路有自动前、后沿灭零控制(RBI和RBO)。试灯(LT)可在端处在高电平的任何时刻去进行,该电路还含有一个灭灯输入(BI),它用来控制灯的亮度或禁止输出。 该电路在应用中可以驱动共阳极的发光二极管或直接驱动白炽灯指示器。图5 74

10、LS47管脚图4.2.3 3-8线译码器74LS138简介 当一个选通端(E1)为高电平,另两个选通端(/E2)和/(E3)为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。图6 74LS138管脚图 4.2.4 LED数码显示器简介 LED数码显示器是1种由LED发光二极管组合显示字符的显示器件。它使用了8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点。 LED数码显示器有两种连接方法(1)共阳极接法。把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。当阴极端输入低电平时,段发光二极管就导通点

11、亮,而输入高电平时则不点亮。(2)共阴极接法。把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。当阳极端输入高电平时,段发光二极管就导通点亮,而输入低电平时则不点亮。在本设计中所采用的是共阴极LED数码显示器,其引脚排列如图7所示:图7 LED数码显示器两种连接方法图4.3 数字时钟工作原理图4.3.1 数字时钟电路总图图8数字时钟电路总图4.3.2 复位电路原理图图9复位电路原理图当RST引脚高电平到时,单片机复位。RST/VPD端的高电平,若直接由启动瞬间产生,则为启动复位,若通过按动按钮产生高电平复位称手动复位。图中,上电时,接通电源,

12、电容器C相当于瞬间短路,+5V加到了RST/VPD端,该高电平使8051全机复位。若运行过程中,需要程序从头执行,只需按动按钮S,则直接把+5V加到了RST/VPD端,从而复位。显然,该电路即可以上电复位,也可以手动复位,是常用复位电路之一。4.3.3 按键电路原理图图10 电路原理图4.3.4 时钟电路原理图 晶体振荡器电路给数字时钟提供一个频率稳定准确的12MHz的方波信号,不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。图11 时钟电路原理图4.3.5 LED数码管硬件电路原理图图12 LED数码管硬件电路原理图由于电路设计得极其巧妙,许多功能都可以由硬件完成,因此软件设

13、计就比较简单了。下面介绍软件设计的要点:主程序:首先进行初始化,设置数字时钟的计时初值为23:00,启动T0进行50ms定时,且允许T0中断。然后检测S1-S6是否按下,当按键S1-S6按下时,转入时、分、秒计数值的调整程序,系统主程序流程图如图13所示。图13 系统主程序流程图定时器T0中断子程序:中断服务子程序的作用是进行时、分、秒的计时与显示。定时器T0用于定时,定时周期设为50ms,中断累计20次(即1s)。定时器T0中断服务程序流程图如图14所示。图14定时器T0中断服务程序流程图时、分、秒计数值调整子程序TIME:时间计数单元分别在40H(s),41H(min),42H(h)内存单

14、元中,在计数单元中采用组合BCD码计数。TIME子程序的作用是当满1秒时,对秒计数单元进行加1操作,满60向分进位;对分计数单元进行加1操作,满60向时进位;对时计数单元进行加1操作,满24清零。显示子程序VIEW:VIEW子程序的作用是分别将时间计数单元40H(s),41H(min),42H(h)中的十进制时间值(组合BCD码)转化为个位和十位(分离BCD码)存放在显示缓冲区中,显示缓冲区地址为30H-35H。其中30H-31H存放秒数据,32H-33H存放分数据,34H-35H存放时数据。由于每一个地址单元内均为分离BCD码,用BCD一个7段译码器74LS47直接进行译码,因此不需要软件方

15、式对BCD码数据进行译码。扫描子程序SCAN:SCAN子程序的作用是把显示缓冲区中的数据依次送往显示器显示。把扫描值作为高4位,显示数据值作为低4 位,输出P0口,以完成显示,因为采用了3-8译码器74LS47作为扫描输出,所以用36H单元存放扫描指针,即36H中存放的是数码管的序号,显示时,只需取出30H-35H某一地址中的数据,并从P0口的低4位输出,同时P0口的高4位作为扫描值输出,就能保证数码管的正常工作。*主程序* ORG 0000H LJMP START ORG 000BH LJMP TT0 ORG 0050H START: MOV SP,#70H MOV 36H,#00H ;(3

16、6H)为扫描指针 MOV 40H,#00H ;秒控制 MOV 41H,#59H ;分控制 MOV 42H,#23H ;时控制 MOV 30H,#00H MOV 31H,#00H ;显示秒 MOV 32H,#09H MOV 33H,#05H ;显示分 MOV 34H,#03H MOV 35H,#02H ;显示时 MOV TMOD,#01H ;定时器T0工作方式设定 MOV TL0,#0B0H ;设置定时器T0低4位初值 MOV TH0,#3CH ;设置定时器T0高4位初值 MOV IE,#82H ;闭合EA,ET0 MOV 50H,#20 ;定时1秒循环次数 SETB TR0 LOOP: JB

17、P1.0,N2 ;S1按下时加1 CALL DE ;消除抖动 MOV A,42H ADD A,#01H DA A MOV 42H,A CJNE A,#24H,N1 MOV 42H,#00HN1: JNB P1.0,$ CALL DEN2: JB P1.1,N4 ;S2按下分加1 CALL DE MOV A,41H MOV 41H,A CJNE A,#60H,N3 MOV 41H,#00HN3: JNB P1.1,$N4: JB P1.2,N6 ;S3按下秒加1 MOV A,40H MOV 40H,A CJNE A,#60H,N5 MOV 40H,#00HN5: JNB P1.2,$N6: JB

18、 P1.3,N8 ;S4按下时减1 MOV R7,34H CJNE R7,#00H,N60 MOV R6,35H CJNE R6,#00H,N61 MOV 42H,#23H JMP N7N60: MOV A,34H DEC A MOV 34H,A MOV A,35H SWAP A ADD A,34HN61: MOV 34H,#09HN7: JNB P1.3,$N8: JB P1.4,N10 ;S5按下分减1 MOV R7,32H CJNE R7,#00H,N80 MOV R6,33H CJNE R6,#00H,N81 MOV 41H,#59H JMP N9N80: MOV A,32H MOV

19、32H,A MOV A,33H ADD A,32HN81:N9: JNB P1.4,$N10: JB P1.5,N11 ; S6按下秒减1 MOV R7,30H CJNE R7,#00H,N100 MOV R6,31H CJNE R6,#00H,N101 MOV 40H,#59H JMP N11N100: MOV A,30H MOV 30H,A MOV A,31H ADD A,30HN101: MOV 30H,#09H MOV 31H,AN11: JNB P1.5,$*T0中断服务子程序*TT0: MOV TH0,#3CH MOV TL0,#0B0H PUSH ACC PUSH PSW DJN

20、Z 50H,TINT0 CALL TIME CALL VIEWTINT0: CALL SCAN POP ACC POP PSW LJMP LOOP*显示扫描子程序*SCAN: MOV R0,#36HSCAN0: MOV A,R0 ADD A,#30H ;A加30H即为显示缓冲区地址 MOV R1,A ORL A,R1 MOV P0,A ;P0高4位为扫描值,低4位为显示数据值 CALL DELAY INC R0 CJNE R0,#06H,SCAN0 MOV R0,#00H RET*时、分、秒计数值调整子程序*TIME: CJNE A,#60H,TTI CJNE A,#24H,TTITTI:*向

21、显示缓冲区写数据*VIEW: MOV A,40H ;30H为显示缓冲区首地址 ANL A,#0FH MOV 33H,A MOV 35H,A*延时子程序*DELAY: MOV R7,#65 DJNZ R7,$DE: MOV R4,#10 ;延时5msDE1: MOV R5,#249 DJNZ R5,$ DJNZ R4,DE1 END一个星期的单片机课程设计很快就结束了,在这一周当中,虽然开始有点困难,但是经过努力学习,合理地进行设计安排,我终于顺利地完成了本次单片机课程设计,同时也学到了很多东西。在本次课程设计中,我通过动手实践操作,进一步学习和掌握了单片机原理的有关知识,特别是程序的编程方面,

22、加深了对单片机原理及应用技术的认识,进一步巩固了对单片机知识的理解,掌握简单单片机应用系统的设计、制作的方法。在设计时根据课题要求,复习相关的知识,查询相关的资料。根据实验条件,找到适合的方案,找到需要的元器件及工具,进行实验。这次的单片机课程设计重点是通过实践操作和理论相结合,提高动手实践能力,提高科学的思维能力,更在一周的时间了解了更多的有关单片机的知识,使知识更加丰富,使自己更加充实。 单片机作为我们的主要专业课之一,虽然在大三开学初期我对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。作为一名测控技术与仪器专业的大三学生,我觉得做

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2