万年历课设计报告.docx
《万年历课设计报告.docx》由会员分享,可在线阅读,更多相关《万年历课设计报告.docx(14页珍藏版)》请在冰点文库上搜索。
万年历课设计报告
华北水利水电学院
课程设计报告
课程名称:
基于温度定时响铃的电子时钟
姓名:
马俊东
学号:
201017803
班级:
178班
专业:
电子信息工程
日期:
2011-6-30
0.前言
单片机,一个集成在一块芯片上的微型计算机系统,集成了中央处理单元存储器(CPU)、存储器(RAM/ROM)和各种I/O接口目前大部分具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
其主要应用于测试和控制领域,国际上统称为微控制器(MCU)。
其具有集成度高、体积小、可靠性高、控制功能强、低电压,低功耗,便于生产便携式产品的特点,外部有许多供扩展用的三总线及并行、串行输入/输出管脚,很容易构成各种规模的计算机应用系统。
它在外部总线增加了I2C(Inter-IntegratedCircuit)及SPI(SerialPeripheralInterface)等串行总线方式,进一步缩小了体积,简化了结构。
单片机现在已经广泛的应用于在智能仪器仪表、机电一体化、日常生活及家用电器领域、实时过程控制、办公自动化设备、计算机网络和通信领域、商业营销设备航空航天系统和国防军事、尖端武器等领域、应用于汽车电子产品、单片机在医用设备领域。
1.课程设计的目的和要求
1.1课程设计的目的
为了了解89C51单片机的硬件结构,掌握89C51单片机的存储结构、特殊功能寄存器的基本作用,以及复位电路和时钟设计电路。
对其各引脚功能进一步的熟悉,掌握其应用的规范。
AT89C51是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机片内4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。
AT89C51单片机可灵活的应用于各种控制领域。
主要管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,被定义为高阻输入。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,可接收输出4TTL门电流。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接
收,输出4个TTL门电流。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
P3口也可作为AT89C51的一些特殊功能口。
RST:
复位输入。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的/PSEN:
外部程序存储器的选通信号。
/EA:
当/EA保持低电平时,则在此期间外部程序存储器。
XTAL2:
来自反向振荡器的输出。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
1.2课程设计的基本要求
21世纪单片机的应用愈加广泛,深入到各个行业,认真熟练的掌握单片机的设计思路,使我们每个电子专业学生所必须掌握的技能。
本设计为具有温度显示、闹钟功能的电子时钟。
其设计要求基本功能如下:
字符型LCD(1602)显示。
格式为第一行“年月日星期”,第二行“时分秒温度”。
有光标指示来调整时间。
一旦定时时间到则由蜂鸣器发出声响,按下任意键可结束。
按键K1~K4动作如下:
K1设置时间,K2加键,K3加键,K4设置闹铃。
结合温度传感器测量的温度范围为:
-55℃~125℃。
所需要的基本器件:
STC89C52、DS18B20、DS1302、LCD1602、1K排阻、蜂鸣器、按键4个、S8550等
2.总体设计
2.1基本工作原理
LCD1602液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用,本设计所用的LCD1602它是一种用5x7点阵图形来显示字符的液晶显示器。
DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
DS1302可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
2.2基本硬件设计
2.2.1LCD1602的结构和部分指令
LCD(LiquidCrystalDisplay)是液晶显示的缩写。
它是一种被动式的显示器,广泛的应用于仪表和控制系统中。
LCD1602模块中含有8条数据线,3条控制线,3条电源线。
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
指令1:
清显示,指令码01H,光标复位到地址00H位置
指令2:
光标复位,光标返回到地址00H
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电
平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电
平则无效
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显
示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移
动光标
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线。
指令7:
字符发生器RAM地址设置
指令8:
DDRAM地址设置
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据
指令11:
读数据
其具体引脚定义如下:
第1脚:
VSS为地电源
第2脚:
VDD接5V正电源
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一
个10K的电位器调整对比度
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
空脚。
1602的启动与显示,在初始化过程中,起着很重要的作用,时序在编程的过程中显得尤为重要。
读时序操作:
写操作时序:
2.2.2DS18B20的结构与部分指令
独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
测温范围-55℃~+125℃,固有测温分辨率0.5℃。
支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,此时要考虑系统的能力。
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20采用一线通信接口。
因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。
主要首先提供以下功能命令之一:
1)读ROM,2)ROM匹配,3)搜索ROM,4)跳过ROM,5)报警检查。
这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。
若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。
一个控制功能指挥指示DS18B20的演出测温。
测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。
温度报警触发器TH和TL都有一字节EEPROM的数据。
如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。
在片上还载有配置字节以理想的解决温度数字转换。
写TH,TL指令以及配置字节利用一个记忆功能的指令完成。
通过缓存器读寄存器。
所有数据的读,写都是从最低位开始。
DS18B20有4个主要的数据部件:
(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
DS18B20有六条控制命令其指令约定代码操作说明如下:
(1)温度转换44H启动DS18B20进行温度转换;
(2)读暂存器BEH读暂存器9个字节内容;
(3)写暂存器4EH将数据写入暂存器的TH、TL字节;
(4)复制暂存器48H把暂存器的TH、TL字节写到E2RAM中;
(5)B8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节;
(6)读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPU。
DS18B20的初始化:
(1)先将数据线置高电平“1”;
(2)延时(该时间要求的不是很严格,但是尽可能的短一点);
(3)数据线拉到低电平“0”;
(4)延时x微秒(该时间的时间范围可以从480到960微秒);
(5)数据线拉到高电平“1”;
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制);
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒;
(8)将数据线再次拉高到高电平“1”后结束。
2.2.324C02的特点和结构
24c01/24c02是一个1K/2K位串行MOSE2PROM,内部含有128/256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。
CAT24WC01有一个8字节页写缓冲器,24c01/24c02有一个16字节页写缓冲器.该器件通过I2C总线接口进行操作有一个专门的写保护功能。
AT24C02是带有C总线接口的E2PROM存储器,具有掉电记忆的功能,并且可以象普通RAM一样用程序改写。
它的容量是256个字节(00h~0ffh),有A2、A1、A0三位地址,可见C总线上可以连接8片AT24C02,它的寻址字节是1010A2A1A0R/W。
其中A0、A1、A2是芯片地址线,单片使用时接地;SCL是串行移位时钟端;SDA是串行数据或地址端,CPU通过SDA访问芯片;WP是写保护端,接高电平时芯片只能读。
C总线的数据传输协议如下:
(1)、主器件发出开始信号
(2)、主器件发出第一个字节,用来选通相应的从器件。
其中前7位为地址码,第8位为方向位(R/W)。
方向位为“0”表示发送,方向位为“1”表示接受。
(3)、从机产生应答信号,进入下一个传送周期,如果从器件没有给出应答信号,此时主器件产生一个结束信号使得传送结束,传送数据无效。
(4)、接下来主、从器件正式进行数据的传送,这时在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位(传送的时候先送高位,再送低位)。
当一个字节传送完毕时,再发送一个应答位(第9位),如上一条所述,这样每次传送一个字节都需要9个时钟脉冲。
数据的传送过程如下图所示:
EEPROM概述:
EEPROM是一种可用电气方法在线擦除和再编程的只读存储器.它既有RAM在连机操作中可读可改写的特性,又具有非易失性存储ROM在掉电后仍然能够保持所存储的数据的优点.写入的数据在常温下至少可以保持10年。
.
2.2.3DS1302的结构
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。
DS1302的外部引脚分配如图1所示及内部结构如图2所示。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
各引脚的功能为:
Vcc1:
主电源;
Vcc2:
备份电源。
当Vcc2>Vcc1+0.2V时;
由Vcc2向DS1302供电,当Vcc2SCLK:
串行时钟,输入,控制数据的输入与输出;
I/O:
三线接口时的双向数据线;
CE:
输入信号,在读、写数据期间,必须为高。
该引脚有两个功能:
第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。
2.3软件总体设计
2.3.1、存储单元的分配、标志位的定义
首先对按键,各I/O口等进行定义
sbitDQ=P1^0;//ds18b20温度传送数据IO口
sbitds1302_rst=P1^1;//1302复位
sbitds1302_io=P1^2;//数据输入输出
sbitds1302_sclk=P1^3;//串行时钟
sbitalarm_out=P3^6;
sbitlcd1602_rs=P2^0;//1602命令、数据选择
sbitlcd1602_rw=P2^1;//1602写
sbitlcd1602_e=P2^2;//1602使能
sbitset=P2^4;//选择按键
sbitup=P2^5;//加
sbitdown=P2^6;//减
sbitnao=P2^7;
main()
{
lcd1602_init();
ds18b20_init();
ds1302_init();
c02_init();
while
(1)
{
if(done==1)
{
keyjpress();
}
if(done==0)
{
xianshi();//取得并显示日历和时间
key_set_alarm();
alarm_ring();
}
}
}
硬件原理框图: