数字钟设计Word文档格式.docx

上传人:b****6 文档编号:21593539 上传时间:2023-01-31 格式:DOCX 页数:25 大小:422.46KB
下载 相关 举报
数字钟设计Word文档格式.docx_第1页
第1页 / 共25页
数字钟设计Word文档格式.docx_第2页
第2页 / 共25页
数字钟设计Word文档格式.docx_第3页
第3页 / 共25页
数字钟设计Word文档格式.docx_第4页
第4页 / 共25页
数字钟设计Word文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

数字钟设计Word文档格式.docx

《数字钟设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字钟设计Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

数字钟设计Word文档格式.docx

本设计能够实现LED数码管显示数字的功能,完成时、分、秒的显示,时间初始值的调整,秒表功能等。

通过本次设计加深对数字电路、单片机等课程的全面认识和复习掌握,对单片机课程的应用进一步了解,并培养自己对单片机课程的兴趣。

掌握LED的原理和程序设计方法,通过本次设计能够将单片机软硬件结合起来,对程序进行编写和仿真验证。

综合运用单片机技术,数字电子技术的知识设计数字钟计时系统,锻炼自己发现问题和很好地解决问题的能力,培养系统工程设计能力。

1.3本文的主要内容

本文介绍的主要内容安排如下:

(1)第一章绪论。

主要介绍了数字钟的发展和应用价值,对纯硬件数字电路构成数字钟系统存在的问题作了探讨。

(2)第二章总体方案设计。

介绍了系统设计方案和工作原理,以及核心器件的选型和系统的参数计算。

(3)第三章系统的硬件设计。

对系统各模块的硬件设计进行详细介绍,给出了系统硬件设计的总体框图和各模块的详细电路图。

(4)第四章系统的软件设计。

主要介绍了本系统中AT89S51单片机编程的技巧和程序原理流程图。

(5)结束语阐述了本系统的设计思想,简要描述了本系统的设计特点,并对进一步的研究提出了展望。

 

第二章总体方案设计

2.1总体功能分析

本设计采用单片机作为主控制器,相比数字电路硬件实现来说,将计时和控制电路用单片机软件实现,提高了系统的集成度和开发难度,有利于缩短开发周期和减小产品体积和成本。

本设计将数字钟的所有功能集成在一起,由一个控制器来完成所有部分的控制,主要功能模块分为按键、按键驱动电路、LED驱动电路,LED显示、微控制器和供电系统等部分,如图2-1所示。

图2-1数字钟电路总体框图

图2-2系统的软件总体框图

按键驱动电路主要实现按键和单片机的接口,当有按键操作的时候,按键驱动电路通知单片机读取按键值,本设计采用中断方式读取按键,中断方式相比查询能够提高系统的响应速度,占用更少的系统资源,而且当单片机具有低功耗模式的时候,在没有操作的时候可以进入低功耗模式,在有操作的时候通过安检驱动电路来唤醒单片机读取按键值,这样可以很好的降低系统的功耗。

LED显示和LED驱动电路主要完成单片机给定数据的显示,通过6位数码管实时显示时、分、秒,本设计采用8位锁存芯片74HC574来驱动LED显示,采用的是静态驱动显示。

2.2LED驱动方案选择

数码管是一种半导体发光器件,其基本单元是发光二极管。

按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。

共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳极数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。

共阴极数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴极数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

图2-3共阳极数码管原理图

图2-4共阴极数码管原理图

2.2.1静态显示驱动

静态驱动也称直流驱动。

静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×

8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:

),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

2.2.2动态显示驱动

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"

a,b,c,d,e,f,g,dp"

的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

当前大部分产品中用到的是数码管的动态扫描驱动显示,有很多的集成LED数码管动态扫描驱动芯片可供选择,其中MAXIM公司的MAX7219就是用的很广泛的一片驱动芯片。

MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。

其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。

只有一个外部寄存器用来设置各个LED的段电流。

MAX7221与SPI™、QSPI™以及MICROWIRE™相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。

一个方便的四线串行接口可以联接所有通用的微处理器。

每个数据可以寻址在更新时不需要改写所有的显示。

MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。

整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。

在应用时要求3V的操作电压或segmentblinking,可以查阅MAX6951数据资料。

2.3按键检测方案选择

2.3.1查询方式读取按键值

查询方式读取按键值是指,单片机不断重复的读取按键所接端口的值,判断是否有按键被按下的一种方法,在简单的单片机系统中,查询方式读取按键用得较多,这种方式下的软件编程比较容易,只需要简单的单片机读端口数据即可实现。

但是这一方式下单片机的负担较重,需要间隔很小的时间扫描一次按键,在没有按键按下的时候,相当于单片机是在做无用功,浪费了系统资源和能量。

2.3.2中断方式读取按键值

中断方式读取按键值与查询方式读取按键值相比较,在系统资源占用和低功耗方面性能要高很多。

中断方式读取按键值就是当有按键被按下的时候,通过外部的逻辑电路来触发单片机的外部中断引脚,中断单片机现有的任务,去读取按键值,这种方式下单片机外围的硬件设计相比较查询方式下要稍显复杂,但是其优势是不可忽视的。

2.3电源方案选择

电源是每个电子产品不可缺少的部分,在低电压的电子产品中,主要的电源解决方案有两种:

变压器降压加线性稳压芯片结合和开关电源降压型电源。

变压器降压加线性稳压芯片结合的方案是比较传统的方案,在小功率的电子产品中用的较多,但是当电子产品的功率上升后,降压变压器的体积和重量是一个没有办法解决的问题,因为这里的变压器是工频变压器,其磁芯是硅钢片叠起来的,由于频率较低为50Hz,变压器的磁芯无法减小体积。

开关电源是利用现代电力电子技术,控制开关管开通和关断的时间比率,维持稳定输出电压的一种电源,开关电源一般由脉冲宽度调制(PWM)控制IC和MOSFET构成。

开关电源和线性电源相比,二者的成本都随着输出功率的增加而增长,但二者增长速率各异。

线性电源成本在某一输出功率点上,反而高于开关电源,这一点称为成本反转点。

随着电力电子技术的发展和创新,使得开关电源技术也在不断地创新,这一成本反转点日益向低输出电力端移动,这为开关电源提供了广阔的发展空间。

开关电源高频化是其发展的方向,高频化使开关电源小型化,并使开关电源进入更广泛的应用领域,特别是在高新技术领域的应用,推动了高新技术产品的小型化、轻便化。

另外开关电源的发展与应用在节约能源、节约资源及保护环境方面都具有重要的意义。

2.4主要器件的选型

本设计采用了价廉的AT89S51芯片(目前一片价格在5-9元/片左右)。

AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。

AT89S51芯片有40个引脚,核心部分为MCS-51内核。

片内集成4kBytesFlash片内程序存储器、128BytesRAM数据存储器、2个16位可编程定时器/计数器、5个中断优先级、2层中断嵌套中断、6个中断源、32个外部双向I/0端口和两个全双工的串口通信接口UART,工作频率最高可达33MHz,支持在线编程下载,即ISP下载功能,AT89SXX系列单片机实现了ISP下载功能,故而取代了89CXX系列的下载方式,也是因为这样,ATMEL公司已经停止生产89CXX系列的单片机,现在市面上的AT89CXX多是停产前的库存产品。

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口除了作为普通I/O口,还有第二功能:

数码管驱动电路采用8位数据脉冲触发锁存芯片74HC574,该芯片是三态输出的8位D触发器,在CP端的上升沿将输入数据触发到输出端,输出使能端(OE)控制三态输出,当使能端OE为高的时候,8位数据段输出为高阻态。

按键驱动电路采用的是8位数据锁存器/缓冲器74HC541,具有数据缓冲器、线路驱动等功能,支持三态输出,和74HC540的功能相近。

第三章系统硬件设计

3.1单片机最小系统电路设计

本设计选用的是Atmel公司的8位单片机AT89S51,该单片机是基于MCS-51内核,具有在线编程(ISP)的4kBytesFlash存储器,256BytesRAM空间,可外扩存储空间64kBytes,32个可编程的I/O引脚,集成了异步串口和16位定时器,最高工作时钟频率可达33MHz。

单片机的最小系统电路包括ISP程序下载接口、电源电路、晶振电路和上电复位电路,下面做详细分析。

ISP程序下载接口是一个双排10针的接口座子,与单片机的P1.5(MOSI)、P1.6(MISO)、P1.7(SCK)和复位引脚RESET连接。

图3-1ISP下载接口

电源滤波电容如图3-2所示,本设计选择了一个470μF的电解电容和两个0.1μF的瓷片电容,电解电容用于储能,抑制电压波动对单片机的影响,瓷片电容可以滤除电源中的高频干扰信号,在设计PCB时,这几个电容要尽量靠近单片机的电源和地引脚。

图3-2电源滤波电容

本系统的单片机时钟选择12M晶振,如图3-3所示,晶振两端分别接22pF电容到地。

图3-3时钟电路

单片机的上电复位电路采用一个10μF电容和10kΩ电阻串联,在上电时候,电容和电阻分压,给单片机的复位引脚提供了一个高电平信号,使单片机复位,当电容充电完成后,复位引脚被下拉到地,单片机正常工作。

图3-4上电复位电路

单片机最小系统的整体电路详见附录。

3.2数码管驱动电路设计

本设计采用了静态驱动的方式来驱动数码管,数码管驱动芯片74HC574的电路连接如图3-6所示,数据输入端接单片机的数据总线,数据输出端串连一个510Ω的电阻后接数码管的段驱动端,数码管选用的是共阳极型,其公共端位阳极,接电源,输出使能端直接接地,时钟触发端信号是由片选信号和写使能信号经过一个或门电路后得到的,当片选和写使能都有效的时候,拉低时钟触发端,然后单片机将数据加载到数据总线上,当写使能或者片选信号被单片机释放后,在74HC574的时钟触发端就会出现一个上升沿信号,利用这一个信号即可将数据总线上的数据锁存到输出。

该驱动电路对应的的数码管显示数字0--9数据译码如表3-1所示。

表3-1数码管显示译码表

1

2

3

4

5

6

7

8

9

a

b

c

d

e

f

g

DP

共阳码

F9

A4

B0

99

92

82

F8

80

90

C0

图3-574HC138译码电路

本设计中的LED数码管驱动电路需要驱动6位数码管,相对应有6片数码管驱动芯片,本设计采用一片74HC138作为6片驱动芯片的地址译码器,其电路如图3-5所示。

单片机的地址线A8、A9、A10、A11分别接74HC138的译码输入信号线A0、A1、A2和高使能端E3,地使能端直接接地,其输出端Y0---Y5分别接6片数码管驱动该芯片74HC574。

数码管驱动芯片的地址译码如表3-2所示。

表3-26位数码管的地址译码表

LED5

LED4

LED3

LED2

LED1

LED0

A8

A9

A10

A11

地址码

D00

C00

B00

A00

900

800

图3-6LED数码管驱动电路

3.3按键驱动电路设计

为了提高系统的快速响应速度,按键采用中断读取的方式来设计,当有按键按下后,通过单片机的外部中断来通知单片机读取按键值,这样能够提高系统对按键的响应速度,也可以减少查询方式下的编程工作量,而且,当单片机具有低功耗功能的时候,可以使单片机在没有任务的时候进入低功耗模式,有按键按下的时候再唤醒单片机开始工作,或者在计数器需要CPU干预的时候唤醒CPU工作,这样可以能耗的提高系统的低功耗效果,达到最小的功率消耗。

按键读取电路如图3-7所示,5个按键的输出端接10kΩ的上拉电阻和0.1uF的滤波防抖动电容后,输出到单片机的数据端,5个按键的输出信号经过相与后接到单片机的外部中断检测引脚。

当没有按键按下的时候,KEY0---KEY4都为高电平,经过如图3-7所示的与门电路后输出EXINT0为高电平,当有任意一个按键按下后,EXINT0端就会出现低电平,所以当按键按下就会在EXINT0端输出一个下降沿信号,当松开所按下的按键就会在EXINT0端产生一个上升沿信号,因此,只要设置单片机的外部中断触发方式为下降沿触发即可实现按键中断。

单片机检测到按键中断后,再来读取KEY0---KEY4的按键值,判断具体的按下的按键。

图3-7按键读取电路

3.4电源设计

本系统的电源设计如图3-8所示,这是直接通过交流220VAC市电给系统供电的电路原理图。

接线端子P2接交流市电,F1位过流保护熔断丝,T1为工频变压器,本设计选用220VAC输入,9VAC输出,功率为5VA的交流降压变压器即可满足需要,变压器的将220VAC输入降压位9VAC输出,经过整流桥和平波电容C12后,转换为直流电,因为变压器的输出9VAC是交流有效值,其交流峰值电压为

从变压器的输出端看变压器的输入端,整个电网相当于一个无限大功率系统,所以整流后的输出直流电压也为12.7V左右。

整流和滤波后的输出电压高达12.7V不能直接供给单片机系统,本设计采用了一片线性稳压芯片LM7805稳压后作为单片机系统的供电。

用LM78/LM79系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。

图3-8中电源输出端并联了一个100uF电解电容,用于平波和储能,两个0.1uF的瓷片电容用于抑制数字电路工作的时候产生的高频噪声,提高电源的质量。

图3-8电源电路图

在实际的数字钟应用中,考虑到计时的可靠性,需要系统能够长期不断电运行,这就需要在系统电源中加上应急供电部分。

如图3-9所示,采用一个电池和抑制低压降二极管,即可实现对数字钟系统的不间断供电,为了降低电池的利用效率,这里的二极管可以采用压降只有0.2V的锗二极管,因为整个系统的工作电流较小,在设计的时候在电池上串联了一只100Ω的电阻,用于在单片机系统电源短路的时候保护电池不会因为过流和过热被烧坏。

图3-9电池供电电路

第四章系统软件设计

系统的软件设计主要包括5个模块,分别是按键读取模块、LED显示驱动模块、计时模块、秒表模块和控制模块。

4.1按键读取程序设计

按键读取模块的程序流程图如图4-1所示,从流程图可以看出,这就是一个简单的中断服务程序框图,当读取到按键值后,再根据当前的工作模式和状态来确定下一步的工作状态。

图4-1按键读取程序流程图

4.1.1模式选择按键程序解析

以下是模式选择按钮按下后的程序反应,总共定义了四种工作模式,分别表示为0x01、0x02、0x04和0x08,按下“模式选择”按钮后,通过当前模式变量CurrentModle左移一位来切换工作模式,当切换到0x08后先一步自动回到0x01模式。

#defineDctModle0x08

#defineClkModle0x04

#defineCntModle0x02

#defineSetModle0x01

if(Keytemp==0x08)

{

CurrentModle<

<

=1;

if(CurrentModle>

0x08)

CurrentModle=0x01;

}

4.1.2确定/清零按钮程序解析

系统的“确定/清零”按钮主要有三个功能,分别如下程序所示,当前模式为时间初始设置模式,按下“确定/清零”按钮后,系统将设定的时间零时初值写入到时间值,并将当前模式切换到时钟模式。

当前模式为增计数模式时,按下“确定/清零”按钮后,系统会将计数值归零。

当前模式为减计数模式时,按下“确定/清零”按钮后,系统会清零减计数值,并停止减计数器工作。

if(Keytemp==0x01)

if(CurrentModle==SetModle)

{

CLKTime[0]=CLKTemp[0];

CLKTime[1]=CLKTemp[1];

CLKTime[2]=CLKTemp[2];

CLKTime[3]=CLKTemp[3];

CLKTime[4]=CLKTemp[4];

CLKTime[5]=CLKTemp[5];

CurrentModle=ClkModle;

}

elseif(CurrentModle==CntModle)

CLKCnt[0]

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1