单片机万年历设计Word文档下载推荐.docx
《单片机万年历设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机万年历设计Word文档下载推荐.docx(42页珍藏版)》请在冰豆网上搜索。
![单片机万年历设计Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-2/1/a2864e67-b539-47c7-905c-99b52729988c/a2864e67-b539-47c7-905c-99b52729988c1.gif)
1.5显示模块选择方案和论证
采用点阵式数码管显示,由八行八列的发光二极管组成的点阵式数码管比较适合显示文字,显示数字显得太浪费,且而在本设计中需要显示的信息较多,需要多块点阵式数码管才能满足要求,造成成本较高,,设计出的作品体积较大,所以也不用此种作为显示。
采用LED数码管动态扫描显示,虽LED数码管显示数字较合适,价格也适中,但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往会有很多障碍,所以不采用LED数码管作为显示。
方案三:
采用LCD液晶显示屏,液晶显示屏的显示功能强大,集成度较高,可显示大量文字,图形信息,显示清晰,多样,与单片机接线简单。
对于多功能电子钟而言,一个1602的液晶屏即可,价格也能接受,虽然需要的接口线较多,会给调试带来一些小麻烦,需要小心仔细。
因此本设计采用LCD1602液晶显示屏作为显示模块。
1.6温度传感器的选择方案与论证
使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,测量传感器上的电压,在将变化的电压模拟信号转换成数字信号,再由处理器换算出相应温度。
此设计方案需用A/D转换电路,增加成本,复杂系统电路,而且热敏电阻的阻值随温度电话的曲线并不是严格线性的,会使测得的温度有较大的误差。
采用数字式温度传感器DS18B20,此传感器为一线总线温度传感器,体积小、经济灵活,仅需要一条数据线与单片机进行数据传输,可以避免A/D模数转换,降低硬件成本,简化系统电路。
另外,DS18B20还具有测量范围广,精度高等优点。
因此,本设计采用DS18B20温度传感器实现温度信息的采集。
1.7电路设计最终方案决定
综上各方案所述,对此次作品的方案选定:
采用AT89S51作为主控制系统;
DS1302提供时钟;
LCD液晶显示屏作为显示;
DS18B20温度传感器作为温度采集系统。
第2章单片机控制系统硬件设计
2.1电路设计框图
本系统的电路系统框图如图2-1所示。
AT89S51单片机对DS1302和DS18B20写入控制字并读取相应的数据,继而控制LCD1602作出对应的显示。
图2-1系统框图
2.2系统概述
本电路是由AT89S51单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作。
时钟电路由DS1302提供,它是一种性能优越、功耗低、内部具有存储实时时钟、日期、星期的RAM和用户可用RAM的实时时钟芯片,采用双电源供电(主电源和备用电源),断电情况下能保证时间继续计时工作。
支持对后背电源进行涓细电流充电,工作电压为2.5V~5.5V,每个月和闰年的天数可自行调整。
DS1302具有体积小,使用寿命长,连接单片机简单,适用电压宽,精度高和功耗低等特点,同时具有掉电自动保存功能;
温度采集使用的“一线器件”DS18B20体积超小,抗感扰能力强,精度高,可靠性高,附加能力强,显示部份由LCD液晶显示屏显示具有微功耗,体积小,显示内容丰富,超薄轻巧。
2.3系统硬件简述
2.3.1AT89S51的引脚说明
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用,它的外形和DPIP封装管脚图如图2-2。
图2-2PDIP封装的AT89S51管脚图
各引脚的功能为:
VCC:
电源电压输入端。
GND:
电源地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口除了作为普通I/O口,还有第二功能:
P3.0:
RXD,串行通信输入。
P3.1:
TXD,串行通信输出。
P3.2:
INT0,外部中断0输入。
P3.3:
INT1,外部中断1输入。
P3.4:
T0,定时计数器0外部计数输入。
P3.5:
T1,定时计数器1外部计数输入。
P3.6:
WR,外部数据存储器的写入信号。
P3.7:
RD,外部数据存储器的读出信号。
P3口同时为闪烁编程和编程校验接收一些控制信号。
作为输入口时I/O口有两种工作方式,即读端口与读引脚。
读端口时实际上是把端口锁存器的内容读入到内部总线,而并不从外部读入数据,经过某种运算或变换后再把数据写回到端口锁存器。
真正地把外部的数据读入到内部总线的是读端脚工作方式。
AT89S51的P0、P1、P2、P3口作为输入输出时都是先将数据存在端口锁存器的准双向口。
RST:
复位输入端,高电平有效。
当振荡器工作时,RST引脚出现两个机器周期以上的高电平将使单片机复位。
ALE/PROG:
地址锁存允许/编程脉冲信号端。
当访问外部存储器时,地址锁存允许的输出脉冲用于所存地址的低8位字节。
在平时即使不访问外部存储器,ALE端以不变的时钟振荡频率的1/6输出正脉冲信号。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当访问外部数据存储器时,将跳过一个ALE脉冲。
另外,该引脚被略微拉高,如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
程序存储允许PSEN输出是外部程序存储器的选通信号,低电平有效。
在由外部程序存储器取指期间,每个机器周期两次PSEN有效,这两次有效的PSEN信号将不会再出现在单片机访问外部数据存储器的时侯。
EA/VPP:
外部访问允许。
欲使CPU访问外部程序存储器(0000H-FFFFH),EA保持低电平(接地),则此时不管单片机内部是否有程序存储器。
需要注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
XTAL1:
片内振荡器反相放大器及内部时钟发生器输入端。
XTAL2:
片内振荡器反相放大器的输出端。
2.3.2DS1302的引脚说明
DS1302是美国DALLAS公司推出的娟流充电实时时钟芯片,具有高性能、低功耗,可靠性好,精度高等优点。
内含有一个实时时钟/日历和31字节静态RAM,采用三线串行接口与单片机进行同步通信。
实时时钟采用双电源供电(主电源和备用电源),可设置备用电源充电方式,支持对后背电源进行涓细电流充电,工作电压宽达2.5~5.5V。
可提供年、月、日、星期、时、分和秒等信息,每个月的天数和闰年的天数可以自行调整,具有闰年补偿功能。
DS1302的外部引脚分配如图2-3所示及内部结构如图2-4所示。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。
图2-3DS1302的外部引脚分配
Vcc1:
主电源;
Vcc2:
备份电源。
当Vcc2<
Vcc1时,由Vcc1向DS1302供电,当Vcc2>
Vcc1+0.2V时,由Vcc2向DS1302供电。
SCLK:
串行时钟输入;
I/O:
三线接口时的双向数据线;
CE:
输入信号,在读、写数据期间,必须为高。
该引脚有两个功能:
第一,
CE打开控制逻辑,允许访问的地址/命令转移寄存器序列。
第二,CE信号提供了一个终止不管是单字节或多个字节的方法
如图2-4,仅需要3条线将DS1302与单片机串行连接:
CE引脚、SCLK串行时钟引脚和I/O串行数据引脚,X1和X2外接32.768kHz时钟晶振,为芯片提供计时脉冲,Vcc1为主电源,Vcc2为备用电源,GND为接地线。
图2-4电路原理图
2.3.3DS18B20的引脚说明
数字化温度传感器DS1820是美国Dallas半导体公司生产的世界上第一片支持“一线总线”接口的温度传感器,整个传感集成元件形如一只三极管。
独特的单线接口,只需要一个接口即可通信,不需要外部元件,可用数据线供电,不需备份电源,经济易操作,使用户可轻松地组建传感器网络,为分布式温度检测的构建引入全新概念。
DS18B20可根据实际需要选择更小的封装方式,更宽的电压适用范围,支持3V~5.5V的电压范围,可以通过程序设定9~12位的分辨率,在寄生电源方式下可由数据线供电。
DS18B20测量温度范围为-55℃~+125℃,在-10~+85℃范围内,精度为±
0.5℃,使系统设计更灵活、方便,本设计采用最常用的直插式封装。
DS18B20引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的外形及管脚排列如下图1:
图2-5DS18B20内部结构图图2-6直插式封装
2.3.4LED1602的引脚说明
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚。
LCD1602的主要技术参数:
显示容量:
16×
2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块工作最佳电压:
5.0V
字符尺寸:
2.95×
4.35(W×
H)mm
本篇论文LCD1602采用的是16脚有背光型,各引脚接口说明如2-1表:
编
号
符
引脚说明
1
VSS
电源接地
9
D2
数据端口
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
5
R/W
读/写操作
13
D6
6
E
使能信号
14
D7
7
D0
15
BLA
背光源正极
8
D1
16
BLK
背光源负极
表2-1引脚接口说明表
第1脚:
VSS为电源地。
第2脚:
VDD接5V电源正。
第3脚:
VL为对比度调整端,接地时对比度最高,接正电源时对比度最弱,一般通过一个10K的电位器调整对比度,避免对比度过高而出现俗称的鬼影。
第4脚:
RS为内部寄存器选择端,为高电平时选择数据寄存器、为低电平时选择指令寄存器。
第5脚:
R/W为读写信号端,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极,为防止直接加5V电压烧坏背光灯,在15脚加一个10Ω电阻用于限流。
第16脚:
背光源负极。
其与单片机的连接如图2-8所示
图2-8LED1602接线图
第3章主要单元电路设计
3.1单片机主控制模块的设计
本设计中单片机主要负责对外设的控制和各个功能模块间的协调,没有复杂的数据计算,因此,8位的51系列单片机足以胜任。
51单片机以其低廉的价格以及较出色的性能成了很多控制系统的首选。
它具有丰富的内部资源,较大的数据、程序存储区。
一个典型的单片机最小系统一般由时钟电路、复位电路、电源指示灯和外部扩展接口等部分组成,本系统也不例外,当单片机具备了这些最基本的条件后,就可以正常工作了。
单片机的最小系统就是能让单片机工作起来的最简单的电路构成,主要由单片机芯片、晶振、复位电路和开关电路组成。
单片机的XTAL1和XTAL2引脚分别连接晶振电路和微调电容的一端。
XTAL1和XTAL2在片内各是振荡器倒相放大器的输入和输出。
RESET端是用来对单片机进行初始化的复位引脚,连接复位电路。
复位电路包括复位电容、复位电阻和复位开关。
GND为接地电源端,VCC为正电源端。
3.1.1复位电路的设计
复位电路是使单片机的CPU或系统中的其他模块恢复到某一确定的初始状态,并从这一初始状态开始重新工作。
通常单片机复位电路有两种:
按键复位电路和上电复位电路。
上电复位电路:
上电复位是单片机以上电时就进行的复位操作,保证单片机上电后立即进入能正常工作的最初状态。
它利用的是电容充电的原理来实现的。
按键复位电路:
它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单。
如果要实现复位的话,只要按下复位开关即可。
它主要是利用电阻的分压来实现的。
复位电路工作原理是接通电源后,上电复位电路工作使单片机自动实现复位操作。
上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。
RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作。
在此设计中采用的是手动按键复位方法中的按键电平复位法,复位电路如图3-1所示。
图3-1复位电路
3.1.2晶振电路的设计
晶振电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。
单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。
通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,如图3-2中Y1、C1、C2。
可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,本设计选用的是12MHz频率的晶振,补偿电容通常选择两片22pF左右的瓷片电容。
图3-2时钟振荡电路
3.2时钟电路模块的设计
第二章的图2-3示出DS1302的引脚排列,其中Vcc2为主电源,Vcc1为后备电源,由两者中的较大者供电。
在主电源关闭的情况下,后备电源会自动启用保持时钟的连续运行。
当Vcc1小于Vcc2-0.2V时,Vcc2给DS1302供电。
当Vcc1大于Vcc2时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768KHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先RST提供终止单字节或多字节数据的传送手段;
其次RST接通控制逻辑,允许地址/命令序列送入移位寄存器。
当P3.7口输出为高电平是,RST为高电平,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,RST才能置高,I/O为双向串行数据输入端。
SCLK一直是输入端。
图3-3DS1302的硬件接线图
时钟芯片DS1302的工作原理:
(1)DS1302的控制字节
DS1302控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1指示操作单元的地址;
最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出
(2)数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
(3)DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。
“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;
当该位为0时,时钟开始运行。
“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。
当“WP”为1时,写保护位防止对任一寄存器的写操作。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;
另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
3.3温度采集模块设计
如图3-4所示。
采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P2.7与DS18B20的I/O口连接加一个上拉电阻,VCC接电源,GND接地。
图3-4DS18B20温度采集
3.4显示电路模块设计
如下图3-5所示,采用LCD1602液晶显示器,单片机P0口作为数据输出口,R/W端是读写控制端口,当R/W口为0时向LCD写入数据或指令,为1时读取LCD中的数据。
本设计中因为不需要读取LCD中的信息,所以R/W口直接接地。
RS端和E端分别接P2.7和P2.6.VCC接5V电源,GND接地。
3号管脚VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
E(或EN)端为使能(enable)端,下降沿使能。
DB0-DB7为双向数据总线,同时最高位DB7也是忙信号检测位。
BLA、BLK分别为显示器背光灯的正、负极。
图3-5LCD1602与单片机连接图
3.5键盘电路模块设计
CPU在一个工作周期内,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;
若有键操作,则进而判断是哪个键,并执行相应的键处理程序。
这种方式为编程扫描方式。
由于单片机在正常应用过程中,可能会经常进行键操作,因而编程控制方式使CPU经常处于工作状态,在进行本次设计中,只涉及到了设置、上调、下调三个功能。
因此采用独立式键盘。
如下图所示:
图3-6按键的设计
3.6闹钟电路模块设计
当闹铃显示“关”时,闹铃不起作用;
当闹铃显示“开”时,设定闹铃时间,闹铃时间只可设定时和分,当前时间不断与设定的闹铃时间比较,不相等时不产生任何现象,一旦相等,P2.0输出一个高电平使三极管导通,从而使扬声器工作,闹铃起作用。
闹铃电路如图3-7所示。
图3-7闹铃电路
第4章系统的软件设计
4.1程序流程框图
图4-1展示了系统在上电运行时,程序开始正常工作的整过流程,整体上确定好程序的运行过程,使程序的编写更加有效率。
图4-1程序运行流程图
图4-2展示了在调节日期时间过程中,整个程序的设计思路,先判断控制键是否有效,若有效则开始时间年调整,通过判断是加