基 于AT89S51的 电 子 万 年 历Word文件下载.docx
《基 于AT89S51的 电 子 万 年 历Word文件下载.docx》由会员分享,可在线阅读,更多相关《基 于AT89S51的 电 子 万 年 历Word文件下载.docx(65页珍藏版)》请在冰豆网上搜索。
2.2.5键盘接口的设计17
2.2.6彩灯电路17
第3章软件系统设计18
3.1主程序设计18
3.2阳历程序设计18
3.3读出温度子程序设计19
3.4显示子程序设计19
3.5时间调整子程序20
3.6、控制源程序设计21
结论27
致谢29
参考文献30
附录1系统原理图31
附录2布线图32
附录3原器件清单33
摘要
随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。
由其是单片机技术的应用产品经走进了千家万户。
电子万年历的出现给人们的生活带来的诸多方便。
本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。
本设计以数字集成电路技术为基础,单片机技术为核心。
本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。
本系统以单片机的汇编语言进行软件设计,增加了程序的可读性和可移植性,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。
系统通过7段LED数码管为载体显示数据,所以具有人性化的操作和美观的页面效果。
可以显示时间、日期、星期、温度等功能。
关键词:
单片机;
万年历;
数码管
Abstract
Alongwiththeelectronictechnologyrapiddevelopment,speciallyappearsalongwiththelargescaleintegratedcircuit,livedforthehumanityhasbroughtthefundamentalchange.Wasthemonolithicintegratedcircuittechnologyapplicationproductafterenteredeveryonebyit.Theelectronictenthousandyearscalendarappearancebringsforpeople'
slifemanyisconvenient.
Thisarticlefirstdescribesthesystemhardwareprincipleofwork,andattachesbythesystemstructurediagramperformstoexplain,emphaticallyintroducedthissystemappliesvarioushardwareconnectiontechnologyandeachinterfacemodulefunctionandtheworkprocess,next,indetailelaboratedprocedureeachmoduleandtherealizationprocess.Thisdesigntakethedigitalintegratedcircuittechnologyasthefoundation,themonolithicintegratedcircuittechnologyisacore.Thisarticlecompilestheguidingideologyisthesoftwareandhardwareunifies,takethehardwareasthefoundation,carriesonvariousfunctionsmodulethecompilation.
Thissystemcarriesonthesoftwaredesignbythemonolithicintegratedcircuitassemblylanguage,increasedtheprocedurereadabilityandtheprobability,inordertobeadvantageousfortheexpansionandthechange,thesoftwaredesignusesthemodularstructure,succinctlycausedtheprogrammingthelogicalrelationstobebright.Systemthrough7sectionofLEDnumericalcodetubeforcarrierdemonstrationdata,thereforehasthehumannatureoperationandtheartisticpageeffect.Maydemonstratefunctionandsoontime,date,week,temperature.
KeyWordsMonolithicintegratedcircuit;
Tenthousandyearscalendar;
Digitaltube.
第1章方案论证
1.1电子万年历显示电路
初步设计系统由主控模块,时钟模块,显示模块,温度传感模块,键盘接口模块,彩灯模块组成。
主控芯片使用51系列AT89S51单片机。
时钟芯片使用了美国DALLAS公司推出的与MC146818兼容,寄存器存取速度快,在主机掉电时可用来保存重要数据的实时时钟芯片DS12C887,采用DS12C887作为主要计时芯片,可作到计时准确。
显示模块采用普通的共阳LED数码管。
温度模块采用美国DALLAS公司生产的一线式数字温度传感器DS18B20,芯片内有一个64位的ROM,其中存有各个器件自身的序列号,作为器件独有的ID号码,DS18B20简化了测温器件,使用更加方便,可做到准确测量温度。
键输入采用查询法实现调整功能。
彩灯采用普通的发光二极管组成。
电路系统构成框图如图1-1:
图1-1电路系统框图
1.1.1用单片机控制时钟芯DS12C887正常工作
设计中使用的时钟芯片是美国DALLAS公司推出的与MC146818兼容,寄存器存取速度快,在主机掉电时可用来保存重要数据的实时时钟芯片DS12C887,采用DS12C887作为主要计时芯片,可做到计时准确。
对DS12C887的控制,主要是对其的初始化和对其数据的读取。
DS12C887采用连续工作制,一般无需每次都初始化,即使系统复位也是如此。
但初始化时,首先应禁止芯片内部的更新周期操作。
所以,应先将DS12C887状态寄存器B中的SET位置1,然后初始化。
DS12C887处于正常工作状态时,每秒即产生一个更新周期。
在该周期内,微处理器不能读时标寄存器中的内容,否则将得不到确定数据。
为了采样时标寄存器中的数据,采用两种避开在更新周期内访问时标寄存器的方法。
第一种是利用更新周期结束发出的中断。
第二种是利用寄存其A中的UIP位来指示芯片是否处于更新中期。
1.1.2对温度传感器DS18B20的读取及控制
DS18B20温度传感器是美国DALLAS半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据要求通过简单的编程实现9~~12位的数字值读数方式。
DS18B20温度转换的时间比较长,而且设定的分辨率越高,所需的温度转换时间就越长。
因此在应用时要将分辨率和时间权衡考虑。
斜率累加器用于补偿和修正测温过程中的非线型性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被
测温度值。
另外,由于DS18B20单线通讯功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
1.1.3用74LS164控制显示
显示电路采用74LS164来驱动数码管。
74LS164内部为八个D触发器,用以实现数据的串行移位。
单片机以串行口方式0(移位寄存器方式)输出数据,十六片74LS164作为十六个数码管的串并联换显示接口。
74LS164作为TTL单向八位移位寄存器,可实现串行输入,并行输出。
在给出了八个脉冲后,最先进入74LS164的第一个字节数据到达了高位。
再来一个脉冲,第一个脉冲就会从最高位移出,进入下一个74LS164的第一位,十六片74LS164首尾相串,而时钟端则接在一起。
这样,当输入八个脉冲时从单片机RXD端输出的第一字节数据就进入了第一片74LS164中,而当第二个八个脉冲到来后,第一字节数就进入了第二片74LS164,而随后的第二字节的数据则进入了第一片74LS164。
这样当第十六个八个脉冲完成后首次送出的数据被送到了最下面的74LS164中,其它数据依次出现在第十五至第一片74LS164中,实现了数据在74LS164中的串行输入、输出。
第2章硬件电路设计
2.1系统硬件电路的设计
系统的硬件电路主要由主控制器AT89S51,时钟芯片DS12C887,温度传感器DS18B20,串口显示电路,键扫描电路以及彩灯电路组成。
电子万年历电路设计原理图见附录一。
2.2芯片介绍
2.2.1AT89S51性能介绍及其主要特性
AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4Kbytes的可系统编程的Flash只读程序存储器。
器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统和引脚。
它集成Flash程序存储器即可在线编程(ISP)也可用传统方法进行编程及通用8为微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为你提供许多高性价比的应用场合,可灵活用于各个领域。
主要特性如下:
·
与MCS-51产品指令系统完全兼容
4K字节在线系统编程(ISP)Flash闪速存储器
1000次擦写周期
4.0——5.5V的工作电压
全静态工作模式:
0Hz——33MHz
三级程序加密锁
128*8字节内部RAM
32可编程I/O线
两个16位定时器/计数器
5个中断源
全双工串行UART通道
低功耗的闲置和掉电模式
中断可丛空闲模式唤醒系统
看门狗(WDT)及双数据指针
掉电表示和快速编程特性
灵活的在线系统编程(ISP字节或页写模式)
1、管脚说明
AT89S51是40脚双列直插芯片。
图2-1是其引脚图。
其中:
图2-1AT89S51引脚图
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
·
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
P3口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2、振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
3、芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
2.2.2DS12C887性能介绍
1、器件及其性能介绍
DS12C887实时时钟芯片功能丰富,可以用来直接代替IBMPC上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887相兼容。
由于DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题;
DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;
对于一天内的时间记录,有12小时制和24小时制两种模式。
在12小时制模式中,用AM和PM区分上午和下午;
时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示;
DS12C887中带有128字节RAM,其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM供用户使用;
此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。
其主要性能如下:
(1)具备完备的时钟,闹钟及到2100年的日历功能,可选择的12小时制或24小时制计时,有AM和PM、星期、夏令时间操作及闰年自动补偿的功能。
(2)具有可编程选择的周期性中断方式和多频率输出的方波发生器功能。
(3)DS122887内部有14个时钟控制寄存器,包括10个时标寄存器,4个状态寄存器和114字节作掉电保护用的低功耗RAM。
(4)由于该芯片具有多种周期中断速率及时钟中断功能,因此可以满足各种不同的待机要求,最长可达24小时,使用非常方便。
(5)时标可选择二进制或BCD码表示。
(6)工作电压:
+4.5~+5.5v
(7)工作电流:
7~15mA
(8)工作温度范围:
0~+70度
2、引脚功能
DS12C887的引脚排列如图2-2所示,各管脚的功能说明如下
GND、VCC:
直流电源,其中VCC接+5V输入,GND接地,当VCC输入为+5V时,用户可以访问DS12C887内RAM中的数据,并可对其进行读、写操作;
当VCC的输入小于+4.25V时,禁止用户对内部RAM进行读、写操作,此时用户不能正确获取芯片内的时间信息;
当VCC的输入小于+3V时,DS12C887会自动将电源发换到内部自带的锂电池上,以保证内部的电路能够正常工作。
(1)MOT:
模式选择脚,DA12C887有两种工作模式,即Motorola模式和Intel模式,当MOT接VCC时,选用的工作模式是Motorola模式,当MOT接GND时,选用的是Intel模式。
本文主要讨论Intel模式。
(2)SQWF:
方波输出脚,当供电电压VCC大于4.25V时,SQW脚可进行方波输出,此时用户可以通过对控制寄存器编程来得到13种方波信号的输出。
(3)AD0~AD7:
复用地址数据总线,该总线采用时分复用技术,由ALE的下降沿锁存8位地址。
在总线周期的前半部分,出现在AD0~AD7上的是地址信息,可用以选通DS12C887内的RAM,总线周期的后半部分出现在AD0~AD7上的数据信息。
(4)CS:
地址选通输入脚,低电平有效,在进行读写操作时,CS的上升沿将AD0~AD7上出现的地址信息锁存到DS12C887上,而下一个下降沿清除AD0~AD7上的地址信息,不论是否有效,DS12C887都将执行该操作。
(5)DS/RD:
数据选择或读输入脚,低电平有效,该引脚有两种工作模式,当MOT接VCC时,选用Motorola工作模式,在这种工作模式中,每个总线周期的后一部分的DS为高电平,被称为数据选通。
在读操作中,DS的上升沿使DS12C887将内部数据送往总线AD0~AD7上,以供外部读取。
在写操作中,DS的下降沿将使总线AD0~AD7上的数据锁存在DS12C887中;
当MOT接GND时,选用Intel工作模式,在该模式中,该引脚是读允许输入脚,即ReadEnable。
(6)R/W:
读/写输入端,该管脚也有2种工作模式,当MOT接VCC时,R/W工作在Motorola模式。
此时,该引脚的作用是区分进行的是读操作还是写操作,当R/W为高电平时为读操作,R/W为低电平时为写操作;
当MOT接GND时,该脚工作在Intle模式,此时该作为写允许输入,即WriteEnable。
CS:
片选输入,低电平有效。
(7)IRQ:
中断请求输入,低电平有效,该脚有效对DS12C887内的时钟、日历和RAM中的内容没有任何影响,仅对内部的控制寄存器有影响,在典型的应用中,RESET可以直接接VCC,这样可以保证DS12C887在掉电时,其内部控制寄存器不受影响。
图2-2DS12C887的引脚图
(8)ALE:
地址锁存信号端。
(9)RESET:
复位端,低电平复位。
(10)NC:
空脚。
3、使用说明
CPU通过读DS12887的内部时标寄存器得到当前的时间和日历,也可通过选择二进制码或BCD码初始化的确10个时标寄存器。
其中114字节的非易失性静态RAM可供用户使用,对于没有RAM的单片机应用系统,可在主机掉电时来保存一些重要的数据。
DS12887的4个状态寄存器用来控制和指出DS12887模块当前的工作状态,除数据更新周期外,程序可随时读写4个寄存器。
下面介绍各寄存器的功能和作用。
(1)DS12887内部RAM各专用寄存器的功能
表2-1是DS12887内部RAM和各专用寄存器分配表。
其中,地址00H~03H的取值范围是00H~3BH(十进制0~59);
04H~05H单元按12小时制的取值范围是上午(AM)01H~0CH(1~12),午(PM)81H~8CH(81~92),按24小时制的取值范围是00H~17H(1~23);
06H单元的取值范围是00H~07H(0~7);
07H单元的取值范围是01H~1FH(1~31);
08H单元的取值范围是01H~0CH(1~12);
09H单元的取值范围是00H~63H(0~99)。
对DS12887内部RAM和各专用寄存器的访问可如下实现:
若片选线地址CS=#0C000H,则芯片内部RAM和寄存器的地址为#C000H~#0C07FH。
应指出,仅管DS12887的专用时标年寄存器只有一个,但通过软件编程可利用其内部的不掉电RAM区的一个字节实现年度的高两位显示。
DS12887可跨2000年的计时。
地址单元
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
0BH
0CH
0DH
用途
秒
秒闹钟
分
分闹钟
时
时闹钟
星期
日
月
年
寄存器A
寄存器B
寄存器C
寄存器D
表2-1DS12887内部RAM和各专用寄存器分配表
UIP:
更新周期标志位。
该位为1时,表示芯片正处于或即将开始更新周期,此时不准读/写时标寄存器;
该位为0时,表于至少在于244us后开始更新周期