版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录1 设计要求与方案确定11.1 设计要求11.2 设计思路11.3 硬件电路设计方案及框图22 硬件电路的设计与器件选择32.1 单片机的选择32.2 时钟与复位电路设计与器件选择52.2.1 时钟电路设计52.2.2 复位电路设计52.3 LED显示电路设计与器件选择62.3.1 显示器的选62.3.2 LED段驱动芯片的选择72.3.3 LED的段驱动芯片的选择72.3.4 LED的位驱动芯片的选择82.3.5 LED驱动电路与单片机的联机82.4按键电路的设计与器件选择92.4.1 键盘结构的选择92.4.2 键盘与单片机接口电路设计102.5 蜂鸣器电路的设计103 电子时钟软件
2、的设计方案123.1 电子时钟软件设计方案及框图123.2内存空间的分配124 电子时钟应用程序设计134.1 主程序设计13主程序框图如图134.1.2 主程序清单见附录134.2 LED动态显示程序块的设计134.2.1 T0定时器中断服务程序的功能134.2.2 定时器T0的计数初值134.2.3 T0定时器与终端服务程序流程图144.3时钟程序模块的设计144.3.1 24h时间的产生144.3.2 定时器T1的计数初值154.4 键盘接收子程序设计164.4.1 程序设计思路及框图165 调试过程17结论18附录19附录一 完整电路图19附录二 程序模块20参考文献241 设计要求与
3、方案确定1.1 设计要求以MCS-51系统单片机为核心器件,组成一个电子时钟系统。1) 旋型号为MCS-51的单片机。2) 系统显示器由4位数字型数码管组成,分别显示时间值的小时和分。3) 能够随时对当前时间进行调整。4) 能够随时输入(闹钟)时间。5) 定时(闹钟)时间到,发出闹钟提醒信号。6) 闹钟提醒信号的声音为断续形式,最长不超过1min。1.2 设计思路制作时钟主要有四个控制按键,按键功能为: (1)P3.2 为调时间模式,长按 P3.2 进入调分状态:分单元闪烁,按 P3.0 加 1,按p3.1确认。.再长按 P3.2 进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态
4、. (2)按 P3.3 进入设定闹时状态: 12:00: ,可进行分设定,按 P3.0分加 1,再按 P3.2 为时调整,按 2 P3.0时加 1,按 P3.3 调闹钟结束.在闹铃时可按 P3.2 停闹,不按闹铃 响1分钟。使用了四个中断,即T0、T1、。其中:1)T0中断:采用T0定时中断工作方式,完成LED动态扫描。2)T1中断:采用T1定时中断工作方式,产生100ms(或50ms)的单位时间。3)中断:采用外部中断工作方式,完成时间调整功能。4)中断:采用外部中断工作方式,完成闹钟时间输入功能。1.3 硬件电路设计方案及框图根据设计要求与设计思路,确定该系统的设计方案,如下图位该系统设计
5、方案的硬件电路设计框图。硬件电路由八部分组成,即按键输入电路、单片机、时钟电路、复位电路、LED显示器段码驱动电路、LED显示器位码驱动电路、4位LED显示电路。LED显示器段码驱动电路单片机LED显示器位码驱动电路时钟电路复位电路蜂鸣器电路四个按键输入电路4位LED显示电路2 硬件电路的设计与器件选择2.1 单片机的选择 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪烁可
6、编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 100 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容。由于将多功能8 位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51 单片机 与MCS-51 兼容 4K 字节可编程闪烁存储器 寿命:1000 写/擦循环 数据保留时间: 10 年 全静态工作:0Hz-24Hz 三级程序存储器锁定 128*8 位内部R
7、AM 32 可编程I/O 线 两个16 位定时器/计数器 5 个中断源可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 :供电电压。接地。P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被
8、内部上拉为高,可用作输入,P 1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLAS H 编程和校验时,P1 口作为第八位地址接收。 基于单片机系统的电子钟设计与仿真 系统设计 5 :P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部
9、八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 T TL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。 P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,
10、此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。 基于单片机系统的电子钟
11、设计与仿真 系统设计 6 :当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFF H),不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RES ET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)。反向振荡放大器的输入及内部时钟工作电路的输入。来自反向振荡器的输出。 XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件, XTAL2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外
12、部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2.2 时钟与复位电路设计与器件选择 时钟电路设计时钟电路时钟电路用于产生单片机工作所需要的时钟信号, 单片机本身就是一个复杂的同步时 序电路, 为了保证同步工作方式的实现, 电路应在唯一的时钟信号控制下严格地按时序进 行工作.时钟电路是单片机心脏.典型值有 6MHZ 和 12MHZ,单片机内部有一个高增益反 相放大器,XTAL1 和 XTAL2 分别为其输入与输出端,XTAL1 和 XTAL2 之间跨接晶体振荡器 和微调电容,从而构成一个稳定的自激振荡器,产生时钟送至单片机内部的各个部件.时 钟电路产生的震荡脉冲经过触发器进行二
13、分频后,才能成为单片机的时钟脉冲信号. 复位电路设计单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。 1)手动按钮复位 手动按钮复位需要人为在复位输入端RST上加入高电平(图1)。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动
14、按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。 单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。 2)上电复位 AT89C51的上电复位电路如图2所示,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地。对于CMOS型单片机,由于在
15、RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1F。上电复位的工作过程是在加电时,复位电路通过电 容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。在图2的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对
16、器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。本次采用按键式复位。2.3 LED显示电路设计与器件选择 显示器的选显示模块 , LED 数码管是由发光二极管构成的,亦称半导体数码管.将条状发光二极管按照共阴极(负极)或共 阳极(正极)的方法连接,组成"8"字,再把发光二极管另一电极作笔段电极,就构成了 LED 数码 管. 若按规定使某些笔段上的发光二极管发光, 就能显示从 09 的系列数字. 同荧光数码管(V
17、FD), 辉光数码管(NRT)相比,它具有:体积小,功耗低,耐震动,寿命长,亮度高,单色性好,发光响 应的时间短,能与 TTL,CMOS 电路兼容等的数显器件.+,-分别表示公共阳极和公共阴极.ag 是 7 个笔段电极,DP 为小数点.另有一种字高为 7.6mm 的超小型 LED 数码管,管脚从左右两排引 出,小数点则是独立的. 本系统利用 4 位 LED 数码管显示时间,共阴极结构。LED 数码管由 7 段发光二极管组成,当要显示 某个数字时只要将数字所对应的引脚送入低电平确定公共极(位选)以及段选,具体的是:,数码管有引脚的一面向下,按逆时针为:1、2、3、12:公共总线的为;a、b、c、
18、d、e、f、g、dp,1234其中1234为位选,Dp为点。共阴、共阳都是这样的。 LED段驱动芯片的选择数码管是一种半导体发光器件,其基本单元是发光二极管。它的显示驱动方式分为两种:静态显示驱动和动态显示驱动。1)静态显示驱动静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×840根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加
19、了硬件电路的复杂性。2)动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,Dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时
20、间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 LED的段驱动芯片的选择 74LS48芯片是一种常用的七段数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中,一般都是需要加电阻的,目的是限流,防止LED温度升高时导致的电流增加而发生过流,那样有可能烧毁LED本身或是芯片甚至电源。多大的电阻需要自己根据LED管的类型以及电源供电电压计算,计算原则就是按电源直供LED时串上该电阻使LED刚好工作在
21、满负荷电流上或稍欠一点即可。比如LED是10mA最大电流,1。7V结电压,12V供电,那么,根据分压定理,LED剩下的电压即12V-1。7V=10。3V应该由分压电阻承担,那么电阻就该是R=U/I=10。3V/10mA=10。3V/0。01A=1030欧,因为最接近的1K电阻小于这个值,所以可以考虑使用1。2K电阻,当然愿意用5环的1。1K更好,但成本会高一些。图为74LS48引脚图 LED的位驱动芯片的选择显示电路主要包括大型LED数码管BSI20-1(共阳极,数字净高12 cm)和高电压大电流驱动器ULN2003,大型LED数码管的每段是由多个LED发光二极管串并联而成的,因此导通电流大、
22、导通压降高。ULN2003是高压大电流达林顿晶体管阵列电路,他具有7个独立的反相驱动器,每个驱动器的输出灌电流可达500 mA,导通时输出电压约1 V,截止时输出电压可达50 V。ULN2003的17脚为信号输入脚,依次对应的输出端为1610脚,8脚为接地端。当驱动电源电压为+12 V时,若要求数码管每段导通电流为40 mA,则每段的限流电阻为50。则一块ULN2003恰好驱动一个LED数码管的7段。大数码管采用共阳极接法,低电平有效。锁存器输出的电平经NPN三极管9014反相后,再由ULN2003放大后推动大数码管显示 LED驱动电路与单片机的联机可以用单片机的P1口作为LED的输出接口,4
23、LED显示硬件电路如图所示,R1时尚拉电阻,作用是保证LED可靠得到同于截止,可以选用8脚排电阻。该电路的工作原理是:当P1口的低四位输出断码信号的BCD后,通过74ls48芯片的锁存、译码和驱动功能,在其输出端输出具有一定驱动能力的7段字型码,由于4-LED的断码输入引脚是并连在一起的,所以每一位LED的段码输入引脚都能获得这个段码信号。若要控制在每一时刻只有一位被点亮,必须位码信号控制。P1口德位码信号在每一时刻只有一位是1,其余为全是0,然后按时间顺序数除1的位置,控制在每一时刻只有一位被点亮达到动态显示的目的。2.4按键电路的设计与器件选择2.4.1 键盘结构的选择键盘结构分为独立式与
24、矩阵式:当键盘的数目最多为 4 个时,我们最佳的接口方案当然是独立式接法,即 每一个 I/O 口上只接一个按键,按键的另一端接电源或接地(一般接地)占用 的 I/O 口数最大为 4 条。独立式键盘的实现方法是利用单片机 I/O 口读取口的电平高低来判断是否有键按下。我们将常开按键的一端接地,另一端接一个 I/O 口,程序开始时 将此 I/O 口置于高电平,平时无键按下时 I/O 口保护高电平。当有键按下时,此 I/O 口与地短路迫使 I/O 口为低电平。 按键释放后, 单片机内部的上拉电阻使 I/O 口仍然保持高电平。在用单片机对键盘处理的时候涉及到键盘的去抖动。这里说的抖动是机械的抖动,是当
25、键盘在未按到按下的临界区产生的电平不稳定正常现象。这种抖动一般在 10200 毫秒之间,目前的技术有硬件去抖动和软件去抖动,硬件去抖动就是用部分电路对抖动部分加之处理,。软件去抖动不是去掉抖动,而是避开抖动部分的时间,等键盘稳定了再对其处理。这里我们只研究软件去抖动,实现方法是先查寻按键当有低电平出现 时立即延时 10200 毫秒以避开抖动(经典值为 20 毫秒) ,延时结束后再读一次 I/O 口的值,这一次的值如果为 1 表示低电平的时间不到 10200 毫秒,视为干。当读出的值是 0 时则表示有按键按下,调用相应的处理程序。本次设计采用4位独立式键盘。2.4.2 键盘与单片机接口电路设计按
26、键模块设计中主要有四个控制按键,按键功能为: (1)P3.2 为调时间模式,长按 P3.2 进入调分状态:分单元闪烁,按 P3.0 加 1,按p3.1确认。再长按 P3.2 进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态. (2)按 P3.3 进入设定闹时状态: 12:00 ,可进行分设定,按 P3.0分加 1,再按 P3.2 为时调整,按 2 P3.0时加 1,按 P3.3 调闹钟结束.在闹铃时可按 P3.2 停闹,不按闹铃 响1分钟。接口电路如图2.5 蜂鸣器电路的设计压电蜂鸣片是将高压极压化后的压电陶瓷片黏贴于振动金属片上。当加入交流电压后,会因为压电效应,而产生机械变形
27、伸展及收缩,利用此特性使金属片振动而发出声响。蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51增强型单片机实验板通过一个三极管三极管C8550来放大驱动蜂鸣器。蜂鸣器的正极接到VCC(5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻。电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,
28、发出声音。因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。 程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。蜂鸣器有长声短声两种,本次选用短声蜂鸣器,时间长短通过软件编程控制。 3 电子时钟软件的设计方案进行应用软件设计时可采用模块化的程序设计方法,其优点是:(1)每个模块结构程序简单,已与编写与调试(2)对于常用子程序,便于多模块调用(3)便于分工合作,加快设计进度3.1 电子时钟软件设计方案及框图主程序数码管动态扫
29、描模块当前时间计时模块输入闹钟时间模块当前时间调整模块蜂鸣器报警模块数制转换模块3.2内存空间的分配 地址分配作用60H7FH堆栈区40H43HLED段码缓冲区,存储显示字符的BCD码,低四位有效44H47HLED位码缓冲区,存储LED位码信号,高四位有效32H33H当前二进制数存储单元,32H存储小时,33H存储分34H35H闹钟二进制数存储单元,34H存储小时,35H存储分29H输入键值存储单元30H当前调整位标志,30H=131HLED显示位数存储单元02H05H计时用工作寄存器(0区 R2R5)18H1AH动态扫描用工作寄存器(3区 R0R2)NY主程序设置中断入口服务程序地址设置堆栈
30、指针相关寄存器清零设置显示缓冲区设置时间初值定时器0 定时器1初始化设置外部中断0/1信号的触发形式设置中断优先级,开中断;启动T0、T1开始定时执行代码转换程序报警30秒时间到否4 电子时钟应用程序设计4.1 主程序设计主程序框图如图4.1.2 主程序清单见附录4.2 LED动态显示程序块的设计在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,余姚设置适当的扫描频率。当扫描频率在70Hz左右时,能够产生足够的图形和较好的显示效果。一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。本例中,采用硬件定时和软件定时并用的方式,即用定时器0溢出中断
31、功能实现10ms定时,通过软件延时程序实现1ms的定时。 T0定时器中断服务程序的功能1)从显示缓冲区分别取出四位LED显示器显示数据的位码和段码,送到P1口,依次显示每一位,每一位的显示时间为1ms,显示四位需要4ms的时间。 2)在设置当前时间或输入闹钟时间时,当前调整位应具有闪烁(眨眼)功能,用来提示当前调整位是哪一位。因此,在每一位显示之前都要进行判断,该位是否闪烁位,然后决定进行正常显示还是闪烁显示。 3)LED显示器每一位的显示时间是1ms,延时1ms子程序是典型的软件定时程序。 定时器T0的计数初值 设时钟频率为6MHz,一个机器周期时间为2us。T0定时器产生10ms的定时,可
32、以计算出计数值和计数初值: 计数值=5000 显示完否T0计数器置初值恢复现场、开中断中断返回(RETI)T0中断服务程序保护现场关T0,开其他中断置断码缓冲区指针指针置位码缓冲区指针设置显示位数是闪烁位否将段码和位码值送入P1口显示某位、延时1ms膝盖先是缓冲区指针显示位数减1显示位数-1YNNYT0定时器中断服务程序框图计数初值=65536-5000=60536=EC78H 初值寄存器的初值为:TH0=0ECH;TL0=78H工作方式寄存器TMOD=XXXX0001B=X1H,T0定时器,工作方式1,定时。4.2.3 T0定时器与终端服务程序流程图4.3时钟程序模块的设计 电子时钟系统的主
33、要任务是:采用单片机为核心器件产生24小时时间,并用LED显示器将它显示出来。 在本节中,通过定时程序产生24h时间。 当时钟频率为6MHz时,定时器最长的定时时间是131.72ms,以此要产生24h的时间值,必须采用硬件定时和软件编程相结合的方法来实现。 4.3.1 24h时间的产生 选择定时器T1,工作方式1,定时100ms,T1定时100ms中断一次,利用R2寄存器加1,R2寄存器的值等于10时,时间正好为1s;再利用寄存器计数60s,依此类推,累计24h的时间值,并需要设置以下几个寄存器: R2:累计1s时间寄存器。T1每中断一次R2=R2+1,计数十次向R3进位,并将R2清零。 R3
34、:累计60s时间寄存器,当R3=60s,向R4进位,然后将R3清零。 R4:累计60min时间寄存器。当R4=60min,正好是1h的时间,向R5进位,然后R4清零。 R5:累计24h时间寄存器。当R5=24h,正好是昼夜的时间,使R5=0。R2R5按二进制计数。4.3.2 定时器T1的计数初值 当时钟频率=6MHz时 :计数值=50000 计数初值=65536-50000=15536=3CB0H 初值寄存器的初值为:TH1=3CH;TL1=B0H 时钟计时程序框图NNYT1中断服务程序重置T1计数器初值关中断保护现场选择0区工作寄存器R2=R2+1R2=0AR4=60minR5=R5+1R4
35、=0R5到33HA中断返回R2=10R3=R3+1R3=60S?R3=0R4=R4+1R4-到32HR5=24?R5=0R5到33H恢复现场、开中断Y 工作方式计数器TMOD=0001XXXXB=1XH(T1、T0的工作方式控制字应该一次性写入,即TMOD=11H)NY4.4 键盘接收子程序设计 程序设计思路及框图键盘接收子程序是由INTA和INTB两个字程序组成,两个子程序的功能是实现对当前时间的调整和输入定时(闹钟)时间。1) INTA子程序的功能是对当前时间进行调整。根据按键电路设计可知,当SET键按下时,产生INT0中断请求,CPU响应中断请求时,便进入该中断服务程序。2)
36、 在程序中,将时钟的小时十位、小时个位、分十位、分个位分别进行调整。采用24小时时间表示,因此4位时间值要分别加以限制。即小时十位,数的允许范围:02;小时个位,数的范围有两种可能:当小时的十位为0、1时,小时的个位数的允许范围时09,当小时的十位为2时,小时的个位数的允许范围是03,分的十位数的允许范围是05;分的个位数的允许范围是09.。3) 利用+1键和RET键配合使用,每次对+1键的按下次数进行累加,当RET键按下时,调整值被确认,转去处理下一位。4) 每次进入该程序后,对4位时间调整一次,从左到右排列顺序位14,不循环。5) 键盘接收的
37、时间值为BCD码方式,将它们转化成二进制数后,存储在32H、33H单元。同时对计时单元进行修改,使当前时间得到调整。开始有键闭合有键闭合延时12ms子程序确定闭合的YNNY6) INTB子程序时定时(闹钟)时间设置程序,设计思路与当前时间调整程序基本相同。不同的是ALM键与P3.3引脚连接,当ALM按下时,产生INT1中断并进入INTB中段服务程序。输入的定时(闹钟)时间存储在34H、35H单元。7) 按键去抖动的处理。由于机械触点的弹性作用,在闭合即断开的瞬间均伴随有一连串的抖动,抖动时间的长短由案件的机械特性决定,一般为510ms。而按键稳定闭合时间的长短则是由操作
38、人员的按键动作决定的,一般为零点几秒至数秒。按键抖动会引起一次按键被误读多次,为了确保CPU对键的一次闭合仅作一次处理,键抖动可用硬件或软件两种方法消除。本例中采用软件方法,键盘扫描程序框图如图示,程序设计请参考INTA或INTB中段服务程序。5 调试过程本次课程设计我们用到 了单片机,数字电路,模拟电路,protel/proteuse,keil-c51 等知识,在利用 protel 软件画图时,我们还是遇到了不小的麻烦。最主要的便是对软件使用方法的陌生和不知道元件名称,画不了图。由于学了 protel 后自己很少使用,所以渐渐地忘记了对软件的 使用。而我们的原理图都是参照人家的原理图来制作的
39、,所以对很多元件我们都不知道其名称,也 就不能查找元件画图。不过后来经过问老师,问同学,查资料,这些难题都一一解决。 另一个问题就是将编写好的源程序输入电脑,编译后出现很多错误,这些错误有许多是平时的实验 遇到过的,例如:输入的分号格式不正确,零和字母 O 弄混淆了,LOOP5 出现了几次,CJNE 写成了 CJNZ 等等,幸好这些错误在平时的实验中遇到了,所以改错误很容易,但同时也说明了,平时的错 误现在还在犯,证明错误我还没有完全的改正,这点我们以后一定要注意了。争取错误犯了两次就 不能在犯了。除了常见的错误外,还有几条错误时我从来没有遇到过的,如:LJMP 跳转指令跳不回 指定的位置,是
40、因为跳转的长度大于 LJMP 跳转的长度,最后只好设置跳转两次后才能跳到指定的 4 位置。 经过多次的修改和向别人请教,错误都排除了,编译通过了,但功能没有达到设计的要求,最主要 的就是设计的原理图太多错误,不能进行仿真。最后,在老师另外给了我们一个原理图后,经过几 天在机房的努力,终于实现了时钟的全部要求。结论本次课程设计是用 AT89C2051 单片机 CPU 及接口电路设计一个数字时钟,经过一个星期的调试,结果 满足设计要求,验证无误。通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用到了 多种芯片,程序也比较长比较麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。关 于
41、显示模块,在以前的实验中做过,所以问题很容易解决。 随着集成电路和计算机技术的迅速发展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的 被智能仪器所取代。智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与发展,从 而加快了智能仪器的发展。通过本次设计,我们系统的了解了实时时钟的设计流程,尤其是硬,软件的设计方法,掌握了键盘 显示电路的基本功能及编程方法,掌握了键盘电路和显示电路的一般原理,也进一步掌握了 89C2051 定时器的使用和中断处理器程序的编程方法。在调试电路的过程中也积累了一 些宝贵的经验,比如说,在 I/O 口要保证标准的高电平"1"的产生,一般
42、要上拉电阻 5.1k,在一 些需要高电平的地方,不能用悬空来模拟,必须严格的按照"+5v"来连接,特别是调试过程中的 分部分进行很重要。通过这次课程 设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知 识与实践相结合起来。在设计的过程中发现了对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。 在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,而且大大提高了动手的能力,使我充分体会到了在 创
43、造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富。相信这次设计带给我们的严谨 的学习态度和一丝不苟的科学作风将会给我们未来的工作和学习打下一个更坚实的基础。 单片机课程设计,是对单片机知识的验证,帮助我们理解巩固所学知识,激发我们对单片机课 程的兴趣,更锻炼了我们开拓创新的能力。我们是在做单片机课程设计.要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统 的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序 时,不能妄想一次就将整个程序设计好,反复修改,不断改进
44、是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。另外,这次课程设计让我感到了团 队合作的重要性。在团队中,我们互帮互助,对整个课程设计来说,这是至关重要的,缺少每一个 人都会对我们的设计产生影响。附录附录一 完整电路图附录二 程序模块1 主程序清单 ORG 0000H LJMP MAIN ORG 0003H LJMP INTA ORG 000BH LJMP T0_SEV ORG 001
45、3H LJMP INTBORG 001BHLJMP T1_SEVORG 0030HMAIN : MOV SP,#06H MOV A,#00H MOV 30H,A MOV 31H,AMOV 32H,AMOV 33H,#0CHMOV 34H,AMOV 35H,AMOV 44H,#80HMOV 45H,#40HMOV 46H,#20HMOV 47H,#10HCLR RS0CLR RS1MOV R2,#0MOV R3,#0MOV R4,#0MOV R5,#12MOV TMOD,#11HMOV TH1,#3CHMOV TL1,#0B0HMOV TH0,#0ECHMOV TL0,#78HMOV IP,#0
46、8HMOV TCON,#50HMOV IE,#8FHLOP : MOV B,#10HMOV A,33HDIV ABMOV 40H,AMOV 41H,BMOV B,#10HMOV A,32HDIV ABMOV 42H,AMOV 43H,BSETB RS1CLR RS0AA : MOV R2,35HCJNE R2,#0,NTMOV R2,34HCJNE R2,#0,NTSJMP BBNT : MOV A,35HCJNE A,33H,BBMOV A,34HCJNE A,32H,BBCLR P3.7SJMP LOPBB : SETB P3.7SJMP LOP2定时中断服务程序T0_SEV : PUSH
47、 A PUSH PSW SETB RS1 SETB RS0 CLR TR0 MOV R2,#04H MOV R0,#40H MOV R1,#44HGO_ON : MOV A,R2 CJNE A,31H,NO_FLASH DJNZ 30H,FLASHNO_FLASH: MOV A,R1 ADD A,R0 MOV P1,A LCALL DELAY1FLASH : INC R0 INC R1 DJNZ R2,GO_ON MOV TH0,#0ECH MOV TL0,#78H POP A SETB ET0 SETB TR0 SETB EA RET1DELAY : MOV R3,#02HAGAIN : M
48、OV R4,#0F8HDELAY : DJNZ R4,DELAYDJNZ : DJNZ R3,AGAINRET计时器程序清单T1_SEV : MOV TH1,#3CH MOV TL1,#0B0H CLR EA PUSH A PUSH B PUSH PSW CLR RS1 CLR RS0 INC R2 CJNE R2,#0AH,EN MOV R2,#0 INC R3 CJNE R3,#3CH,EN MOV R3,#0 INC R4 MOV 32H,R4 CJNE R4,#3CH,EN MOV R4,#0 MOV 32H,R4 INC R5 MOV 33H,R5 CJNE R5,#18H,EN M
49、OV R5,#0 MOV 33H,R5EN : POP PSW POP B POP A SETB EA RETI4设置当前时间程序清单INTA : SETB P3.0 SETB P3.1 CLR TR1 CLR ET1 CLR EX0 CLR EX1 SETB EA SETB ET0 SETB PT0 PUSH A PUSH B PUSH PSW MOV 31H,#04H MOV 29H,#00HLP0 : JB P3.0,NEXT0 LCALL DELAY JB P3.0,LP0LP1 : JNB P3.0,LP1 INC 29H MOV 30H,#1H SJMP LO1NEXXT0 : J
50、B P3.1,L1 LCALL DELAY1 JB P3.1,NEXT0 LD1 ; JNB P3.1,LD1 MOV 29H,#0 MOV 30H,#1 DJNZ 31H,LO1 SJMP LLLO1 : MOV A,31H CJNE A,#04H,LO2 MOV A,29H CJNE A,#03H,LA1 MOV 29H,#00HLA1 : MOV 40H,29H SJMP L1LO2 : MOV A,31H CJNE A,#03H,LO3 MOV A,40H CJNE A,#2,A1 MOV A,#29H CJNE A,#4,LA2 MOV 29H,#0 SJMP LA2A1 : MOV A,29H CJNE A,#0AH,LA2 MOV 29H,#00HLA2 : MOV 41H,29H SJMP L1LO3 : MOV A,31H CJNE A,#02H,LO4 MOV A,29H CJNE A,#06H,LA3 MOV 29H,#00HLA3 : MOV 42H,29H SJMP L1LO4 : MOV A,29H CJNE A,#0AH,LA4 MOV 29H,#00HLA4 : MOV 43H,29HL1 : MOV A,31H CJN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安阳职业技术学院单招职业技能测试必刷测试卷新版
- 2026年四川护理职业学院单招职业倾向性考试题库必考题
- 2026年湘中幼儿师范高等专科学校单招职业适应性测试必刷测试卷新版
- 2026年湖南工业职业技术学院单招职业技能测试题库必考题
- 2026年忻州职业技术学院单招职业技能测试题库新版
- 2026年黑龙江旅游职业技术学院单招职业技能测试题库新版
- 2026年安康职业技术学院单招综合素质考试题库必考题
- 2026年重庆能源职业学院单招职业适应性考试题库新版
- 2026年怀化职业技术学院单招职业倾向性考试题库新版
- 2026年宁夏职业技术学院单招职业适应性测试题库必考题
- 2025年小学五年级语文上学期期中综合测试试卷(含答案)
- 2025年脉石英行业分析报告及未来发展趋势预测
- 2025年建筑师资格考试《建筑装饰设计》备考题库及答案解析
- 江苏省无锡市第三高级中学2024届高一物理第一学期期中监测模拟试题含解析
- 新版物业交割单
- 第九节-心包疾病的护理课件
- 人教版八年级上册数学全册单元测试卷
- 全过程造价咨询项目服务方案
- 老年人安全用药与护理PPT
- 《劳动与社会保障法课程论文》
- JJG 1029-2007涡街流量计
评论
0/150
提交评论