液晶温度显示温度控制器设计_单片机设计.docx_第1页
液晶温度显示温度控制器设计_单片机设计.docx_第2页
液晶温度显示温度控制器设计_单片机设计.docx_第3页
液晶温度显示温度控制器设计_单片机设计.docx_第4页
液晶温度显示温度控制器设计_单片机设计.docx_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

键入文字键入文字液晶显示温度控制器的设计目录目录1第1章 概述21.1概述22.1设计思路22.2总体设计框图3第3章 各元器件介绍43.1 stc89c52rc简介43.2 ds18b20单总线数字温度计温度器简介63.3 液晶显示模块93.3.1 概述93.3.2 模块引脚说明93.3.3功能设定指令10第4章 各模块电路设计及分析114.1电源电路114.2系统整体硬件电路设计124.2.1复位电路的工作原理124.2.2晶振电路134.3 显示电路的设计135.2 ds18b20数据采集及转化算法155.2.1 初始化程序155.2.2 数据采集及算法转化165.3读、写时序子程序195.4 显示程序20第6章设计总结21附录a:系统原理框图24附录d:汇编程序25第1章 概述1.1概述温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于冶金、化工、机械、食品等领域。温度控制是工业生产过程中经常遇到的过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的。温度控制系统广泛应用于社会生活的各个领域,在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制 ,常用的控制电路根据应用场合和所要求的性能指标有所不同 , 在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。采用数字温度传感器ds18b20,因其内部集成了a/d转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器ds18b20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于ds18b20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器ds18b20做成探头,探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器ds18b20进行范围的温度检测。采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。第2章 设计思路及框图2.1设计思路先说测温部分:考虑到测温方案有很多种,包括电阻式测温、热电偶测温等等。而由于外界诸多因素的变化,由分立元件所搭建的电路会受到各种各样的干扰而导致测量结果的偏差,比如电阻会因温度升高而阻值降低,三极管在发热状态下基极电流会升高等等。这会带来测量误差,从而导致一系列负面响应。考虑到这些问题,方案最终被定在了集成温度测量传感器ds18b20上。ds18b20是美国dallas公司生产的集成温度传感器。它将测温、处理及输入输出等模拟+数字电路集成在一块形似三极管的三端芯片上,体积小巧、功能强大,且数据的输入输出只需要一跟端口线,并且可在一根总线上并联多个芯片以实现多点测温。用之与单片机结合简直是温度检测的不二选择。而显示部分也有许多方案可供选择,但考虑到其价格及普遍使用程度,最后用了lcd1602,采用字符型液晶显示器1602,液晶显示器以其微功耗、体积小、显示内丰富、使用方便等诸多优点,在通信、仪器仪表、电子设备等低功耗应用系统中得到越来越广泛的应用。控制器方面,自然是使用stc89c52了,实惠够用。2.2总体设计框图温度计电路设计总体设计方框图如图1-1所示,控制器采用单片机stc89c52,温度传感器采用ds18b20,用lcd以串口传送数据实现温度显示。stc89c52单片机控制器复位电路晶振电路lcd1602液晶显示ds18b20温度传感器图2-1 总体设计框图第3章 各元器件介绍3.1 stc89c52rc简介图3-1 stc89c52rcat89c52为8 位通用微处理器,采用工业标准的c51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主ic 内部寄存器、数据ram及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号ir的接收解码及与主板cpu通信等。主要管脚有:xtal1(19 脚)和xtal2(18 脚)为振荡器输入输出端口,外接12mhz 晶振。rst/vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。vcc(40 脚)和vss(20 脚)为供电端口,分别接+5v电源的正负端。p0p3 为可编程通用i/o 脚,其功能用途由软件定义,在本设计中,p0 端口(3239 脚)被定义为n1 功能控制端口,分别与n1的相应功能管脚相连接,13 脚定义为ir输入端,10 脚和11脚定义为i2c总线控制端口,分别连接n1的sdas(18脚)和scls(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板cpu 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。 p0 口p0 口是一组8 位漏极开路型双向i/o 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的 方式驱动8 个ttl逻辑门电路,对端口p0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在flash 编程时,p0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 p1 口p1 是一个带内部上拉电阻的8 位双向i/o 口, p1 的输出缓冲级可驱动(吸收或输出电流)4 个ttl逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。与at89c51 不同之处是,p1.0 和p1.1 还可分别作为定时/计数器2 的外部计数输入(p1.0/t2)和输入(p1.1/t2ex)。p2 口p2 是一个带有内部上拉电阻的8 位双向i/o 口,p2 的输出缓冲级可驱动(吸收或输出电流)4 个ttl逻辑门电路。对端口p2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。在访问外部程序存储器或16 位地址的外部数据存储器(例如执行movx dptr 指令)时,p2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行movx ri 指令)时,p2 口输出p2 锁存器的内容。flash 编程或校验时,p2亦接收高位地址和一些控制信号。 p3 口p3 口是一组带有内部上拉电阻的8 位双向i/o 口。p3 口输出缓冲级可驱动(吸收或输出电流)4 个ttl逻辑门电路。对p3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的p3 口将用上拉电阻输出电流(iil)。 p3 口除了作为一般的i/o 口线外,更重要的用途是它的第二功能p3 口还接收一些用于flash 闪速存储器编程和程序校验的控制信号。 rst复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将使单片机复位。 ale/prog当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ale 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ale 脉冲。对flash 存储器编程期间,该引脚还用于输入编程脉冲(prog)。如有必要,可通过对特殊功能寄存器(sfr)区中的8eh 单元的d0 位置位,可禁止ale 操作。该位置位后,只有一条movx 和movc指令才能将ale 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale 禁止位无效。 psen程序储存允许(psen)输出是外部程序存储器的读选通信号,当at89c52 由外部程序存储器取指令(或数据)时,每个机器周期两次psen 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次psen信号。 ea/vpp外部访问允许。欲使cpu 仅访问外部程序存储器(地址为0000hffffh),ea 端必须保持低电平(接地)。需注意的是:如果加密位lb1 被编程,复位时内部会锁存ea端状态。如ea端为高电平(接vcc端),cpu 则执行内部程序存储器中的指令。 flash 存储器编程时,该引脚加上+12v 的编程允许电源vpp,当然这必须是该器件是使用12v 编程电压vpp。 xtal1振荡器反相放大器的及内部时钟发生器的输入端。 xtal2振荡器反相放大器的输出端。 p3口引脚第二功能定义标号引脚第二功能说明p3.010rxd串行输入口p3.111txd串行输出口p3.212/into外部中断0p3.313/int1外部中断1p3.414t0定时器/计数器0外部输入口p3.515t1定时器/计数器1外部输入口p3.616/we外部数据存储器写脉冲p3.717/rd外部数据存储器读脉冲3.2 ds18b20单总线数字温度计温度器简介温度作为一种最基本的环境条件参数,与工业、农业、养殖业的生产以及医学乃至人们的日常生活都是紧密相关的。因此,对于温度的测量方法与测温装置的研究就凸显得非常重要。由单片机与温度传感器构成的测温系统可广泛应用于很多领域。本文通过对单总线数字集成温度传感器ds18b20的特点、工作原理和使用方法的讨论,结合对单片机at89s52的编程实现温度的采集。大多单片机接口输入的信号是数字信号,或带有a/d 转换的高端单片机也可输入模拟信号。由单片机获取非电信号的温度信息,必须通过温度传感器。传统的温度测量多以热敏电阻作为温度传感器。但是,热敏电阻的可靠性较差、测量温度精度低,而且还需经a/d转换成数字信号后才能由单片机进行处理。因此,使用数字温度传感器可简化硬件设计、方便单片机读取数据、节约成本。设计单片机数字温度计需要考虑以下3 个方面:(1)温度传感器芯片的选择;(2)单片机和温度传感器的接口电路设计;(3)控制温度传感器实现温度信息采集以及数据传输的软件ds18b20 是美国达拉斯(dallas)公司的单线数字温度传感器芯片,与传统的热敏电阻不同,dsl8b20 可直接将被测温度转换为串行数字信号,供单片机处理。通过对dsl8b20 编程可以实现912 位的温度读数,并可分别在93.75ms 和750ms 内完成9 位和12 位的数字量。其测温范围55125,最大分辨率为0.0625,在1085范围内其测温准确度为0.5。ds18b20 具有体积小、功耗低、抗干扰能力强、易与微处理器连结等特点,而且它无需任何外围硬件即可方便地进行温度测量,与单片机交换信息仅需要一根i/o 口线,其读写及温度转换的功率也可来源于数据总线,而无需额外电源。另外,每片dsl8b20 都设有唯一的产品序列号,存放在它的内部rom 中,单片机通过简单的协议就能识别这个序列号。因此,多个dsl8b20 可以挂接于同一条单线总线上,特别适合构成多点温度测控系统。ds18b20 性能特点(1)独特的单线接口,仅需1 个i/o 口引脚即可通信,无需变换其它电路,直接输出被测温度值的数字信号;(2)多点(multidrop)能力使分布式温度检测应用得以简化;(3)不需要外部元件;(4)既可用数据线供电,也可采用外部电源供电;(5)零待机功耗,不需备份电源;(6)测量范围为55+125,固有测温分辨率为0.5;(7)通过编程可实现912 位的数字读数方式;(8)温度数字量转换时间200ms(典型值);(9)用户可定义非易失性的温度告警设置;(10)警告搜索命令能识别和寻址温度在编定的极限之外的器件(温度警告情况);(11)应用范围包括恒温控制、工业系统、消费类产品、温度计或任何热敏系统2。预处理:ds18b20 采用3 脚to-92 封装或8 脚soic 封装,其外部形状及管脚如图.其中gnd 为地,dq 为数据输入/输出端,该脚为漏极开路输出,常态下呈高电平,可选用的vdd 引脚,不用时应接地。soic 封装的nc 为空引脚。ds18b20测温原理ds18b20 的读写时序和测温原理与ds1820 相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 ds18b20 测温原理如图3 所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2 的脉冲输入。计数器1 和温度寄存器被预置在55所对应的一个基数值。计数器1 对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1 的预置值减到0 时,温度寄存器的值将加1,计数器1 的预置将重新被装入,计数器1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2 计数到0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3 中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1 的预置值。图3: ds18b20 测温原理框图3.3 液晶显示模块3.3.1 概述显示模块采用了型号为1602的lcd。它体积小、功耗低、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中得到广泛的应用。它分为带背光和不带背光两种,基控制器大部分为hd44780.本设计中应用的是带背光的1602,带背光的比不带背光的厚,但两者在应用中并无差别。 1602lcd主要技术参数:显示容量:162个字符;芯片工作电压:4.55.5v;工作电流:2.0ma(5.0v);模块最佳工作电压:5.0v;字符尺寸:2.954.35(wh)mm。内含复位电路,提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能,有80字节显示数据存储器ddram,内建有160个5x7点阵的字型的字符发生器cgrom,8个可由用户自定义的5x7的字符发生器cgram。3.3.2 模块引脚说明图2-2液晶接口3.3.3功能设定指令功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下: 位名设置 dl 0=数据总线为4位 1=数据总线为8位 n0=显示1行 1=显示2行 f0=57点阵/每字符 1=510点阵/每字符 1602采用标准的16脚接口,其中:第1脚:vss为地电源第2脚:vdd接5v正电源第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度第4脚:rs为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:r/w为读写信号线,高电平时进行读操作,低电平时进行写操作。当rs和rw共同为低电平时可以写入指令或者显示地址,当rs为低电平rw为高电平时可以读忙信号,当rs为高电平rw为低电平时可以写入数据。第6脚:e端为使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。第714脚:d0d7为8位双向数据线。第15脚:背光电源正极第16脚:背光电源负极第4章 各模块电路设计及分析4.1电源电路本设计以stc89c52rc单片机为中心,分别设计了晶振电路、lcd液晶显示电路和复位电路。图3-2 lm78稳压器在实际应用中,应在三端集成稳压电路上安装足够大的散热器(当然小功率 的条件下不用)。当稳压管温度过高时,稳压性能将变差,甚至损坏。当制作中需要一个能输出1.5a以上电流的稳压电源,通常采用几块三端稳压电路并联起来,使其最大输出电流为n个1.5a,但应用时需注意:并联使用的集成稳压电路应采用同一厂家、同一批号的产品,以保证参数的一致。另外在输出电流上留有一定的余量,避免个别集成稳压电路失效时导致其他电路的连锁烧毁。在lm78 * 、lm79 * 系列三端稳压器中最常应用的是to-220 和to-202 两种封装。这两种封装的图形以及引脚序号、引脚功能如附图所示。图中的引脚号标注方法是按照引脚电位从高到底的顺序标注的。这样标注便于记忆。引脚为最高电位,脚为最低电位,脚居中。从图中可以看出,不论正压还是负压,脚均为输出端。对于lm78*正压系列,输入是最高电位,自然是脚,地端为最低电位,即脚,如附图所示。对与lm79*负压系列,输入为最低电位,自然是脚,而地端为最高电位,即脚。 4.2系统整体硬件电路设计4.2.1复位电路的工作原理52单片机要复位只需要在第9引脚接个高电平持续2us就可以实现,在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。在电路图中,电容的的大小是10uf,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5v,所以充电到0.7倍即为3.5v),需要的时间是10k*10uf=0.1s。也就是说在电脑启动的0.1s内,电容两端的电压时在03.5v增加。这个时候10k电阻两端的电压为从51.5v减少(串联电路各处电压之和为总电压)。所以在0.1s内,rst引脚所接收到的电压是5v1.5v。在5v正常工作的51单片机中小于1.5v的电压信号为低电平信号,而大于1.5v的电压信号为高电平信号。所以在开机0.1s内,单片机系统自动复位(rst引脚接收到的高电平信号时间为0.1s左右)。在单片机启动0.1s后,电容c两端的电压持续充电为5v,这是时候10k电阻两端的电压接近于0v,rst处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1s内,从5v释放到变为了1.5v,甚至更小。根据串联电路电压为各处之和,这个时候10k电阻两端的电压为3.5v,甚至更大,所以rst引脚又接收到高电平。单片机系统自动复位。复位电路的原理是单片机rst引脚接收到2us以上的电平信号,只要保证电容的充放电时间大于2us,即可实现复位,所以电路中的电容值是可以改变的。按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。4.2.2晶振电路stc89c52虽然内部有震荡电路,但要形成时钟,必须外部附加电路。stc89c52单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的震荡电路,在x1、x2引脚上外接定时元件,内部的震荡电路变会产生自激震荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。震荡晶体选择可在1.2mhz到12mhz之间选择。电容值无严格要求,但电容取值对震荡频率输出的稳定性、大小、震荡电路起震速度有少许影响,c1、c2可在20pf到100pf之间取值,但在60pf到70pf时震荡器会有较高的频率稳定性。所以在本设计中,震荡晶体选择11.0592mhz,电容选择30pf。4.3 显示电路的设计液晶显示器是一种将液晶显示器件,连接器件,集成电路,pcb线路板,背光源,结构器件装配在一起的组件。lcd液晶显示模块采用lcd1602型号,具有很低的功耗,正常工作时电流仅2.0ma/5.0v。通过编程实现自动关闭屏幕能够更有效的降低功耗。lcd1602分两行显示,每行可显示多达16个字符。lcd1602液晶模块内部的字符发生存储器(cgrom)已经存储了160个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制,并且还能利用空余的空间自定义字符。其接线如下图所示:图3-3液晶显示电路第5章 系统软件设计5.1 软件总体模块本设计单片机需要处理的信息有:温度采集、湿度采集、液晶显示、控制策略。所以程序就包括:温度采集子程序、湿度采集子程序、显示子程序、控制策略等。 图 5-1 程序模块组成图 5.2 ds18b20数据采集及转化算法5.2.1 初始化程序系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。初始化程序如下:;- ds18b20复位初始化子程序 - reset_1820: ;复位(有具体的时序要求) setb dq nop clr dq ; ;主机发出延时537微秒的复位低脉冲 mov r1,#3 dly: mov r0,#107 djnz r0,$ djnz r1,dly ; ;然后拉高数据线 setb dq nop nop nop ; mov r0,#25h t2: jnb dq ,t3 ;等待ds18b20回应 djnz r0, t2 jmp t4 ; t3: setb flag ;置标志位,表示ds1820存在 jmp t5 ; t4: clr flag ;清标志位,表示ds1820不存在 jmp t7 ; t5: mov r0,#117 t6: djnz r0,t6 ;时序要求延时一段时间 ; t7: setb dq ret ;复位子程序5.2.2 数据采集及算法转化由于ds18b20 单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要.系统对ds18b20的各种操作必须按协议进行.操作协议为:初始化ds18b20(发复位脉冲)发rom 功能命令发存储器操作命令处理数据.主机控制ds18b20完成温度转换的程序必须经过3个步骤:初始化、rom操作指令、存储器操作指令.假设单片机系统所用的晶振频率为12mhz,根据ds18b20的初始化时序、写时序和读时序,分别编写3个子程序:init为初始化子程序,write 为写(命令或数据)子程序,read为读数据子程序,所有的数据读写均由最低位开始.主程序的主要功能是负责温度的实时显示、读出并处理ds18b20的测量温度值,温度测量每1s 进行一次,写入读出程序如下:;- 写入ds18b20子程序 - write_1820: ;写入ds18b20(有具体的时序要求) mov r2,#8 ;一共8位数据 clr c wr1: clr dq ;总线低位,开始写入 mov r3,#6 djnz r3,$ ;保持16微秒以上 rrc a ;把字节data分成8个bit环移给c mov dq, c ;写入一个bit mov r3,#23 djnz r3,$ ;等待 setb dq ;重新释放总线 nop djnz r2,wr1 ;写入下一个bit setb dq ret ;写入子程序 ;- 读出ds18b20子程序 - read_1820: ; 将温度低位、高位、th、tl从ds18b20中读出 mov r4,#4 ;mov r4,#4 mov r1,#templ ; 存入25h、26h、27h、28h re0: mov r2,#8 ;数据一共有8位 re1: clr c setb dq nop nop clr dq ;读前总线保持为低 nop nop nop setb dq ;开始读总线释放 mov r3,#9 djnz r3,$ ;延时18微妙 mov c, dq ;从总线读到一个bit mov r3,#23 ; djnz r3,$ ;等待50微秒 rrc a ;把读得的位价值环移给a djnz r2,re1 ;读下一个bit mov r1,a inc r1 ; r1内数据递增 djnz r4,re0 ret ;读出子程序分析:dsl8b20 可直接将被测温度转换为串行数字信号,供单片机处理。通过对dsl8b20 编程可以实现912 位的温度读数,并可分别在93.75ms 和750ms 内完成9 位和12 位的数字量。其测温范围55125,最大分辨率为0.0625,在1085范围内其测温准确度为0.5。ds18b20采用一线总线传输的形式可以直接把数字量和stc89c52单片机进行通信译码。程序开始初始化,再经ds18b20、rom操作指令识别判断,再进行存储操作指令,转化处理,读取当前温度值。5.2.3读出温度子程序 读出温度子程序的主要功能是读出ram中的2字节,读出温度的低八位和高八位,在读出时需进行crc校验,校验有错时不进行温度数据的改写。其程序流程图如下: 5-2读温度程序流程图5.3读、写时序子程序读写的程序是本次设计中的重点和难点,通过我们对其时序的分析,从而写出高效的程序。 图5-3 写1,0时序图5-4读0,1时序图5-5写时序子程序流程图 5.4 显示程序 此函数实现的对数码管显示的处理,其亮点在于可以直接对数码管进行操作,其本身是个两变量函数,第一个变量是要开通的位选,第二个变量是要显示的数据,这样我们可以直接方便而又简单直观的对数码管进行操作。程序流程图如下。图5-6显示数据刷新流程图第6章 设计总结在本次设计的过程中,我发现很多的问题,这次设计让我成长了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,我们都知道在编写程序之前,最重要的画程序流程图。流程图反应了程序的思想,结构,步骤。而画流程图必须要了解硬件设计者的想法以及设计方案。先把初步的流程图绘制出来。接下来就是构思详细的流程图。由于使用的52系列单片机,是学习中经常使用的芯片,比较熟悉。因此结合设计好的protel图,将使用到的引脚摘出来,结果了解分析,清楚了本次编写程序时主要用到的单片机的i/o口,定时器/计数器等功能。此时主程序的流程图就很容易绘制出来了。本次设计使用了传感器ds18b20。ds18b20内置rom区,在工作之前要求单片机写数据,而且时序要求严格,才能读出数据。第一次接触这个传感器,认真学习搜集来的资料,结合本次设计的需要,在已有的程序基础进行修改。从这次的设计中,我真真正正的意识到,在学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。第7章 参考文献1邱关源.电路 第五版.高等教育出版社.2田立,代方震.2007. 51单片机c语言程序设计快速入门.北京.人民邮电出版社3李朝青.2005.单片机原理及接口技术(第3版).北京.北京航天航空大学出版社.4康华光.陈大钦.1999电子技术基础模拟部分(第4版)北京.高等教育出版社.5康华光.邹寿彬2000电子技术基础数字部分(第4版)北京.高等教育出版社.6郭天祥.编著.51单片机c语言教程入门,提高,开发.拓展全攻略7李忠国.陈刚.编著.单片机应用技能实训8刘南平.主编.朱凤芝.欧触灵.副主编.现代电子设计与制作技术9胡宴如.主编. 高频电子线路10杨翠南.杨碧石.主编 . 数字电子技术与逻辑设计教程11ds18b20数据手册。12余发山,王福忠.单片机原理及应用技术.徐州:中国矿业大学出版社,200313陈权昌 李兴富 单片机原理及应用. 广东:华南理工大学出版社,200714黄智伟. 凌阳单片机课程设计指导.北京:北京航空航天大学出版社,2006年15李光飞 .单片机课程设计实例指导 .北京:北京航空航天大学出版,200417 张友德.单片微型机原理、应用与实践m.上海:复旦大学出版社,199218 李华.mcs-51系列单片机实用接口技术m,北京:北京航空航天大学出版社19求是科技. 单片机典型模块设计实例导航. 北京:人民邮电出版社. 2005.820徐淑华, 程退安等.单片微型机原理及应用. 哈尔滨:哈尔滨工业大学出版社. 21孙余凯. 精选实用电子电路260例. 北京:电子工业出版社. 2007.622殷春浩, 崔亦飞. 电磁测量原理及应用. 徐州:中国矿业大学出版社. 2003.723lcd1602a数据手册附录a:系统原理框图附录b:流程图附录c:实物图附录d:汇编程序; temp_zh equ 24h ;实时温度值存放单元 templ equ 25h ;低温度值存放单元 temph equ 26h ;高温度值存放单元 temp_th equ 27h ;高温报警值存放单元 temp_tl equ 28h ;低温报警值存放单元 temphc equ 29h ;存十位数 bcd码 templc equ 2ah ;存个位数 bcd码;- k1 equ p2.1 k2 equ p2.2 k3 equ p2.3 k4 equ p2.4;- spk equ p3.4 relay equ p2.0 x equ 2fh ;lcd 地址变量;- rs equ p3.5 rw equ p3.6 e equ p3.7;- flag equ 20h.0 ;ds18b20是否存在标记 key_ud equ 20h.1 ;设定 key 的up与down 标记 dq equ p2.5;= 主程序 =main: acall set_lcd ;lcd初始化设置子程序 acall wr_thl ;将报警上下线写入暂存寄存器toop: acall reset_1820 ;18b20复位子程序 jnb flag,toop1 ;ds1820不存在 acall meu_ok ;显示ok菜单 acall re_thl ;把eerom里温度报警值拷贝回暂存器 acall temp_bj ;显示温度标记c jmp toop2toop1: acall meu_error ;显示error菜单 acall temp_bj ;显示温度标记 jmp $;-toop2: acall re_temp acall set_data acall temp_comp ;实际温度值与标记温度值比较子程序 acall p_key ;键扫描子程序 sjmptoop2; 读取温度数据子程序 re_temp: acall reset_1820 ;18b20复位子程序 jnb flag,toop1 ;ds1820不存在 mov a,#0cch ;跳过rom匹配 acall write_1820 ;写入子程序 mov a,#44h ;发出温度转换命令 acall write_1820 ;调写入子程序 acall reset_1820 ;调复位子程序 mov a,#0cch ;跳过rom匹配 acall write_1820 ;写入子程序 mov a,#0beh ;发出读温度命令 acall write_1820 ;写入子程序 acall read_1820 ;调用读入子程序 ret; 温度数据处理显示子程序 set_data: acall conv_temp ;处理温度 bcd 码子程序 acall disp_bcd ;显示区 bcd 码温度值刷新子程序 acall conv ;数据转换子程序 ret; 按键键扫描子程序 p_key: ;按键k1处理 jb k1,pk1 ; k1键未按,转到pk1处 acall spk_bz ;k1键按下,一声鸣响 jnb k1,$ ;等按键放开 mov dptr,#m_alax1 ;存m_alax1表 mov a,#1 acall lcd_print ;显示字符 acall look_alarm ;显示信息区 jb k3,$ ;等待k3按下 acall spk_bz ;一声鸣响 jmp pk2 ;转到标号 pk2处 pk1: ; 按键k2处理 jb k2,pk3 ;k2键

温馨提示

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

评论

0/150

提交评论