智能化仪器仪表课程设计基于51单片机的多路温度控制系统课程设计_第1页
智能化仪器仪表课程设计基于51单片机的多路温度控制系统课程设计_第2页
智能化仪器仪表课程设计基于51单片机的多路温度控制系统课程设计_第3页
智能化仪器仪表课程设计基于51单片机的多路温度控制系统课程设计_第4页
智能化仪器仪表课程设计基于51单片机的多路温度控制系统课程设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、 智能化仪器仪表课程设计题 目 基于51单片机的仓库温度控制系统 学 院 机械工程学院 专 业 测控技术与仪器 学生姓名 学 号 201 年级2012级 指导教师 2015年 6月 20日摘要:本设计为基于c52单片机的4路ds18b20、lcd1602显示、开关量控制系统,采用模块化、层次化设计。如今运用ds18b20数字式温度传感器测温度,省略模电转换,将数字信号直接送给单片机调用。采用lc1602液晶显示方式,使显示更加方便简介,接着使用单片机at89c51i/o口交流电机开和关,构建了一个集显示、检测与控制于一体的单片机应用系统。此外,该系统自行设计了一个5v稳压电源,不仅可在220v

2、交流中供电,而且能够接受5v电压直接供电。关键词:单片机;液晶显示;数字式温度传感器;开关量控制电路目录目录3第一章绪论11.1 课题的研究背景11.2 课题的研究内容及目标11.3 本文的结构组织1第二章 系统方案设计及论证22.1总体方案设计22.2方案比较与论证22.2.1采集电路22.2.2处理器选择32.2.3 显示部分3第三章 系统的电路设计与元器件介绍43.1 系统的电路设计43.1.1 最小系统电路43.1.2 温度采集电路53.1.3 控制系统电路53.1.4 显示系统电路63.1.5 报警电路63.2 元器件介绍73.2.1 单片机介绍73.2.1.1 单片机主要性能73.

3、2.1.2 单片机各引脚功能介绍73.2.1.3 单片机特殊功能寄存器介绍83.2.2 ds18b20简介93.2.2.1 ds18b20主要特性93.2.2.2 ds18b20内部结构103.2.3 lcd1602简介113.2.3.1lcd1602主要技术参数113.2.4 继电器简介14第四章 系统软件设计154.1 程序流程图154.2 程序设计164.2.1ds18b20的程序设计164.2.2lcd1602液晶的程序设计164.2.3主程序设计17总 结18附录一 原理图19附录二 仿真图20附录三 程序代码2130第一章 绪论1.1 课题的研究背景通过课程设计,使学生进一步加深理

4、解单片机的工作原理,通过实习制作掌握引入外部中断的方法及其中断服务程序的编程方法;掌握定时器的使用及其中断服务程序的编写方法;从而了解如何构成系统的主程序;通过实习制作掌握单片机应用系统的制作工艺及调试方法,进一步理解单片机系统设计及开发方法,从而使学生具备设计单片机应用系统的能力。1.2 课题的研究内容及目标基于单片机的4路温度采集控制系统,系统运行时,循环扫描显示对应的ds18b20温度传感器的温度,为了显示清晰,要求循环逐次显示温度;每隔10ms,采集一次温度;当温度高于20摄氏度后,单片机控制交流电机(电风扇)开始工作,当温度降到20度以下,控制交流电机停止工作。交流电机的开关,采用继

5、电器代替,所以单片机只需控制继电器的开断即可控制交流电机的工作与否。1.3 本文的结构组织本文的组织结构安排如下:第一章绪论,扼要阐明本课题的研究背景、研究目的、研究意义,以及要实现的目标。第二章系统设计方案及论证,通过分析论证,选出最合适的设计方案,介绍总体方案。第三章主要讲述整个体系硬件电路的设计及元器件的介绍,包括单片机的选择、各个器件的选择以及显示电路的设计。第四章是软件设计,基于前面的硬件系统,设计程序。第二章 系统方案设计及论证2.1总体方案设计at89c52根据课题要求实现,该系统主要由采集系统、显示系统和控制系统组成,以at89c52单片机为核心,设计。图2-1图:显示系统最小

6、系统报警系统采集系统控制系统图 2-1系统图2.2方案比较与论证2.2.1采集电路方案一:使用传统温度传感器。传统的温度检测大多以热敏电阻为传感器,采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻可靠性差,测量温度准确率低,对于1摄氏度的信号是不适用的,还得经过专门的接口电路转换成数字信号才能由微处理器进行处理。对于这类传感器,使用起来较麻烦,但价格较便宜。方案二:使用数字式温度传感器。数字温度传感器使用集成芯片,采用单总线技术,其能够有效的减小外界的干扰,提高测量的精度,同时,它可以直接将被测温度转化成串行数字信号供微机处理,接口简单,使数据传输和处理简单化。部分功能电路的集成

7、,使总体硬件设计更简洁,能 有效地降低成本,搭建电路和焊接电路时更快,调试也更方便简单化,这也就缩短了开发的周期使用起来方便,但价格昂贵。经过比较,从系统技术参数要求和功能仿真方面考虑,数字式温度传感器比传统温度器功能更全面,使用时更方便,仿真时也更简便,故选用方案二。本次设计采用市面上运用较为广泛的数字式温度传感器ds18b20。2.2.2处理器选择方案一:采用at89c52单片机作为处理器,能达到要求,但其内存过小,处理精度较低,不是最好的选择;方案二:采用ti公司的各种单片机,虽然能很好的达到设计的要求,但其成本过高,且程序较复杂,不适宜与本次设计。通过对比,方案一的at89c52的功能

8、完全能够符合题目的各个部分和发挥部分的设计,故选用方案一2.2.3 显示部分方案一:采用led数码管,其操作简单,显示直观。不仅程序的设计简易,而且对周围的环境要求很低,方便维护方案二:使用lcd液晶,它具有体积小、低功耗、显示丰富等优点。电路连接简单,价格比较高。总的来说,lcd液晶显示电路连接简单且能满足设计需求,又lcd1602上课时学过,不需再单独学习其他lcd显示程序编写要求,所以本设计选用lcd液晶显示。第三章 系统的电路设计与元器件介绍3.1 系统的电路设计整个设计的电路主要包括了最小系统电路、温度采集系统电路、控制系统电路及显示系统电路等几部分电路组成。3.1.1 最小系统电路

9、晶振电路和复位电路与单片机连接构成最小系统电路,如图3-1图3-1最小系统电路3.1.2 温度采集电路图3-2温度采集电路3.1.3 控制系统电路图3-3控制系统电路3.1.4 显示系统电路图3-4显示系统电路3.1.5 报警电路图3-5 报警电路3.2 元器件介绍3.2.1 单片机介绍3.2.1.1 单片机主要性能at89c52是由atmel公司生产的52单片机的一个型号。它具有高性能cmos8位、低电压的优点,使用了该公司的高密度、非易失性存储技术生产,完美兼容mcs-52指令系统,包括8位中央处理器和flash存储单元,at89c51功能强大、试用范围非常广。主要功能特性:引脚完全兼容m

10、cs-52产品具有4k字节的可重擦写flash闪存1000次擦写周期 2个读写中断口线全静态操作:0hz-24mhz三级加密程序存储器128*4字节内部ram 32可编程双向i/o线3个16位定时器/计数器2个外部中断源,共6个中断源可编程串行uart通道低功耗的空间和掉电模式软件设置睡眠和唤醒功能3.2.1.2 单片机各引脚功能介绍at89c52由40 脚双列直插包装的8 位通用微处理器组成,使用常用的c52内核,它主要用于会聚调整功能的控制。功能主要有对会聚主ic 内部寄存器、数据ram及外部接口等部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号ir的接收解码及与主板cpu通信等。

11、·p0 口:p0 口是8 位的漏极开路型双向的i/o 口,即为地址/数据总线复用口。如果被当作输出口,每位可以吸收电流的形式驱动8 个ttl逻辑门电路,对端口p0 写“1”时,起作用变为高阻抗输入。当需要访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,期间可以激活内部上拉电阻。在flash 编程时,p0 口负责接受指令字节,但是在程序校验的时候,需要输出指令字节,校验时需要外接上拉电阻。·p1 口:p1 是一个带在内部上拉电阻的8 位的双向i/o 口, p1 的输出缓冲级可驱动(吸取或输出电流)4 个ttl 逻辑门电路。对端口写“1”,经过

12、里面 的上拉电阻把端口拉至高电平,就可作输入口使用。作输入口用时,因为里面存在上拉电阻,某引脚被外部的信号拉低时会输出一个电流(iil)。与at89c51 不同之处是,p1.0 和p1.1 还有作为定时/计数器2 的外部计数输入(p1.0/t2)和输入(p1.1/t2ex)的功能,flash 编程和程序校验的时候,p1 接收低8 位地址。·p2 口:p2 是一个带有上拉电阻的8 位双向的i/o 口,p2 的输出缓冲级能够驱动(吸收或输出电流)4 个ttl 逻辑门电路。将端口p2写“1”,通过内部的上拉电阻来港的高水平,此时,可作为输入,作为输入使用时,因为内部上拉电阻,如果某个引脚被

13、外部信号拉低的时候就会输出一个电流(iil)。当访问外部程序存储器或16 位地址的外部数据存储器时,p2 口送出高8 位的地址数据。当访问8 位地址的外部数据存储器时,p2 口输出p2 锁存器的内容。编程或检查,p2也获得了很高的地址和控制信号。·p3 口:p3 口是一组带有内部上拉电阻的8 位双向i/o 口。p3 口输出缓冲级可驱动(吸收或输出电流)4 个ttl 逻辑门电路。对p3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的p3 口将用上拉电阻输出电流(iil)。p3 口除了作为一般的i/o 口线外,此外,它的第二功能p3 口还接收一些可以用于fla

14、sh 闪速存储器编程与程序校验的控制信号才是最重要的。3.2.1.3 单片机特殊功能寄存器介绍·数据存储器:at89c52 有256 个字节内部ram,80h-ffh 高128 个字节与特殊功能寄存器(sfr)地址是重复的,虽然物理上分开,但是高128字节的ram 与特殊功能寄存器的地址相同。当一条指令访问7fh 以上地址单元的时候,指令中使用不同的寻址方式,即为究竟是访问高128 字节ram 还是访问特殊功能寄存器是由寻址方式决定的。直接寻址方式对应的是访问特殊功能寄存器。·定时器0和定时器1:at89c52的定时器0和定时器1 的工作方式与at89c51 相同。

15、3;2定时器:定时器2是一个16位定时器/计数器。不仅仅可以当定时器用,而且可用作外部事件计数器,特殊功能的寄存器t2con的c/t2 位负责选择它的工作方式。定时器2一共有三种工作方式:捕获方式,向上或向下计数方式以及波特率发生器方式,t2con 的控制位来决定其工作方式。3.2.2 ds18b20简介ds18b20温度传感器是美国达拉斯(dallas)半导体公司推出的应用单总线技术的数字温度传感器5。该器件将半导体温敏器件、a/d转换器、存储器等做在一个很小的集成电路芯片上。本设计中温度传感器之所以选择单线数字器件ds18b20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:(

16、1)系统的特性:测温范围为-55+125 ,测温精度为士0.5;温度转换精度912位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支ds18b20的体积与普通三极管相差无几,价格只有十元人民币左右。(3)系统复杂度:由于ds18b20是单总线器件,微处理器与其接口时仅需占用1个i/o端口且一条总线上可以挂接几十个ds18b20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减

17、少接线的数量,降低系统的复杂度,减少工程的施工量。(4)系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为ds18b20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。ds18b20温度传感器只有三根外引线:单线数据传输总线端口dq ,外供电源线vdd,共用地线gnd。ds18b20有两种供电方式:一种为数据线供电方式,此时vdd接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长6。这种情况下,用单片机的一个i/o口来完成对ds18b20总线的上拉。另一种是外部供电方式(vdd接+5v),相应

18、的完成温度测量的时间较短。3.2.2.1 ds18b20主要特性 ds18b20的引脚图如图3-6所示。独特的单线接口仅需要一个端口引脚进行通信;多个ds18b20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。ds18b20的引脚功能描述如表3-1所示。图3-6 ds18b20的引脚排列表3-1 ds18b20引脚功能描述序号名称引脚功能描述1gnd地信号2dq

19、数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3vdd可选择的vdd引脚,当工作于寄生电源时,该引脚必须接地3.2.2.2 ds18b20内部结构 ds18b20的内部框图如图3-7所示。64位rom存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(th)和下线警报触发(tl)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件内部保留使用。第八字节含有循环冗余码(crc )。图3-7 ds18b20的内部框图该

20、技术采用单根信号线,既可传输时钟,也能传输数据,而且是双向传输。适用于单主机系统,主机能够控制一个或多个从机设备,通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能释放该线,而让其他设备使用。单线通常要求外接一个5k的上拉电阻,这样当该线空闲时,其状态为高电平。主机和从机之间的通讯分成三个步骤:初始化单线器件、识别单线器件和单线数据传输7。单线1wire协议由复位脉冲、应答脉冲、写0、写1、读0、读1,这几种信号类型实现,这些信号中除了应答脉冲其他都由主机发起,并且所有指令和数据字节都是低位在前。ds18b20直接将测量温度值转化为数字量提交给单片机,工作时必须严格遵守单总线器

21、件的工作时序。表3-2 部分温度值与ds18b20输出的数字量对照表温度值/ 数字输出(二进制) 数字输出(十六进制) +125 0000 0111 1101 0000 07d0h+85 0000 0101 0101 0000 0550h+25.625 0000 0001 1001 0001 0191h+10.125 0000 0000 1010 0010 00a2h+0.5 0000 0000 0000 1000 0008h0 0000 0000 0000 0000 0000h-0.5 1111 1111 1111 1000 fff8h-10.125 1111 1111 0110 1110

22、ff5eh-25.625 1111 1111 0110 1111 ff6fh-55 1111 1100 1001 0000 fc90h 3.2.3 lcd1602简介1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5x7或者5x11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义cgram,显示效果也不好)。1602lcd是指显示的内容为16x2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。3.2.3.1

23、lcd1602主要技术参数管脚:1602采用标准的16脚接口,其中:第1脚:gnd为电源地第2脚:vcc接5v电源正极第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10k的电位器调整对比度)。第4脚:rs为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:rw为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:e(或en)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第714脚:d0d7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光

24、正极,16脚背光负极。特性:3.3v或5v工作电压,对比度可调内含复位电路提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能有80字节显示数据存储器ddram内建有192个5x7点阵的字型的字符发生器cgrom8个可由用户自定义的5x7的字符发生器cgram特征应用:微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。操作控制注:关于e=h脉冲开始时初始化e为0,然后置e为1。字符代码0x000x0f为用户自定义的字符图形ram(对于5x8点阵的字符,可以存放8组,5x10点阵的字符,存放4组),就是cgram了。0x200x7f为标准的ascii码,0

25、xa00xff为日文字符和希腊文字符,其余字符码(0x100x1f及0x800x9f)没有定义。以下是1602的16进制ascii码表地址:读的时候,先读上面那行,再读左边那列,如:感叹号!的ascii为0x21,字母b的ascii为0x42(前面加0x表示十六进制)。指令码:功能令:rsr/wd7d6d5d4d3d2d1d0说明清显示0000000001将ddram填满"20h",并且设定ddram的地址计数器(ac)到"00h"归位000000001*设定ddram的地址计数器(ac)到"00h",并且将游标移到开头原点位置;这个

26、指令不改变ddram 的内容显示开关控制指令0000001dcbd=1: 整体显示 on,c=1: 游标on,b=1:游标位置反白允许进入模式设置指令00000001i/dsi/d=1,光标或闪烁向右移动,ac增加1。i/d=0,光标或闪烁向左移动,ac减少1,s整个显示移动光标或显示移位指令000001s/cr/l*光标或显示移位指令可使光标或显示在没有读写数据的情况下,向左或向右移动,指令不改变ddram 的内容功能设定00001dlnf*dl=0/1:4/8位数据,n=0/1,单行/双行显示,f=0/1,5*8/5*10点阵显示模式设置cgram地址0001ac5ac4ac3ac2ac1

27、ac0cgram地址设置指令设置cgram地址指针,设定ddram地址0010ac5ac4ac3ac2ac1ac0ddram地址设置指令设置ddram地址。一行地址范围00h4fh,两行ddram地址第一行00h27h,第二行40h67h,加上高2位,一行:80ha7h,二行:c0he7h读忙标志和地址01bfac6ac5ac4ac3ac2ac1ac0bf:忙标志位,bf=1,模块正在进行内部操作,此时模块不接受任何外部指令和数据。bf=0,模块可以接受外部的指令和数据;同时可以读出地址计数器(ac)的值。写ram指令10d7d6d5d4d3d2d1d0将数据d7-d0写入到内部的ram (d

28、dram/cgram/iram/gram),将用户自定义的字符写入cgram中,d7d5为000,d4d0为5点的字模数据读ram指令11d7d6d5d4d3d2d1d0从内部ram读取数据d7d0(ddram/cgram/iram/gram)3.2.4 继电器简介继电器(英文名称:relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护

29、、转换电路等作用。电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。继电器一般有两股电路,为低压控制电路和高

30、压工作电路。其结构图如图3-8所示。图3-8 电磁继电器结构图第四章 系统软件设计4.1 程序流程图在程序进行初始化后,开始反复执行如图4-1所示流程的程序。图4-1 程序流程图4.2 程序设计4.2.1 ds18b20的程序设计ds18b20的程序中主要包含以下函数:extern void ds18b20_init(void); /初始化extern unsigned char ds18b20_readdata(void); /读ds18b20的温度数据extern void ds18b20_writecommand(unsigned char command);/向ds18b20写命令字e

31、xtern void temperature_process(unsigned char,unsigned char); /数值处理,把读回的温度分解成整数和小数部分,并转换成asic码xiaoshu_temp5,zhen_temp4; extern unsigned char *read_rom(void); /读ds18b20中romextern bit match_rom(unsigned char *rom); /匹配rom具体程序内容见附录三中。4.2.2 lcd1602液晶的程序设计lcd1602的程序中主要包含以下函数:/*功能:写lcd函数 */void lcd_write(b

32、it style,unsigned char input);/*功能:lcd初始化 */void lcd_init(void);/*功能:显示位置设置 *参数:x-行;y-列 */void gotoxy(unsigned char x,unsigned char y);/*功能:lcd显示函数 *参数:str-要显示的字符串指针 */void print(unsigned char *str);void print_char(uchar );/*功能:lcd清屏函数 void clrscreen(void);具体程序内容见附录三中。4.2.3 主程序设计在主程序中,实现了对温度的巡检,并把实时

33、测到的温度显示在液晶显示屏上,在很多领域还是比较实用的。每一片ds18b20都有各自的固定的序列号,在仿真中,事先设定好各个ds18b20的序列号,将其写进程序中,依次进行匹配,从而实现巡检。主程序具体内容见附录三中。总 结通过不懈的努力,终于完成了我的课程设计。在我开始做课程设计之前,我一直片面的觉得课程设计只是对大学这几年来所学的专业知识的简单的总结,但是在实践的过程中我发现我错了,因为课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的以一种提高。通过课程设计使我明白了我学到的知识只是知识宝库中的冰山一角,还有许多要学习的地方。原来我总是感觉到已经把所有的东西都学到手了,什么都明

34、白了,有些眼高手低。通过我在课程设计的实践过程,我懂得了活到老学到老这句名言的真正意义,学习是一个循序渐进的过程,不可能一蹴而就,不管是在以后的工作中、或者生活中都不能停止学习,不断的用知识武装自己,让自己全面发展,更能适应这个科技文化高速发展的世界。课程设计的过程,让我养成了独立思考的习惯,培养了我实在实际操作中动手的能力,我领悟到了在实践过程中摸索的困难与最终成功时的喜悦,这些对于我的信心或者是工作能力来说都是极大的鼓励与肯定,相信这些会对未来的工作和生活中有非常重要的影响。虽然我的课程设计是有些缺陷的,但我觉得在此过程中我收获了很多,最大的收获就是在生产实习的设计过程中所学到的财富,他会

35、是我终身受益。在课程设计的过程中,我还深深体会到交流和相互讨论的重要性。向老师请教,就能够时刻确保在大的方向上我是朝对的方向走;与同学讨论,可以集思广益、可以迸发灵感,收获新方法。思想和信息的传递,确保了我的生产实习得以顺利完成。另外,我还总结出一个结论:知识要想实现其价值,必须由实践来完成!再次感谢老师和同学的指导。附录一 原理图附录二 仿真图附录三 程序代码主程序#include <main.h>#include <18b20.h>#include <lcd.h>/#include <485.h>sbit warning=p35;sbit g

36、reenled=p36;/485 收发控制/uchar flag1; / sign of the result positive or negativeuchar j;int temper4;uchar code str4_sht11=" max: min: "sbit k1=p30;/setsbit k2=p31;/+sbit k3=p32;/-sbit sound=p17;char max=40;char min=10;uchar change_flag;uchar flag;void delay(uint count) /delay uint i; while(cou

37、nt) i=200; while(i>0) i-; count-; void serial_int() tmod=0x01;/t1工作在方式2 th0=0xf0;/2400bit/s tl0=0x0f; tr0=1;/打开计数器开始计数 et0=0;void timer_isr() interrupt 1 th0=0xf0; tl0=0x0f;sound=sound;void key1()if(k1=0) change_flag+; if(change_flag>2) change_flag=0; while(k1=0);void key2()if(k2=0) if(change_

38、flag=1) max+;if(change_flag=2) min+; while(k2=0);void key3()if(k3=0) if(change_flag=1) max-; if(change_flag=2) min-; while(k3=0);void key()/按钮 key2();key1();key3();void main() uchar i,a=1,b=1; warning=0; serial_int(); greenled=1; lcd_init(); for(i=0;i<4;i+) tmpchange(i); temperi=tmp(i); display_1

39、602(); while(1) if(change_flag=0)if(a=1) b=1; a=0; write_lcdcom(0x01); /显示清屏 display_1602(); tmpchange(j); for(i=0;i<100;i+) key(); temperj=tmp(j); lcd_printf(j,temperj,0xcd);/显示 j+; if(j>3) j=0; if(temperj>max)|(temperj<min)&&(temperj<850) warning=1;greenled=0;/nn=0;ea=1; els

40、e ea=0;warning=0; greenled=1; else key(); if(b=1) a=1; b=0; write_lcdcom(0x01); /显示清屏 write_lcdcom(0x80);/第一行lcd显示地址 for(i=0;i<32;i+) write_lcddate(str4_sht11i);/显示table1中的字符 else lcd_set(max,min); lcd显示程序#include <main.h>#include <lcd.h>sbit lcdrs=p20;sbit lcdwr=p21;sbit lcden=p22;uc

41、har code str1= 0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00;/温度图标uchar code str6_sht11=" the present temp is" /uchar code str4_sht11="max: min: "/uchar code str2_sht11="temp="uchar code str7_sht11="no. "/清除没不要的显示void delay_1602(uint delay_time)/延时函数for(;delay_time&

42、gt;0;delay_time-);void write_lcdcom(uchar date)/写lcd1602命令lcdwr=0;lcdrs=0;delay_1602(5);p0=date;lcden=1;delay_1602(5);lcden=0;void write_lcddate(uchar lcddate)/写1602数据lcdwr=0;lcdrs=1;delay_1602(5);p0=lcddate;lcden=1;delay_1602(5);lcden=0;void lcd_init()/1602初始化write_lcdcom(0x38); /display mode/write

43、_lcdcom(0x38); /display mode/write_lcdcom(0x38); /display modewrite_lcdcom(0x06); /显示光标移动位置write_lcdcom(0x0c); /显示开及光标设置write_lcdcom(0x01); /显示清屏/void display_1602()/显示字符子函数uchar i;lcdwr=0;lcdrs=0;lcden=0; delay_1602(10);write_lcdcom(0x80);/第一行lcd显示地址/*/for(i=0;i<32;i+) write_lcddate(str6_sht11i)

44、;/显示table1中的字符 delay_1602(10); write_lcdcom(0xc0);/第二行lcd显示起始地址for(i=0;i<32;i+) write_lcddate(str7_sht11i);/显示table2中的字符 lcdwr=1;lcdrs=1;lcden=1;void lcd_printf(uchar number,uint x,uchar add)/lcd数据显示函数uchar x1,x2,x3,x4; x1=x/1000;x2=x%1000/100;x3=x%100/10; x4=x%10; write_lcdcom(0xc4); write_lcdda

45、te(number+0x30); write_lcdcom(0xca); if(flag=1) write_lcddate('-'); else write_lcddate(' '); write_lcdcom(add); write_lcddate(x1+0x30);/write_lcddate(x1+0x30);/0x30是0的ascii码 write_lcddate(x2+0x30);write_lcddate(x3+0x30);/0x30是0的ascii码 write_lcddate('.');write_lcddate(x4+0x30)

46、;write_lcddate(' '); write_lcddate('c');void lcd_set(char max,char min)uchar x1,x2,x3,x4; uchar flag_max,flag_min; if(max<0) flag_max=1; max=-max; else flag_max=0; if(min<0) flag_min=1; min=-min; else flag_min=0; x1=max/10;x2=max%10;x3=min/10; x4=min%10; write_lcdcom(0xc4); if(flag_max=1) write_lcddate('-'); write_lcddate(x1+0x30); write_lcddate(x2+0x30); write_lcdcom(0xd0); if(flag_min=1) write_lcddate('-'); write

温馨提示

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

评论

0/150

提交评论