毕业设计(论文)基于8051单片机的数字钟的设计与实现

上传人:1777****777 文档编号:37740539 上传时间:2021-11-04 格式:DOC 页数:39 大小:4.70MB
收藏 版权申诉 举报 下载
毕业设计(论文)基于8051单片机的数字钟的设计与实现_第1页
第1页 / 共39页
毕业设计(论文)基于8051单片机的数字钟的设计与实现_第2页
第2页 / 共39页
毕业设计(论文)基于8051单片机的数字钟的设计与实现_第3页
第3页 / 共39页
资源描述:

《毕业设计(论文)基于8051单片机的数字钟的设计与实现》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于8051单片机的数字钟的设计与实现(39页珍藏版)》请在装配图网上搜索。

1、安庆职业技术学院2011届毕业生毕业论文(设计)摘 要用单片机做一个数字钟是单片机应用中的一个典型例子.本设计充分利用8051单片机的4个I/O口,外加两片74LS07作数码管驱动电路,12位数码管的片选信号由74LS138译码器提供,采用动态显示。为增加驱动能力,又在数码管的阴极端加9013驱动管。我们设计出的电子钟采用24小时制计时,其中添加了整点报时,半点报时和闹铃提示功能。另外为了需要,我们还添加了秒表功能。关键词:单片机最小系统 动态显示 译码器 电子钟引 言当今,计算机技术带来了科研和生产的许多重大飞跃,微型计算机的应用已渗透到生产、生活的各个方面。其中单片微型计算机虽然问世不久,

2、然而体积小、价廉、功能强,其销售额以每年近80%的速率增长。他的性能不断提高,适用范围愈来愈宽,在计算机应用领域已占有日益重要的地位。单片微型计算机简称单片机,又成为控制器。他是在一块半导体上,集成了CPU、ROM、RAM、I/O接口、定时器/计数器、中断系统等功能部件,构成了一台完整的数字计算机。单片机在生产生活中的许多方面得到广泛的应用,例如,生活中五彩变幻的霓虹灯,手机通信,温度检测,流量控制等都涉及到单片机。单片机的应用结束了计算机专业人员“垄断”计算机系统开发与应用的时代,他既给各种专业人员、特别是许多工程技术人员带来了学习和掌握计算机技术的紧迫性,同时也带来了可能性,因为组成计算机

3、应用系统变得容易、“平凡”,增强了人们进入这一领域的信心单片机的历史非常短暂,然而发展十分迅猛。自1971年美国Intel公司首先研制出4位单片机4004以来,他的发展可粗略划分为四个阶段:第一阶段19711976年,属萌芽阶段。发展了各种4位单片机,多用于家用电器、计算器、高级玩具。第二阶段 19761980年,为初级8位机阶段,发展了各种中、低档8位单片机,典型的如MCS-48系列单片机,片内含多个8位并行I/O接口、一个8位定时器/计数器,不带串行接口,其功能可以满足一般工业控制和智能化仪器仪表等的需要。第三阶段 19821983年,高级8位机阶段,发展了高性能的8位单片机,例如MCS-

4、51系列单片机,它带有串行I/O接口和多个16位定时器/计数器,具有多级中断功能。这一阶段进一步拓宽了单片机的应用范围,使之能用于智能终端、局部网络接口,并挤入了个人计算机领域。第四阶段 1983年以后,16位单片机阶段。发展了MCS-96系列等16位单片机。功能很强,价格却迅速下降。片内有A/D转换器;可快速输入、输出;可用于电机控制;网络通信能力有显著提高。单片机的特点单片机的集成度很高,他将微型计算机的主要部件都集成在一块芯片上,具有下列特点:1. 体积小、重量轻、价格便宜、耗电少;2. 根据工程环境要求设计,且许多功能部件集成在芯片内部,其信号通道受外界影响小,故可靠性高,抗干扰性能优

5、于采用一般的CPU3. 控制功能强,运行速度快。其结构组成与指令系统都着重满足工控要求,又极丰富的条件分支指令,有很强的位处理功能和I/O口逻辑操作功能。4. 片内存储器的容量不可能很大;引脚也嫌少,I/O引脚常不够用,且兼第二功能,第三功能但存储器和I/O口都易于扩展用单片及制作数字钟是单片机的一个典型应用。通过设计制作一个多功能数字钟,我们可以充分了解单片机的工作原理,学会如何用单片机实现数据的处理,设备的控制等。制作一个数字中虽然简单,但你它涉及到的内容却很广泛,在本设计中,我们用到了键盘控制,需要加接键盘;用到了定时中断功能和电平触发外部中断功能;用到了显示模块,显示时间;另外还涉及单

6、个口的操作。另外单片机工作还需要软件支持,所以程序的编写,调试也是制作数字钟的一个重要的方面出于实验室条件和经济条件的影响,作者没有在数字钟上加上过多的功能,不过也实现了数字时钟的基本功能,如计时功能、整点报时功能,闹铃功能,调时功能和秒表功能等第一章 单片机制作数字钟的原理以8051为主芯片制作多功能数字钟的方案中,时钟信号主要由8051单片机的定时器/计数器来提供,对时间进行设置和进行闹铃设置主要用到单片机的外部中断。外部控制电路及显示电路都用到了他的I/O口,在本章我们主要介绍一下关于8051单片机定时器/计数器、中断源及中断系统以及8051的I/O口的特性及应用1.1 主芯片8051的

7、硬件资源1.1.1单片机的概念单片机(microcontroller,又称微控制器)是在一块硅片上集成了各种部件的微型计算机。这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。图1-1是8051单片机的基本结构图8051单片机的结构特点有以下几点: 8位CPU; 片内振荡器及时钟电路; 32根I/O线; 外部存储器ROM和RAM,寻址范围各64KB; 两个16位的定时器/计数器; 5个中断源,2个中断优先级 全双工串行口 布尔处理器2.定时器/计数器8051内部有两个16位可编程定时器/计数器,记为T0和T1。16位是指他们都是由16个触发器

8、构成,故最大计数模值为2-1。可编程是指他们的工作方式由指令来设定,或者当计数器来用,或者当定时起来用,并且计数(定时)的范围也可以由指令来设置。这种控制功能是通过定时器方式控制寄存器TMOD来完成的如果需要,定时器在计到规定的定时值是可以向CPU发出中断申请,从而完成某种定式的控制功能。在计数状态下同样也可以申请中断。定时器控制寄存器TCON用来负责定时器的启动、停止以及中断管理在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟。技术工作时,时钟脉冲由TO和T1输入3.中断系统8051的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及

9、一个串行口中断。外部中断申请通过INTO和INT1(即P3.2和P3.3)输入,输入方式可以使电平触发(低电平有效),也可以使边沿触发(下降沿有效)。两个定时器中断请求是当定时器溢出时向CPU提出的,即当定时器由状态1转为全零时提出的。第五个中断请求是由串行口发出的,串行口每发送完一个数据或接收完一个数据,就可提出一次中断请求1.1.2 8051的芯片引脚如图1-2所示VCC:供电电压。GND:接地。P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH

10、编程时,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口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部

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

12、(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部

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

14、编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。1.1.3 使用I/O口的注意事项 P1,P2,P3口的输出缓冲器可驱动4个LSTTL电路。对于HCMOS芯片单片机的I/O口,在正常情况下,可任意由TTL或NMOS电路驱动。HMOS及CMOS性的单片机I/O口有集电极开路或漏极开路的输出来驱动时,不必外加上拉电阻 对于74LS系列,CD4000系列以及一些大规模集成电路芯片(如8155,8253,8259等),都可以和MCS-51系列单片机直接接口。具体使用时,可以查阅有关器件手册或参考典型电路 对

15、一些线性组件,特别是应用键盘、码盘、LED显示器等输入/输出设备时,应当尽量增加驱动部分的容量,否则,单片机将提供不出足够的驱动电流供给负载使用1.2 8051中断系统所谓中断,是指当计算机执行正常程序时,系统中出现某些急需处理得异常情况和特殊情球,CPU暂停执行现行程序,转去对随机发生地更紧迫事件进行处理;处理完毕后,CPU自动返回原来的程序继续执行。中断允许软件设计不需要关心系统其他部分定时要求,算术程序不需要考虑隔几个指令检查I/O设备是否需要服务。相反,算术程序编写时好像有无限的时间作算术运算而无其他工作在进行。若其它事件需要服务时,则通过中断告诉系统。8051单片机有5个中断源,有两

16、个中断优先级,每个中断源的优先级可以编程控制。中断允许受到CPU开中断和中断源开中断的两极控制。1.2.1 中断源中断源是指任何引起计算机中断的事件,一般一台机器允许有许多个中断源。8051系列单片机至少有5个中断源。增加很少的硬件就可把各种硬件中断源“线或”成为一个外部中断输入,然后再顺序检索一起中断的特定源。8051单片机的5个中断源是: 外部中断请求0,由(P3.2)输入; 外部中断请求1,由(P3.3)输入; 片内定时器/计数器0益处中断请求; 片内定时器/计数器1 溢出中断请求; 片内串行口发送/接收中断请求;为了了解每个中断源是否产生了中断请求,中断系统应设置许多个中断请求触发器(

17、标志位)实现记忆。这些中断源请求标志位分别有特殊功能寄存器TCON和SCON的相应位锁存(1) 定时器/计数器控制寄存器TCON,它是一个八位的寄存器,各位如下表所示TF1TF0IE1IT1IE0IT0 IT0,IT1:外部中断0、1触发方式选择位,由软件设置。1是下降沿触发,0是电平触发。 IE0,IE1:外部终端0、1请求标志位。 TF0,TF1:定时器/计数器0、1溢出中断请求标志。1.2.2 中断的控制中断的控制主要实现中断的开关管理和中断优先级的管理。这个管理主要通过对特殊功能寄存器IE和IP的编程实现 中断允许寄存器IEEAET2ESET1EX1ET0EX0 EX0,EX1:外部终

18、端0,1的中断允许位。1是中断开,0是中断关 ET0,ET1:定时器/计数器0、1溢出中断允许位。1是开中断,0是关中断 ES:串行口中断允许位。1是中断开,0是中断关 ET2:定时器/计数器2溢出中断位 EA:CPU开/关中断控制位。1是开中断,0是关中断中断优先级寄存器IPPSPT1PX1PT0PX0若系统中多个中断源同时请求中断,则CPU按中断源的优先级别,由高到低分别响应。8051单片机有两个断优先级:高优先级和低优先级。每个中断源都可以编程为高优先级。这可以实现两级中断嵌套。嵌套的原则:一个正在执行的中断服务程序可以被高级的中断请求中断,而不能被同级或较低级的中断请求中断。两级中断通

19、过使用IP寄存器设置,相应的位置1,则优先级高,0则优先级低。PX0、PX1:终端0、1中断优先级控制;PT0、PT1:定时器/计数器0、1中断优先级控制。PS:串行口中断优先级控制。8051复位时,IP被清零,5个中断源都在同一个优先级。这时若其中几个中断源同时产生中断请求,则CPU按照片内硬件优先级链路的顺序相应中断,硬件优先级由高到低的顺序是:外部终端0 定时器/计数器0 外部中断1 定时器/计数器1 串行口中断1.2.3 中断响应8051的CPU在每个机器周期采样个中断源的中断请求标志位,如果没有上述阻止条件,则将在下一个机器周期响应被激活了的最高级中断请求。阻止条件如下: CPU正在

20、处理同级或更高级的中断; 现行机器周期不是所执行指令的最后一个机器周期; 正在执行的是RETI或者是访问IE或IP的指令;CPU在中断响应之后完成如下操作: 硬件清除相应的中断标志位; 执行一条硬件子程序,保护断点,并转向中断服务程序入口。 结束中断时执行RETI指令,恢复断点,返回主程序。8051的CPU在相应中断请求时,由硬件电路自动形成转向与该中断源对应的中断的服务程序入口地址。这种方法为硬件向量中断法。各中断源的中断服务程序入口地址如下:编号中断源入口地址0外部终端00003H1定时器/计数器0000BH2外部终端10013H3定时器/计数器1001BH4串行口中断0023H各中断服务

21、程序入口地址仅隔8个字节,编译器在这些地址放入无条件转移指令,跳到服务程序的实际地址。向量中断包括把先前的程序计数指针推入堆栈,中断服务程序很像其他子程序。当向量中断发生时,硬件禁止所有中断。此时表明外部中断或定时器溢出的标志位由硬件清除。中断服务程序的不同分支取决于中断源。在重新允许全局CPU中断EA之前,必须仔细清除各种标志。标志会引起立即地重复中断。8051对终端实际上有特殊的返回指令-RETI。不是RET。RETI重新允许系统识别其他中断。因而,没必要在正常使用中断时复位EA,只要在程序初始化时开中断一次就可以了1.3 单片机定时/计数器在数字钟的使用8051系列单片机至少有两个16位

22、内部定时器/计数器。8052有三个定时器/计数器,其中连个基本定时器/计数器是定时器/计数器0和定时器/计数器1。他们既可以编程为定时器使用,也可以编程为计数器使用。若是计数内部晶振驱动时钟,则它是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。8051的T/C时加一计数的。定时器实际上也是工作在技术方式下的,只不过对固定频率的脉冲计数;由于脉冲周期固定,由计数值可以计算出时间,有定时功能。当T/C工作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加一,频率加=fosc/12。晶振为6MHz,计数频率=500KHz,每2Us计数加一。当T/C工作在计数器时,计数脉冲来

23、自外部脉冲输入引脚T0或T1。当T0或T1脚上负跳变需2个机器周期,即24个振荡周期。所以T0或T1脚输入的计数外部脉冲的最高频率为fosc/12。当晶振为12MHz时,最高技术频率为500KHz,高于此频率将计数出错1.3.1与T/C有关的特殊功能寄存器计数寄存器TH和TLT/C是16位的,计数寄存器有TH高8位TL低8位构成。在特殊功能寄存器中,对应T/C0为TH0和TL0;对应T/C1为TH1和TL1。定时器/计数器的初始值通过TH1/TL1和TH0/TL0设置定时器/计数器控制寄存器TCONTR1TR0TR0、TR1:定时器/计数器0、1启动控制位。1是启动,0是停止TCON复位后清零

24、,T/C需要受到软件控制才能启动计数;当计数计满时,产生向高位的进位TF,即溢出中断请求标志T/C的方式控制寄存器TMODGATEC/TM1M0GATEC/TM1M0 C/T:计数器或定时器选择位。1位计数器,0位定时器 GATE:门控信号。1时T/C的启动控制受到双重控制,即要求TR0/TR1和INT0/INT1同时为高;0时T/C的启动仅受TR0/TR1控制 M1和M0:工作方式选择位,具体见下表M1 M0方式功能0 00为13位定时器/计数器,TL存低5位,TH存高8位0 11为16定时器/计数器,TL存低8,TH存高8位1 02常数自动装入的8位定时器/计数器1 13仅适用于T/C0,

25、两个8为定时器/计数器1.3.2 定时器/计数器的初始化初始化步骤在使用8051的定时器/计数器前,应对它进行编程初始化,主要是对TCON和TMOD编程,还需要计算和装载T/C的计数初值。一般完成以下几个步骤: 确定T/C的工作方式-编程TMOD寄存器。 计算T/C中的计数初值,并装载到TH和TL。 T/C在中断方式工作时,须开CPU中断和源中断-编程IE寄存器。 启动定时器/计数器-编程TCON中TR1和TR0位计数初值的计算在定时器方式下,T/C是对机器周期脉冲计数的,如果fosc=6MHz,一个机器周期为2Us,则方士0 13位定时器最大时间间隔=(2-1)*2Us=16.384ms;方

26、式1 16位定时器最大时间间隔=(2-1)*2Us=131.072ms;方式2 8位时器最大时间间隔=(2-1)*2Us=512Us若使T/C工作在定时器方式1,要求定时1ms,求计数初值。如设计数初值为x,则有(2-1)*2Us=1000us x=2-500因此,TH,TL可置65536-500。第二章 单片机数字钟硬件电路的实现2.1 查询式键盘在多功能数字钟的设计中,我们用到了查询式键盘。查询式键盘也是键盘控制电路中比较常用到的一种,在这里我们首先来介绍一下查询式键盘的工作原理,然后我们再来了解查询式键盘的典型接法2.1.1 查询式键盘的工作原理如图2-1时查询式键盘与单片机的连接。在电

27、路中我们看到P0口作为输入口。8051单片机I/O口在作为输入口时有两种工作方式,即所谓“读端口”和“读引脚”。读端口时,实际上并不从外部读入数据,而只是把端口锁存器中的内容读入到内部总线,经过某种运算和变换后,再写回到端口锁存器。而读引脚时才真正地把外部的数据读入到内部总线。在引脚的结构中各有两个输入缓冲器,CPU根据不同的指令,分别发出“读端口”和“读引脚”信号,以完成两种不同的操作。在端口作为外部输入线时,也就是读引脚时,要先通过指令,把端口锁存器置1,然后再执行读引脚操作,否则就可能读入出错。若不先对端口置1,端口锁存器中原来状态有可能是0,则加到输出驱动场效应管栅极的信号为1,该场效

28、应管就导通,对地呈现低阻抗。这是即使引脚上输入的是1,也会因端口的低阻抗而使信号变低,使得外加的1信号读入后不一定是1。若先执行置 1,则可以驱动场效应管戒指,引脚信号直接交到三态缓冲器,实现正确地读入。由于在输入操作时还必须附加一个准备动作,所以这类端口被称为“准双向”口。将端口置1后,我们就可以用键盘控制弹片机工作了。图2-1中我们可以看出,在键盘没有按下时,P0口的8位口线均是高电平,在程序中,我们定期查询P0口的状态,一旦有某个键按下,则与此按键连接的口线就被置为低电平,我们就可以认为有键按下,读取P0口得值,则此值就是得到的键值,或经过运算得到我们事先设定好的键值。当这个按键被释放时

29、,由于P0口直接与+5V电源连接,P0口被重新置为高电平,我们认为此时没有按键按下当按键按下时,往往会出现所按键在闭合位置和断开位置之间跳几下才稳定倒闭和状态,在释放一个键时也会出现类似的情形,这就是抖动。抖动的持续时间不一,通常不会大于10ms。若抖动问题不解决,就会一起闭合键的多次读入。解决健抖动最方便的方法就是:当发现有键按下后,不去马上读取键值,而是延时10ms后再读取。由于键按下的时候持续上百ms,延时后再读取也不晚2.1.2 查询式键盘与单片机的接法查询式键盘与8051单片机的连接方法如图2-1 图2-1此图中电阻接地,按键接高电平。这是键盘的一种接法,我们通过测试P0口是否有高电

30、平得知是否有键按下,我们也可以让键盘接地,电阻接高电平,键盘接地,通过测试P0口是否有低电平得知是否有键按下。如图2-1,在上图中一共有八个按键,各键都有自己的功能,实现数字钟时间、闹铃设置。2.1.3 另一种键盘-行列式键盘键盘输入信息的主要过程如下: CPU判断是否有键按下。 确定按下的是哪一个键。 把此键所代表的信息翻译成计算机所能识别的代码,如ASCII或其他特征码。以上第、步主要由硬件完成,称为编码键盘;如果主要由软件完成,则称为非编码键盘。单片机应用系统中通常采用的是非编码键盘。如行列式键盘。图2-2键的识别功能,就是判断键盘中是否有键按下。若有键按下,则确定其所在的行或列位置。程

31、序扫描是一种常用的键识别方法。在这种方式中,只要CPU空闲,就掉用键盘扫描程序,查询键盘并给预处理。如上图的4键盘的扫描程序。扫描程序查询的内容如下: 查询是否有键按下。首先单片机向扫描口P1.0 P1.3输出全为0的扫描玛F0H,然后从列检测口P1.4 P1.7输入列检测信号,只要有一列信号不为1,即P1口不为F0H,则表示有键按下。接着要查出按下建所在的行、列位置。 查询按下键所在的行,需逐行扫描。单片机首先使P1.0口接地,P1.1 P1.7口为1,即向P1口发送扫描码FEH,接着输入列检测信号,若为全1,则表示不在第一行。然后使P1.1接地,其余为1,再读入列信号。这样逐行法0扫描码,

32、这道找到按下加所在的行,该行扫描码取反保留,若隔行都扫描后仍没有找到,则放弃扫描,认为是误操作 对得到的行号和列号译码,得到键值。 健的抖动处理。查询式键盘和行列式键盘都是常用的键盘使用方法,查询式的主要优点是电路连接简单,程序编写比较容易,缺点是键盘直接与I/O口连接,占用过多地I/O口;行列式键盘节省I/O口,但是电路连接复杂,程序繁琐。纵观他们的优缺点,对于数字中来说,由于工作原理简单,用到的按键比较少,对程序的精确度要求比较高,这就对程序的编写要求高,不适宜使用太复杂的程序,所以是用查询式键盘作为数字中的控制电路比较的理想2.2 显示电路2.2.1显示器件多功能数字钟的一个重要组成部分

33、就是他的显示电路。用作显示的器材有许多,目前广泛使用能以十进制数码直观地显示系统中的运行数据的七段字符显示器(或称为七段数码管)。以下是几种常用的七段数码显示器件 半导体数码管(LED)。这种数码管的每一段都是一个发光二极管,因而把它叫做半导体二极管或LED数码管,如图所示:(a) (b) (c) (d)图2-3图2-2中,(a)是共阴极数码管,(b)是与之对应的数码管工作原理图,当有信号输入,共阴极接地时,数码管会显示字形(c)是共阳极数码管,(d)是与之对应的数码管工作原理图,当有信号输入,共阳极高电平时,数码管会显示字形。要显示数字,我们只要将组成数字的段点亮就可以了,比如显示“1”,我

34、们只要将“b”和“c”点亮就可以了。所以,每个数字都有其特定的编码。半导体数码管具有工作电压低,体积小,寿命长,可靠性高等优点。而且响应的时间短(一般不超过10us),亮度也比较高。他的缺点是工作电流比较大,每一段的工作电流在10mA左右。 液晶数码管(LCD)液晶是一种既有液体流动性,又有光特性的有机化合物。他的透明程度和呈现的颜色受外加电场的影响。利用这一特点,便可做城电场控制的七段数码显示器件。我们只要在相应各段上加上电压,在电场的作用下,液晶分子的排列受到影响,对外部射入光产生散射,从而显示出字形。当外部电压断开后,液晶分子又重新排列整齐,字形消失。显然液晶本身并不发光,而是借助于外来

35、光显示数码,所以它是一种被动显示器件液晶显示的最大优点是功耗极小,每平方厘米功耗在1uA一下,他的工作电压也很低,在1V一下也能工作。因此液晶显示器在电子表以及各种小型、便携式仪器、仪表中得到了广泛应用。但是,由于它本身不会发光,仅仅依靠反射外界光线显示字形,所以亮度很低,此外他的响应速度较低由于二极管数码管有体积小、寿命长、可靠性高、亮度高等优点,所以本涉及就选择二极管数码管作为时钟信号的显示器件2.2.2 数字钟显示电路的工作原理时钟显示信号是从8051单片机的P1口输出的。在设计中用到的是共阴极数码管,我们将要显示数字的编码从P1输出,经过74LS07驱动电路,数码管就会按照编码显示出字

36、形来 图2-4设计中用到了12位数码管,其中两位来表示年,两位来表示 月,两位来表示日,两位来表示时,两位来表示分,两位来表示秒。这么多的数码管,我们采用动态显示。P2口输出位选择信号,分别接74ls138的地址端A,B,C以及使能端G1。经过74LS138译码,将要显示的数码管的共阴极置为低电平,其他的为高电平,并选中的数码管就会被点亮,从而显示出字形显示部分部分电路如图2-4所示2.3 所用其他芯片资料在本设计中,除8051单片机芯片外,我们还有到了另外两个芯片,74ls07和74ls138。74ls07主要作为数码管的驱动电路,74ls138主要为12位数码管提供片选信号,如图2-4,两

37、者组成了数字钟动态显示电路,以下是两芯片的详细资料2.3.1 数码管驱动电路74ls0774ls07为集电极开路输出的六组驱动器,其主要点特性的典型值如下表:ttP60ns20ns125mW表1引脚输出端符号1A-6A 输入端1Y-6Y 输出端引脚图 图2-5 图2-6其极限电源电压为7V,极限输入电压为5.5V,输出截至态电压为30V,工作温度为0 70摄氏度。74LS07的输入与输出同相,在驱动数码管时,需要在输出端加上拉电阻,在使用74LS07时,一定要注意电源和地不能接反,否则会烧坏芯片2.3.2 74LS138译码器的详细资料74ls138为3-8线译码器,共有74S138和74ls

38、138两种线路结构形式。当一个端(G1)为高电平,/(G2A)和/(G2B)为低电平时,可将地址端(A,B,B)的二进制编码在一个对应的输出端以低电平方式输出利用G、/(G2A)、/(G2B)可级联扩展为24线译码器,若外接一个反相器,可扩展为32线译码器若将选通端中的一个接数据输入端时,138还可以做数据分配器图2-5是74LS138的引脚图。在本设计用到两片74LS138,P2口输出数码管的片选信号,其中低四位和高四位分别接一片,接法相同。在与74LS138连接的四位口线中,有三位口线于74LS138的的地址端A,B,C连接,另一口线与使能端G1连接,在G2A,G2B接地的情况下,组成3线

39、-8线译码器,输出数码管的片选信号74LS138的真值表如下所示:输入输出使能端选择端G1G2*CBAY0Y1Y2Y3Y4Y5Y6Y7HHHHHHHHHLHHHHHHHHHLLLLLHHHHHHHHLLLHHLHHHHHHHLLHLHHLHHHHHHLLHHHHHLHHHHHLHLLHHHHLHHHHLHLHHHHHHLHHHLHHLHHHHHHLHHLHHHHHHHHHHL表2第三章 数字钟软件设计3.1程序编写的方法多功能数字钟的程序是用C语言来实现的,在程序中,我们用定时器/计数器0作为数字钟的时钟信号源,产生年、月、日、时、分、秒信号,定时器每次计数49989,大约是100ms,这样产

40、生十次中断,就会得到一秒,以此类推。时间的设置我们采用外部中断,让时钟从正常运行状态转到设置状态,一次可以进行时间设置和闹铃设置,设置时不影响时钟的正常运行。另外,我们加上了秒表的功能,我们用定时器/计数器1来实现3.2数字钟各部分功能程序的实现3.2.1 显示部分程序显示0流程图:图3-1跳动显示是表示年、月、日、时、分、秒的每两位数码管一起显示,当我们要设置年时,表示年的两位数码管就会跳动显示,其他位显示方式不变。另外还有显示1,是在时钟正常走动时所用的显示,在显示1中,我们只要逐位读取就可以了,所以在此没有必要写出流程图,在附录中的程序大家将会看到,在此不再赘述3.2.2 键盘部分程序键

41、盘功能的实现我们采用的是查询方式,程序每次执行一个循环,都回去查询与键盘连接的P0口的状态,若有状态的变动,我们就可以通过程序主动转移到相应的程序当中来 图3-2是键盘程序流程图:键盘程序有很多的编写技巧,其中消抖这一块的的思路一般都是一个固定的模式,那就是先扫描,延时,在扫描。在我的这个程序中用到的是另一种方法,比较的新颖。在程序中,我们预先设置好两个存储单元a,b,a存键盘在定时时间到以前的状态,b存定时时间到之后的状态,定时时间到之后,我们返回b,否则返回a,这样我们就达到了对键盘消抖的目的在此展示给大家数字钟设计时键盘的处理程序:uchar keyin() uchar kb; k0=0

42、;kb=P0; k1=kb;k2=k2+1; if(k2160) return(k0); else if(k2=160) k2=0; return(k1); 图3-2定时的方法是利用程序的循环执行,每一个循环都会有一个周期,所以我们就利用这个周期来定时,如上面的程序,我们估算一下,大约经过100个循环就可以达到键盘消抖的目的,也可以调节变量的只得大小来确定键盘的灵敏度,使用起来很灵活3.2.3定时器0中断服务程序定时器是时钟信号的来源,由于单片机内部时钟信号是不变的,所以,定时器/计数器煤技术一次的时间是2us,但计数满时,定时器发出溢出中断信号,得到中断允许后自动进入中断服务程序,执行服务程

43、序中断服务程序和其他的子程序非常的类似,都有一个返回,我们可以在中的程序中嵌套其他的子程序本设计中还增加了秒表的功能。秒表最大计时范围为一个小时,由于都是有计时功能,所以程序极其相似,不过我们在这里用到了定时器/计数器1,来作秒表的时钟信号来源我们给定时器/计数器1做出了如下设置最大计数为50000;定时器/计数器1优先级高于定时器/计数器0;定时器/计数器1最大计数为1000;时钟信号采用6MHz晶振;秒表功能和计时功能分开进行;两者不能同时进行;定时器计数器中断服务程序流程图3-3所示:对于键盘设定时间,在这个设计中,我们用到了外部中断1,在中断服务程序中来进行时间设定,各键的功能如下:k

44、ey1:进入时钟设置;key2:进入闹铃设置;key3:闹铃设置时作闹铃开键,秒表时作清零键;key4:闹铃设置时作闹铃关键,秒表时作暂停健;key5:选择设置位健,按此键设置位会依次移动选择,从年开始到秒结束,循环进行key6:设置位加一键;key7:设置位减一键;key8:返回键。闹铃设置返回时返回到时间设置,时间设置返回时返回到时钟正常工作状态。本设计考虑到数字钟的设置简易性,所以设定了8个按键,一方面操作简单,另一方面程序简单易行。在设置时,我们用key1进入时间设置,如果想进行闹铃设置,则按key2键进入闹铃设置。按key3键可以选择要设定的是哪位,年或月或日或时或分或秒,在闹铃设置

45、时,按key3可以选择是调时还是调分。按key6或key7可以对设定位加一或减一,按key8时,如果是在闹铃设置状态,则从闹铃设置进入时间设置,弱国是处在时间设置状态,则从该状态返回到时钟正常运行状态同时,我们加设了指示灯,在设置时可以对应指示时间状态,如上午指示灯,下午指示灯和闹铃开或关指示灯定时器/计数器0中断服务程序流程图见附录三3.2.4外部中断1中断服务程序 外部中断服务程序主要是在对数字中进行时间设置时用到,通过外部中断,将数字钟从正常运行状态转移到时间设置中来。在服务程序中我们不仅可以对时间进行设定,还可以对闹铃进行设定,设定的过程中时钟的正常运行不会受到影响,外部中断程序流程图

46、见附录四第四章 方案比较4.1 制作数字钟的其他方案4.1.1 用时钟芯片DS1302制作数字钟按照系统设计功能的要求,初步确定主控芯片使用51系列AT89C51单片机,时钟芯片使用的是美国DALLAS公司推出的一种高性能,低功耗,带RAM的实时时钟DS1302。采用DS1302作为主要计时芯片,可以做到计时准确。DS1302可以在很小电流的后备电源(2.5-5.5V电源,在2.5V时耗电小于300nA)下继续计时,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电设计系统由主控制模块、时钟模块、显示模块、键盘接口模块4个模块组成,电路系统构成如3-1图所示:键扫描模

47、块(89C51)处理器DS1302时钟模块显示模块图41可定时的时钟电路系统构成框图时钟芯片DS1302自带内部时钟,可以很简单的做到计时准确,并且减轻了主芯片8051的负担。8051只要处理DS1302发送过来的数据和从键盘模块送过来的控制信息就可以了,至于时钟信号完全由DS1302来处理就可以了。4.1.2 方案比较方案一:直接利用8051的内部定时器制作多功能数字钟。方案二:用外部时钟芯片DS1302制作数字钟方案二用时钟芯片DS1302可以做到及时准确,同时可以减轻主芯片8051的负担。但是,8051内部有两个定时器/计数器,他们都有定计时功能,使用12MHz晶振,误差可以降低到1us

48、,精度较高,完全符合数字钟的精度要求,所以没有必要使用外部芯片,从而使电路变得简单,这有利于降低功耗,节省了数字钟的成本,所以本设计采用方案一第五章 总结设计总结使用MC-51系列单片机制作数字钟是单片机应用的一个典型的例子。通过数字钟的制作,我们已经对MC-51单片机有了一个基本的了解,掌握了他的一些应用,学到了一定的电子技术理论,得到了一些实践经验制作一个数字钟,我们首先根据实际提出几个方案,然后根据自己的要求,选出了最适合自己的方案。选择的方法一般从以下几个方面来看: 从方案能否达到设计的要求来看; 从方案实现的难易程度来看; 从方案能否达到设计要求的精度来看; 从经济角度来看;其次,我

49、们对使用到的器件有一个精确的了解。主要从以下几个方面了解: 对于可编程器件,主要了解其特殊功能寄存器每一位的功能,其各引脚端的功能及与单片机的连接方法; 对所有的器件,我们充分掌握其正常工作时的电压、电流及温度范围,输入口的电压电流范围等。 掌握使用芯片的一些特定使用方法;然后,在使用数码管显示时钟信号时,由于8051芯片的驱动能力有限,我们在8051输出端和数码管共阴极分别加上了驱动电路,提供了单片机带负载的能力最后我们根据实验要求,写出了能支持硬件工作的软件,实现了数字钟的基本功能。用本方案设计的数字钟采用24时制计时,并加了定时提醒功能,可以对时间进行手动校正。为满足特定需求,我们还加上

50、了秒表功能。注意事项 详细了解芯片使用方法,特别是其工作电压,电流及温度要求; 正确连接电路,检查电源是否短路,芯片电源和地是否接反; 正确使用仿真机,仔细阅读仿真机使用说明书附 录附录一:数字钟程序:#include#include#define uint unsigned int#define uchar unsigned charsbit k1=P00;sbit k2=P01;sbit k3=P02;sbit k4=P03;sbit k5=P04;sbit k6=P05;sbit k7=P06;sbit k8=P07;sbit am=P30;sbit pm=P34;sbit id=P35

51、;sbit zhd=P36;sbit bu=P37;uchar code dm10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code wei12=0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x80,0x90,0xa0,0xb0;uint data buf12=0,0,0,0,0,0,0,0,0,0,0,0; /*显示缓冲单元*/uchar data bell4=0,0,0,0; /*闹铃设置寄存器*/int data clock6=0,0,0,1,1,0; /*秒,分,时,日,月,年*

52、/uchar data key; /*记录键值*/*可能的键值:0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80*/uchar data r2=0,1; /*跳动显示的位,一次两位*/uchar data a1=0; /*正常显示计位*/uchar data f5=0,0,0,0,0;uchar data c2=0,1;uchar data b1=0;uchar data k3=0,0,0;uchar data zh2=0,0; /*闹铃调节前存时钟*/uchar data bz1=0;uchar data mi3=0,0,0; /*秒表是暂存时钟数据*/ucha

53、r data ao3=0,0,0;void delay(void) int i; for(i=0;i12)|(clock2=12)&(clock10) am=1;pm=0; else if(clock212)|(clock2=12)&(clock1=0) am=0;pm=1; void disp0(void) if(c0=r0)|(c0=r1) /*片选是否到达跳动显示的位*/ if(b020) P2=weic0;P1=dmbufc0; b0=b0+1; c0=c0+1; if(c0=12)c0=0; else if(b040) P2=weic0;P1=0; b0=b0+1; if(b0=40

54、) b0=0; c0=c0+1; if(c0=12)c0=0; else P2=weic0;P1=dmbufc0; c0=c0+1; if(c0=12)c0=0; uchar keyin() uchar kb; k0=0; kb=P0; k1=kb; k2=k2+1; if(k2160) return(k0); else if(k2=160) k2=0; return(k1); void hanshu(void) /*显示缓冲器付值*/ buf0=clock5/10; buf1=clock5%10; buf2=clock4/10; buf3=clock4%10; buf4=clock3/10;

55、 buf5=clock3%10; buf6=clock2/10; buf7=clock2%10; buf8=clock1/10; buf9=clock1%10; buf10=clock0/10; buf11=clock0%10;void timer1(void) interrupt 3 using 3 /*用定时器1来做秒表*/ TH1=(65536-1000)/256; TL1=(65536-1000)%256; if(ao0=1)|(ao1=1) if(f4=5) f4=0; clock0=clock0+1; if(clock0=100) clock0=0; clock1=clock1+1; if(clock1=60) clock1=0;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!