基于单片机的数字温度计设计毕业设计.doc

上传人:文库蛋蛋多 文档编号:3939905 上传时间:2023-03-28 格式:DOC 页数:49 大小:338.50KB
返回 下载 相关 举报
基于单片机的数字温度计设计毕业设计.doc_第1页
第1页 / 共49页
基于单片机的数字温度计设计毕业设计.doc_第2页
第2页 / 共49页
基于单片机的数字温度计设计毕业设计.doc_第3页
第3页 / 共49页
基于单片机的数字温度计设计毕业设计.doc_第4页
第4页 / 共49页
基于单片机的数字温度计设计毕业设计.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《基于单片机的数字温度计设计毕业设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计设计毕业设计.doc(49页珍藏版)》请在三一办公上搜索。

1、信息职业技术学院毕业设计论文设计题目: 基于单片机的数字温度计设计 专 业: 应用电子技术 班 级: 应电08-3 学 号: 姓 名: 指导教师: 二0一0年七月十日信息职业技术学院毕业设计(论文)任务书学 生姓 名学号1班级应电08-3班专业应用电子技术设计(或论文)题目基于单片机的数字温度计的设计指导教师姓名职 称工作单位及所从事专业联系方式备 注讲师/工程师设计(论文)内容:运用电子技术知识、技能设计一个温度度计功能要求如下:1. 采用DS18B20温度传感器实现温度的采集工作,并用16位LCD显示温度。2. 具有采集温度,显示当前温度的功能。3. 温度采集的范围在-20110摄氏度。要

2、求完成:选择各单元电路结构并阐述工作原理,绘制整机电路原理图(A4图纸),写出C语言源程序;准确计算或估算电路参数,正确选择电路元件与设备,给出元件、设备明细表;撰写设计说明书,要求准确阐述电路选择依据,反映计算方法、元件、设备选择等设计过程,并使用软件进行仿真或制作实物。进度安排:5月45月11日:查找资料,选择参考方案 5月115月18日:确定方案5月185月25日:查找资料,进行单元电路的设计 5月255月31日:整机电路分析5月316月7日:整理报告,确定初稿 6月76月14日:检查定稿主要参考文献、资料(写清楚参考文献名称、作者、出版单位):1 苏平单片机原理与接口技术电子工业出版社

3、2003年5月2 林伸茂8051单片机彻底研究实习篇人民邮电出版社2005年8月3 王静霞单片机应用技术(C语言版)电子工业出版社2009年1月4 陈坤、张义中等电子设计技术电子科技大学出版社1997年5月5 郑应光模拟电子线路(一).东南大学出版社. 2005年3月6 李秀忠单片机应用技术人民邮电出版社2007年1月7 肖洪兵跟我学单片机北京航空航天大学出版社2002年3月审批意见教研室负责人:年 月 日目 录摘 要1第1章 绪论2第2章 系统方案论证与比较32.1 方案比较32.2 方案论证4第3章 硬件设计63.1主控芯片介绍63.2 复位电路83.3 时钟电路93.4 矩阵电路103.

4、5 显示电路113.6 测温电路133.6.1DS18B20单线数字温度传感器133.6.2DS18B20工作原理133.6.3 DS18B20的性能特点143.6.4DS18B20内部结构143.7 整机工作原理16第4章 软件设计17第5章仿真与调试295.1仿真与调试295.2调试与运行29结论30参考文献31附录1源程序32附录2元器件名细表45附录3仿真电路图46 摘 要温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用,利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发。在这里介绍了一种基于DS18B20和AT89C52单片

5、机的温度测量及控制系统的硬件结构以及C语言程序设计,该系统设计和布线简单,结构紧凑,体积小,重量轻,抗干扰能力强,性价比高,扩展方便,在大型仓库,工厂,智能化建筑等领域的多点温度检测中有广阔的应用前景。关键词DS18B20;AT89C52;温度测量;控制第1章 绪论随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的。温度测控技术也在各个领域应用越来越广泛,同时温度测量也被人们异常关注,一时间涌现出大量各式各样的测试温度仪器,这些仪器的原理到底是怎样的呢?说到底也是所以温度测控的范畴,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现

6、代人工作、科研、学习、生活提供更好的更方便的设施就需要从数字单片机技术入手,一切想着数字化,智能化控制方向发展。本设计所介绍的数字温度计与传统数字温度计相比,具有读数方便,测温范围广,测量准确,其输出采用数字显示,主要用于对测温比较准确的地方,或科研实验室使用,测温传感器使用DS18B20,用LCD实现温度显示。第2章 系统方案论证与比较2.1 方案比较方案一:采用热电偶温差电路测温,温度检测部分可以采用低温热偶,热电偶由两个焊接在一起的异金属导线组成(热电偶的组成如图2-1),热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度并测量该电压,便可以推测

7、出检测结点的温度。数据采集部分则使用带有A/D通道的单片机,在将随被温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据处理了,在显示电路上就可以将北侧温度显示出来。热电偶的优点是工作温度宽,且体积小,但是也存在输出电压小,容易遭受来自导线环路噪音的影响以及漂移较高的缺点并且这种电路需要用到A/D转换电路,感温电路比较麻烦。数码管报警电路复位电路晶振电路单 片 机测温电路按键防抖动图2-1方案一框图方案二:采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理和控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性质稳定,它温用作工业测温元件,此元件线

8、性较好。在0-100摄氏度时,最大线性偏差小于1摄氏度。DS18B20的最大特点之一是采用了单总数的数据传输,由数字温度计DS18B20和微控制器AT89C52构成温度测量装置,它直接输出温度的数字信号,可直接和计算机连接。这样温度系统的结构就比较简单,体积也不大。采用51单片机控制软件编程的自由度大,而且体积小,硬件实现简单,安装方便。该系统利用AT89C51芯片控制温度传感器DS18B20进行温度的实时检测并显示,能够实现快速测量环境温度,并可以根据需要设置上限报警温度。主控电路时钟电路复位电路显示电路单片机测温电路电源电路图2-2方案二框图 从以上两总方案,容易看出方案一的温测装置可测温

9、度范围广,体积小,但是单线性误差大。方案二的温测装置电路简单,精准度较高,实现方便,软件设计也比较简单,故本次设计采用方案二。显示电路可以采用两种方案:第一种是通过单片机控制译码器将译码器输出的数据送给数码管进行显示,但是要单独增加一个显示电路,使设计比较复杂。另一种是直接运用LCD液晶显示,即直接通过单片对其进行显示以及数据处理较多;因此选择第二种方案。2.2 方案论证在日常生活及工农业生产中经常要检测温度,传统的方式是采用热电偶或热电阻。其硬件电路和软件调试比较复杂,制作成本较高。近年来随着科技的飞速发展,单片机的应用正不断走向深入。所以我们选用单片机作为核心部件进行逻辑控制及信号的产生,

10、用单片机本生的优势节约成本,使电路更简单。根据题目的要求,本次设计采用由 AT89C51单片机及DS18B20温度传感器组成数据采集电路,加上显示电路和控制电路等,根据温度数据测量,通过控制电路对温度进行控制。本系统具有快速显示、测量准确、精度高、可调温控范围、硬件结构简单等优点,是一种比较经济的温度控制系统。A/D转换器将温度传感器采集的温度模拟信号转化成数字信号,送入单片机的I/O数据接口,然后通过单片机读回I/O数据进行温度的判断,最后将数据送入显示译码单元。显示时,译码电路是将单片机输出的BCD码送入译码器,通过其译码后送入LCD显示电路。第3章 硬件设计3.1主控芯片介绍单片机AT8

11、9C2051具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同

12、时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。图3-1 AT89C51单片机的管脚图3-1AT89C51主要功能特性:兼容MCS-51指令系统4k可反复擦写(1000次)Flash ROM32个双向I/O口可编程UARL通道两个16位可编程定时/计数器全静态操作0-24MHz1个串行中断128x8bit内部RAM两个外部中断源共6个中断源可直接驱动LED3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能表3-1

13、AT89C51单片机的管脚功能。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口作为第八

14、位地址接收。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”

15、后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下所示:P3口管脚 备选功能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口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。AL

16、E/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问

17、外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.2 复位电路为确保两点间温度控制系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般电路正常工作需要供电电源为5V5%,即4.755.25V。复

18、位是单片机的初始化操作,其目的是使CPU及各专用寄存器处于一个确定的初始状态。如:把PC的内容初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当单片机系统在运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要复位以使其恢复正常工作状态。VCCC3R110KGNDRST图 3-2 复位电路RST端的外部复位电路有两种操作方式:上电自动复位和按键手动复位。按键手动复位有电平方式和脉冲方式两种,本系统设计采用上电复位,如图2-3所示。上电复位是直接将RST端通过电阻接高电平来实现单片机的复位。3.3 时钟电路单片机的时钟信号用来提供单片机内各种微操作的时

19、间基准,时钟电路用于产生单片机工作所需要的时钟信号。单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。本系统设计采用内部振荡方式,如图2-4所示。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式。图3-3时钟电路3.4 矩阵电路按照键盘与单片机的连接方式可分为独立式键盘与矩阵式键盘。矩阵式键盘是一种常见的输入装置,在日常生活中,矩阵式键盘在计数机、电话、手机、微波炉等各式电子产品上已经被

20、广泛应用。在键盘中按键较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连接,而是通过一个按键加以连接。这样,一个端口就可以构成4x4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20的键盘,而直接用端口线则只能多出一键。所以本次设计采用的是矩阵式键盘,确定矩阵式键盘上的何键被按下可以采用行扫描法。判断键盘中有无键按下:将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位低于电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则

21、按键中无键按下。判断闭合键所在位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,在逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。图3-4矩阵键盘3.5 显示电路在单片机应用系统中,对于系统的运行状态和运行结果,通常都需要直观交互显示出来。单片机应用系统中最常用的显示器有LED和LCD两种。这两种显示器都可以显示数字、字符及系统的状态,LED和LED数码显示最为普遍,本设计采用的是更为环保的LCD显示器。字符型液晶显示模块是一种专门用于显示字母

22、,数字,字符等点阵式LCD,目前常用的有16x1,16x2,20x2,40x2行等模块。点阵字符型LCD的接口特性点阵字符型LCD是专门用于显示数字,字母,图形符号及少量自定义字号的液晶显示器。这类显示器把LCD控制器,点阵驱动器,字符存储器,显示体及少量的组容元件等集成一个液晶显示模块,鉴于字符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的。因此,只要设计出一种字号的接口电路,在指令上稍加修改即可使用各种规格的字符型液晶显示模块。字符型液晶显示模块的控制器大多数为日立公司生产的HD44780及其兼容的控制器。点阵型液晶显示模块的基本特点(1)液晶显示屏是以若干5x8或5x1

23、1点阵块组成的显示字符群。每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。(2)主控电路电路为HD44780-及其他公司的全兼容电路。因此从程序员的角度来说,LCD的显示接口与编程是面向HD44780的,只要了解HD44780的编程结构即可进行LCD的显示编程。(3)内部具有字符发生器ROM,可显示192种字符。(4)具有64字节的自定义字符RAM,可以定义8个5x8点阵字符或4个5x11点阵字符。(5)具有64字节的数据显示RAM,共进行显示编程时使用。(6)标准接口,与M68HC08系列MCU容易接口。(7)模块结构紧凑,轻巧,装备容易。(8)单+5V电源供电。(9)低功耗,高可靠

24、性。(10)HD44780的引脚与时序(11)HD44780的外部接口信号一般有16条,与MCU的接口有8条数据线DB0DB7和3条控制线RS,RW,E,HD44780的引脚功能如表3-2所示。表3-2 HD47780的引脚功能表引脚符号状态功能1Vss电源地2VDD电源正,接+5V3VL液晶显示偏压4RS输入寄存器选择:为1时选择数据寄存器;为0时选择指令寄存器5RW输入R/W为读写选择线:为1时进行读操作,为0时进行写操作6E输入使能信号7DB0三态数据总线(LSB)8DB1三态数据总线9DB2三态数据总线10DB3三态数据总线11DB4三态数据总线12DB5三态数据总线13DB6三态数据

25、总线14DB7三态数据总线15A背光源正极16K背光源负极控制器HD44780的信号功能控制如表3-33-3控制器HD44780的信号功能RSR/WE功能00下降沿写指令代码01高电平读忙标志和AC值10下降沿写数据11高电平读数据图3-5 LCD显示电路3.6 测温电路3.6.1DS18B20单线数字温度传感器由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。产品的主要技术指标:(1)测量范围:-55+125;(2)测量

26、精度:0.5;(3)反应时间500ms。3.6.2DS18B20工作原理温度传感器DS18B20将被测环境温度转化成带符号的数字信号(以十六位补码形式,占两个字节)在通过单片机发出命令送给显示器。它的输出脚I/O直接与单片机相连,并接一个上拉电阻,传感器采用外部电源供电。传感器控制程序是按照DS18B20的通信协议编制。系统的工作是在程序控制下,完成对传感器的读写和对温度的显示。3.6.3 DS18B20的性能特点(1) 采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位);(2) 测温范围为-55+125,

27、测量分辨率为0.0625;(3) 内含64位经过激光修正的只读存储器ROM;(4) 适配各种单片机或系统机;(5) 用户可分别设定各路温度的上、下限;(6) 内含寄生电源。3.6.4DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图35所示。64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。不同的器件地址序列号不同。图3-6DS18B20引脚分布图表3-4 DS18B20引脚功能序号寄存器名称作 用序 号寄存器名称0温度低字节以16位补码形式存放4、5

28、保留字节1、21温度高字节以16位补码形式存放6计数器余值2TH/用户字节1存放温度上限7计数器/3HL/用户字节2存放温度下限8CRC指 令约定代码操 作 说 明温度转换44H启动DS18B20进行温度转换读暂存器BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的TH、TL字节复制暂存器48H把暂存器的TH、TL字节写到E2RAM中重新调E2RAMB8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPU表3-5 DS18B20信号功能以12位转化为例说明温度高低字节存放形式及计算:12位转化后得到的12位数据,

29、存储在DS18B20的两个高低两个8位的RAM中,二进制中的前面5位是符号位。如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度。3.6.5 DS18B20控制方法在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻。此次设计选择的是前面一种控制。表32DS18B20有六条控制命令C

30、PU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操做。R2 4.7KP3.7VCCDQGND+5VP3.7GND图3-7测温电路3.7 整机工作原理当接通电源以后,温度传感器正常工作,温度传感器将根据被测温度的不同来采集不同的数据,然后将所采集到的数据传送到

31、比较器到中,然后由比较器将采集到的数据转变成高低电平,在送入单片机,单片机通过控制各个引脚电平的高低来来控制温度的显示输出,当温度显示TH为110C,TL为20C,通过矩阵键盘电路可以调节TH和TL的初始值,并且还可以调节当前的显示的温度值,按一次键盘TH和TL的值自加一或自减一,当减到低于20C或高于110时,将自动返回初始值。整机电路图如图3-8所示图3-8整机电路图第4章 软件设计整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型的时候软件也基本定下拉了,从软件的功能不同,可以分为两的类:一是主程序,它是整个软件的核心,专门用来协调各个执行模块和操作者的联系。二是子程序,它是用来

32、完成各种实质性的工作的,如测量、计算、显示、通讯等。每一个执行软件就是一个小的执行模块,这里将每一个模块一一列出来,并为每个执行模块进行功能定义和接口定义。各执行模块规划好以后,就可以规划监控软件了。首先要根据系统的总体功能选择一种最合适的主程序结构,然后根据实时性的条件,合理安排监控软件和执行软件之间的调度关系。4.1主程序模块主程序主要完成硬件初始化,子程序调用等功能开始设置定时/计数器初值从DS18B20中读取数据等待数据拆字显示温度 图4-1主程序流程图主程序函数如下:Void main() setds18b20(TH,TL,RS); /设置上下限报警温度和分辨率 delay(100)

33、; while(1) pt=ReadTemperature(); temper_LCD(); user_temper_LCD(user_temper);alarm_LCD(TH,TL); LCD_Initial();LCD_Print(0,0,TempBuffer0);LCD_Print(0,1,TempBuffer1); scan_full(); /看有无键按下if(key_ok) /如有键按下则看到底哪个键按下key_value=key_scan(); /调用键盘扫描程序key_command(key_value); /键盘命令处理函数 等待50us读入DQ的状态等待200usDQ置1初始

34、化结束DS18B20初始化DQ置1D0清零,发复位脉冲延时600usDQ置1图4-2 DS18B20初始化流程图DS18B20初始化函数void Init_DS18B20(void)unsigned char x=0;DQ = 0; /单片机将DQ拉低delay_18B20(80); /精确延时 大于 480usDQ = 1; /拉高总线delay_18B20(14);x=DQ;delay_18B20(20);/*ds18b20读一个字节*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i

35、=8;i0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;delay_18B20(4);return(dat);温度测量的结果以二进补码形式来存放,分辨力12位的测量结果用带5个符号的16位二进制格式来表示,高低8位分别存储在两个RAM单元中,前面5位S代表符号位,DS18B20函数的作用就是完成这一过程的 8位数据送完否?DS18B20写入结束延时15usDQ置1设置为恢复状态写入一位数据延时15usDQ清零,将DQ总线电平拉低设置串行位数为8DS18B20写开始N 图4-3DS18B20写字节流程图DS18B20写函数void

36、 setds18b20(unsigned char TH,unsigned char TL,unsigned char RS)Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0x4E);WriteOneChar(TH); /写入想设定的温度报警上限WriteOneChar(TL); /写入想设定的温度报警下限WriteOneChar(RS); LCD上电时,都必须按照一定的时序对LCD进行初始化操作,主要任务是设置LCD的工作方式,显示状态,清屏,输入方式,光标位置等。LCD初始化程序void LCD_Initial()Lc

37、dEn=0;LCD_Write(LCD_COMMAND,0x38); /8位数据端口LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /开启显示, 无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC递增, 画面不动/*void GotoXY(unsigned char x, unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y

38、=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);void Print(unsigned char *str)while(*str!=0)LCD_Write(LCD_DATA,*str);str+;void LCD_Print(unsigned char x, unsigned char y, unsigned char *str)GotoXY(x,y);Print(str);功能设置命令调用写入指令到LCD子程序开始子程序返回调用写入指令到LCD子程调用写入指令到LCD子程设置显示状态清屏设定工作方式调用写入指令到LCD子程设置输入方式图4-3LCD初始化流程图要

39、想把显示字符显示在某一指定位置,就必须先将显示数据写在相应的DDRAM地址中,写数据操作函数就是完成这一过程的函数开始当RS=1时,选择数据寄存器把显示数据送至P0口读/写标志位R/W=0时,进行写操作LCD使能信号E至高电平后再过两个时钟周期至低电平,产生一个下降沿信号,使LCD写入显示数据图4-4LCD写数据流程图void LCD_Wait(void) LcdRs=0; /RS=0表示选择指令寄存器LcdRw=1;_nop_();/RW=1表示进行读操作LcdEn=1;_nop_(); /在EN为下降沿的时候锁存据 while(DBPort&0x80) LcdEn=0; _nop_();

40、_nop_() LcdEn=1;_nop_(); _nop_(); LcdEn=0;LCD要能读写数据,必须对LCD进行读写操作,读操作时,先设置RS和R/W状态,在设置E信号为高,这时从数据口读取数据,写操作时,使能E信号下降沿有效读/写标志位R/W=0时,进行写操作当RS=0时,选择指令寄存器开始子程序返回调用延时子程序LCD使能信号E至高电平后再过两个时钟周期至低电平,产生一个下降沿信号,往LCD写入指令代码,LCD执行命令把指令数据送至P0口图4-5LCD读写操作流程图 LCD写指令函数#define LCD_COMMAND#define LCD_DATA#define LCD_CLE

41、AR_SCREEN / 清屏#define LCD_HOMING / 光标返回原点void LCD_Write(bit style, unsigned char input)LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_(); LcdEn=1;_nop_(); LcdEn=0;_nop_();LCD_Wait();/设置显示模式*#define LCD_SHOW/显示开#define LCD_HIDE/显示关 #define LCD_CURSOR/显示光标#define LCD_NO_CURSOR/无光标 #define LCD_FLASH/光标闪动#define LCD_NO_FLASH/光标不闪动void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);#

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号