基于单片机的具有温度指示的数字万年历设计说明

上传人:be****l 文档编号:77585717 上传时间:2022-04-20 格式:DOC 页数:61 大小:1.94MB
收藏 版权申诉 举报 下载
基于单片机的具有温度指示的数字万年历设计说明_第1页
第1页 / 共61页
基于单片机的具有温度指示的数字万年历设计说明_第2页
第2页 / 共61页
基于单片机的具有温度指示的数字万年历设计说明_第3页
第3页 / 共61页
资源描述:

《基于单片机的具有温度指示的数字万年历设计说明》由会员分享,可在线阅读,更多相关《基于单片机的具有温度指示的数字万年历设计说明(61页珍藏版)》请在装配图网上搜索。

1、 目 录1 绪论12 总体设计方案22.1设计思路22.2设计方案22.3 方案比较论证22.4 总体设计方框图33 设计原理与分析43.1硬件电路主要芯片的功能介绍43.1.1单片机主控制器43.1.2 温度传感器芯片53.1.3 时钟芯片DS130293.1.4 16*2LCD液晶显示1602124 硬件电路154.1 单片机主控制模块的设计154.2 时钟电路模块的设计154.3 温度采集模块设计164.4 功能按钮设计164.5 16*2 LCD1602液晶显示电路设计174.6总体电路图175 系统软件设计185.1 系统模块的功能分划分185.2 总体程序流程框图185.3 时钟调

2、整时间的流程图205.4 修改键“UP”的功能流程图215.5温度转换流程图226 系统仿真测试236.1 KEIL的使用236.2 Protues软件仿真28致31参考文献32附录一总体电路的PCB板图33附录二设计电路的仿真电路图34附录二万年历源程序351 绪论随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。由其是单片机技术的应用产品已经走进了千家万户。其中电子万年历就是一个典型的例子。而且在万年历的基础上还可以扩展其它的实用功能,比如温度计。万年历是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为

3、人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,但是所有这些,都是以钟表数字化为基础的。因此,研究万年历与扩大其应用,有着非常现实的意义。市场上有许多电子钟的专用芯片如:LM8363、LM8365等,但它们功能单一,电路连接复杂,不便于调试制作。但是考虑到用单片机配合时钟芯片,可制成功能任意的电子钟,而且可以做到硬件简单、

4、成本低廉。所以本系统采用了以广泛使用的单片机AT89S52技术为核心,配合时钟芯片DS1302。软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LCD显示电路、键盘电路,使人机交互简便易行,此外结合音乐闹铃电路、看门狗和供电电路。本方案设计出的数字钟可以显示时间、设置闹铃功能之外。本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能与工作过程,其次,详细阐述了程序的各个模块和实现过程。本设计以数字集成电路技术为基础,单片机技术为核心。本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。本设计中我重点研究

5、实现了单片机+时钟芯片这种模式的万年历,从原理上对单片机和时钟芯片有了深一步的认识,这些基本功能完成后,在软件基础上实现时间显示。2 总体设计方案2.1设计思路用AT89S52处理产生部时钟数据或者读取外部时钟数据和采集外部传感器的信息进行处理,并暂时寄存在其部的储存器中,再通过单片机调用部RAM的数据并送到LCD或者LED数码管上显示出来。2.2设计方案方案1:单片机一般的工作频率在12MHz左右,而且部还有定时、计数器,可以产生精确的1S定时,由次可以用定时中断的方式产生精确的1S时间,秒位不断的加1,再设计分、时、星期、日、月、年之间的进制,使产生进位。本方案只需要单片机最小系统加上显示

6、电路,再设计简单的程序算法就可以实现。对于测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理。在显示电路上,采用数码管就可以将年月日星期时分秒和室温度显示出来方案2:万年历时钟采用单片机控制DS1302实时时钟芯片,能达到走时准确且掉电不丢失数据的。DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES(复位)2 I/O (数据线)3 SCLK(串行时钟)。温度计要灵敏反映室温的变化这样可采用单片机与数字式温度传感器DS18B20通讯,采集温度数字信号进行处理。DS18B20

7、通过一个单线接口发送或接受信息,因此在单片机与DS18B20之间仅需一条连接(加上地线)。在显示电路上,采用16*2的LCD显示。2.3 方案比较论证对于方案1,单片机虽然可以产生精确的秒信号,但是单片机在处理闰年上会比较麻烦,加之一旦单片机断电后,所有的时间都要重新调整。对于测温电路,采用热敏电阻的输出电压-温度特性,要加上A/D转换,温度传感信息才能被单片机所接受,这种设计需要用到A/D转换电路,感温电路比较麻烦。在显示电路上,采用LED数码的话要用到单片机的许多I/O口,甚至I/O不够用,还需要接上其它芯片大量扩展I/O口,这是一个弊处。对于方案2:单片机不用去产生时钟的数据,时钟的数据

8、由DS1302独立产生,并寄存在其部的寄存器上,单片机可以通过三总线与它通讯,不仅可以对它进行读取实时时钟数据,还可以对它进行编程,设置它的工作模式。单片机只是处理从DS1302读出来的数据并送显示,大大减少了单片机的负担。而且DS1302可以通过后备电池继续工作,部的时钟还在走,下次启动后不用去调整时钟,方便使用。基于同样的原理,DS18B20也是一个独立的传感器,只要单片机配置它的工作状态后它就可以独立工作,部已经把模拟信号转换成数字信号,并把数字信号储存在其部的寄存中。同样,单片机通过单总线与它通讯,可以处理912位的温度数字数据。在显示电路上,采用16*2 LCD液晶显示器,能容纳年月

9、日星期时分秒温度等信息的显示。LCD显示器只需占用11个I/O口就可以工作了,不用其它扩展芯片,总体上使电路简单化。2.4 总体设计方框图AT89S52主控制器DS1302时钟芯片DS18B20温度传感复位按键LCD显示器键盘12MHz晶振振荡 总体的方框图如图2.1所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,用16*2的LCD液晶显示屏实现年、月、日、星期、时、分、秒、温度的显示。图2.1总体设计方框图3 设计原理与分析3.1硬件电路主要芯片的功能介绍 本次设计的万年历系统主要包括单片机主控制器、温度传感器芯片、时钟芯片DS1302芯片、16*2LCD显示芯片。3.1

10、.1单片机主控制器AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片晶振与时钟

11、电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。(1)AT89S52的简介AT89S52是一个低功耗,高性能CMOS 8位单片机,片含8kBytes ISP (In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统与80C51引脚结构,芯片集成了通用8位中央处理器和I

12、SP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52具有如下特点:40个引脚,8k Bytes Flash片程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片时钟振荡器。此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片

13、其它功能直至外中断激活或硬件复位。(2)AT89S52的部结构图AT89S52的部结构图如图3.1所示:图3.1 AT89S52部结构图3.1.2 温度传感器芯片(1)单线温度传感器DS18B20介绍DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压围为3.05.5;零待机功耗

14、;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; 图3.2 DSl8B20的引脚图DSl8B20数字温度计提供9位(二进制)温度读数,指示器件的温度。信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线(和地线)。DSl8B20的电源可以由数据线本身提供而不需要外部电源。因为每一个DSl8B20在出厂时已经给定了唯一的序号,因此任意多个DSl8B20可以存放在同一条单线总线上。这允许在许多不同的地方放置温度敏感器件。DSl

15、8B20的测量围从-55摄式度到+125摄式度,增量值为0.5摄式度,可在l s(典型值)把温度变换成数字。每一个DSl8B20包括一个唯一的64位长的序号,该序号值存放在DSl8B20部的ROM(只读存贮器)中。开始8位是产品类型编码(DSl8B20编码均为10H)。接着的48位是每个器件唯一的序号。最后8位是前面56位的CRC(循环冗余校验)码。DSl8B20中还有用于存储测得的温度值的两个8位存贮器RAM,编号为0号和1号。1号存贮器存放温度值的符号,如果温度为负(摄式度),则1号存贮器8位全为1,否则全为0。0号存贮器用于存放温度值的补码,LSB(最低位)的1表示0.5摄式度。将存贮器

16、中的二进制数求补再转换成十进制数并除以2就得到被测温度值(-55摄式度-125摄式度)。DSl8B20的引脚如图3.2所示。每只DS18B20都可以设置成两种供电方式,即数据总线供电方式和外部供电方式。采取数据总线供电方式可以节省一根导线,但完成温度测量的时间较长:采取外部供电方式则多用一根导线,但测量速度较快。(2) DS18B20的测温原理器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的

17、时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。

18、另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。DS18B20采用3脚PR35封装或8脚SOIC封装,其部结构框图如图3.3所示。图3.3 DS18B20的部结构图64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。(3)温度计算1、DS18B20用9位存贮温值

19、度,最高位为符号位,如表3.1为DS18B20的温度存储方式,负温度S=1,正温度S=0。如:00AAH为+85摄式度,0032H为25摄式度,FF92H为55摄式度表3.1 18B20用9位的温度存储方式2、DS18B20用12位存贮温值度,最高位为符号位,如表3.2为DS18B20的温度存储方式,负温度S=1,正温度S=0。如:0550H为+85摄式度,0191H为25.0625摄式度,FC90H为-55摄式度。 表3.2 18B20用12位的温度存储方式DS18B20温度传感器的部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EEROM。高速暂存RAM的结构为8字节的存储器,结

20、构如图3.4所示。头2个字节包含测得的温度信息,第3和第4字节和的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的容用于确定温度值的数字转换分辨率。图3.4 DS18B20存储器结构DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3.2所示。低5位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。由表3.3可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转

21、换时间权衡考虑。表3.3 DS18B20温度转换时间表高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值;表3.4为部分温

22、度值对应的二进制温度数据:表3.4 部分温度值对应的二进制温度数据温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110

23、1111FE6FH-551111 1100 1001 0000FC90H3.1.3 时钟芯片DS1302(1)时钟芯片DS1302的性能DS1302 是DALLAS 公司推出的涓流充电时钟芯片含有一个实时时钟/日历和31 字节静态RAM 通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES 复位2 I/O 数据线3 SCLK串行时钟时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组

24、方式通信DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW。实时时钟具有能计算2100 年之前的秒、分、时、日、日期、星期、月、年的能力还有闰年调整的能力318 位暂存数据存储RAM串行I/O 口方式使得管脚数量 最少宽围工作电压2.0 5.5V工作电流2.0V 时,小于300nA读/写时钟或RAM 数据时有两 种传送方式单字节传送和多字 图3.5 DS1302的封装与引脚功能节传送字符组方式8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配,如图3.5所示简单3 线接口与TTL 兼容Vcc=5V可选工业级温度围-40 +85(2)时钟芯片DS1302的工作原理DS1302

25、在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;表3.5为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0

26、。当“WP”为1时,写保护位防止对任一寄存器的写操作。a.DS1302的控制字节DS1302的控制字如表3.5所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出表3.5 DS1302的控制字b.数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出D

27、S1302的数据,读出数据时从低位0位到高位7。如下图3.6所示:图3.6 DS1302读/写时序图c.DS1302的数据读写DS1302单字节读写的波形如图3.6所示。由波形可以看出,无论是从DS1302中读一个数据,还是写一个字节数据到DS1302中,都要先写一个命令字到DS1302中。即通过SCLK引脚(7号引脚)向DS1302输入8个脉冲,把I/O引脚(6号引脚)上的命令字写入DS1302。为了启动数据传输,引脚(5号引脚)应为高电平。在将由0置1的过程中,SCLK引脚必须为逻辑0。然后才能进行读写操作。I/O引脚上的数据在SCLK的上升沿串行输入(写数据到DS1302),在SCLK的

28、下降沿串行输出(读数据)。d.DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器与其控制字见表3.6所示:写寄存器读寄存器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit080H81HCH10秒秒82H83H10分分84H85H12/010时时/PM86H87H0010日日88H89H00010月月8AH8BH00000星期8CH8DH10 年年8EH8FHWP0000000表3.6 DS1302的日历、时间寄存器此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器与与RAM相关的

29、寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 3.1.4 16*2LCD液晶显示1602(1)1602采用标准的16脚接口,其中:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影

30、”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第1516脚:空脚。指令RSR/WD7D6D5D4D3D2D1D0清显示0000000001光标返回000000001*置输入模式000000011/DS显示开/关控制

31、0000001DCB光标或字符移位000001S/CR/L*置功能00001DLNF*置字符发生存贮器地址0001字符发生存贮器地址(AGG)置数据存贮器地址001显示数据存贮器地址(ADD)读忙标志或地址01BF计数器地址(AC)写数到CGRAM或DDRAM10要写的数从CGRAM或DDRAM读数11读出的数据(2)1602液晶模块部的控制器共有11条控制指令,如表3.7所示:表3.7 控制指令它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显

32、示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5*7的点阵字符,高电平时显示5*10的点阵字符。指令7:字符发生器RAM地址设置

33、。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。(3)DM-162液晶显示模块可以和单片机AT89C52直接接口,电路如图3.7所示:图3.7 接口电路液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3.8是DM-162的部显示地址。表3.8 DM-16的部显示地址比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在

34、第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)(4)基本操作时序如图3.8所示:读状态输入:RS=L,RW=H,E=H 输出:DB0DB7=状态字写指令输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码读数据 输入:RS=H,RW=H,E=H 输出:DB0DB7=数据写数据输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据图3.8 LCD的读写时序4 硬件电路4.1 单片机主控制模块的设计AT89S52单片机为40引脚双列直插

35、芯片, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻与开关后够上电复位电路,20引脚为接地端,40引脚为电源端. 如图4.1所示:图4.1 单片机最小系统4.2 时钟电路模块的设计图4.2是 DS1302与单片机的连接,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续

36、运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc

37、大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。图4.2 时钟芯片与单片机的连接4.3 温度采集模块设计如图4.3所示,采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用2.4与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。图4.3 温度传感器与单片机的连接4.4 功能按钮设计当按钮被按下时,该按钮对应的I/O口被拉为低电平,松开时按钮对应的I/O口由部的上拉电阻将该I/O拉为高电平,

38、如图4.4所示:图4.4 功能按键电路4.5 16*2 LCD1602液晶显示电路设计根据其读写的时序模拟总线的方式与单片机进行数据的通讯,首先将数据从I/O口读入或送出,再选择R/W 和RS的电平进行不同的操作,在使能端E下降沿时触发数据的读入或送出。注意P0口要接上拉电阻,如图4.5所示:图4.5 LCD液晶显示屏与单片机的连接4.6总体电路图本设计的具在温度指示的数字万年历的总体电路图如图4.6所示:图4.6 总体电路图5 系统软件设计5.1 系统模块的功能分划分万年历程序设计总体上分为四个大模块,分别是DS1302时钟程序模块、DS18B20测温模块、LCD显示模块、键盘功能模块。a.

39、 DS1302时钟程序模块包括设置DS1302初始时间、从DS1302 读时间子程序、写1302一字节子程序、读1302一字节、关闭写保护、开启写保护、关闭时钟、延时子100MS程序。b. DS18B20测温模块包括DS18B20的初始化子程序、DS18B20数据处理子程序、读出温度值的子程序、DS18B20复位子程序、写DS18B20的1位字节子程序、读DS18B20的1个字节子程序。c. LCD显示模块包括LCD初始化子程序、写入控制命令的子程序、判断LCD显示器是否忙的子程序、向LCD中的DDRAM中写数据、查询LCD字符表、调整模式的显示子程序、正常模式LCD显示子程序。d. 键盘功能

40、模块包括模式选择按键SET子程序、调整模式选择子程序、OUT键扫描子程序、UP按键扫描子程序、DOWN按键扫描子程序。5.2 总体程序流程框图本设计中,实现功能的总体程序流程框图如下图5.1所示:调用调整模式模块NO停止时钟,置时钟停止标志位YESCOUNT值赋给A调用JMP A+DPTR散转指令散转到8个跳转首地址由COUNT的值转入秒/分/时/星期/日期/月/年的修改位的操作扫描OUT、UP、DOWN三个按键OUT、UP、DOWN三个按键如果有按下,执行相应的功能调用调整模式下的显示子程序返回标志位DONE的查询当前时钟停止吗?标志位DONE=1吗?NO调用LCD显示模块扫描SET按钮清时

41、钟停止、调整模式标志位4个模块的初始化程序开始SET键有按下COUNT加1YES图5.1 总体程序流程框图5.3 时钟调整时间的流程图时钟调整时间的流程图5.2所示:YES时钟显示开始判断SET键是否有按下?COUNT计算按键的次数1次,进入秒调整2次,进入分调整3次,进入时调整等待按键等待按键等待按键UP有效DOWN有效OUT有效DOWN有效UP有效DOWN有效UP有效OUT有效OUT有效加1减1加1减1加1减1NO4、57次同理周、日/月/年的调整退出时间调整图5.2时钟调整时间的流程5.4 修改键“UP”的功能流程图修改键“UP”的功能流程图如图5.3所示:开始端口写1,并扫描UP键是否

42、有按下?退出UP键的扫描NOA赋给秒的单元内容秒对应的单元内容赋给A,A再加1年位的加1操作加1后秒内容溢出吗?BCD码调整溢出置0退出秒的加1操作YE温度转换读取温度数值流程图SNO散转指令JMP A+DPTR赋跳转的表头给DPTRA的值为0是退出秒位的加1操作分位的加1操作时位的加1操作星期位的加1操作日位的加1操作月位的加1操作图5.3修改键“UP”的功能流程图YES延时,将COUNT的值赋给A5.5温度转换流程图初始化DS18B20开始应答脉冲发起Skip Rom命令发起Convert命令延时1S等待温度转换完成初始化DS18B20应答脉冲发起Read Seratchpad命令读取第1

43、、2字节即为温度数据NOYESYESNO单片机实现对温度传感器DS18B20的温度转换读取温度数值流程图如下图5.4所示:图5.4温度转换读取温度数值流程图6 系统仿真测试首先把各个模块的程序编好,在伟福W6000中调试没有错误后,再到Protues 7.1中画好并连接电路图进行程序仿真。各个部分的功能后再把它们综合到一个主程序中去,在伟福W6000中调试通过后再把它用Keil uVision2软件把程序生成hex格式最后到Protues 7.1中仿真。在综合到一起的时候,出现了RAM分配错误的问题,因为原先是一个模块子程序在运行,RAM的分配只要不要跟子程序中的分配不冲突就可以了,但是在综合

44、各个模块子程序的时候就会出现RAM分配冲突的问题。最好是在设计程序之前先把RAM的空间分配好。6.1 KEIL的使用Keil uVision2是目前使用广泛的单片机开发软件,它集成了源程序编辑和程序调试于一体,支持汇编、C、PL/M语言。keil C51 v6.12 的使用: 点击桌面快捷图标,如图6.1所示,可以直接进入主画面:在Keil系统中,每做个独立的程序,都视为工程(或者叫项目)。首先从菜但的“工程”中“新建工程.”,建立我们图6.1 快捷图标将要做的工程项目如图6.2所示:图6.2 新建建工程新建的工程要起个与工程项目意义一致的名字,可以是中文名;我们这里的程序是实验测试程序,所以

45、起的名字为 Test ,并将 Test 工程“保存”到 D:Keil 下如图6.3所示:图6.3 新建名工程窗口接下来,Keil环境要求我们为 Test 工程选择一个单片机型号;我们选择 Atmel 公司的 89C52(虽然我们使用的是89S52,但由于89S52与89C52、外部结构完全一样,所以这里依然选择“89C52”),如图6.4所示: 图6.4选择工程项目“确定”后工程项目就算建立了。立了工程项目,肯定要实施这个工程,现在就为工程添加程序;点击“文件”中的“新建”,新建一个空白文档,如图6.5所示;这个空白文档就是让我们编写单片机程序的场所。在这里你可以进行编辑、修改等操作。图6.5

46、 新建文件写完后再检查一下,并保存文件,保存文件时,其文件名最好与前面建立的工程名一样(当然这里为 Test 了),其扩展名必须为 .Asm !“文件名”中一定要写全,如:Test.Asm ;保存后的文档彩色语法会起作用,将关键字实行彩色显示,如图6.6所示:图6.6 保存文档保存了Asm文件后,还要将其添加到工程中。具体做法如下:(如下图6.7所示)鼠标右键点击 “Source Group 1”,在弹出的菜单中选“增加文件到组 Source Group 1”图6.7 添加文件在接下来出现的窗口中,选择“文件类型”为“Asm源文件(*.a*,*.src)”(由于我们使用的是汇编语言,所以选择A

47、sm源文件),选中刚才保存的 Test.Asm,按“Add”,再按“关闭”,文件就添加到了工程中,如图6.8所示:图6.8 添加到工程中向工程添加了源文件后,鼠标右键点击 “TarGet 1” ,在弹出的菜单中选“目标 Target 1 属性”:在打开的话框中,选择“输出”选项卡,在这个选项卡中,“E生成HEX文件”选项前要打勾,按“确定”退出,如图6.9所示。图6.9 目标TarGet 1属性最后,从菜单的“工程”中执行“R重新构造所有目标”(或者按下图红圈中的按钮),汇编、连接、创建Hex文件一气呵成;在工程文件的目录下就会生成与工程名一样的一些文件,其部分文件我们并不必关心,而生成的 H

48、ex 文件是我们需要的!它是要烧写到单片机中的最终代码,也就是单片机可以执行的程序。 这里生成的是 Test.HEX ,稍后就写入。若在下面的状态窗中有错误提示,就需要再次编辑、修改源程序(如语法、字符有错等)、保存、构造所有。直至没有错误,如图6.10所示:图6.10生成hex格式接下来,我们启动 Protues软件仿真,将刚刚生成的 Test.Hex 烧写到单片机芯片,在实验板上实际验证一下。6.2 Protues软件仿真Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该

49、软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机与其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以与各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持

50、第三方的软件编译和调试环境,如Keil C51 uVision2等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。(1)进入Proteus ISIS双击桌面上的ISIS 6 Professional图标或者单击屏幕左下方的“开始”“程序”“Proteus 6 Professional”“ISIS 6 Professional”,出现如图6.11所示屏幕,表明进入Proteus ISIS集成环境。 图6.11 启动屏幕(2)工作界面Proteus ISIS的工作界面是一种标准的Windows界面,如图4-2所示。包括:标题栏、主菜单、标准

51、工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口,如图6.12所示:图6.12 工作界面根据设计原理画出仿真原理图(如附录二),检查电路连接无误后,双击单片机芯片AT89S52,如图6.13所示:图6.13 烧写程序把生成的 Test.Hex 烧写到单片机芯片,点击仿真进程控制按钮,点击运行,观看LCD液晶显示效果,若在实验板上实际验证的并不是我们预期的效果,那么,就需要再次返回到编辑、修改源程序那一步,修改后再构造所有,再次将生成的Hex文件在51ISP中烧写、实验,直至成功!如下图6.14是本设计测试的效果显示。图6.

52、14 测试结果显示致 本次设计是我们遇到过的较大的设计,所以遇到的问题也比较的多,尤其是以前没有接触过如此复杂的硬件电路以与软件编程,在软、硬件设计和调试中遇到了不少的困难,在建军老师的耐心指导下和同学的帮助才逐一克服了难题,学习到了不少的专业知识。在整个设计过程之前,我已经在网上找了相关方面的资料,万事开始难,一开始不知道从哪里下手。后来慢慢学会分析系统,将系统模块化,各个模块可以在软件或者硬件上实现。在确保各个模块的硬件电路和与之相搭配的程序能够正常工作后在把它们组成一个系统。由于我的理论知识水平有限,实践能力和设计经验不足,在设计的过程中难免还存在一些问题甚至是错误。恳请各位老师批评指导

53、,以便我在以后的学习和工作中加以改正。我要衷心的感我的指导老师和在这三年中辛勤培育过我的所有老师与领导,希望我的毕业设计能给各位老师交上一份满意的答卷,也为我这三年的大学生活画上一个圆满的句号!本次毕业设计能够顺利完成离不开我的指导老师建军老师的帮助,在老师的细心指导下,本设计得以顺利完成,在这里对他的帮助表示衷心的感。当然也离不开同学对我的大力支持,在此一并对他们表示感!在指导老师的帮助下,我能够认清自己的不足,并能很好的解决这些问题。在今后的日子里,我会进一步加强自己的动手能力,丰富自己的知识面,并在以后工作岗位中发挥我所长,为社会作出贡献。参考文献1 朝青.单片机原理与接口技术M,:航天

54、航空大学,20052 广弟.单片机基础M,:航空航天大学,20003 万光毅.单片机实验与实践教程M,:航空航天大学,20034 唐亚平、移伦.单片机原理实训与学习指导M,:中南大学,20065 军.单片机原理与接口技术M,华东理工大学,20066 自美.电子线路设计、实验、测试M,:华中理工大学,2000附录一 总体电路的PCB板图附录二 设计电路的仿真电路图附录二 万年历源程序COUNT EQU 67H ;SET键按下的次数DONE BIT 40H ;进入调整状态的标志位FLAG BIT 41H ;时钟停止标志位SETS BIT P2.0 ;SET键UP BIT P2.1 ;UP键DOWN

55、 BIT P2.2 ;DOWN键OUT BIT P2.3 ;OUT键RS BIT P3.5 ; LCD1602数据/命令选择端RW BIT P3.6 ; LCD1602读写选择端E BIT P3.7 ; LCD1602使能端DAT BIT P2.4 ;DS18B20模拟1-WIRE的数据线T_CLK BITP2.5;实时时钟时钟线引脚T_IO BIT P2.6;实时时钟数据线引脚T_RST BIT P2.7;实时时钟复位线引脚TH EQU 85 ;高温报警点TL EQU 00 ;低温报警点TEMPH EQU 40H ;读出寄存器5个单元容: 0,存温度高8位TEMPL EQU 41H ; 1,

56、存温度低8位REG2 EQU 42H ; 2,存TH值REG3 EQU 43H ; 3,存TL值REG4 EQU 44H ; 4,存CONFIG数据;CONFIG9 EQU 1FH ;选择 9位精度的配置数据(作为立即数);CONFIG10 EQU 3FH ;选择10位精度的配置数据;CONFIG11 EQU 5FH ;选择11位精度的配置数据;CONFIG12 EQU 7FH ;选择12位精度的配置数据SECOND EQU 60H ;秒的缓冲区(60H66H单元用于DS1302的数据)MINUTE EQU 61H ;分的缓冲区HOUR EQU 62H ;小时的缓冲区DATE EQU 63H

57、;日期的缓冲区MONTH EQU 64H ;月的缓冲区WEEK EQU 65H ;星期的缓冲区YEAR EQU 66H ;年的缓冲区;*主程序* ORG 0 AJMP STARTSTART: MOV SP,#07H MOV COUNT,#00H CLR FLAG CLR DONE MOV 60H,#00H MOV 61H,#42H MOV 62H,#11H MOV 63H,#04H MOV 64H,#03H MOV 65H,#02H MOV 66H,#08H SETB DAT ;端口写1 LCALL LCD_INIT ;初始化LCD LCALL DISPLAY ;送初始化值到液晶屏显示 LCALL D18B20_INIT ;初始化DS18B20 LCALL Set1302 ;设置DS1302参数 MAIN: DONE, SEL ;标志位DONE为1时进入调整模式LCALL DISPLAY CLR FLAG ;清时钟停止的标志位 LCALL SETKEY ;扫描SET功能键 AJMP MAINSEL: LCALL KEYDONE ;调用调整模式AJMP MAIN ;返回再查询;*调整模式选择子程序*KEYDONE:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!