基于AT89C51多功能电子万年历的设计Word格式文档下载.docx
- 文档编号:18606868
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:49
- 大小:362.47KB
基于AT89C51多功能电子万年历的设计Word格式文档下载.docx
《基于AT89C51多功能电子万年历的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于AT89C51多功能电子万年历的设计Word格式文档下载.docx(49页珍藏版)》请在冰豆网上搜索。
综合考虑以上种种因素,由于考虑到产品的成本,在同样能完成我们所要求的功能时,自然会选择相对便宜的AT89C51,这样更容易把产品推向市场。
但是在实验室的的调试中,我们依然可以用AT89S51,这样就方便了我们的硬件调试,同样降低了开发产品的成本。
1.2显示模块的选择
常见的文字、图像显示屏主要有LED(LightEmittingDiode)显示屏,LCD(LiquidCrystalDisplay),LED点阵数码管显示。
LED显示器与LCD显示器相比,LED在亮度、功耗、可视角度和刷新速率等方面,都更具优势。
LED与LCD的功耗比大约为10:
1,而且更高的刷新速率使得LED在视频方面有更好的性能表现,能提供宽达160°
的视角,可以显示各种文字、数字、彩色图像及动画信息,也可以播放电视、录像、VCD、DVD等彩色视频信号,多幅显示屏还可以进行联网播出。
但是考虑到LED的价格比LCD贵的多,一般应用在对成本不是很敏感的产品上的。
对于LED点阵数码管显示,一般体积较大,适合用于机场,广场等大型屏幕显示,显然不符合袖珍型的电子万年历室内产品。
LCD占用空间小,低功耗,低辐射,无闪烁,降低视觉疲劳。
综合考虑,基于时代的潮流,在人们能普遍接受的价格内,我们优先考虑用LCD,这样既满足了人们的审美观,也符合世界潮流的发展,是一项新产品成功推向市场的必要条件。
1.3时钟芯片的选择
可以直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,而且精度不是很高。
因此选用专用的DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。
1.4电路设计最终方案
综上各方案所述,对此次作品的方案选定:
采用AT89C51作为主控制系统;
DS1302提供时钟;
LCD液晶显示器作为显示,DS18B20用来采集温度信息,ADC0832用来实现模拟和数字信号的转换。
2系统的硬件电路设计和实现
2.1电路设计框图
AT89C51主控
DS18B20模块
DS1302模块
LCD模块
DAC0832模块
图1原理框图
2.2系统硬件概述
本电路是由AT89C52单片机为控制核心,具有可编程功能,低功耗,能在3V超低压工作;
时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒、星期进行计时,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、时、分、秒、星期等时钟所需数据,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;
显示部份由LCD液晶显示屏显示。
2.3主要单元电路的设计
2.3.1单片机主控制模块的设计
AT895C1单片机为40引脚双列直插芯片,有四个8位I/O口,分别P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。
单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。
第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。
如图2所示:
图2主控制系统
2.3.2时钟电路模块的设计
低功耗时钟芯片DS1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。
这种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义。
采用DS1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中。
在测量控制系统中,特别是长时间无人职守的测控系统中,经常需要记录些具有特殊意义的数据及其出现的时间。
记录及分析这些特殊意义的数据,对测控系统的性能分析及正常运行具有重要的意义。
传统的数据记录方式是隔时采样或定时样,没有具体的时间记录,因此只能记录数据而无法准确记录其出现的时间;
若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许。
而在系统中采用DS1302则能很好地解决这个问题。
(1)DS1302的性能特性
·
实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;
用于高速数据暂存的31×
8位RAM;
最少引脚的串行I/O;
2.5~5.5V电压工作范围;
2.5V时耗电小于300nA;
用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;
简单的3线接口;
可选的慢速充电(至VCC1)的能力。
DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。
它经过一个简单的串行接口与微处理器通信。
实时时钟/日历提供秒、分、时、日、周、月和年等信息。
对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。
时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302有主电源/后备电源双电源引脚:
VCC1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;
VCC2在双电源系统中提供主电源,在这种运用方式中,VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。
DS1302由VCC1或VCC2中较大者供电。
当VCC2大于VCC1+0.2V时,VCC2给DS1302供电;
当VCC2小于VCC1时,DS1302由VCC1供电。
(2)DS1302数据操作原理
DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。
无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。
在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。
时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。
Vcc2Vcc1
X1SCLKX2I/OGNDRST
2
7
3
6
4
5
U3DS1302
18
图4-3DS1302管脚图
如果在传送过程中置RST为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。
上电运行时,在VCC>
=2.5V之前,RST脚必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
DS1302的管脚图如图4-3所示,内部结构图如图4-4所示,表4-2为各引脚的功能。
DS1302的控制字如图4-5所示。
控制字节的最高有效位(位7)必须是逻辑1;
如果它为逻辑0,则不能把数据写入到DS1302中。
位6如果为0,则表示存取日历时钟数据;
为1表示存取RAM数据。
位5~1(A4~A0)指示操作单元的地址。
最低有效位(位0)如为0,表示要进行写操作;
为1表示进行读操作。
控制字节总是从最低位开始输入/输出.
为了提高对32个地址的寻址能力(地址/命令位1~5=逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。
位6规定时钟或RAM,而位0规定读或写。
在时钟/日历寄存器中的地址9~31或RAM寄存器中的地址31不能存储数据。
在多字节方式中,读或写从地址0的位0开始。
必须按数据传送的次序写最先的8
个寄存器。
但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节。
不管是否写了全部31字节,所写的每一字节都将传送至RAM。
数据读写程序如图4-6所示。
DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表4-3,其中奇数为读操作,偶数为写操作。
时钟暂停:
秒寄存器的位7定义位时钟暂停位。
当它为1时,DS1302停止振荡,进入低功耗的备份方式。
通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。
当它为0时,时钟将开始启动。
AM-PM/12-24[小]时方式:
[小]时寄存器的位7定义为12或24[小]时方式选择位。
它为高电平时,选择12[小]时方式。
在此方式下,位5是AM/PM位,此位是高电平时表示PM,低电平表示AM,在24[小]时方式下,位5为第二个10[小]时位(20~23h)。
(3)DS1302的应用
实时时钟芯片DS1302采用串行数据传输,可为掉电保护电源提供可编程的充电功能,也可以关闭充电功能,芯片采用32768Hz晶振。
要特别说明的是,备用电源BT1可以用电池或超级电容(10万μF以上)。
虽然DS1302在主电源掉电后耗电很小,但如果要长时间保证时钟正常,最好选用小型充电电池。
如果断电时间较短(几小时或几天),可以用漏电较小的普通电解电容代替(100μF就可以保证1小时的正常走时)。
DS1302在第一次加电后,需进行初始化操作。
初始化后就可以按正常方法调整时间。
DS1302的时钟电路如图4-7所示。
2.3.3显示模块的设计
AMPIRE12864点阵式LCD是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×
64全点阵液晶显示器组成。
可完成图形显示,也可以显示8×
4个(16×
16点阵)汉字。
各管脚功能说明如表3。
(1)数据寄存器(DR):
DR是用于寄存数据的,与指令寄存器寄存指令相对应。
当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。
DR和DDRAM之间的数据传输是模块内部自动执行的。
(2)忙标志BF:
BF标志提供内部工作情况。
BF=1表示模块在内部操作,此时模块不接受外部指令和数据。
BF=0时,模块为准备状态,随时可接受外部指令和数据。
利用STATUSREAD指令,可以将BF读到DB7总线,从检验模块之工作状态。
表3管脚功能说明
管脚号
管脚名称
LEVER
管脚功能描述
1
VSS
0
电源地
2
VDD
+5.0V
电源电压
3
VO
-
液晶显示器驱动电源
4
D/I(RS)
1/0
D/I=1,表示DB7∽DB为显示数据D/I=0,表示DB7∽DB0为显示指令数据
5
R/W
R/W=1,E=1,数据被读到DB7∽DB0
R/W=0,E=1→0,数据被写到IR或DR
E
1/0
R/W=0,E信号下降沿锁存DB7∽DB0
R/W=1,E=1DDRAM数据读到DB7∽DB0
DB0
数据线
8
DB1
数据线
9
DB2
10
DB3
11
DB4
12
DB5
13
DB6
14
DB7
15
CS1
H:
选择芯片(右半屏)信号
16
CS2
H:
选择芯片(左半屏)信号
17
RET
复位信号,低电平复位
18
VOUT
-10V
LCD驱动负电压
19
LED+
LED背光板电源
20
LED-
-
(3)显示控制触发器DFF:
此触发器是用于模块屏幕显示开和关的控制。
DFF=1为开显示(DISPLAYOFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFF)。
DDF的状态是指令DISPLAYON/OFF和RST信号控制的。
(4)XY地址计数器:
XY地址计数器是一个9位计数器。
高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。
X地址计数器是没有记数功能的,只能用指令设置。
Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。
(5)Z地址计数器:
Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。
当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。
Z地址计数器可以用指令DISPLAYSTARTLINE预置。
因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。
此模块的DDRAM共64行,屏幕可以循环滚动显示64行。
(6)12864LCD的指令系统及时序:
该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。
其指令表如表4所示:
表412864LCD系统指令表
指令名称
R/W
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
显示开关
显行设置
X
显页设置
列地址设置
读状态
BUSY
OF/OF
写数据
数据
读数据
例如设置页指令:
只需令R/W=0,RS=0,指令寄存器RI=10111XXX,后三位表示页码,范围是0~7,指令格式如表5:
假如令页码page=5,则
表5设置页码=5的指令
R/WRS
DB7DB6DB5DB4DB3DB2DB1DB0
00
10111101
2.3.4温度采集模块设计
如图6所示。
采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。
图6DS18B20温度采集
DS18B20原理简介
(1)各引脚定义:
I/O为数字信号输入/输出端;
GND为电源地;
VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
(2)配置寄存器的8位从高到低依次为:
TMR1R011111,在这8位中低五位一直都是"
1"
,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表所示:
(DS18B20出厂时被设置为12位)。
(3)高速暂存器:
高速暂存存储器由9个字节组成,其分配如表-6所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;
当S=1时,先将补码变为原码,再计算十进制值。
第九个字节是冗余检验字节。
表6高速暂存器地址分布
字节地址
8
寄存器
内容
温度低位
温度
高位
高温
限值
低温
配置寄存器
保留
CRC校检位
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
(4)ROM指令介绍:
主要有5条指令,如下表7所示:
表7ROM指令表
指令
约定代码
功能
读ROM
33H
读DS1820的ROM中的编码(即64位地址)
符合ROM
55H
发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。
搜索ROM
0F0H
用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。
为操作各器件作好准备。
跳过ROM
0CCH
忽略64位ROM地址,直接向DS1820发温度变换命令。
适用于单片工作。
警告搜索命令
0ECH
执行后只有温度超过设定值上限或下限的片子才做出响应。
(5)RAM指令:
主要有4条指令,涉及到温度的转换到存储的一个简单过程。
表8RAM指令表
温度变换
44H
启动DS1820温度转换,结果存入9字节RAM中。
读暂存器
0BEH
读内部RAM中9字节的内容。
写暂存器
4EH
发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。
复制暂存器
48H
将RAM中第3、4字节的内容复制到EEPROM中。
重调EEPRM
0B8H
将EEPROM中内容恢复到RAM中的第3、4字节。
读供电方式
0B4H
寄生供电DS1820发送“0”,外接电源供电DS1820发送“1”。
2.3.5数据保护模块设计
正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。
但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。
当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。
其中的数据保护电路如图7所示。
图7ADC0832工作原理简介
当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。
在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。
在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能。
如资料所示,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。
当2位数据为“1”、“1”时,只对CH1进行单通道转换。
当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。
当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。
到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。
从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。
直到第11个脉冲时发出最低位数据DATA0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 多功能 电子 万年历 设计