谭扬波专业课设数字万年历.docx
- 文档编号:3867063
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:48
- 大小:296.42KB
谭扬波专业课设数字万年历.docx
《谭扬波专业课设数字万年历.docx》由会员分享,可在线阅读,更多相关《谭扬波专业课设数字万年历.docx(48页珍藏版)》请在冰豆网上搜索。
谭扬波专业课设数字万年历
等级:
湖南工程学院应用技术学院
课程设计
课程名称专业综合
课题名称数字万年历设计
专业电子信息工程
班级1181
学号201113020102
姓名谭扬波
指导教师刘望军
2015年01月02日
湖南工程学院
课程设计任务书
课程名称专业综合
题目数字万年历设计
专业班级电子信息
学生姓名谭扬波
指导老师刘望军
审批
任务书下达日期2014年12月22日
设计完成日期2015年01月02日
设计内容与设计要求
一.设计内容
1、设计一个数字万年历,利用现有的89C51单片机编程实现。
要求显示年、月、日,时间(到分钟即可),农历(阴历);
2、可以采用专门时钟芯片(如DS1302);限于51单片机小系统只有4位显示,可以用按键转换分屏显示。
二.设计要求
1、设计思路清晰,画出设计框图;
2、画出具体原理电路;
3、对电路进行分析计算,确定器件参数;
4、*制作样机需要购买器件必须与指导老师协商,测量、调试步骤;
5、编写设计说明书。
主要设计条件
1、提供89C51单片机小系统;
2、提供直流稳压电源;
3、面包板、导线等。
说明书格式
1)课程设计封面;
2)设计任务书;
3)说明书目录;
4)设计思路,基本原理和框图;
5)电路设计、计算,原理分析;
6)制作、测试,仿真;
7)总结与体会;
8)附录(程序清单);
9)参考文献;
10)电路原理图。
进度安排
第1周:
Mon:
下达设计任务书,介绍课题内容与要求;
Tue~Fri:
查找资料,确定设计方案,设计方案论证;
第2周:
画电路原理图,元器件选择确定,计算分析;
第3周:
程序流程图、程序调试、软件仿真;
书写设计说明书,整理资料,答辩。
参考文献
1、电子工程专辑(
2、中国电子设计网()
3、何立民.MCS-51系列单片机应用系统设计[M].北京:
北京航空航天大学出版社,2003
目录
1、系统概述6
2、系统硬件设计6
2.1单片机控制系统原理6
2.2硬件的设计总框图7
2.3各种功能模块硬件设计及实现7
2.3.1、AT89S52单片机8
2.3.2、DS1302实时时钟芯片11
2.3.3、温度模块15
2.3.4、1602液晶显示器17
3、系统程序设计19
3.1主程序流程图19
3.2中断服务流程图20
3.3程序22
设计总结42
参考文献43
附录44
1、系统概述
本设计主要分为硬件电路设计和软件实现两大部分。
硬件电路设计采用模块设计:
中央处理电路、时钟电路、温度测量电路三大部分;软件采用C语言编程实现,设计采用按功能模块划分,包括:
主程序、显示程序、温度测量程序、时钟程序等。
在中央处理器上我们采用MCS-51单片机,该单片机是集CPU,RAM,ROM,计数和多种接口于一体的微控制器。
自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。
它体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易,广泛应用于智能生产和工业自动化上。
在时间功能上主要依靠实时时钟芯片DS1302来完成大部分功能,DS1302是具有涓细电流充电能力的低功耗实时时钟电路,它以其接口简单、价格低廉、使用方便,被广泛地采用。
它的主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
采用普通32.768kHz晶振。
所以用此款芯片来实现时间功能是完全能满足电路的要求。
温度方面工作由数字式温度传感器DS18B20来完成,这款温度传感器是具有线路简单,体积小,方便易用等特点,温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。
选用这个芯片使电路简化,提高了效率。
本课题通过MCS-5单片机来设计,系统由主控制器AT89S52、时钟电路DS1302.、显示电路、按键电路和复位电路等各部分构成,能实现时钟日历显示功能,能进行时、分、秒、温度的显示。
本文详细介绍了AT89S52单片机的基本原理,分析了AT89S52各个管脚的功能及它在设计电路中的作用。
本文论述了LCD1602液晶屏和时钟芯片DS1302的工作原理及其软件设计过程。
2、系统硬件设计
2.1单片机控制系统原理
采用AT89S52单片机来实现系统的控制。
键盘四个独立按键控制,时钟芯片采用DS1302,温度传感器采用DS18B20。
此系统硬件简洁,将复杂的硬件功能用软件实现,因此系统控制灵活,能很好地满足本题的基本要求和扩展要求。
此方案基本原理框图如图1所示。
比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能完全达到设计要求,故采用第二种方案。
2.2硬件的设计总框图
图1.系统方框图
本次设计的基于单片机控制的电子万年历,其具有年、月、日、星期、时、分、秒的显示功能;具体时间与阴、阳历能够自动关联;可以设置闹铃的功能。
其具体实现过程就是由主控制发送信息给DS1302时钟芯片再由时钟芯片反馈给LCD显示信息。
并且可以在键盘设置模块输入修改时间,设置闹铃等信息,当键盘设置时间、日期时,单片机主控制根据输入信息,通过串口通信此传送给DS1302时钟芯片,DS1302芯片读取当前新信息产生反馈传送给单片机,然后单片机根据控制最后输送显示信息到LCD模块上显示
2.3各种功能模块硬件设计及实现
本设计以单片机AT89S52为控制核心,由实时时钟部分、显示部分、键盘输入部分、温度采集部分等部分组成。
其中实时时钟采用DS1302可实现年月日时分秒等时间信息的采集和闹钟功能。
温度检测模块由DS18B20集成温度传感器对现场环境温度进行实时检测。
键盘采集部分由四个独立按键组成,可实现时间显示、闹钟设置、环境温度测量等功能。
硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现此设计基本功能以外,主要还要考虑如下几个因素:
①系统稳定度;②器件的通用性或易选购性;③软件编程的易实现性;④系统其它功能及性能指标;因此硬件设计至关重要。
现从各功能模块的实现逐个进行分析探讨。
2.3.1、AT89S52单片机
AT89S52是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机片内8Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。
AT89S52单片机可为你提供许多高性价的应用场合,可灵活的应用于各种控制领域。
主要性能参数:
Ø·与MCS-51产品指令系统的全兼容4k字节可重擦写Flash闪速存储器
图2.单片机引脚图
Ø·1000次可擦写周期
Ø·全静态操作:
0Hz-24MHz
Ø·三级加密程序存储器
Ø·128×8字节内部RAM
Ø·32个可编程I/O口线
Ø·2个16位定时/计数器
Ø·5个中断源
Ø·可编程串行UART通道
Ø·低功耗空闲和掉电模式
AT89S52功能特性描述:
AT89S52提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量中断结构,一个全双工串行通信口,
片内震荡器及时钟电路。
同时,AT89S52可降至0Hz的静态逻辑操作,并支持两种软件的可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,窜行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但震荡器停止工作并禁止所有部件工作直到下一个硬件复位。
(1)AT89S52引脚功能说明:
·Vcc:
电源电压
·GND:
地
·P0口:
PO口是一组8位漏极开路行双向I/O口,也既地址/数据总线复用口。
可作为输出口使用时,每位可吸收电流的方式驱动8个TTL逻辑电路,对端口写“1”可作为高阻抗输入输入端用。
在访问外部数据存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,PO口接收指令字节,而在程序校验时,输出指令字节,校验时,要求接上拉电阻。
·P1口:
P1口是一个内部上拉电阻的8位双向I/O口,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输出口。
作输入口时,因为内部存在上拉电阻,某个引脚被外部信号拉低时输出一个电流(I)。
Flash编程和程序校验期间,P1口接收8位地址。
·P2口:
P2口是一个带有内部上拉电阻的8位双向I/O口,P2的输入缓冲极可以驱动(输入或输出电流)4个TTL逻辑门电路。
对端口“1”,通过内部的上拉电阻把端口拉到高电平,此时和作为输出口,作输出口时,因为存在内部上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部存储器或1位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线的内容(也既特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高地址和其他控制信号。
·P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输出端口。
作输出端口时,被外部拉低的P3口将用上拉电阻输出电流。
P3口除可作为一般的I/O口线外,更重要的用途是它的第二功能如表1所示:
表1AT89S52端口:
P3口还接收一些用于Flas闪速存储器编程和程序校验的控制信号
·ALE/
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节,即使不访问外部字节,ALE仍时钟震荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟脉冲或用于定时目的。
要注意的是:
每次访问外部存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还要输入编程脉冲(
)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令可激活。
此外,此引脚会被微弱拉高,单片机执行外部程序时,应该置ALE无效
·RST:
复位输出。
当震荡器工作时,RST引脚出现两个机器周期以上高电平使机器复位。
·
:
程序存入允许(
)输出的是外部程序存储器的读选通信号,当AT89S52由外部程序取指令(或数据)时,每个机器周期两次
有效,既输出两个脉冲。
在此期间,当访问外部数据存储器,这两次有效的
信号不出。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H--FFFFH),EA端必须保持低电平(接地)。
要注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V的编程电压Vpp。
·XTAL1:
震荡器反向放大器及内部时钟的输入端。
·XAAL2:
震荡器反向放大器的输出端。
·时钟震荡器:
AT89S52中有一个构成内部震荡器的高增益
图4.内部震荡电路
由于外部时钟信号是通过一个2分频的触发器后作为内部时钟信号的所以外部时钟的占空比没有特殊要求,但最小高电平持续的时间和最大低电平持续的时间应符合产品技术条件的要求。
表2AT89S52寄存器
寄存器
内容
寄存器
内容
PC
0000H
TMOD
00H
ACC
00H
TCOM
00H
B
00H
TH0
00H
PSW
00H
TLO
00H
SP
07H
TH1
00H0
DPTR
0000H
TH1
00H
P1—P3
0FFH
SCON
00H
IP
xxx00000
SBUF
不定
IE
0xxx00000
PCON
0xxx00000
其中单片机最小系统的电路图如图6所示。
图6.单片机最小系统
2.3.2、DS1302实时时钟芯片
DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。
实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:
复位(RST)、I/O数据线、串行时钟(SCLK)。
时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。
DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。
DS1302的外部引脚功能说明如图8所示:
X1,X2
32.768kHz晶振引脚
GND
地
RST
复位
I/O
数据输入/输出
SCLK
串行时钟
VCC1
电池引脚
VCC2
主电源引脚
图8.DS1302封装图
DS1302的内部结构如图7所示,主要组成部分为:
移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。
虽然数据分成两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作
DS1302含充电电路,可以对作为后备电源的可充电电池充电,并可选择充电使能和串入的二极管数目,以调节电池充电电压。
不过对我们目前而言,最需要熟悉的是和时钟相关部分的功能,对于其它参数请参阅数据手册。
DS1302的工作原理
DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。
数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。
时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。
DS1302的寄存器和控制命令
对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。
日历、时间寄存器及控制字如表3所示:
寄存器名称
7
6
5
4
3
2
1
0
1
RAM/CK
A4
A3
A2
A1
A0
RD/W
秒寄存器
1
0
0
0
0
0
0
分寄存器
1
0
0
0
0
0
1
小时寄存器
1
0
0
0
0
1
0
日寄存器
1
0
0
0
0
1
1
月寄存器
1
0
0
0
1
0
0
星期寄存器
1
0
0
0
1
0
1
年寄存器
1
0
0
0
1
1
0
写保护寄存器
1
0
0
0
1
1
1
慢充电寄存器
1
0
0
1
0
0
0
时钟突发寄存器
1
0
1
1
1
1
1
表3:
日历、时钟寄存器与控制字对照表
最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。
DS1302内部寄存器列表如表4所示:
寄存器名称
命令字
取值范围
各位内容
写
读
7
6
5
4
3
2
1
0
秒寄存器
80H
81H
00-59
CH
10SEC
SEC
分寄存器
82H
83H
00-59
0
10MIN
MIN
小时寄存器
84H
85H
01-12或00-23
12/24
0
A
HR
HR
日期寄存器
86H
87H
01-28,29,30,31
0
0
10DATE
DATE
月份寄存器
88H
89H
01-12
0
0
0
10M
MONTH
周寄存器
8AH
8BH
01-07
0
0
0
0
0
DAY
年份寄存器
8CH
8DH
00-99
10YEAR
YEAR
表4:
DS1302内部寄存器列表
DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COH~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
我们现在已经知道了控制寄存器和RAM的逻辑地址,接着就需要知道如何通过外部接口来访问这些资源。
单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作抑或是写操作。
物理上,DS1302的通讯接口由3个口线组成,即RST,SCLK,I/O。
其中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数据线。
但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且一般数据写入有效是在上升沿,读出有效是在下降沿(DS1302正是如此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样:
平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。
DS1302的命令字结构图
图9DS1302的命令字结构
图10DS1302部分原理图
2.3.3、温度模块
本设计中我在温度模块中采用的是DS18B20温度传感器,DSl8B20是DALLAS公司生产的一线式数字温度传感器。
它将地址线、数据线和控制线合为一根双向串行传输数据的信号线,允许在这根信号线上挂接多个DSl8B20;因此,单片机只需通过一根I/O线就可以与多个DSl8B20通信。
每个芯片内还有一个64位的ROM,其中存有各个器件自身的序列号,作为器件独有的ID号码。
DSl8B20简化了测温器件与计算机的接口电路,使得电路简单,使用更加方便。
DSl8B20的特性如下:
(1)测温范围:
一55至十125℃;
(2)转换精度:
9至12位二进制数(包括符号1位),可编程确定转换精度的位数;
(3)测温分辨率:
9位精度为0.5℃,12位精度为0.0625℃;
(4)转换时间:
9位精度为93.75ms,10位精度为187.5ms,12位精度为750ms;
(5)具有非易失性上、下限报警设定的功能。
图11DS18B20内部结构
图12内部测温电路图
DS18B20的测温原理如图12所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图12中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。
使用DSl8B20时应注意以下事项:
(1)由于DSl8B20的测温分辨力提高到12位,因此它对时序及电特性参数要求较高需严格按照DSl8B20的时序要求进行操作。
(2)DSl8B20作三线制应用时,应将UDD、I/O、GND端焊接牢固;作两线制应用时,应将UDD与GND连在一起焊牢。
若UDD端漏焊或者虚焊,传感器就只能输出十85.0℃的温度数据。
(3)测温电缆线可采用带屏蔽层的4芯双绞线,其中两根线分别接信号线与地线,另两根线依次接UDD和地线,屏蔽层在源端单点接地。
图13DS18B20的电路原理
2.3.4、1602液晶显示器
1602字符型型液晶是一种用5×7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等,最常用的为2行16个字,即我们马上要学习的1602液晶模块。
带背光的液晶模块TC1602EL,TC1602EL采用标准的16脚接口,其引脚功能如下:
第1脚:
VSS为电源地,接GND。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
BLA背光电源正极(+5V)输入引脚。
第16脚:
BLK背光电源负极,接GND。
TC1602液晶模块内带标准字库,内部的字符发生存储器(CGROM)已经存储了192个5×7点阵字符,32个5×10点阵字符。
另外还有字符生成RAM(CGRAM)512字节,供用户自定义字符。
如表5所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
1602液晶模块内部的控制器共有11条控制指令,如表6所示。
它的读写操作、屏幕和光标的操作都是通过指令编程来实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 扬波 专业课 数字 万年历