单片机课程设计数字时钟设计.doc

上传人:文库蛋蛋多 文档编号:4147525 上传时间:2023-04-07 格式:DOC 页数:25 大小:154KB
返回 下载 相关 举报
单片机课程设计数字时钟设计.doc_第1页
第1页 / 共25页
单片机课程设计数字时钟设计.doc_第2页
第2页 / 共25页
单片机课程设计数字时钟设计.doc_第3页
第3页 / 共25页
单片机课程设计数字时钟设计.doc_第4页
第4页 / 共25页
单片机课程设计数字时钟设计.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《单片机课程设计数字时钟设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计数字时钟设计.doc(25页珍藏版)》请在三一办公上搜索。

1、目录一、摘要1二、绪论3设计的基本思路与主要内容3三、数字时钟系统设计43.1系统功能要求43.2整体方案4四、硬件设计与分析64.1硬件设计原理64.2各单元电路介绍64.2.1AT89C51单片机介绍6AT89C5164.2.2 单片机最小应用系统64.2.3系统原理图8五、软件设计95.1 主程序的设计95.2键输入程序105.3显示程序115.4延时程序125.5中断程序12六、调试与运行166.1 电路仿真166.2 调试和运行16七、参考文献18八、系统原理图19九、程序清单20数字时钟设计(电子信息工程专业09(1)班,徐某)一、摘要单片微型计算机简称单片机,它是把微型计算机的各

2、个功能部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口、定时器/计数器以及串行通信接口等待集成在一块芯片上,构成一个完整的微型计算机,故又把它称为单片微型计算机。当今信息科技高速发展,使用方便、低成本电子设备已逐步成为我们日常生活中电子产品的主力军。用软件代替硬件的电子设备能大大地节省成本,且有利于资源的节约,因此,以软代硬的设计必将成为我们现代设计的主流。本设计是利用MCS-51系列单片机内部的定时器/计数器进行中数年定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能够使设计者在定时/计数器的使用、中数年及程序设计方面得到锻炼和提高,因此本系统将采用软

3、件方法实现计时。关键词: 单片机;数码管;程序设计二、绪论设计的基本思路与主要内容设计一个电子产品,首先了解它能实现的功能,时钟系统最基本的功能就是实现计时,在这里设计的数字电子时钟,它能实现计时和校时的功能,给电子钟加上电自动计时,设计一个按键对时钟进行复位和三个按键对时间进行调整。硬件设计很简单,主要包括:单片机、按键电路、驱动显示电路,以及LED显示器四个部分。单片机选用AT89C51芯片,它无须外扩程序存储器,设计电路很简单。由于只用了四个按键,所以采用独立式按键使设计更简单。显示时、分、秒加两个分隔符,采用8位的数码管,用常用的74LS244来驱动LED数码管显示字符。简易数字时钟可

4、实现校时和整点报时功能,该软件采用C语言来实现,主要包括主程序、键输入程序、显示程序、定时程序和中断程序等软件模块。把原程序加入原理图,做出电子钟的仿真,以秒计数并显示时、分、秒。其中秒和分为60进制,小时为24进制计数。可通过按键实现时钟复位和分、秒、时的校正。三、数字时钟系统设计3.1系统功能要求以单片机技术为核心,充分应用各种外围电路元器件,设计一个通过显示器显示时间(时、分、秒)的电子钟。要求:上电时,时、分、秒显示为00时、00分、00秒,并以秒为单位开始计时;运行状态下,按动控制按扭S-SET,对秒进行调整;运行状态下,按动控制按扭M-SET,对分进行调整;运行状态下,按动控制按扭

5、H-SET,对小时进行调整。当数字时钟运行到正点时,实现自动报时功能。当按下T-SET键是实现小时由24进制和12进制的相互转换。3.2整体方案电子钟的电路图主要由单片机(AT89C51)、键盘电路、驱动显示电路和LED显示器四部分组成,它主要实现时钟的显示,以及对时、分、秒进行调整,即实现调时的功能。其数字钟系统整体结构如图2-1所示。七段数码管AT89C51驱动LED显示器位选按 键图2-1 电子钟系统整体结构显示方案方案一:静态显示就是当CPU将要显示的字或字段码送到输出口,显示器就可以显示出所要显示的字符,如果CPU不去改写它,它将一直保持下去;静态显示硬件开销大,电路复杂,信息刷新速

6、度慢。方案二:动态显示则是一位一位地轮流点亮显示器地各个位(扫描)。对于显示器的每一位而言,每隔一段时间点亮一次;动态显示耗能较小,但编写程序较复杂。动态显示硬件连接简单,信息刷新速度快。由于本次设计是对时间进行显示,如采用静态显示,则所占用的I/O口较多,电路较复杂,所以在此选择的是方案二,采用动态显示。键盘方案方案一:独立式键盘。独立式键盘的各个按键相互独立,每个按键独立地与一根数据输入线(单片机并行接口或其他芯片的并行接口)连接。独立式键盘配置灵活,软件结构简单,但每个按键必须占用一根接口线,在按键数量不多时,接口线占用多。所以,独立式按键常用于按键数量不多的场合。方案二:矩阵式键盘。矩

7、阵式键盘采用的是行列式结构,按键设置在行列的交点上.(当接口线数量为8时,可以将4根接口线定义为行线,另4根接口线定义为列线,形成4*4键盘,可以配置16个按键。)由于本设计只用了四个按键,不需要采用矩阵式键盘,所以选用第一种方案,采用独立式键盘。计时方案采用软件控制:利用单片机内部的定时/计数器进行定时,配合软件定时实现时、分、秒的计时。该方案能够使设计者,在设计的过程中容易实现,且节省硬件成本,因此本系统将采用软件方法实现计时。四、硬件设计与分析4.1硬件设计原理时钟电路的核心是AT89C51单片机,其内部带有2KB的可反复擦写的只读Flash程序存储器和128 bytes的随机存取数据存

8、储器(RAM),无须外扩程序存储器。电脑时钟没有大量的运算和暂存数据,现有的128B片内RAM已能满足要求,也不必外扩片RAM。系统配备8位LED数码管显示和3个独立式按键,用P0口作为键盘接口电路,P1口和P3口作为段码和位码输出口,并在字段码输出口接74LS245芯片,用该芯片来驱动LED数码管显示。利用P0.0、P0.1和P0.2作为功能按键输入口。4.2各单元电路介绍4.2.1AT89C51单片机介绍 AT89C51是一个低电压,高性能CMOS 8位单片机,片内含2k bytes的可反复擦写的只读Flash程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL

9、公司的高密度、非易失性存储技术生产,兼容标准MCS51指令系统,片内置通用8位中央处理器和Flash存储单元,所以说AT89C51是一个功能强大的单片机。 AT89C51是一个低功耗高性能单片机,它有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。同时AT89C51的时钟频率可以为零,即具备可用软件设置的睡眠省电功能,系统的唤醒方式有RAM、定时/计数器、串行口

10、和外中断口,系统唤醒后即进入继续工作状态。省电模式中,片内RAM将被冻结,时钟停止振荡,所有功能停止工作,直至系统被硬件复位方可继续运行。4.2.2 单片机最小应用系统时钟电路和复位电路是单片机最小应用系统中必不可少的。单片机时钟电路图,如图3-1所示:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。图3-1 单片机时钟电路图复位是使单片机或系统中的其他部件处于某种确定

11、的初始状态。单片机的工作就是从复位开始的,当在单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。实际应用中,复位操作有两种基本的形式:一种是上电复位,另一种是上电与按键均有效的复位。由于本次设计采用的是上电复位,所以这里只介绍上电复位,如下图3-3所示:图3-3上电复位电路上电复位要求接通电源后,单片机自动实现复位操作。常用的上电复位如上图所示。上电瞬间RST引脚获得高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。4.2.3系统原理图AT89C51的P1口接入三个按键,对时、分、秒进行调整。P0口输出字段码,

12、控制要显示的字符,外接74LS245芯片,驱动LED显示。P3口输出字位码,去控制要显示的位,其原理图如图3-6所示。图3-6 电子钟原理图当接入电源时,数字电子钟以秒为单位开始计时。运行状态下,按下控制按键S-SET,对秒进行调整;按下M-SET调整分钟;按下H-SET对小时进行调整。这样通过三个按键,分别对时、分、秒进行调整,从而实现调时。五、软件设计在软件设计中,整个程序的主框架是以定时1s计算的方式来实现电子钟。定时1s的程序段,使用动态显示程序实现延时,既完成了延时,也完成了数字的显示。在计算程序中,使对应于时、分、秒的变化量按照60进制和24进制进行计算,动态显示程序直接引用这些变

13、量,达到显示的数字也随之不断变化,即完成了电子钟的功能。其软件功能模块主要有键输入程序、中断程序、显示程序,以及延时程序。需要说明的是,这里设计的是简易的电子钟,主要是用程序运行来计算时间,这样用程序来确定出1s的时间精度是很有限的,所以整个时钟的精度不太高。5.1 主程序的设计初始化将时、分、秒各单元的内容清空,置T0为计数器方式1,分别给计数器的高8位和低8位赋计数初值,启动T0工作。键入一个按键,如执行此动作,秒值加1,否则重新键如按键。主程序模块:主程序流程图,如图4-1所示 初始化键输入开始键执行结束图4-1 主程序流程图5.2键输入程序键输入程序用于调整时间。以秒为例,按下按键S-

14、SET,判断S-SET是否真的被按下,若没有键按下,转到A1程序段,再次键入按键,重新判断。若按键按下了,则调用延时程序,消除抖动现象秒值加1,当秒值大于60时,秒清零,进行下一次计时,同时分加一,并转到J0显示。此过程循环执行,其程序流程图如图4-2所示:显示S-SET是否按下否按下秒值加1秒60 ?清零N调用延时YYN图4-2 键输入程序流程图A1:LCALLDISPLAY;调用延时程序JNBS_SET,S1;判断按键是否按下JNBM_SET,S2JNBH_SET,S3LJMPA1S1: LCALLDELAY;去抖动JBS_SET,A1INCSECOND;秒值加1MOVA,SECONDCJ

15、NEA,#60,J0;判断是否加到60秒MOVSECOND,#0 ;秒清0LJMPJ0J0:JBS_SET,A1LCALLDISPLAY ;调用显示SJMPJ05.3显示程序显示其时、分、秒的数值,和两个分隔符。以显示秒为例,当P3.7输入高电平时,秒的个位所对应的字段码点亮,显示其秒的个位;当秒有十位输入时,P3.6输入高电平,秒所十位对应的字段码点亮,显示其秒十位。其程序流程图如图4-3所示:取字段码取字位码显示秒个位显示秒十位调用延时图4-3 显示程序流程图DISPLAY:MOVA,SECOND;显示秒MOVB,#10DIVABCLRP3.6MOVCA, A+DPTR ;取字段码MOVP

16、0, ALCALLDELAY ;调用延时SETBP3.6 ;显示秒十位MOVA,BCLRP3.7MOVCA,A+DPTR ;取字段码MOVP0,ALCALLDELAY ; 调用延时,去抖动SETBP3.7 ;显示秒个位CLRP3.55.4延时程序按键抖动时间一般为5ms10ms,因此延时10ms,其流程图如图4-4所示:#10送R6#250送R7返回(R6)=(R7) ?YN图4-4 延时程序流程图DELAY:MOVR6,#10 ;延时10msD1:MOVR7,#250DJNZR7,$DJNZR6,D1RET5.5中断程序中断程序主要用于控制显示的字符。当秒值大于60时,秒清零,重新计数,分值

17、加1,秒、分同时显示;当分值大于60时,分清零,重新计数,小时加1,秒、分、时同时显示,当小时大于23时,一天的计时完毕,秒、分、时均清零,进行第二天的计时。此任务循环执行。其程序流程图如图4-5所示:秒加1秒59?小时23?分59?秒清0,分加1小时清0分清0,时加1NYYYNN图4-4 中断程序流程图DISPLAY: MOVA,SECOND;显示秒MOVB,#10DIVABCLRP3.6MOVCA, A+DPTRMOVP0, ALCALLDELAY ;调用延时SETBP3.6 ;显示秒的十位MOVA,BCLRP3.7MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.7

18、 ;显示秒的个位CLRP3.5MOVP0,#40H;显示分隔符LCALLDELAYSETBP3.5MOVA,MINUTE;显示分钟MOVB,#10DIVABCLRP3.3MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.3 ;显示分的十位MOVA,BCLRP3.4MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.4 ;显示分个位CLRP3.2MOVP0,#40H;显示分隔符LCALLDELAYSETBP3.2MOVA,HOUR;显示小时MOVB,#10DIVABCLRP3.0MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.0

19、;显示时的十位MOVA,BCLRP3.1MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.1 ;显示时的个位RET六、调试与运行6.1 电路仿真此设计的电路在单片机仿真软件Proteus.Professional.7.1中进行仿真,仿真电路如图5-1所示:图5-1 电子钟仿真电路图6.2 调试和运行在KEIL (单片机汇编) C51软件中编写好的程序,将程序放入单片机仿真软件中,结合硬件电路进行调试与运行。通过按键对时间进行调整。如显示时间为14-30-22,既是14点30分22秒,通过以下调整则可实现。按动S-SET键,将秒调到22;按动M-SET键,将分调到30;按动

20、H-SET键,将时调到14。则将时间调到了所要显示的时间14-30-22,通过此方法可将时间调整到任何需要显示的时间。七、参考文献1.朱永金等主编,单片机应用技术,中国劳动社会保障出版社。2.彭冬明.韦友春主编,单片机实验教程,理工大学出版社。 3.朱家建主编,单片机原理及应用,机械工业出版社。4.胡汉才主编,单片机原理及接口技术,清华大学出版社。 5.张伟主编,单片机原理及应用,机械工业出版社。八、系统原理图九、程序清单S_SETBITP1.0;数字钟秒控制位M_SETBITP1.1;分钟控制位H_SETBITP1.2;小时控制位SECONDEQU30HMINUTEEQU31HHOUREQU

21、32HTCNTEQU34H ORG00HSJMPSTARTORG0BHLJMPINT_T0 START: MOVDPTR,#TABLEMOVHOUR,#0;初始化MOVMINUTE,#0MOVSECOND,#0MOVTCNT,#0MOVTMOD,#01H ;置T0为计数器方式1MOVTH0,#(65536-50000)/256;定时50毫秒MOVTL0,#(65536-50000)MOD 256MOVIE,#82HSETB TR0 ;启动T0工作A1:LCALL DISPLAYJNBS_SET,S1JNBM_SET,S2JNBH_SET,S3LJMPA1S1: LCALLDELAY;去抖动JB

22、S_SET,A1INCSECOND;秒值加1MOVA,SECONDCJNEA,#60,J0;判断是否加到60秒MOVSECOND,#0LJMPJ0S2: LCALLDELAYJBM_SET,A1K1: INCMINUTE;分钟值加1MOVA,MINUTECJNEA,#60,J1;判断是否加到60分MOVMINUTE,#0LJMPJ1S3: LCALLDELAYJBH_SET,A1K2: INCHOUR;小时值加1MOVA,HOURCJNEA,#24,J2;判断是否加到24小时MOVHOUR,#0 LJMPJ2 J0:JBS_SET,A1LCALLDISPLAYSJMPJ0J1:JB M_SET

23、,A1 LCALLDISPLAYSJMPJ1J2: JB H_SET,A1LCALL DISPLAYSJMP J2INT_T0: MOVTH0,#(65536-50000)/256MOVTL0,#(65536-50000)MOD 256INCTCNTMOVA,TCNTCJNEA,#20,RETUNE;计时1秒INCSECONDMOVTCNT,#0MOVA,SECONDCJNEA,#60,RETUNEINCMINUTEMOVSECOND,#0MOVA,MINUTECJNEA,#60,RETUNEINCHOURMOVMINUTE,#0MOVA,HOURCJNEA,#24,RETUNEMOVHOUR

24、,#0 RETUNE: RETIDISPLAY: MOVA,SECOND;显示秒MOVB,#10DIVABCLRP3.6MOVCA, A+DPTRMOVP0, ALCALLDELAYSETBP3.6MOVA,BCLRP3.7MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.7CLRP3.5MOVP0,#40H;显示分隔符LCALLDELAYSETBP3.5MOVA,MINUTE;显示分钟MOVB,#10DIVABCLRP3.3MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.3MOVA,BCLRP3.4MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.4CLRP3.2MOVP0,#40H;显示分隔符LCALLDELAYSETBP3.2MOVA,HOUR;显示小时MOVB,#10DIVABCLRP3.0MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.0MOVA,BCLRP3.1MOVCA,A+DPTRMOVP0,ALCALLDELAYSETBP3.1RETTABLE: DB 3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FHDELAY: MOVR6,#10D1:MOVR7,#250DJNZR7,$DJNZR6,D1RETEN

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号