基于单片机的时钟日历设计.docx
- 文档编号:7692813
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:36
- 大小:207.73KB
基于单片机的时钟日历设计.docx
《基于单片机的时钟日历设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的时钟日历设计.docx(36页珍藏版)》请在冰豆网上搜索。
基于单片机的时钟日历设计
摘要
论文的研究工作是以单片机技术为背景展开的,并且详细介绍了通过AT89C51单片机控制LCM1602液晶的显示情况,以及单片机与时钟电路、温度传感器之间的通信。
以软件形式对系统进行控制,使得系统控制更具灵活与方便。
本文在深入分析单片机技术的基础上,解析了LCM显示的单片机控制技术和新型温度传感器DS18B20单片机控制应用,以及LCD显示在各种电子显示中的优势,同时阐述了其在日常显示系统中的应用;并且以Proteus与KeiluVision4软件为基础,编写了AT89C51单片机对LCM1602显示控制的软件,绘制其原理图,并使用Proteus软件与KeiluVision4软件建立联合仿真。
论文主要论述了原理图各个模块的作用,控制软件的各个模块的编程。
在设计的过程中,以显示日历、时间、温度为主要目的,并能够实现时间调整功能。
经过一系列的前提准备,到最后的仿真成功,将理论联系实际,使本设计可以在实际中应用,方便经济实用。
【关键词】温度传感器、单片机、万年历
[Abstract]
Thesisresearchworkisbasedonsingle-chiptechnologyexpandthebackground,anddescribedindetailbythetheAT89C51microcontrollercontrolLCM1602LCDdisplay,aswellassingle-chipclockcircuits,temperaturesensorcommunication.Intheformofasoftwaretocontrolthesystem,makingthesystemmoreflexiblecontrolandconvenience.
Inthispaper,basedonin-depthanalysisofsingle-chiptechnology,analyticaltheLCMdisplaySCMcontroltechnologyandanewtemperaturesensorDS18B20MCUcontrolapplications,andtheLCDdisplayadvantagesinavarietyofelectronicdisplay,atthesametimedailydisplaysystem;andtoProteusandKeiluVision4software-basedwriteatheAT89C51microcontrollerLCM1602displayControlsoftware,drawitsschematicandtheestablishmentofajointsimulationusingtheProteussoftware,KeiluVision4software.Thesisdiscussestheroleofthevariousmodulesoftheschematicdiagram,thecontrolofthevariousmodulesofthesoftwareprogramming.
Inthedesignprocess,themainpurposeistodisplayacalendar,time,temperature,andbeabletoachievetimeadjustmentfunction.Theseriespremisepreparationtothefinalsuccessofthesimulation,theorywithpractice,sothatthedesigncanbeappliedinpractice,andtofacilitateeconomicalandpractical.
[Keywords]thetemperaturesensor、Singlechipmicrocomputer、Perpetualcalendar
一、引言
(一)课题背景及研究概述
随着电子技术的发展,人类不断研究,不断创新纪录。
万年历以电脑软件或者电子产品形式出现,目前已经不再局限于以书本形式。
万这种年历被称为电子万年历。
与书本形式的万年历相比,电子万年历应用越来越广泛,时间显示采用电子时钟已经成为一种时尚。
目前市场上各式各样的电子时钟数不胜数,但多数是只针对时间显示,功能单一不能满足人们日常生活需求。
本文提出了一种基于AT89C51单片机的万年历设计方案,利采用一个LCD显示。
本方案以AT89C51单片机作为主控核心,与时钟芯片DS1302、温度芯片DS18B20、按键、LCD显示等模块组成硬件系统。
在硬件系统中设有4个独立按键和一个LCD显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间、温度显示等,综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
(二)单片机控制系统简介
AT89C51是一个低电压,高性能的单片机,内含可反复擦写的Flash只读程序存储器,在电子行业中有着广泛的应用。
并且,只要在单片机的外围适当加一些必要的扩展电路及通道接口,就可以构成各种应用系统,如工业控制系统、数据采集系统、自动控制系统、自动测试系统、检测监视系统、智能仪表、功能模块等。
因此单片机广泛应用于便携式智能产品与家电消费品,以及工业控制,国防装备等领域。
总之,单片机控制系统具有功能多样、电路简洁、成本低廉、体积小巧等诸多优点,符合电子技术的发展趋势。
(三)课题的建立及论文完成的主要要求
本文主要包括以下内容:
1、单片机最小控制系统、LCM1602液晶显示模块、DS18B20温度传感器模块、DS1302时钟芯片模块和按键模块的建立。
2、编制单片机与各子模块之间的通信程序。
实现对LCM1602液晶显示当前时间及温度,按键调节作用,以及按键提示音的控制。
3、用Proteus绘制整个控制系统原理图,使用Keil编译调试程序。
可替代实际硬件进行仿真。
二、开发工具软件介绍
(一)KeiluVision4软件简介
Keil4系列开发系统兼容单片机,C语言软件。
和汇编相比,C语言在结构性、功能上、可维护性、可读性上有明显的优势,并能产生HEX文件,因而易学易用。
使用过汇编语言,再使用C来开发,体会更加深刻。
在研究大型软件时更能体现C语言的优势。
Keil软件提供功能强大的集成开发调试工具和丰富的库函数,语句生成的汇编代码容易理解。
而且,该软件不但可以进行程序编译,而且还可以通过其内嵌模块模拟51单片机,实现在不需要连接硬件仿真器的条件下,通过数据线连接硬件系统对项目进行实时仿真。
另外,可以与Proteus单片机仿真软件联合实现虚拟硬件仿真。
(二)Proteus软件简介
Proteus嵌入式系统仿真与开发平台是一款可以实现模拟电路、数字电路、PCB设计微控制器系统仿真等功能的EDA软件。
所有的工作先在虚拟环境下进行。
提供数码管、显示屏、LED、开关、键盘等。
避免了传统电子电路设计中方案更换带来的多次购买元器件及制板,在节省设计时间和金钱的同时,提高了设计效率与质量。
Proteus软件可以仿真AT89C51系列单片机,可以直接在电路原理图上进行硬件的模拟仿真,进行程序的调试,并提供进行测试与分析的逻辑分析仪,模拟示波器等模拟仪器及仿真图表。
它是目前最好的仿真单片机及外围器件的工具。
(三)KeiluVision4与Proteus软件联合仿真
Proteus软件与Keil软件之间的联合虚拟仿真,指Keil软件把Proteus软件打开的单片机电路看成一个模拟的硬件电路,使用Keil软件对程序进行编译、调试时连接Proteus软件中的模拟单片机系统,模拟单片机的系统状态和Keil软件对程序调试实时变化。
这样,可实现用Proteus软件与KeiluVision4软件联合虚拟硬件仿真。
Proteus软件与KeiluVision软件的联合仿真在实际的单片机系统开发中被普遍应用。
用Proteus软件与KeiluVision软件联合仿真像实物一样调试,同时在屏幕上可以直观地看到电路输出状态,比较容易读懂并理解所调试的程序,提高学习效率,同时降低了学习所需的硬件成本。
三、系统硬件设计实现
(一)电路设计框图
(如图1)
(二)单片机控制系统
1、单片机系统功能介绍
AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
单片机正常工作时,都需要有一个时钟电路和一个复位电路。
本设计中选择了内部时钟方式和按键电平复位电路,来构成单片机的最小电路。
复位是单片机的初始化操作,单片机在启动运行时,都需要先复位,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。
因而,复位是一个很重要的操作方式。
但单片机本身是不能自动进行复位的,必须配合相应的外部电路来实现。
其主要工作特性是:
◆4k字节可编程Flash存储器
◆八个中断源
◆与MCS-51单片机产品兼容
◆全静态操作:
0Hz~33Hz
◆三级加密程序存储器
◆32个可编程I/O口线
◆全双工UART串行通道
◆低功耗空闲和掉电模式
◆掉电后中断可唤醒
◆看门狗定时器
◆双数据指针
◆1000次擦写周期
◆掉电标识符
◆三个16位定时器/计数器
2、AT89C51引脚说明
AT89C51有40个引脚,如图2所示:
图2AT89C51芯片
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
P1口的第二功能如下:
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR),P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
flash编程和校验时,P3口也接收一些控制信号。
P3口的二功能如下:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
3、单片机最小系统
根据系统设计要求,结合性能分析,通过查阅相关资料及自己的努力思考,把单片机最小系统设计为图3:
图3单片机最小系统
(1)复位电路
按键手动复位是通过使复位端经电阻与VCC接通而实现的。
(2)时钟振荡电路
考虑系统运行速度,采用12MHZ的石英晶振,并使用两个小电容作为微调电容。
(三)主要模块设计实现
1、LCD显示模块
(1)方案选择:
方案一:
采用动态显示方法,动态显示模块的硬件制作简单,段扫描和位扫描各占用一个端口,总需占用单片机24个端口,采用间断扫描法功耗小、硬件成本低及整个硬件系统体积相对减小。
方案二:
采用LCD的方法,具有硬件制作简单可直接与单片机接口,显示内容多,功耗小,成本低等优点,LCM1602可显示32个字符,采用LCD的缺点是亮度不够。
比较以上两种方案:
方案一硬件简单、功耗小;方案二硬件简单,显示内容多,功耗小,成本低等。
本系统设计要求达到功耗小、体积小、成本低,显示信息多等要求,权衡两种方案,选择方案二。
(2)LCM1602的接口信号说明:
如表1:
表1LCM1602的接口信号
编号
引脚符号
功能说明
编号
引脚符号
功能说明
1
VSS
电源地
9
D2
DATAI/O
2
VDD
电源正极
10
D3
DATAI/O
3
VL
液晶显示偏压信号
11
D4
DATAI/O
4
RS
数据/命令选择端
12
D5
DATAI/O
5
R/W
读/写选择端(H/L)
13
D6
DATAI/O
6
E
使能信号
14
D7
DATAI/O
7
D0
DATAI/O
15
BLA
背光正极
8
D1
DATAI/O
16
BLK
背光负极
(3)基本操作时序:
读状态:
RS=L,RW=H,E=H
写指令:
RS=L,RW=L,D0~D7=指令码,E=高脉冲
读数据:
RS=H,RW=H,E=H
写数据:
RS=H,RW=L,D0~D7=数据,E=高脉冲
(4)LCM1602与AT89C51的接口电路:
如图4所示:
图4LCM1602与单片机接口电路
LCD的D0~D7分别接单片机的的P0口,作为数据线,因为P0口内部没有上拉电阻,所以外部另外加上10K的上拉电阻;P2.0—P2.2分别接LCD的RS、RW、E三个控制管脚;RV1用来调节LCD的显示灰度;BLK、BLA为背光的阴极和阳极,接上相应电平即点亮背光灯(图中未画出)。
2、时钟芯片DS1302接口设计模块
(1)方案选择:
方案一:
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是液晶显示不连续,实现的时间误差较大。
方案二:
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM作为数据暂存区,工作电压2.5V~5.5V范围内,功耗电小。
综合考虑制作难度及精度,故采用方案二。
(2)DS1302接口说明:
如表2
表2接口说明
X1,X2
32.768kHz晶振引脚
GND
地线
RST
复位端
I/O
数据输入/输出端口
SCLK
串行时钟端口
VCC1
慢速充电引脚
VCC2
电源引脚
(3)DS1302与AT89C51的接口电路:
如图5所示
DS1302时钟芯片内主要包括控制逻辑电路、振荡器、移位寄存器。
DS1302与单片机系统的数据通信依靠SCLK,RST,I/O,三根线即可完成。
其工作过程可概括为:
首先给系统RST引脚一个高电平1,然后在SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入命令或地址字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。
因此,其与单片机之间的数据传送是非常容易实现的。
图5DS1302设计
DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如图5所示。
DS1302的控制字:
控制字的位7必须置1,若为0则不能对DS1302进行读写数据。
对于位6,若对时间进行读/写时,CK=0,对程序进行读/写时RAM=1。
位1至位5指操作单元的地址。
位0是读/写操作位,进行读操作时,该位为1;进行写操作时,该位为0。
控制字节总是从最低位开始输入/输出的。
DS1302的日历、时间寄存器内容:
“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。
“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。
当“WP”为1时,写保护位防止对任一寄存器的写操作。
3、温度传感器DS18B20设计模块
(1)方案选择
方案一:
采用热敏电阻或AD590,再经AD转换得到数字信号,精度较准,但价格昂贵,电路较复杂。
方案二:
采用数字式温度传感器DS18B20,它能通过单片机直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式,但准确度不高。
综合考虑,采用方案二,用DS18B20温度芯片,采用单总线访问,降低成本、降低制作难度且可节省单片机宝贵的I/O口资源。
(2)DS18B20与AT89C51的接口电路:
如图6所示
图6DS18B20接口电路
该系统中采用数字式温度传感器DS18B20,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,用P2.3与DS18B20的DQ口连接,Vcc接电源,GND接地。
4、按键控制模块
按键及按键提醒接口电路如图7所示
图7按键控制模块
SET键:
按下SET键进入时间校准状态,按一下进入秒调整,两下分调整,依此类推可进行各年月日,时分秒以及星期的校准
UP键:
当SET键按下时,UP进行SET选定项(如:
小时)的加操作;
DOWN键:
当SET键按下时,DOWN进行SET选定项(如:
小时)的减操作;
按键蜂鸣器提示(第一次按动设置键长鸣一响;后面按动设置键或上调键、下调键都是短鸣一响)
(四)完整系统原理图
见附录一。
四、软件设计
整个软件系统采用C语言编程,主要实现以下功能:
1)LCD的驱动
2)时间数据的采集
3)温度的采集
4)按键的识别处理
程序从main()函数开始运行,随后对LCD、DS18B20、DS1302等器件进行初始化操作并对标志位赋初值,随后进入while
(1)循环中运行按键扫描程序。
等待中断产生。
(一)万年历显示程序
1、流程图
如图8
2、源程序代码
参考附录二。
(二)温度转换程序
为方便程序编写,本程序把温度转换子程序编在DS18B20_3.H文件中。
头文件DS18B20_3.H,来源于网网络,十进制温度最后返回到函数ReadTemperature()中,使用时主函数用flag=ReadTemperature()就可将18b2头文件运行返回的函数结果送到变量FLAG中,用于显示。
根据单总线操作协议,首先要对DS18B20进行初始化,而初始化有严格的时序控制,如图9所示,即总线控制器(TX)发出一个复位脉冲(至少480us的低电平),然后释放总线进入接收状态,总线由5.1K上拉电阻上拉为高电平,探测到I/O引脚上的上升沿后,DS18B20等待15us~60us后,然后发出一个存在脉冲(60us~240us的低电平信号)。
1、流程图
如图9.
2、源程序代码
见附录三
(三)按键扫描程序
1、程序结构
按键识别程序结构采用:
if(***)
{
delay(10);//调延时,消抖动
if(***)
{
switch(key1n)
{
case1:
*****;
case2:
*****;
************;
}
2、程序功能
能准确清晰地分析全部的按键情况,具有按键消除抖动功能。
和按键蜂鸣器提示(第一次按动设置键长鸣一响;后面按动设置键或上调键、下调键都是短鸣一响)
按下SET键进入时间调整选项,按一下调整秒,按两下调整分,在日期时间星期之间转换。
按下UP键调整的数据加一。
按下DOWN键,调整的数据减一。
再按下SET键确认并跳到下一个选项。
(四)主程序
1、程序流程图:
如图10
2、源程序代码。
见附录二。
五、仿真
(一)调试联合仿真
模拟系统硬件电路调试比较简单,首先检查电路接线是否正确,然后用检查软件I/O口的定义是否与硬件电路的I/O口连线是否对应。
系统软件调试可以先调试液晶显示程序,再编写定时器中断函数,在液晶上显示出正确的时间,随后调试时间调整函数。
接下来分别进行DS18B20温度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 时钟日历 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)