找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11651|回复: 3
收起左侧

单片机万年历课程设计报告

[复制链接]
ID:392172 发表于 2018-8-31 23:52 | 显示全部楼层 |阅读模式
目 录

一、摘要2
二、设计任务.4
三、总体方案设计与论证4
     1、液晶显示模块4
     2、实时时间计算模块5
     3、实时环境温度采集模块5
4、报警模块6
5、设置模块6
四、总体方案组成框图7
五、系统硬件设计8
1、LCD显示模块8
2、实时时间计算模块12
3、实时环境温度检测模块16
4、报警模块21
5、设置模块22
六、系统软件设计23
七、系统硬件电路设计24
八、系统硬件PROTEUS仿真原理图25
九、系统硬件仿真运行情况图26
              1、显示欢迎界面26
              2、显示实时时间26
              3、显示当前温度27
              4、时间设置27
              5、最高报警温度设置28
              6、闹钟时间设置28
              7、超温29
              8、闹钟时间到29
附录一:实物图30
附录二:PCB图32
附录三:源程序代码33
附录四:参考文献62



摘   要
单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。本设计就是应用单片机强大的控制功能制作而成的电子万年历,该电子万年历包括三大功能:实时显示年、月、日、时、分、秒;实时监测环境温度(可根据需要启动高温报警功能);电子闹钟。M bn
本设计采用的是AT89S52单片机,该单片机采用的MCU51内核,因此具有很好的兼容性,内部带有8KB的ROM,能够存储大量的程序,最突出特点是具有ISP在系统烧写功能,使得烧写程序更加方便。
计时芯片采用DALLAS公司的涓细充电时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时分、秒信息,采用双电源供电,当外部电源掉电时能够利用后备电池准确计时。
温度检测采用DALLAS公司的数字化温度传感器,该芯片采用的是独特的“一线总线”的方式与单片机进行通信,一线总线独特而且经济的特点,是用户可以轻松的组建传感器网络,为测量系统的构建引入全新的概念。实时温度采用一线总线的方式传输大大的提高了信号的抗干扰性,分辨率可通过软件设置,其小巧的体积为各种环境下测量温度提供了方便。
显示器件采用通用型1602液晶,可显示32个字符,如果使用数码管来做显示器件需消耗大量的系统资源,因此采用低功耗的1602液晶,该液晶显示方便,功能强大,完全能满足数字万年历的显示要求。
    通过此次设计能够更加牢固的掌握单片机的应用技术,增强动手能力、硬件设计能力以及软件设计能力。

设计任务
1、设计任务:利用单片机、时钟芯片DS1302、温度传感器DS18B20、1602液晶等实现日期、时间、温度的显示即一个简单的万年历。
2、设计要求
1通过DS1302能够准确的计时,时间可调并在液晶上显示出来。
2通过DS18B20能够实时、准确的检测当前环境温度。
3利用单片机自身功能实现闹钟。



总体方案论证与设计
本系统以AT89S52单片机为控制核心,通过与DS1302和DS18B20通信获取实时时间和实时环境温度,并将得到的数据通过1602液晶显示出来,同时通过相应的按键调整相应的值。因此本设计可分为一下模块:显示模块、实时时间计算模块、实时环境温度采集模块、报警模块、设置模块(时间设置模块、最高温度设置模块、闹钟设置模块)。下面对各个模块逐一进行论证分析:
  • 液晶显示模块
方案(1):数码管是利用发光二极管的特性组合而成数字显示器件,通过控制相应的二极管的状态显示相应的数字。要使数码管正常显示就得有驱动电路驱动相应的段码,数码管的现实方式可分为静态显示和动态显示,静态显示方式只适合显示单个的数字,因此本设计应采用动态显示方式。由于动态显示方式利用的是人眼视觉暂留的特性,扫描的时间应不大于20毫秒,占用系统资源大,而且显示的个数和字型有限,在本设计中不易采用。
方案(2):1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用。1602的驱动电路带有11条指令,可以很方便的控制液晶的现实效果如:清屏、左移右移、光标显示。而且1602显示的字符在下一条指令为到来之前不会改变,也就是能够维持显示的字符,1602液晶占用的系统资源也少。
综合比较上述两种方案,应采用1602液晶组成本设计的显示模块。
  • 实时时间计算模块
方案(1):AT89S52单片机内部带有定时/计数功能,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能,只要使用11.0592的晶振就能实现零误差的计时,因此可以利用此功能实现计时,但因为只有单一的计时功能要实现“万年历”的功能需要较复杂的程序,而且如果单片机掉电无法继续进行计时,所以使用不便。
方案(2):DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力利用单片机强大的控制功能就可实现实时计时的功能,而且消耗的系统资源少,程序简单。
综合上述两种方案,宜采用方案(2)实现实时计时功能。
3实时环境温度采集模块
方案(1):热敏电阻是开发早、种类多、发展较成熟的敏感元器件.热敏电阻由半导体陶瓷材料组成,利用的原理是温度引起电阻变化.
通过一定的电路可以将周围环境的温度变化转化成电压的变化,通过AD转化器件将信号传输给单片机进行分析,从而测出当前环境温度,但误差大,不稳定,对环境要求较高。
方案(2):DS18B20是美国DALLAS公司生产的数字温度传感器,采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念测量温度范围宽,测量精度高 ,在使用中不需要任何外围元件,支持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温,供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。因此非常适合本系统使用。
综上比较上述两种方案,宜采用方案(2)构成本设计的实时温度采集模块。
4、报警模块
此模块采用无源蜂鸣器实现,只要编写相应的程序即可实现发出不同频率的声音。

5、设置模块
因设置模块只需编写相应的程序外加相应的按键即可实现,实现方法较简单,在此不再论述。

总体方案组成框图




















系统硬件设计
1LCD显示模块设计
11602液晶功耗较小可直接与单片机接口相接,电源直接与电源电路相接,使用单片机的P0口和P1口与1602进行通信。
21602相应功能特性介绍
  • +5V电压,对比度可调
  • 内含复位电路
  • 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能
  • 80字节显示数据存储器DDRAM
  • 内建有1605X7点阵的字型的字符发生器CGROM
  • 8个可由用户自定义的5X7的字符发生器CGRAM
31602引脚介绍
41602液晶11条指令介绍
1.清屏指令
功能:<1> 清除液晶显示器,即将DDRAM的内容全部填入“空白”的字符码20H;
<2> 光标归位,即将光标撤回液晶显示屏的左上方;
<3>将地址计数器(AC)的值设为0;
2.光标归位指令
功能:<1> 把光标撤回到显示器的左上方;
<2> 把地址计数器(AC)的值设置为0;
<3> 保持DDRAM的内容不变 ;
3.输入模式设置指令
功能:设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否
移动。
参数设定的情况如下所示:
位名              设置
I/D            0=写入新数据后光标左移            1=写入新数据后光标右移
S                0=写入新数据后显示屏不移动    1=写入新数据后显示屏整体右移1个字

4.显示开关控制指令

功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下:
位名              设置
D                0=显示功能关           1=显示功能开
C                0=无光标                   1=有光标
B                0=光标不闪烁               1=光标闪烁
5.设定显示屏或光标移动方向指令
功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下:
S/C              R/L                设定情况
0                 0          光标左移1格,且AC值减1
0                 1          光标右移1格,且AC值加1
1                 0          显示器上字符全部左移一格,但光标不动
1                 1          显示器上字符全部右移一格,但光标不动

6.功能设定指令(非常重要的指令)
功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下:
位名                                          设置
DL                             0=数据总线为4位     1=数据总线为8位
N                               0=显示1行                  1=显示2行
F                                0=5×7点阵/每字符  1=5×10点阵/每字符

7.设定CGRAM地址指令
功能:设定下一个要存入数据的CGRAM的地址。

8.设定DDRAM地址指令
功能:设定下一个要存入数据的CGRAM的地址。

9.读取忙信号或AC地址指令
功能:<1> 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机
送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令;
<2> 读取地址计数器(AC)的内容。

10.数据写入DDRAMCGRAM指令
功能:<1> 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;
    <2> 将用户自己设计的图形存入CGRAM。
11.CGRAMDDRAM读出数据的指令
功能:读取DDRAM或CGRAM中的内容。
基本操作时序:
读状态           输入:RS=L,RW=H,E=H      输出:DB0~DB7=状态字
写指令           输入:RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码
输出:无
读数据           输入:RS=H,RW=H,E=H      输出:DB0~DB7=数据
写数据           输入:RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据
输出:无
(5)、1602液晶与单片机接口电路
2时间计算模块设计
DS1302通过三根口线实现与单片机的通信,因DS1302功耗很小,即使电源掉电后通过3V的纽扣电池仍能维持DS1302精确走时。
  • DS1302特性介绍
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。




  • DS1302引脚介绍
各引脚的功能为:
8 、Vcc1:备用电池端;
1、Vcc2:5V电源。当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。
7、 SCLK:串行时钟,输入;
6、I/O:数据输入输出口;
5、CE/RST:复位脚
2   3、X1、X2 是外接晶振脚 (32.768KHZ的晶振)
4、地(GND)

(4)DS1302有关日历、时间的寄存器
寄存器的说明如下:
1、秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当初始上电时该位置为1,
时钟振荡器停止,DS1302处于低功耗状态;只有将秒寄存器的该位置改写为0时,时钟才能开
始运行。
2、小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为
高时,选择12小时模式。在12小时模式时,位5是 ,当为1时,表示PM。在24小时模式时,
位5是第二个10小时位
3、控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在对任何的时钟和
RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。
也就是说在电路上电的初始态WP是1,这时是不能改写上面任何一个时间寄存器的,
只有首先将WP改写为0,才能进行其它寄存器的写操作。
(5)DS1302控制字介绍
控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1(A4~A0):指示操作单元的地址;
位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。
读数据:
读数据时在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,
读出的数据是从最低位到最高位。
写数据:
控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,
数据被写入DS1302,数据输入也是从最低位(0位)开始。
位0(最低有效位):为1表示进行读操作。 如为0,表示要进行写操作,
控制字后  SCLK 下降沿 读数据   SCLK上升沿写数据
(6)DS1302单字节读写时序介绍
DS1302的数据读写是通过I/O串行进行的。当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作,以及操作的址。第二个字节就是要读或写的数据了。我们先看
单字节写:在进行操作之前先得将CE(也可说是RST)置高电平,然后单片机将控制字的位0放到I/O上,当I/O的数据稳定后,将SCLK置高电平,DS1302检测到SCLK的上升沿后就将I/O上的数据读取,然后单片机将SCLK置为低电平,再将控制字的位1放到I/O上,如此反复,将一个字节控制字的8个位传给DS1302。接下来就是传一个字节的数据给DS1302,当传完数据后,单片机将CE置为低电平,操作结束。
单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,SCLK还在高电平时,DS1302就将数据放到I/O上,单片机将SCLK置为低电平后数据锁存,
单机机就可以读取I/O上的数据。如此反复,将一个字节的数据读入单片机。
读与写操作的不同就在于,写操作是在SCLK低电平时单片机将数据放到IO上,当SCLK上升沿时,DS1302读取。而读操作是在SCLK高电平时DS1302放数据到IO上,将SCLK置为低电平后,单片机就可从IO上读取数据。
(7)DS1302操作指令介绍
操作说明:
1 首先要通过8EH将写保护去掉,将日期,时间的初值写时各个寄存器。
2 然后就可以对80H、82H、84H、86H、88H、8AH、8CH进行初值的写入。同时也通过秒寄存器将位7的CH值改成0,这样DS1302就开始走时运了。
3 将写保护寄存器再写为80H,防止误改写寄存器的值。
4 不断读取80H-8CH的值,将它们格式化后显示到1602LCD液晶上
(8)DS1302与单片机接口电路
3、实时环境温度检测模块
DS18B20通过单总线实现与单片机的通信,每个DS18B20都有一个唯一的序列号,可以方便的实现组网检测。
(1)单总线介绍
  • 单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。
  • 单总线通常要求外接一个约为 4.7K—10K 的上拉电阻,这样,当总线闲置时其状态为高电平。

(2) DS18B20特性介绍
  • DS18B20 单线数字温度传感器,即一线器件,其具有独特的优点:
  • 1 )采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
  • 测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 ~+ 125 -10~+ 85°C 范围内,精度为 ± 0.5°C
  • 在使用中不需要任何外围元件。
  • 支持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。
  • 供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。
  • 测量参数可配置 DS18B20 的测量分辨率可通过程序设定 9~12 位。
  • 负压特性 电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
  • 掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。
  • DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐
(3) DS18B20管脚介绍
DS18B20的管脚排列
1.GND为电源地;
2.  DQ为数字信号输入/输出端;
3.  VDD为外接供电电源输入端在寄生电源接线方式时接地
(4) DS18B20内部结构
  • DS18B20 内部结构主要由四部分组成: 64 位光刻 ROM 、温度传感器、非挥发的温度报警触发器 TH TL 、配置寄存器。
  • 光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列码。 64 位光刻 ROM 的排列是:开始 8 位(地址:28H )是产品类型标号,接着的 48 位是该 DS18B20 自身的序列号,并且每个 DS18B20 的序列号都不相同,因此它可以看作是该 DS18B20 的地址序列码;最后 8 位则是前面 56 位的循环冗余校验码( CRC=X8+X5+X4+1 )。由于每一个 DS18B20 ROM 数据都各不相同,因此微控制器就可以通过单总线对多个 DS18B20 进行寻址,从而实现一根总线上挂接多个 DS18B20 的目的。
DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中S为符号位。


(5)DS18B20温度转化示例
(6) DS18B20时序介绍
DS18B20的一线工作协议流程是:
初始化→ROM操作指令→存储器操作指令→数据传输。
其工作时序包括:
  •               初始化时序
  •               写时序
  •               读时序
初始化时序
主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。
  做为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。
DS18B20的写和读操作
接下来就是主机发出各种操作命令,但各种操作命令都是向DS18B20写0和写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。因此首先要搞清主机是如何进行写0、写1、读0和读1的。
写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。

对于读数据操作时序也分为读0时序和读1时序两个过程。读时序是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60us才能完成
(7) DS18B20操作步骤
(1)每次读写前对 DS18B20 进行复位初始化。复位要求主 CPU 将数据线
下拉 500us ,然后释放, DS18B20 收到信号后等待 16us~60us 左右,然后发出
60us~240us 的存在低脉冲,主 CPU 收到此信号后表示复位成功。
(2)发送一条 ROM 指令












(3)发送存储器指令
(8) DS18B20与单片机的接口电路
4、报警模块
报警模块采用单片机输出一定频率的方波从而使蜂鸣器发出声音



蜂鸣器与单片机的接口电路
5、设置模块
设置模块采用四个按键与P1^4、P1^5、P1^6、P1^7
相接组成独立按键,接口电路如下;
系统软件设计
软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。因本程序涉及的模块较多,所以程序编写也采用模块化设计,C语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用C51编写。
程序框图如下:
系统硬件电路设计
本设计硬件电路图如下
系统硬件PROTEUS仿真原理图
系统硬件仿真运行情况图
显示欢迎界面
显示实时时间
显示当前温度
时间设置
最高报警温度设置
闹钟时间设置
超   温
闹钟时间到
附录一:实物图
附录二:PCB图


完整的Word格式文档51黑下载地址(含源码):
单片机课程设计报告(万年历).doc (5.72 MB, 下载次数: 118)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:567974 发表于 2019-6-20 15:24 | 显示全部楼层
拿来参考一下
回复

使用道具 举报

ID:782510 发表于 2020-12-10 19:32 | 显示全部楼层
V+/V- pins not specified for power interface - check ITFMOD properties. [U4_#P]
报错了是因为啥呀?
回复

使用道具 举报

ID:782510 发表于 2020-12-10 20:03 | 显示全部楼层
请问有仿真文件吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表