51系列单片机制作万年历.docx
- 文档编号:7765154
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:35
- 大小:389.85KB
51系列单片机制作万年历.docx
《51系列单片机制作万年历.docx》由会员分享,可在线阅读,更多相关《51系列单片机制作万年历.docx(35页珍藏版)》请在冰豆网上搜索。
51系列单片机制作万年历
摘要
万年历的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由AT89S51单片机,LED显示电路,以及调时按键电路等组成。
在单片机的选择上本人使用了AT89S51单片机,该单片机适合于许多较为复杂控制应用场合。
显示器使用2片7SEG-MPX8-CA和一片7SEG-MPX4-CA。
7SEG-MPX8-CA是一种八个共阳二极管显示器,7SEG-MPX4-CA是一种四个共阳二极管显示器。
为了能更轻松的控制这三片显示器,本人使用了3片74HC164来驱动。
74HC164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。
软件方面主要包括日历程序、时间调整程序,公历转阴历程序,显示程序等。
程序采用汇编语言编写,以便更简单地实现调整时间及阴历显示功能。
关键词:
时钟电钟,动态扫描,单片机
Abstract
Calendarofthedesignprocessinhardwareandsoftwaretosynchronizethedesign.HardwaremainlybytheAT89S51micro-controller,LEDdisplaycircuit,andthetunecomposedofthecircuitwhenthebutton.IntheSCMchoiceIusedtheAT89S51micro-controller,whichissuitableformanyofthemorecomplexcontrolapplications.Monitortheuseoftwo7SEG-MPX8-CAanda7SEG-MPX4-CA.7SEG-MPX8-CAisatotalofeight-yangdiodedisplay,7SEG-MPX4-CAisatotaloffour-yangdiodedisplay.Inordertomoreeasilycontrolthethreemonitors,Iusethree74HC164todrive.
74HC164isan8-bitedge-triggeredshiftregister,serialinputdata,andparalleloutput.Thesoftwareincludescalendarprogram,timetoadjustprocedures,turnthelunarcalendarprograms,displayprograms.Programswritteninassemblylanguageusedinordertomoreeasilyadjustthetimeandtherealizationofthelunarcalendardisplay.
Keywords:
Clockelectricclock,Dynamicscan,SCM
第一章前言
1.1研究目的和意义
电子万年历是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。
数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。
钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的万年历精度高,功能易于扩展。
可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。
所有这些,都是以钟表数字化为基础的。
因此,研究数字时钟及扩大其应用有着非常现实的意义。
1.2国内外研究现状
二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命,就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!
因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。
我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了具有原来的显示时间,日期等基本功能外,还具有闹铃,报警等功能,商家生产的电子万年历更从质量,价格,使用上考虑,不断的改进电子万年历的设计,使其更加具有市场。
1.3研究内容和方法
问题一:
核心器件的选取
AT89S51片内ROM全部采用FlashROM:
能以3V的超低电压工作,同时也与MCS-51系列单片机完全兼容,该芯片内部为8KBROM存储空间,同时具有89S51的功能且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片进行多次拔插,所以不会对芯片造成损伤。
综上所述,所以采用AT89S51作为主控制系统、DS1302提供时钟、采用数字温度传感器,LCD液晶显示屏作为显示。
问题二:
系统硬件电路的设计
本电路是由AT89S51单片机作为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒等进行计时,具有闰年补偿功能,工作电压为2.5V-5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个用于临时存放数据的RAM寄存器。
可产生年、月、日、时、分、秒等,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成,显示部分为LCD液晶显示屏,能够实现字符与数字同时显示的功能。
第二章设计方案论证
2.1系统基本方案选择和论证
1.单片机芯片的选择方案和论证:
采用AT89S51,片内ROM全都采用FlashROM;能以3V的超低压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89S52的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
所以选择采用AT89S51作为主控制系统。
2.显示模块选择方案和论证:
方案一:
采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形,显示多样、清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。
方案三:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
[1]
所以采用了LED数码管作为显示。
3.时钟芯片的选择方案和论证:
方案一:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本。
但是,实现的时间误差较大。
所以不采用此方案。
方案二:
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。
4.电路设计最终方案决定
综上各方案所述,对此次作品的方案选定采用AT89S51作为主控制系统,DS1302提供时钟,LED数码管动态扫描作为显示。
2.3控制部分的方案选择
单片机就是简化的微型计算机。
CPU中本身自带存储器ROM和RAM。
CPU片内也有总线。
IC(集成电路)技术是将电路通过特殊工艺做在一块硅基片上封装成芯片,比如CPU,片外存储器等等。
将单片机CPU(比如51系列),晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等通过PCB工艺(比如SMT贴片,或者插装)做在环氧树脂板上。
这样才是一个完整的单片(做在一块PCB板上)的微型计算机。
1.用可编程逻辑器件设计。
可采用ALTERA公司的FLEX10K系列PLD器件。
设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接也会比较方便。
但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也相对多一些。
从成本上来讲,用可编程逻辑器件来设计也没有什么优势。
2.用凌阳16位单片机设计。
凌阳16位单片机有丰富的中断源和时基,方便万年历的设计。
它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。
I/O口功能也比较强大,方便使用。
用凌阳16位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。
这些都方便对设计进行扩展,使设计更加完善。
成本也相对低一些。
2.2显示部分的方案选择
液晶显示方式。
液晶显示效果出众,可以运用菜单项来方便操作,但是在显示时,特别是使用秒表功能时扫描速度跟不上,屏幕会有明显的闪烁。
而且由于61板的存储空间有限,液晶显示就不能与语音播抱程序同时实现。
这些大大影响了电子万年历的性能。
相比液晶显示,采用8段数码管既经济实惠,在效果上也可以加入语音报时功能,操作比较液晶显示来说虽然略显繁琐,但总体也还可以做到比较人性化。
所以,最后选择LED数码管显示方案。
常见的LED显示具有清晰明亮的特点,是显示接口也是绝大多数单片机应用系统必备的部件之一。
发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。
它由若干个发光二极管按一定的规律排列而成。
当某一个发光二极管导通时,相应的一个点或一笔画被点亮,控制不同组合的二极管导通,就能显出各种字符。
显示器的结构
常用的7段显示器的结构如下图所示,发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的成为共阴显示器。
1位显示器由8个发光二极管组成,其中7个发光二极管a~g控制7个笔画的亮或暗,另一个控制一个小数点的亮和暗,这种笔画的七段显示器能显示的字符较少,字符的形状有些失真,但失控简单,使用方便。
图1显示器结构图
第三章系统硬件设计
3.1系统硬件框图
图2系统硬件框图
3.2控制部分电路设计
3.2.1AT89S51单片机
AT89S51单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
1.内部结构
按功能分为8部分:
CPU,程序存储器,数据存储器,时钟电路,串行口,并行I/O口,中断系统,定时/计数器。
2.AT89S51单片机有40个引脚。
单片机的引脚及功能如下:
●Vcc:
电源电压+5V
●GND:
接地
●P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线服用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻。
●P1口:
P1口是一个带内部上拉电阻的8位双向I/O,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
Flash编程和程序校验期间,P1接收低8位地址。
●P2口:
P2口是一个带内部上拉电阻的8位双向I/O,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
Flash编程和程序校验期间,P2亦接收低高位地址和其他控制信号。
●P3口:
P3口是一组带内部上拉电阻的8位双向I/O,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部的上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,见表1所示:
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
[2]
表1P3口的第二功能图
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外中断0)
P3.3
INT1(外中断1)
P3.4
T0(定时/计时器0外部输入)
P3.5
T1(定时/计时器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
●RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使引脚输出高电平,设置SFRAUXR的DISRT0(地址8EH)可打开或关闭该功能。
DISRT0位缺省为RESET输出高电平打开状态。
●ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存器允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过多特殊功能寄存器(SFR)区中的8EH单元的D0位置,可禁止ALE操作。
该位置后,只有一条MOVX和MOVC指令ALE才会被激活。
另外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
●PSEN:
程序存储允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN信号。
●EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需要注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的变成电压Vpp。
●XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
●XTAL2:
振荡器反相放大器的输出端。
AT89S51单片机内部结构
3.AT89S51单片机与MCS-51完全兼容
●看门狗(WDT):
WDT是一种需要软件控制的复位方式。
WDT由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。
WDT在默认情况下无法工作;为了激活WDT,用户必须往WDTRST寄存器(地址:
0A6H)中依次写入01EH和0E1H。
当WDT激活后,晶振工作,WDT在每个机器周期都会增加。
WDT计时周期依赖于外部时钟频率。
除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。
当WDT溢出,它将驱动RSR引脚输出一个高电平。
●可编程串口(UART)在AT89S51中,UART的操作与AT89S52一样。
AT89S51系列单片机的串行通信口可以工作于同步和异步通信方式。
当工作于异步方式时,它具有全双工的操作功能,也就是说,它可以同时进行数据的发送和接收。
串行口内的接收器采用的是双缓冲结构,能够在接收到的第一个字节从接收寄存器读走之前就开始接收第二个字节(当然,如果第二个字节接收完毕,而第一个字节仍然没有被读走,那将会丢掉一个字节)。
串行口的发送和接收操作都是通过特殊功能寄存器中的数据缓冲寄存器SBUF进行的,但在SBUF的内部,接收寄存器和发送寄存器在物理结构上是完全独立的。
如果将数据写入SBUF,数据会被送入发送寄存器准备发送。
如果执行SBUF指令,则读出的数据一定来自接收缓存器。
因此,CPU对SBUF的读写,实际上是分别访问2个不同的寄存器。
这2个寄存器的功能决不能混淆。
●振荡电路:
AT89S51系列单片机的内部振荡器,由一个单极反相器组成。
XTAL1反相器的输入,XTAL2为反相器的输出。
可以利用它内部的振荡器产生时钟,只要XTAL1和XTAL2引脚上一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,此方式称为内部方式。
另一种方式由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。
在组成一个单片机应用系统时,多数采用这种方式,这种方式结构紧凑,成本低廉,可靠性高。
在电路中,对电容C1和C2的值要求不是很严格,如果使用高质的晶振,则不管频率为多少,C1、C2通常都选择30pF。
●定时/计数器:
AT89S51单片机内含有2个16位的定时器/计数器。
当用于定时器方式时,定时器的输入来自内部时钟发生电路,每过一个机器周期,定时器加1,而一个机器周期包含有12个振荡周期,所以,定时器的技术频率为晶振频率的1/12,而计数频率最高为晶振频率的1/24。
为了实现定时和计数功能,定时器中含有3种基本的寄存器:
控制寄存器、方式寄存器和定时器/计数器。
控制寄存器是一个8位的寄存器,用于控制定时器的工作状态,方式寄存器是一个8位的寄存器,用于确定定时器的工作方式,定时器/计数器是16位的计数器,分为高字节和低字节两部分。
●RAM:
高于7FH内部数据存储器的地址是8位的,也就是说其地址空间只有256字节,但内部RAM的寻址方式实际上可提供384字节的直接地址访问同一个存储空间,高于7FH的间接地址访问另一个存储空间。
这样,虽然高128字节属于专用寄存器,即特殊功能寄存器区的地址是重合的,但实际上它们是分开的。
究竟访问哪一区,存是通过不同的寻址方式加以区分的。
●SFR:
SFR是具有特殊功能的所有寄存器的集合,共含有22个不同寄存器,它们的地址分配在80H~FFH中。
虽然如此,不是所有的单元都被特殊功能寄存器占用,未被占用的单元,其内容是不确定的。
如对这些单元进行读操作,得到的是一些随机数,而写入则无效,所以在编程时不应该将数据写入这些未确定的地址单元中,特殊功能寄存器主要有累加器ACC、B寄存器、程序状态字寄存器PSW、堆栈指针SP、数据指针DPTR、I/O端口、串行口数据缓冲器SBUF、定时器寄存器、捕捉寄存器、控制寄存器。
●中断系统:
AT89S51单片机有6个中断源,中断系统主要由中断允许寄存器IE、中断优先级寄存器IP、优先级结构和一些逻辑门组成。
IE寄存器用于允许或禁止中断;IP寄存器用于确定中断源的优先级别;优先级结构用于执行中断源的优先排序;有关逻辑门用于输入中断请求信号。
在整个中断响应过程中CPU所执行的操作步骤如下:
(1)完成当前指令的操作;
(2)将PC内容压入堆栈;
(3)保存当前的中断状态;
(4)阻止同级的中断请求;
(5)将中断程序入口地址送PC寄存器;
(6)执行中断服务程序;
(7)返回。
[3]
图3AT89S51引脚图
3.2.28位移位寄存器74LS164
74LS164为8位移位寄存器,其主要电特性的典型值如表2:
表274LS164主要电特性典型值
型号
fm
Pn
54/74164
36MHz
185mW
54/74LS164
36MHz
80mW
当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。
串行数据输入端(A,B)可控制数据。
当A、B任意一个为低电平时停止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。
当有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用Q0的状态。
图4双列直插封装图
图574ls164内部逻辑图
图674LS164引脚图
表3真值表
Inputs
Outputs
L
H
H
H
H
Clock
L
A
X
X
H
L
X
B
X
X
L
H
X
QA
L
QA0
H
L
L
QB
L
QB0
QAn
QAn
QAn
...
...
...
...
...
...
QH
QH0
QGn
QGn
QGn
QGn
H-高电平L-低电平X-任意电平↑-低到高电平跳变
QA0,QB0,QH0-规定的稳态条件建立前的电平
QAN,QGN-时钟最近的↑前的电平
3.2.3控制部分电路设计
使用AT89S51作为单片机的主控芯片,AT89S51单片机为40引脚双列直插芯片,有四个I/O口P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。
单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,第9引脚为复位输入端,接上电容,电阻及开关后构成上电复位电路,20引脚为接地端,40引脚为电源端,如图下所示:
图7控制部分电路图
3.3显示部分电路设计
基本显示原理:
时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1,到9后,10秒位加1,秒位回0。
10秒位到5后,即59秒,分钟加1,10秒位回0。
依次类推,时钟最大的显示值为23小时59分59秒。
这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。
同时时钟达到最大值的时候天数也增加一位,直到显示了7后再变为1,同时阴历和阳历的天数也加1,根据不同的月份显示的天数阳历有28、29、30、31天,阴历就要经过计算得到,到了12个月后,年数自动增加1,以此类推,显示万年历的现实。
另外,连接方式总电路图上可以看到,这里就不做说明了,下图为显示部分的电路图:
图8显示部分电路图
3.4时钟电路模块的设计
3.4.1DS1302寄存器
现在流行的串行时钟电路很多,如DS1302、DS1307、PCF8485等。
这些电路的接口简单、价格低廉、使用方便,被广泛地采用。
本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
采用普通32.768kHz晶振。
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 系列 单片机 制作 万年历