基于单片机带温度显示的电子万年历设计1王超资料Word下载.docx
《基于单片机带温度显示的电子万年历设计1王超资料Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机带温度显示的电子万年历设计1王超资料Word下载.docx(90页珍藏版)》请在冰豆网上搜索。
方案二:
采用AT89S52,片内ROM全都采用FlashROM;
能以3V的超底压工作;
同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
综上所述,选择采用AT89S52作为主控制系统更适合设计。
AT89S52单片机是一种低功耗高性能的CMOS8位微控制器,内置8KB可在线编程闪存。
该器件采用Atmel公司的高密度非易失性存储技术生产,其指令与工业标准的80C51指令集兼容。
片内程序存储器允许重复在线编程,允许程序存储器在系统内通过SPI串行口改写或用同用的非易失性存储器改写。
通过把通用的8位CPU与可在线下载的Flash集成在一个芯片上,AT89S52便成为一个高效的微型计算机。
它的应用范围广,可用于解决复杂的控制问题,且成本较低。
AT89S52的主要特性如下:
1、兼容MCS51产品
2、8K字节可擦写1000次的在线可编程ISP闪存
3、4.0V到5.5V的工作电源范围
4、全静态工作:
0Hz~24MHz
5、3级程序存储器加密
6、256字节内部RAM
7、32条可编程I/O线
8、3个16位定时器/计数器
9、8个中断源
10、UART串行通道
11、低功耗空闲方式和掉电方式
12、通过中断终止掉电方式
13、看门狗定时器
14、双数据指针
15、灵活的在线编程(字节和页模式)
1.2显示模块选择方案
方案一:
采用LED数码管动态扫描,虽然LED数码管价格适中,对于显示数字也比较合适,然而需要显示多位数字和字母时,编程就会变得很复杂,而且占用的单片机口线多。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.
方案三:
采用LCD液晶显示屏,LCD液晶显示屏尽管价格比较贵,但它的显示功能强大,可显示大量字符,显示多样,清晰可见,,需要的接口线少。
所以综合考虑,采用方案三的LCD液晶显示屏作为显示更适合本设计。
1.3时钟芯片的选择方案
直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA.
综上所述,为显示时间更准确,实现功能更多,本设计采用DS1302时钟芯片提供时钟。
1.4温度传感器的选择方案
使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。
。
此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。
采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。
另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
为提高测量精度,降低成本,所以本设计采用数字式温度传感器DS18B20测量温度。
1.5电路设计最终方案
综上各方案所述,对此次作品的方案选定:
采用AT89S52作为主控制系统;
DS1302提供时钟;
数字式温度传感器;
LCD液晶显示屏作为显示模块。
2系统设计说明
2.1硬件模块图
系统的硬件模块图如图2.1所示。
DS1302时钟模块
(89S52)
主控模块
键盘输入电路
显示电路
峰鸣器
闹铃模块
DS18B20温度模块
图2.1系统硬件模块图
模块说明:
1、DS1302时钟模块可以输出其当前日期、时间及星期
2、键盘输入电路可以调整日期,时间及公农历的转换
3、DS18B20温度模块可以测量当前室内的温度
4、峰鸣器闹铃模块可以做整点报时
5、显示电路则显示当前的系统运行情况
2.2系统原理
本系统是由AT89C51单片机为控制核心;
时钟电路由DS1302提供,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能;
温度的采集由DS18B20构成;
LCD1602用来显示数据;
键盘输入电路可以调整日期,时间及公农历的转换。
通过用C语言[1]编程,从DS1302寄存器中读取年、月、日、周日、时、分、秒等数据信息;
从DS18B20寄存器中读取温度信息,再编程将以上信息送到LCD1602显示出来。
同时,通过键扫描,编程实现调整日期,时间及公农历的转换。
2.3系统的软件流程图
系统的软件流程图如图2.2所示。
开始
初始化
读、写日期、时间和温度
分离日期\时间\温度显示值
键扫描子程序
显示子程序
闹铃子程序
结束
图2.2软件流程图
3系统单元模块设计
3.1主控模块(AT89S52模块)
目前,在我国比较流行的就是美国ATMEL公司的89C51它是一种带FlashROM的单片机,事实上,89C51目前正在用89S52代替。
本系统就是以AT89S52作为主控芯片。
图3.1AT89S52封装图
AT89S52采用40Pin封装的双列直接DIP结构,图4.1是它的封装图,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:
1、Pin20:
接地脚。
2、Pin40:
正电源脚,正常工作或对片内EPROM烧写程序时,接+5V电源。
3、Pin19:
时钟XTAL1脚,片内振荡电路的输入端。
4、Pin18:
时钟XTAL2脚,片内振荡电路的输出端。
时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(2-12MHz)和振荡电容,振荡电容的值一般取10p-30p。
另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。
输入输出(I/O)引脚:
Pin32-Pin39为P0.0-P0.7输入输出脚,Pin1-Pin8为P1.0-P1.7输入输出脚,Pin21-Pin28为P2.0-P2.7输入输出脚,Pin10-Pin17为P3.0-P3.7输入输出脚,这些输入输出脚的功能阐述如下:
P0口(32脚~39脚):
是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个TTL负载。
P1口(1脚~8脚):
是8位准双向I/O口。
由于这种借口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。
P1口能驱动(吸收或输出电流)4个TTL负载。
P2口(21脚~28脚):
访问外部存储器时,它可以作为高8位地址总线送出高8位地址。
P2可以驱动(吸收或输出电流)4个TTL负载。
P3口(10脚~17脚):
是8位准双向I/O口,P3口能驱动(吸收或输出电流)4个TTL负载。
P3口除了作为一般的准双向通用I/O口使用外,每个引脚还有第二功能。
P3口的8条线都定义有第二功能[6],如表4.1所列。
表3.1P3口的第二功能表
引脚
第二功能
P3.0
RXD(串行口输入端)
P3.1
TXD(串行口输出端)
P3.2
INT0(外部中断0请求输入端,低电平有效)
P3.3
INT1(外部中断0请求输入端,低电平有效)
P3.4
T0(定时器/计数器0的技数脉冲输入端)
P3.5
T1(定时器/计数器0的技数脉冲输入端)
P3.6
WR(片外数据存储器写选通信号输出端,低电平有效)
P3.7
RD(片外数据存储器写选通信号输出端,低电平有效)
Pin9:
RESET/Vpd复位信号复用脚,当单片机通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指钟写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,单片机复位后的状态如下:
P0~P3=FFH,各口可用于输出,也可用于输入;
SP=07H,第一个入栈内容将写入08H单元;
IP、IE和PCON的有效位为0,各中断源处于低优先级且均被关断,串行通讯的波特率不加倍;
PSW=00H,当前工作寄存器为0组。
Pin30:
ALE/PROG当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。
而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。
更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。
如果单片机是EPROM,在编程其间,PROG将用于输入编程脉冲。
Pin29:
PESN当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
Pin31:
EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。
如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
显然,对内部无程序存储器的8031,EA端必须接地。
3.2DS1302时钟模块
3.2.1DS1302简介
DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM。
通过简单的串行接口与单片机进行通信,实时时钟/日历电路提供秒分时日月年的信息,每月的天数和闰年的天数可自动调整。
时钟操作可通过AM/PM指示决定采用24或12小时格式。
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线。
1.RES复位,2.I/O数据线,3.SCLK串行时钟。
时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。
DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。
DS1302是由DS1202改进而来,增加了以下特性:
双电源管脚用于主电源和备份电源供应,Vcc1为可编程涓流充电电源,附加七个字节存储器,备份电源可由大容量电容(1F)替代。
它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域。
主要性能如下:
1、时钟具有能计算2100年之前的秒,分,时,日,星期,月,年的能力,还有闰年调整的能力。
2、31*8位暂存数据存储RAM
3、串行I/O口方式使得管脚数量最少
4、宽范围工作电压:
2.0V~5.5V
5、工作电流:
2.0V时,小于300nA
6、读/写时钟或RAM时,有两种传送方式:
单字节传送和多字节传送(字符组方式)
7、8脚DIP封装或可选的8脚SOIC封装
8、简单的3线串行I/O接口
9、与TTL/COMS兼容(VCC=5V时)
10、可选工业级温度范围:
-40oC~+85oC
3.2.2DS1302结构与工作原理
3.2.2.1引脚及功能表
1、DS1302的脚功能如表3.2所示,引脚如图3.2所示
引脚号
引脚名称
功能
1
Vcc2
主电源引脚
2,3
X1,X2
振荡源,外接32.768KHz晶振
4
RST
接地
5
GND
复位/片选端
6
I/O
串行数据输入/输出端(双向)
7
SCLK
串行时钟输入端
8
Vcc1
备用电源
表3.2引脚功能
图3.2DS1302的引脚图
3.2.2.2工作原理
串行时钟芯片主要由寄存器、控制寄存器、振荡器、实时时钟以及RAM组成。
为了对任何数据传送进行初始化,需要将RST置为高电平且将具有地址和控制信息的8位数据(控制字节)装入移位寄存器。
数据在SCLK的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输入数据。
时钟脉冲的个数在单字节方式下为8加8(8位地址加8位数据),在多字节突发模式方式下为8加最多可达248的数据。
3.2.3控制命令字节与寄存器
1、控制命令字节
控制命令字节的格式如表3.3
表3.3控制命令字节的格式表
D7
D6
D5
D4
D3
D2
D1
D0
RAM/CK
A4
A3
A2
A1
A0
RD/W
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中;
位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1指示操作单元的地址;
最低有效位(位0)为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
2、寄存器
(1)历、时钟寄存器
DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据为BCD码形式。
其日历、时间寄存器及其控制字如表3.5所示。
寄存器的选择由命令字而定,日历,时钟各个寄存器与控制字对照表如表3.4所示。
最后一位RD/W为0表示要进行写操作,为1表示进行读操作。
表3.5为主要寄存器命令字、取值范围以及各位内容对照表。
表3.4日历、时钟寄存器与控制字对照表
寄存器名称
D7
D6
D5
D2
RD/W
秒寄存器
分寄存器
小时寄存器
日寄存器
月寄存器
星期寄存器
年寄存器
写保护寄存器
慢充电寄存器
时钟突发寄存器
表3.5DS1302的日历、时钟寄存器表
命令字
取值范围
各位内容
写操作
读操作
3~0
80H
81H
00~59
CH
10SEC
SEC
82H
83H
10MIN
MIN
84H
85H
01~12或00~23
12/24
10
A/P
HR
86H
87H
01~28,29,30,31
10DATE
DATE
88H
89H
01~12
10M
MONTH
8AH
8BH
01~07
DAY
8CH
8DH
01~09
10YEAR
YEAR
写保护
寄存器
8EH
8FH
WP
慢充电
90H
91H
TCS
DS
RS
时钟突发
BEH
BFH
特殊位的说明:
CH:
时钟暂停位。
当此位设置为1时,振荡器停止,DS1302处于低功耗空闲状态,这时芯片消耗电流将小于100NA;
当此位为0时,振荡器启动,时钟开始启动。
12/24:
12或24小时方式选择位。
为1时选择12小时方式,在12小时方式下,位5是AM/PM选择位,此位为1时表示PM。
为0时选择24小时方式,在24小时方式下,位5是第2个小时位(20~23时)。
WP:
写保护位。
写保护寄存器的开始7位(0~6)置为0,在读操作时总是读出0。
在对时钟或RAM进行写操作之前,位7(WP)必须为0,当它为高电平时,写保护位防止对任何其他寄存器进行写操作。
TCS:
控制慢充电的选择,为了防止偶然因素使DS1302工作,只有1010模式才能使慢速充电。
DS:
二极管选择位。
如果DS为01,那么选择一个二极管;
如果DS为10,则选择两个二极管;
如果DS为11或00,那么充电器被禁止,与TCS无关。
RS:
选择连接在VCC2与VCC1之间的电阻,如果RS为00,那么充电器被禁止,与TCS无