《基于单片机定时闹钟的设计大学论文.doc》由会员分享,可在线阅读,更多相关《基于单片机定时闹钟的设计大学论文.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 本科毕业课程(设计)(设计目)题:单片机定时闹钟设计学 院: 明德学院 专 业: 电子信息工程 班 级: 电信12151 学 号: 122003110811 学生姓名: 袁杰 指导教师: 王许 2015年 6月23号贵州大学本科毕业课程(设计)诚信责任书本人郑重声明:本人所呈交的课程设计,是在指导老师的指导下独立进行研究所完成。在文本设计中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。特此声明。课程(设计)作者签名: 袁杰 日 期: 2015/6/23 I 摘要电信12151 袁杰本设计是单片机定时闹钟系统,不仅能实现系统要求的功能,而且还有附加功能,即还能设定和修改当前
2、所显示的时间。 本次设计的定时闹钟在硬件方面就采用了AT89C51芯片,用6位LED数码管来进行显示。LED用P0口进行驱动,采用的是动态扫描显示,能够比较准确显示时时分分秒秒。通过S1、S2、S3、和S4四个功能按键可以实现对时间的修改和定时,定时时间到喇叭可以发出报警声。在软件方面采用汇编语言编程。整个定时闹钟系统能完成时间的显示,调时和定时闹钟、复位等功能,并经过系统仿真后得到了正确的结果。关键字:单片机、AT89C51、定时闹钟、仿真AbstractThis design is a single-chip timing alarm system, can not only realiz
3、e the function of system requirements, and there are additional functions, which can set up and modify the display time. Timing alarm clock this design adopts the AT89C51 chip on the hardware side, with 6 LED digital tube to display. LED P0 export driven, by using dynamic scanning display, can accur
4、ately display always - sub - seconds seconds. Through the S1, S2, S3, and S4 four function keys can be achieved on the time changes and timing, timing to the horn can send out alarm sound. Using assembly language programming in the software. The timing clock system has functions of time display, tim
5、ing and timing alarm clock, reset and other functions, and the system simulation to obtain correct results. Keywords: single chip microcomputer, AT89C51, alarm clock, simulatio17 III 1.绪论11.1设计的目的与意义11.2国内外现状11.3 单片机发展趋势11.4 设计中有哪些难点21.5 设计步骤22.硬件设计32.1方案论证32.2系统设计原理32.3单片机AT89C51简介32.4数码管显示电路62.6喇叭
6、:SPEAKER73 系统的软件设计73.1系统的软件设计与说明73.2 程序调试83.3 程序流程图84.参考程序95.致谢16电信12151 袁杰1.绪论1.1设计的目的与意义本设计的目的是使学生能够熟练的掌握单片机简单的设计流程,能够合理的设计出简单易实现的设计,从而让自己对科技的兴趣更浓。在信息时代,计算机的应用无处不在,带有像单片机一类嵌入式处理器的小型智能化电子产品,已经成为家用电器的主流,市场需求前景广阔,因此,掌握小型单片机应用系统设计方法,已成为当今电子应用工程师所必备的技能,定时闹钟具备小型单片机应用系统的一切要素,其结构简单、成本低廉、走时精确、设置方便,所以智能化方面有
7、广泛的用途。1.2国内外现状单片机是指一个集成在一块芯片上的完整计算机系统。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片。 在单片机(Microcontroller)出现后,计算机才真正 地从科学的神圣殿堂走入寻常百姓家,成为广大工程技术人员现代 化技术革新,技术革命的有利武器。目前,单片机在民用和工业测 控领域得到最广泛的应用。彩电,冰箱,空调,录像机,VCD,闹钟,遥控器,游戏机,电饭煲等无处不见单片机的影子,单片机早已深深 地溶入我们每个人的生活之中。 单片机能大大地提高这些产品的智能性,易用性及节
8、能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产 上也极大地提高了生产效率和产品质量。1.3 单片机发展趋势目前,单片机正朝着高性能和多品种方向发展,其发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势:(1) CMOS化近年,由于CHMOS技术的进小,大大地促进了单片机的CMOS化。CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。这也是今后以80C51取代8051为标准MCU芯片的原因。因为单片机芯片多数是采用CMOS(金属栅氧化物)半导体工艺生产。CMO
9、S电路的特点是低功耗、高密度、低速度、低价格。采用双极型半导体工艺的TTL电路速度快,但功耗和芯片面积较大。随着技术和工艺水平的提高,又出现了HMOS(高密度、高速度MOS)、CHMOS工艺以及CHMOS和HMOS工艺的结合。目前生产的CHMOS电路已达到LSTTL的速度,传输延迟时间小于2ns,它的综合优势已大于TTL电路。因而,在单片机领域,CMOS电路正在逐渐取代TTL电路。(2) 低功耗化单片机的功耗已从mA级,甚至1uA以下;使用电压在36V之间,完全适应电池工作。低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化。(3) 低电压化几乎所有的单片机都有
10、WAIT、STOP等省电运行方式。允许使用的电压范围越来越宽,一般在36V范围内工作。低电压供电的单片机电源下限已可达12V。目前0.8V供电的单片机已经问世。(4) 低噪声与高可靠性为提高单片机的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片厂家在单片机内部电路中都采用了新的技术施。 1.4 设计中有哪些难点在设计的过程中遇到问题是不可避免的,我遇到了很多问题,如下所示; 1.做实物时无法驱动数码管显示,后来了解到可以加锁存器,如74LS253,74LS573等等,还可以加三极管用来加大电流。当然如果换成液晶显示屏的话就不需要考虑驱动不了的问题了。 2.
11、烧程序时没发烧进去,需要改变最高和最低波特率,才能按照步骤把程序烧进去。 3.复位电路在实物中可以运行,但是在仿真中不能正常运行。目前还未找到原因。1.5 设计步骤1.上网收集资料(6月18)2.进行对比分析(6月19)3.勾出自己的设计流程图(6月20)4.完成设计(6月21至6月23) 2.硬件设计 2.1方案论证 显示器的选择方案论证: 方案一:液晶显示器。如果选择此方案,将会降低系统的功耗,这样就可以用电池供电,便于携带。但液晶显示器的驱动电路复杂,使用起来有一定的难度。 方案二:用数码管作为显示器。数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源
12、,非常方便。其缺点是功耗较大。 由于数码管使用起来较为方便,在夜间看时间也很方便,因此我选择了方案二。 2.2系统设计原理 本设计使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。 本系统采用单片机AT89C51作为本设计的核心元件,利用6位共阴数码管作为显示器件。接入共阴LED显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,时间的定时用时钟电路,修改时间和定时用手动按键控制,报警声通过喇叭发出。提示预先设定时间电器的起停时间到,从而控制电器的起停。 电路由下列部分组成:时钟电路、复位电路、控制电路、LED显示,报警电
13、路,芯片选用AT89C51单片机。 系统框图如图 2-1所示: 2.3单片机AT89C51简介 AT89C51是一个低电压,高性能CMOS型8位单片机,片内含4KB的可反复擦写的Flash只读程序存储器(ROM)和128B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51为用户提供了许多高性价比应用场合,可灵活应用于各种控制领域。 AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,
14、2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 主要特性: 与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24Hz 三级程序存储器锁定 1288位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 引脚使用说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向
15、I/O口,每脚可吸收8TTL门电流。当 P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TT
16、L门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(
17、ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下所示: 管脚备选功能: P3.0RXD(串行输入口) P3.1 TXD(串行输出口) P3.2/INT0(外部中断0) P3.3/INT1(外部中断1) P3.4T0(记时器0外部输入) P3.5T1(记时器1外部输入) P3.6/WR(外部数据存储器写选通) P3.7/RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 ST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FL
18、ASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持
19、低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必
20、须保证脉冲的高低电平要求的宽度.图2-2是单片机AT89C51的引脚图:图2-22.4数码管显示电路 单片机中通常使用7段LED,LED是发光二极管显示器的缩写。LED显示器由于结构简单,价格便宜,体积小,亮度高,电压低,可靠性高,寿命长,响应速度快,配置灵活,与单片机接口方便而得到广泛应用。LED显示器是由若干个发光二极管组成显示字段的显示部件,当发光二极管导通时,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符。LED显示器有多种形式,如:“米”字型显示器,点阵显示器和七段数码显示器等,在单片机系统中使用最多的是七段数码显示器。 本系统利用7SEG-MPX6-CC-
21、BLUE数字显示器,7SEG-MPX6-CC-BLUE数字显示器的1-6引脚连接AT89C51单片机 P2.0 P2.5接口,其他8个引脚分别与AT89C51单片机的P0.0 - P0.7和共阳极管RESPACK-8排阻的 2 - 9 引脚分别连接。 因为共阴极的LED数码管它的驱动电流是分开的,在单片机进行动态扫描的时候不会影响彼此的电流,故该系统中的6位LED数码管均用共阴极的数码管。 6位数码管的引脚图如图2-3所示:图2-32.5时钟电路 单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中AT89C51单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的
22、并联谐振回路。振荡晶体可在1.2MHz12MHz之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF100pF之间取值。AT98C51单片机的时钟电路。如图2-4所示:图2-42.6喇叭:SPEAKER 由P3.7口控制喇叭,使其定时时间到能发出报警声。如图2-5所示:图2-53 系统的软件设计3.1系统的软件设计与说明该系统软件程序主要有主程序模块,定时中断服务程序,中断等待服务程序,键盘服务程序,显示子程序服务程序等六大模块组成。 在AT89C51外围的一个17管脚即P3.7管口上加喇叭器,通过软件与硬件的结合可实现定时报警功能。 图
23、中按键从上往下设定为S1,S2,S3,S4,S1与p1.4相连,S2与p1.3相连,S3与p1.2相连,S4与p1.1相连。当需要设定当前时间时,按一下S4键,进入时间设定状态,按一下S2,分钟加1;按一下S3,小时加1。如此反复来设定当前时间。调好时间后按S1退出当前时间设定状态;当要设定定时时间时,按下S3,进入定时时间设定状态,按一下S2,小时加1;按一下S4,分钟加1。如此反复来设定要设定的定时时间。设好后,按下S1退出定时时间设定状态。3.2 程序调试 1)将程序输入到伟福的环境下; 2)用单步运行和断点运行方式调试程序; 3)调试T0中断服务程序,首先在记数单元39H、3AH、3B
24、H、3CH单元中预置数,调试秒单元向分单元进位及分单元向时单元的进位,最后将T0中断服务程序统调通过; 4)在39H、3AH、3BH、3CH单元中预置数,调试显示程序; 5)调试主程序,使闹钟走时系统工作正常。3.3 程序流程图 本设计程序流程图如3-1所示:图3-1主程序流程图 开始LCD1602DS130初始化显示时间进入模式选择状态年、月、日期的设置时、分、秒的设置闹铃的设置退出4.参考程序ORG 0000H LJMP MAIN ORG 000BH LJMP TIME ;主程序部分: ORG 0100H MAIN:MOV SP,#50H MOV 20H,#00H ;秒钟 BIN MOV
25、21H,#00H ;分钟 BIN MOV 22H,#00H ;小时 BIN MOV 23H,#01H MOV 24H,#01H MOV25H,#00HMOV30H,#00HMOV31H,#00HMOV32H,#00HMOV33H,#00HMOV34H,#00HMOV35H,#00HMOV36H,#01HMOV37H,#00HMOV38H,#01HMOV39H,#00HMOVTMOD,#01H;16位计数器MOVTH0,#03CH;赋计数初值MOVTL0,#0B0HMOVIE,#10000111BSETB TR0;T0启动计数MOVR2,#14HMOVP2,#0FFHLOOP:LCALLTIME
26、PROLCALL DISPLAY1JBP1.1,M1LCALLSETTIME;调用设定时序LJMPLOOPM1: JBP1.2,M2 LCALLSETATIME;调用设定时间序LJMPLOOPM2: JBP1.4,M4LCALLLOOKATIME;调用设定闹钟时间程序M4: LJMPLOOPDELAY: MOVR4,#030H ;延时时间DL00: MOVR5,#0FFHDL11: MOVR6,#9HDL12: DJNZR6,DL12DJNZR5,DL11DJNZR4,DL00RET;设定时间程序:SETTIME:L0: LCALL DISPLAY1 ;调用时间允许程序 MM1: JB P1.
27、2,L1 MOV C,P1.2 JC MM1 LCALL DELAY1 ;调用延时 JC MM1 MSTOP1: MOV C,P1.2 JNC MSTOP1 ;判断P1.2是否释放?释放则继续 LCALL DELAY1 ;调用延时 MOV C,P1.2 JNC MSTOP1 INC 22H ;小时增加1 MOV A,22H CJNE A,#18H,GO12 ;判断小时是否到24时?未到继续循环 MOV 22H,#00H ;小时复位 MOV 34H,#00H MOV 35H,#00H LJMP L0 L1: JB P1.3,L2 MOV C,P1.3 JC L1 LCALL DELAY1 ;延时
28、 JC L1 MSTOP2: MOV C,P1.3 JNC MSTOP2 ;判断P1.3是否释放?释放则继续 LCALL DELAY1 ;调用延时 MOV C,P1.3 JNC MSTOP2 INC 21H ;分钟增加一 MOV A,21H CJNE A,#3CH,GO11 MOV 21H,#00H ;分钟复位 MOV 32H,#00H MOV 33H,#00H LJMP L0 GO11: MOV B,#0AH ;将A中的内容分成高低两部分 DIV ABMOV 32H,B MOV 33H,A LJMP L0 GO12: MOV B,#0AH DIV AB MOV 34H,B MOV 35H,A
29、 LJMP L0 L2: JB P1.4,L0 MOV C,P1.4 JC L2 LCALL DELAY1 ;调用延时 MOV C,P1.4 JC L2 STOP1: MOV C,P1.4 ;判断按键P1.4是否释放? JNC STOP1 LCALL DELAY1 ;调用延时 MOV C,P1.4 JNC STOP1 LJMP LOOP ;设置闹钟时间 SETATIME:LCALL DISPLAY2 ;调用时间运行 N0: LCALL DISPLAY2 MM2: JB P1.3,N1 ;判断P1.3是否按下? MOV C,P1.3 JC MM2 LCALL DELAY1 JC MM2 MSTO
30、P3: MOV C,P1.3 ;判断P1.3是否释放? JNC MSTOP3 LCALL DELAY1 MOV C,P1.3 JNC MSTOP3 INC 24H ;设定小时增加1MOV A,24H CJNE A,#24,GO22 MOV 24H,#00H ;时钟复位 MOV 38H,#00H MOV 39H,#00H LJMP N0 N1: JB P1.1,N2 ;判断P1.1是否按下? MOV C,P1.1 JC N1 LCALL DELAY1 JC N1 MSTOP4: MOV C,P1.1 ;判断P1.1是否释放? JNC MSTOP4 LCALL DELAY1 MOV C,P1.1
31、JNC MSTOP4 INC 23H ;设定闹钟分钟增加1 MOV A,23H CJNE A,#60,GO21 ;判断A是否到60分? MOV 23H,#00H ;分钟复位 MOV 36H,#00H MOV 37H,#00H LJMP N0 GO21: MOV B,#0AH ;将A中的内容分成高低两部分 DIV AB MOV 36H,B MOV 37H,A LJMP N0 GO22: MOV B,#0AH DIV AB MOV 38H,B MOV 39H,A LJMP N0 N2: JB P1.4 ,N0 ;判断P1.4是否按下? MOV C,P1.4 JC N2LCALL DELAY1 MO
32、V C,P1.4 JC N2 STOP2: MOV C,P1.4 ;判断P1.4是否释放? JNC STOP2 LCALL DELAY1 MOV C,P1.4 JNC STOP2 LJMP LOOP TIMEPRO: MOV A,21H MOV B,23H CJNE A,B,BK ;判断分钟是否运行到设定的闹钟的分钟? MOV A,22H MOV B,24H CJNE A,B,BK ;判断时钟是否运行到设定的闹钟的时钟? SETB 25H.0 MOV C,25H.0 JC XX XX: LCALL TIMEOUT ;调用时间闹钟响应程序 BK: RET TIMEOUT: X1: LCALL B
33、Z ;调用喇叭响应程序 LCALL DISPLAY2 CLR 25H.0 JB P1.4, X1 ;判断P1.4是否按下? LCALL DELAY CLR 25H.0 LJMP DISPLAY1 BZ: CLR P3.7 ;喇叭响应程序MOV R7,#250 ;响应延时时间T2: MOV R6,#124T3: DJNZ R6,T3DJNZ R7,T2SETB P3.7RETLOOKATIME:LCALL DISPLAY2 ;调用时间运行程序MM: JB P1.4,LOOKATIME ;判断按键P1.4是否按下MOV C,P1.4JC MMLCALL DELAY1MOV C,P1.4JC MMS
34、TOP3: MOV C,P1.4JNC STOP3LCALL DELAY1MOV C,P1.4JNC STOP3LJMP LOOPDELAY1: MOV R4,#14H ;时间延时DL001: MOV R5,#0FFHDL111: DJNZ R5,DL111DJNZ R4,DL001RET ;时间运行程序TIME: PUSH ACC ;现场保护PUSH PSWMOV TH0,#03CH ;赋初值MOV TL0,#0B0HDJNZ R2,RET0MOV R2,#14HMOV A,20HCLR CINC A ;秒钟自加1CJNE A,#3CH,GO1 ;判断秒钟是否到60秒?MOV 20H,#0 ;到60秒复位MOV 30H,#0MOV 31H,#0MOV A,21HINC A ;分钟自加1CJNE A,#3CH,GO2 ;判断分钟是否到60分?MOV 21H,#0H ;到60分复位MOV 32H,#0MOV