基于单片机的温控报警器设计_第1页
基于单片机的温控报警器设计_第2页
基于单片机的温控报警器设计_第3页
基于单片机的温控报警器设计_第4页
基于单片机的温控报警器设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、广州大学松田学院毕业论文(设计)题目_ 基于单片机的温控报警器设计_ 基于单片机的温控报警器设计摘要:温度是我们日常生产和生活中实时接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计就应运而生了,利用数字让人们更加直观的了解自己想知道的温度到底是多少。所以,温度的测量是一个很重要的物理参数,它能直接告诉人们所需要的温度的大小。随着世界的科技发展,对于温度的测量要求也是越来越严格了,但是测量温度的环境也越来越恶劣。温度的测量不仅仅局限于外出穿衣的指标上了,在现实的社会中,温度的测量和控制无处不在

2、,例如家庭里面都能看见的冰箱的自动温度调节。但是很多时候,在恶劣的环境中的测量则会受到很大程度的限制,尤其在工业控制中,在这个时候,温度测量的自动控制先得尤为重要。本文将要介绍的是和采用ds18b20作为温度传感器,自动测量当前温度,由单片机avr mega16进行处理控制,并通过lcd1602显示设定温度和当前温度,若当前温度超过设定温度,系统将会进行比较简单的声光报警。关键词: ds18b20,lcd1602,单片机,声光报警temperature alarm design based on scmabstract: the temperature is real-time access

3、to the physical quantities in our daily production and life, but it can not see, just by feeling it probably only feel the temperature values, traditional pointer thermometer indicates that the temperature, but low accuracy, use is not convenient enough, the display is not intuitive, digital thermom

4、eter is made using digital more intuitive understanding of the temperature in the end they want to know is how much.therefore, the temperature measurement is a very important physical parameters can directly tell people the size of the required temperature. with the development of science and techno

5、logy of the world, for the temperature measurement requirements become increasingly stringent, measure the temperature of the environment is also worsening. temperature measurement is not limited to the indicators go out dressed in the reality of the society, the measurement and control of temperatu

6、re everywhere, for example, the family can see inside the refrigerator thermostat. but many times, in the harsh environment of the measurement will be subject to a large degree of restriction, especially in industrial control, at this time, the automatic control of the temperature measurement-come p

7、articularly important.this article is ds18b20 as the temperature sensor and the use of automatic measurement of the current temperature, to be processed by the microcontroller avr mega16 control displays the set temperature and the current temperature and through lcd1602 to, if the temperature excee

8、ds the set temperature, the system will be relatively simple the sound and light alarm.keywords: scm, ds18b20, lcd1602, sound and light alarm目 录1绪论61.1课题的背景61.2课题的意义61.3研究的基本内容与拟解决的主要问题71.3.1研究的基本内容71.3.2拟解决的主要问题82设计的思路82.1设计基本原理82.2设计的基本条件92.3温度报警器的技术和工作原理92.3.1ds18b20温度传感器介绍92.3.2ds18b20的初始化102.3.

9、3ds18b20的写操作102.3.4ds18b20的读操作112.3.5ds18b20内部结构图112.3.6ds18b20工作原理112.4液晶显示屏lcd1602主要参数技术122.4.1引脚接口说明表122.4.2lcd1602的指令说明及时序132.5atmega16单片机介绍133系统硬件设计133.1温度传感器设计133.2液晶lcd1602显示部分设计143.3单片机atmega16原理图设计153.3.1程序烧写163.3.2电源端口163.3.3串口通讯端的设计163.3.4报警设计173.3.5按键设计174系统软件设计184.1流程图185温度数据处理函数195.1ds

10、18b20初始化函数195.2传感器ds18b20的子函数195.2.1传感器ds18b20写命令子函数205.2.2ds18b20读一个字节数据子函数215.3lcd1602显示函数235.3.1lcd1602初始化子函数235.3.2lcd1602写数据子函数245.3.3lcd1602写命令子函数245.4按键函数255.5主函数286系统调试306.1软硬件调试以及分析30参考文献31附录321 绪论1.1 课题的背景温度是我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直

11、观,数字温度计的出现可以让人们直观的了解自己想知道的温度到底是多少度。所以,温度的测量是一个很重要的物理参数,它能直接告诉人们所需要的温度的大小。随着世界的科技发展,对于温度的测量要求也是越来越严格了,但是测量温度的环境也越来越恶劣。温度的测量不仅仅局限于外出穿衣的指标上了,在现实的社会中,温度的测量和控制无处不在,例如家庭里面都能看见的冰箱的自动温度调节。但是很多时候,在恶劣的环境中的测量则会受到很大程度的限制,尤其在工业控制中,在这个时候,温度测量的自动控制先得尤为重要。1.2 课题的意义温度控制技术在工业上有很多方面都起到一个至关重要的作用。随着现代工农业技术的发展和人们对生活环境要求的

12、提高,人们迫切需要检测与控制温度。这次温度报警器的设计与制作,阐明了该装置进行设计与制作的具体过程以及方法。这种温度报警器的机构并不复杂,而且可操作性强,应用广泛,扩展性好。工作时,设定好温度测量的范围,若当前环境温度超过设定的高温临界温度,由单片机发出声光报警信号,防止因温度再升高而带来的不必要的损失。在农业生产中,温室的温度是很难把握的。往往会超过或低于允许值,致使大批良种的报废,耽误农时,影响生产。在工业中,现今社会是个信息的时代,随着信息科技的高速发展和安全指数的日益提高,机房,作为现代化的代名词,信息化的枢纽,其工作安全系数已经成为系统的重中之重,机房内的机械一旦发生故障,将可能带来

13、信息系统崩溃式的瘫痪。若电气线路发生短路、过载等故障而达到局部高温从而引发火灾,那损失是无法想象的。最重要的是,若果温度得不到有效的调节,会令机房内的电子设备、机械老化,导致这样那样的故障出现。一般的电子产品都是发热快,若散热设施做的不够及时而令机房内温度短时间内超出设备正常的温度,就会导致系统瘫痪或者火灾的事故发生。在日常生活中,也经常要用到高功率的电器,但是高功率电器的发热量大,有时候又可能引起火灾等等之类的危险情况。综合以上种种情况的出现,温度报警器就极其需要,只要环境温度超过一定范围时报警,来提醒使用者。数字温度计的出现为现今社会带来一定程度上的方便。它采用温度敏感元件也就是温度传感器

14、(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即ad转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者pc机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如led,,lcd或者电脑屏幕等显示出来给人观察。这样就完成了数字温度计的基本测温功能。数字温度计根据使用的传感器的不同,ad转换电路,及处理单元的不同,它的精度,稳定性,测温范围等都有区别,这就要根据

15、实际情况选择符合规格的数字温度计。1.3 研究的基本内容与拟解决的主要问题1.3.1 研究的基本内容要设计出一款由单片机控制的温度报警器,首先,我们要知道温度传感器的选择。可以采用集成化的温度传感器直接传输数据由单片机处理,或者用热敏电阻来达到预期的效果。利用集成化的传感器成本较高,但其准确性相对于热敏电阻比较有保障,而且单片机处理的数据也会少很多。所以我会选择采用集成化温度传感器传输数据、由单片机收集处理的方案制作温控报警装置。我会首先用protel99绘画出原理图和pcb图,接着编写单片机程序,然后在proteus上进行仿真工作,最后在实际电路板上进行调试和改善。1.3.2 拟解决的主要问

16、题拟解决的问题:1. 确定采用哪种传感器进行设计。2. 确定系统硬件的组成3. 确定好系统的模型。4. 设计好原理图和程序设计。5. 准备好制作的各种材料。6. 通过仿真以及调试,找出未解决问题。2 设计的思路这次设计的思路在于设计出一个可以根据实时温度和设定温度对比之后进行声光报警的温度控制报警器。这个报警器能够稳定运行,并且能够在大多数情况下对高温带来的不良影响有一个预警的作用,防止一些对高温敏感的器械有不良情况出现。利用数字温度芯片ds18b20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。采用lcd1602作为数字显示模块,用avrmega16进行

17、软件设计2.1 设计基本原理ds18b20采集温度数据,经过单片机响应之后发送数据到单片机。再经由单片机进行处理和分析。然后将用ds18b20采集回来的数据经处理后打印到lcd1602上。且经过按键设定报警温度并同将设定温度打印到lcd1602上,这里用采集回来的数据跟设定的数据作对比。对比之后,由单片机判断是否报警。图1 基本设计框图收集/输入数据lcd1602输出数据ds18b20报警mega16led电源2.2 设计的基本条件本设计是利用ds18b20温度传感器设计的一个液晶显示温度报警器。设定安全温度在-10125(可根据具体需要在程序中进行调整),对在这一范围内的温度变化采集后送入单

18、片的端口。例如传感器的温度为100c,则对应的lcd1602上的实时温度为100c。而温度温度高于125c时,不在安全温度范围之内,蜂鸣器进行报警,发光二极管发光显示。2.3 温度报警器的技术和工作原理2.3.1 ds18b20温度传感器介绍ds18b20温度传感器是美国dallas半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。ds18b20有独特的单线接口方式,和微处理器连接仅需一条口线即可实现双向通讯;它不需要任何外围元件,全部的传感元件都集成在集成电路内;电压范围在3.05.5v

19、之间,温度范围在55125,在-10+85时精度为0.5,符合设计条件;它还有负电压特性,电源极性接反时,温度计不会因发热烧毁,实验结果。其引脚功能描述见下:1gnd地信号2dq:数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3vdd:可选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。图2 ds18b20封装图要注意的一点是,在ds18b20测温程序设计中,向ds18b20 发出温度转换命令后,程序总要等待ds18b20的返回信号,一旦某个ds18b20 接触不好或断线,当程序读该ds18b20 时,将没有返回信号,程序进入死循环,这一点在进行ds1

20、8b20硬件连接和软件设计时也要给予一定的重视。2.3.2 ds18b20的初始化(1) 先将数据线置高电平“1”。(2) 延时(该时间要求的不是很严格,但是尽可能的短一点)(3) 数据线拉到低电平“0”。(4) 延时750微秒(该时间的时间范围可以从480到960微秒)。(5) 数据线拉到高电平“1”。(6) 延时等待(如果初始化成功则在15到60微妙时间之内产生一个由ds18b20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。(7) 若单片机读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平

21、算起(第(5)步的时间算起)最少要480微秒。(8) 将数据线再次拉高到高电平“1”后结束。2.3.3 ds18b20的写操作(1) 数据线先置低电平“0”。(2) 延时确定的时间为15微秒。(3) 按从低位到高位的顺序发送字节(一次只发送一位)。(4) 延时时间为45微秒。(5) 将数据线拉到高电平。(6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。(7) 最后将数据线拉高。2.3.4 ds18b20的读操作(1)将数据线拉高“1”。(2)延时2微秒。(3)将数据线拉低“0”。(4)延时3微秒。(5)将数据线拉高“1”。(6)延时5微秒。(7)读数据线的状态得到1个状态位,并进

22、行数据处理。(8)延时60微秒。2.3.5 ds18b20内部结构图ds18b20内部结构主要由四部分组成:64位光刻rom 、温度传感器、非挥发的温度报警触发器th和tl、配置寄存器。图3 ds18b20内部结构2.3.6 ds18b20工作原理图42.4 液晶显示屏lcd1602主要参数技术表2.1lcd1602技术参数表显示容量:16x2个字符芯片工作电压:4.55.5v工作电流:2.0ma(5.0v)模块最佳工作电压:5.0v字符尺寸:2.95x4.35(wxh)mm2.4.1 引脚接口说明表 第1脚:vss为地电源。 第2脚:vdd接5v正电源。 第3脚:vl为液晶显示器对比度调整端

23、,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生 “鬼影”,使用时可以通过一个10k的电位器调整对比度。 第4脚:rs为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:r/w为读写信号线,高电平时进行读操作,低电平时进行写操作。当rs和r/w共同为低电平时可以写入指令或者显示地址,当rs为低电平r/w为高电平时可以读忙信号,当rs为高电平r/w为低电平时可以写入数据。 第6脚:e端为使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:d0d7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。2.4.2 lcd1602的指令说明

24、及时序基本操作时序1.读状态:输入:rs=l,rw=h,e=h输出:d0d7=状态字2.写指令:输入:rs=l,r/w=l,d0d7=指令码,e=高脉冲输出:无3.读数据:输入:rs=h,r/w=h,e=h输出:=数据4.写数据:输入:rs=h,r/w=l,d0d7=数据,e=高脉冲 输出:无2.5 atmega16单片机介绍这次的设计,要用到的是单片机atmega16。atmega16是avr系列的8位单片机,虽然它是8位的单片机,但功能非常的强大。有很多的内部资源,连接外部的端口多达44个,有32个是i/o端口,基本每个端口复用功能都非常好,最高速度达到16mhz。并且支持串口、模数转换等

25、功能,拥有512字节的eeprom,1k字节片内ram,在外加ram和rom的情况完全可以运行到ucos操作系统。然而设计要用的功能并不多,端口的复用功能基本用不上,只需要安排足够的普通i/o端口给温度传感器和液晶显示便可以了。3 系统硬件设计3.1 温度传感器设计这部分设计用到了温度传感器ds18b20,这种传感器是单数据总线传感器,一共有三只引脚,一个引脚接电源vcc,一个引脚接地gnd,还有一个就是数据总线引脚dq接到单片机的其中一只引脚。设计图如下;图5 ds18b20原理图这个是ds18b20传感器的硬件设计。1脚接电源vcc,2脚是数据总线的引脚用于接到单片机atmega16的pb

26、3引脚,3脚用于接地gnd。还有在设计里面考虑到电源的不稳定,所以在接近插槽的电源vcc和地gnd之间加了一个0.1u的电容用于滤波,稳定电源。3.2 液晶lcd1602显示部分设计这部分设计用到了带字符的液晶显示器lcd1602,这种液晶显示器是16*2显示规格的带字符显示器。这里带字符显示的液晶显示器里面已经有一个解释芯片,当收到字符数据时,自动识别出字符,不需要在单片机作解释,但缺点就是这种带字符的显示器不能按照设计者的意思随心所欲地显示需要的图案。不过今次设计液晶显示器的功能是用于显示实时温度和设定温度,并不需要特殊图案。因此,带字符的lcd1602液晶显示器对于今次设计来说,简单直观

27、地实现效果。所以我选择用带字符的液晶显示器。lcd1602原理图如下:图6 lcd1602原理图设计按照lcd1602的接口信号来连接引脚。1脚是电源地gnd;2脚接电源正极vcc;3脚接液晶显示偏压信号,利用两个1k的电阻进行分压;4脚到6脚接单片机atmega16的pd5到pd7,分别代表接到lcd1602的rs、rw、en的引脚;7脚到14脚接按顺序接到单片机atmega16的pb0到pb7引脚,15脚背光源正极接电源正极vcc;16脚背光源负极接正源地gnd。下表显示lcd1602的4脚到14脚和单片机引脚对应关系。表2.2 单片机与lcd1602引脚对应表单片机atmega16lcd

28、1602单片机atmega16lcd1602pd5引脚4(rs)pb3引脚10(data3)pd6引脚5(rw)pb4引脚11(data4)pd7引脚6(en)pb5引脚12(data5)pb0引脚7(data0)pb6引脚13(data6)pb1引脚8(data1)pb7引脚14(data7)pb2引脚9(data2)3.3 单片机atmega16原理图设计这部分是整个单片机atmega16的设计总图。包含了程序烧写下载端口,3个按键,电源端口,预留串口通讯端、复位模块和声光报警模块。图7 设计部分原理图3.3.1 程序烧写这部分设计是用于将在电脑端的编写好的程序烧写到单片机atmega16

29、,今次设计的下载用asp下载方式。如下图,采用的是10pin插针。1脚连接单片机的mosi端;2脚空接;3脚接单片机reset端;4脚接单片机sck端;5脚接单片机miso端;6脚到9脚均接电源地gnd;10脚接vcc。图8 程序烧写3.3.2 电源端口这部分只需要外接一个2pin的端子用于连接5v开关。用一个100u和一个0.1u的电容接电源和电源正极。如下图:图9 电源端口接线原理图3.3.3 串口通讯端的设计此设计目的是为了能够使系统在硬件上得到扩展型设计,方便通过串口rs485或者rs232上传数据。图10 串口设计图如图显示有两个引脚,分别是数据发送和接收。1脚rxd连接到单片机me

30、ga16港口pd0,引脚2连接到端口txd单片机mega16 pd1。这里的mega16单片机pd0口和pd1口是一种特殊的串行通信口,这俩端口可实现计算机与单片机之间的串口通信。3.3.4 报警设计采用的是声光报警的方式来提示实时温度已经达到设定的温度。硬件上,利用一个有源蜂鸣器和一个led灯来进行声光报警。当实时温度到了设定的温度,那么蜂鸣器响led灯亮。如下图11是蜂鸣器部分,1脚接单片机的pd4端口,2脚接电源地,这里用单片机高电平驱动蜂鸣器的方法。如图12是led灯部分,连接电源正极和单片机的pb4端口,这里用单片机低电平驱动led的方法。图11 蜂鸣器图12 led灯3.3.5 按

31、键设计本设计采用4个按钮,其中之一是用于重置。其他三个按钮用来设置设定温度。2键是用来设置温度增加,3键来设定温度下降,而4键是用于切换位数。4 系统软件设计声光报警设定数值位数切换初始化ds18b20初始化lcd1602开始初始化芯片4.1 流程图判断数值是否达到设定数值设定数值减1键3是否按下设定数值加1键2是否按下键4是否按下5 温度数据处理函数5.1 ds18b20初始化函数程序代码如下:void init_18b20(void) dq_out;/设置pb3为输出 dq_set;/拉高pb3电平 delay_10us(1); /延时 dq_clr; /拉低pb3电平 delay_10u

32、s(75); /延时 dq_set; /再次拉高pb3电平 delay_10us(6); /延时 dq_in; /设置pb3为输入 while(dq_r); /等待ds18b20返回来的高电平 while(!(dq_r); /等待ds18b20初始化完毕5.2 传感器ds18b20的子函数程序代码如下:uint read_18b20_temp(void) uchar temp1,temp2; int temp; init_18b20(); /复位18b20 write_18b20_com(0xcc); /忽略rom配置 write_18b20_com(0x44); /发出转换命令 init_1

33、8b20(); write_18b20_com(0xcc); write_18b20_com(0xbe); /发出读温度命令 temp1=read_18b20_byte(); /读取到温度的前两个字节 temp2=read_18b20_byte(); init_18b20(); /复位18b20 temp=(temp28)|temp1)*0.625);/设置输出形式为小数点后一位 return temp;这是一个有返回值的函数。由单片机发出信号,等待传感器返回温度数值,再将返回的数值进行处理。这里首先要初始化传感器,等待初始化完毕,我们发送转换命令0x44。这里有个需要注意的是命令0xcc,这

34、是一个忽略单片机rom配置噶命令,原本rom配置命令是当有多个传感器的时候要用到选择传感器的id,但设计中只有一个传感器,所以就不需要理会rom配置了。接着发出转换命令之后,再次初始化传感器,再发出读温度命令0xbe。接着就是将读回来两次数据分别装进两个全部变量里面。接着是初始化传感器,说明一次的温度转换完成了。5.2.1 传感器ds18b20写命令子函数程序代码如下:void write_18b20_com(uchar com) uchar i; for(i=0;i=1;/命令右移一位 delay_10us(5);/延时这个是单片机向传感器写命令的函数。这里我们一开始就是一个循环语句,因为这

35、里需要传送的命令都为8位,一次只能传送一位到传感器,所以需要分别传送8次。进入循环语句之后,我们将引脚设置为输出并拉低引脚电平。之后就是进入一个判断语句,判断命令的最后一位是否为1,当为1拉高引脚电平,但不为1拉低引脚电平。接着就是延时50us等待传感器反应,再接着是拉高电平指示这次的传送完毕,后面跟着就是需要将命令右移一位。这样直到整个命令完全传送到传感器中,再然后延时等待传感器反应。5.2.2 ds18b20读一个字节数据子函数程序代码如下:uchar read_18b20_byte(void) uchar i,retd=0; for(i=0;i=1;/数据右移一位 dq_out;/设置p

36、b3为输出 dq_clr;/拉低电平 dq_set;/拉高电平 nop();nop();nop();nop();/延时 dq_in;/设置pb3为输入 if(dq_r)/判断输入数据是否为1 retd|=0x80;/数据变量的最高位为1 delay_10us(5); return retd;/返回数据变量这个函数是用于读取传感器一个字节的数据,就是一个8位数据。首先,定义一个8位局部变量用于数值的返回。这里有一个循环语句,同样是8次,一次只能读一位的数据。进入循环语句之后,首先要将变量右移一位,这里值得注意的是这个变量不需要给一个它初始值,因为无论初始值是什么并不影响数据的读出。右移一位之后,

37、设置引脚为输出并拉低电平,紧接就是拉高电平,延时等待传感器反应。再之后是设置引脚为输入,读一位数据,当这位数据是1,我们便将变量的最高位设置为1。延时50us等待传感器,当循环语句结束,返回数据变量给相关的函数、语句使用。5.3 lcd1602显示函数5.3.1 lcd1602初始化子函数程序代码如下:void lcd_init(void) lcd_w_com(0x38,0); /8位数据传输,2行显示,5*7字形,不检测忙信号 delay_ms(5); /延时5ms lcd_w_com(0x38,0); delay_ms(5); lcd_w_com(0x38,0); delay_ms(5);

38、 lcd_w_com(0x38,1); /8位数据传输,2行显示,5*7字形,检测忙信号 lcd_w_com(0x08,1); /关闭显示,检测忙信号 lcd_w_com(0x01,1); /清屏,检测忙信号 lcd_w_com(0x06,1); /显示光标右移设置,检测忙信号 lcd_w_com(0x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号 delay_ms(5); display_str(0,0,realtime t:000.0);/第一行要显示的初始内容 delay_ms(5); display_str(0,1,set t:000.0);/第二行要显示的初始内容 del

39、ay_ms(5);5.3.2 lcd1602写数据子函数程序代码如下:void lcd_w_data(uchar w_data) lcd_busy();/检测lcd是否处于忙状态 lcd_rs_1;/拉高rs电平 lcd_rw_0;/拉低rw电平 _nop(); /空命令,用于延时 dataport=w_data; /将要输入到lcd1602的数据放到pc端口 _nop(); lcd_en_1;/拉高en电平 _nop();_nop(); lcd_en_0;/拉低en电平此功能的作用,微控制器,显示数据输入到lcd1602。检测lcd1602是在一个繁忙的状态,当lcd1602闲置无效的rs级

40、别(对应引脚查找表3.2),并拉低的rw级延时等待lcd1602反应。 lcd1602的成在写入数据的状态,将准备写入的数据分配给pc口,延迟等待写数据,然后连接到一个下降沿完整的lcd1602的数据被写入。5.3.3 lcd1602写命令子函数程序代码如下:void lcd_w_com(uchar com,uchar attribc) if(attribc) /attribc为是否需要判断lcd1602忙信号 lcd_busy(); lcd_rs_0;/拉低rs电平 lcd_rw_0;/拉低rw电平 _nop();/空指令,延时 dataport=com; /将要输入到1602的命令放到pc

41、端口 _nop(); lcd_en_1;/拉高en电平 _nop(); _nop(); lcd_en_0;/拉低en电平这个函数是一个单片机的写命令到lcd1602功能并有两个参数,输入命令com,如果你想检测忙音信号则用attribc写命令。当你进入该函数将检测忙音信号是否为1,是必要的检测忙信号等待lcd1602闲置1,0不要求检测忙音信号。后rs水平被拉低,并拉低rw水平,延缓lcd1602反应。此时进入lcd1602写命令状态,然后将需要输入一个8位命令数据输入通过pc端的单片机lcd1602。其次延迟等待命令完成,给一个下降沿lcd1602写命令完成。5.4 按键函数程序代码如下:v

42、oid sa(void) if(con=0)/当转换位键按下 delay_ms(100);/软件防抖,延时 sw+;/转换位变量加1 if(sw4)/转换位变量加到5归0 sw=0; if(plus=0)&(sw=1)/当加1键按下并且转换位变量sw等于1 delay_ms(100); xs+;/小数位加1 if(xs9)/当小数位加到10归0 xs=0; if(reduce=0)&(sw=1)/当减1键按下并且转换位变量sw等于1 delay_ms(100); xs-;/小数位减1 if(xs9)/当个位加到10归0 ge=0; if(reduce=0)&(sw=2)/当减1键按下并且转换位

43、变量sw等于2 delay_ms(100); ge-;/个位减1 if(ge9) shi=0; if(reduce=0)&(sw=3)/当减1键按下并且转换位变量sw等于3,十位减法变化 delay_ms(100); shi-; if(shi1) bai=0; if(reduce=0)&(sw=4)/当减1键按下并且转换位变量sw等于4,百位减法变化 delay_ms(100); bai-; if(bai=cnt)/当实时温度比设定温度高 bell_on;/打开蜂鸣器 led_on;/点亮led灯 if(cnttemperture)/当实时温度比设定温度低 led_off;/关闭led灯 be

44、ll_off;/关闭蜂鸣器 整个程序的主函数就是该函数,它让整个程序不断运行和为它服务。在最后的死循环当中,程序在做一个不断的扫描,把读回来的温度数据赋予全局变量temperature,然后显示函数显示读回来的实时温度,判断分析按键是否按下。最后,对实时温度进行判断,当实时温度大于设定温度,灯亮、器鸣;当实时温度小于设定温度,灯灭并关闭蜂鸣器。6 系统调试6.1 软硬件调试以及分析在本节中,设计调试。该系统的硬件调试主要是液晶显示器lcd1602,ds18b20温度传感器之间的关系,分别与单片机atmega16的调试。首先,设计时,必须根据原理图来连接每个设备。不可接反或虚焊多焊。其次,你必须

45、确定组件元件完好,在其他系统上运行或检测每个组件的工作情况是否良好。在设计调试的问题很多,其中最重要的关键是按钮防抖调试,液晶显示位置调试和启动ds18b20调试。 按键防抖调试是调试设定温度,实时和准确度是否良好。由于按键没有考虑防抖的漏洞,它必须加上防抖功能在软件或硬件提供了一个按键的实时和准确性。在开始的时候没有加入防抖功能,会有一个连续变化或不稳定的关键值。这是因为按下按键时,水平不稳定之间的转换,那么将有很多次的电平转换。影像稳定器的软件和硬件,应用软件防抖在这个设计中,单片机检测后约100ms的延迟进行电平转换的关键水平变动后不读,要收取稳定的触发电平转换,直到所需的功能。 液晶显

46、示器显示位置的调试。在开始没有考虑到lcd1602的性质。因此,在调试时,位置数据显示位置是不是我想要的。经过学习后lcd1602的功能性质的毫秒级后,每完成的数据延迟是用来等待lcd1602一次写入数据的动作完成,解决显示不匹配的位置和设计。 启动调试ds18b20。事实上,这里也是一个时间的问题,在设计之初就没有很好地明白,原来ds18b20这样一个敏感的设备耽误工作。由于这个原因,在一开始的时候一直无法启动ds18b20,已被写入在参考和控制程序,发现差异并不大,在水平设置。所以,延迟不起作用。想要延迟过快或延缓晚。所以做的修改在延迟方面,一如预期,只要根据第一部分第二章调试可以启动ds

47、18b20的方法延迟。特别注意的是,一定要按照指示加入延时功能,因为ds18b20的设备是特别敏感的时间设备参考文献1居荣.郭怡倩ds18b20在温控系统中的应用j农机化研究,2005:01 2明德刚ds18b20在单片机温控系统中的应用j贵州大学学报(自然科学版) 2006:01 3张粤倪伟 dsl8b20在分布式测温系统中的应用j淮阴工学院学报 2002:104 杨振江,冯军:单片机原理与实践指导,西安电子科技大学出版社,2008. 5叶丹基于单片机的自适应温度控制系统m传感器技术 2002:036周兴华单片机c语言高级编程m北京:中国电力出版社,2011:59-937谭浩强c程序设计(第

48、二版)m北京:清华大学出版社,19998马潮avr单片机嵌入式系统原理与应用实践m 北京:北京航空航天大学出版社,20079atmelatmega48 data bookm10mao h,lee fredcreview of power factor correction techniquesc proceedings of ipemc97,hangzhou,1997附录附录1 系统原理图 附录2 系统pcb图附录3 系统软件程序#include #include #define uchar unsigned char#define uint unsigned int#define lcd_rs_1 portd|=bit(pd5) /1602的rs信号置高电平#define lcd_rs_0 portd&=bit(pd5) /1602的rs信号拉低电平#define lcd_rw_1 portd|=bit(pd6) /1602的rw信号拉高电平#define lcd_rw_0 portd&=

温馨提示

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

评论

0/150

提交评论