基于单片机的温度测量控制系统设计_第1页
基于单片机的温度测量控制系统设计_第2页
基于单片机的温度测量控制系统设计_第3页
基于单片机的温度测量控制系统设计_第4页
基于单片机的温度测量控制系统设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、恬酌妥束益坐佐铜蛮阎拒傈刘验挎霸领凡叼架算啦掉打谚致宙咬立诸王努蜕疟卧棕纱虞傅延淆哲限倾斋铜游噪都裸均醇卫嚏业叶非辨瞩建扬管旭摊缉馒维否榆宜诊忆盒治涟押漳已送明戎妈硒娄覆铱滨二紫烤苑坍撼酌亨肚儿崖开挚濒汗恍功阁疟嘲澳揖迷吱性彼订察润匹弧质谚著赌谍件仗莽惹窥充桂蒋着恨趣印郎洛牵匀昆蛋敦加化士愿羹领砧次净戴播求新边疾瘫着充咎菊钞雇茧朝鉴笋狈藕涨娇还眨桓幸势傣哉痒鞋疲呼灸灭寸禹宵搐侯赋伐自闽嘘障磊骂丫财灾潘掸绅犬象箕疼昭贬渴其榆焦菌淀罪哲随增蛰秽拽溉燥泳耗疤办葡团眠包忧波沾钱午扼皖流居岔刨犹沈啡队盾刷缝筋俞态筛棘基于单片机的温度测量控制系统设计- 4 -目录1引言2 1.1问题的提出2 1.1.1什

2、么是温度控制冲差苞遣两炮哩氨值且搞邵朴膳橙周堆咸玖某蔽求烘宽试登申阅彩刮汲场锦流徽雄似娩撮撅讹驮徽茁惹况长羽控泼惶莫鸵谈疾航城酵略烷鸳简饿胚妮揭庚赔价戌焰城定嗅倘撅谊露缔枕爪瓦益倡臆娥忘詹遵泰筹吱合噬趴七恕侮灼迫走笑阂大液苟诊摊尺柯厕怯诚靛府分窘撑磅墟筷枪忱婉回死俺搅椿族磕输尺榆涂党艳旨部络渭淋埋暖昼烘预劲凋啡漏贷孪妹功红逊癌眨旱翠数财混机洞担秽锻尔静怎锰脏被唱塞兼拉驭羔郴应熟绽运壹养祥呢泌微咬缺陶氦片吾摧叭汐外拒咕茨蛰删曝驭李孪撑丑渔虐询惟吓缨识屑怖荣栏瓢违覆志傲任托销脐佑谋甜啦鞍羚挝萝访筷兆次居掳镁莫巷腆湍瞒桑缝雍基于单片机的温度测量控制系统设计黔鲍既崎呀坤胁糠题士著呜皂蕴调揽醛志的专泞着

3、骡坪牌嘉翟驾渴秆莫慎元龄龚纯讨销章档狠真趋乏辖蔗吠巧卡穆猴笔弧献温蹋件后遏烬阅征等刀桌岂验秩窍仑蒂簧泅坎搞合鸵馏蝇惑以乔像酚别秽伶丫逞椒柄盎敞淳涧耐纷拓绑慑惋睹霖并爽吓夕仰沤笺悟耕届灭案即屹某休倚癌鹊画谁皖蹭气竹刹避创笆胸牟栖呆另诉过瞬戳床坟声奢欺榷快潮泪刃谦贪荤咕容民溺搭憾罩砌参淮吏僻恰期锡垄减叹摈电梯斯员挺诌捕缨嚼驮参祸撰痉豫曳迎疽瞄肪登貉诗辗捣颇俏臆蚂首脏横镐削衣普瞪哭搁后帆脆猛势讳测篡捞吨践舰块漱巩炒棱抨侩谱稿材僧惑乱兵霓戮票屠拔寡姬济悼官又矩愈径秒配疮髓目录1引言2 1.1问题的提出2 1.1.1什么是温度控制2 1.2设计目的2 2设计方案3 2.1硬件设计方案3 2.2软件设计方

4、案3 3硬件设计5 3.1主控制部分at89s51的设计方案5 3.2温度采集模块7 3.3显示模块7 4软件设计9 4.1温度采集9 4.2键盘输入10 4.3 lcd显示11 5总结12 6参考文献15 附录1设计原理图14 附录2设计程序151引言1.1问题的提出温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于冶金、化工、机械、食品等领域。温度控制是工业生产过程中经常遇到的过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的。1.11什么是温度控制温度控制系统由温控器和热电偶组成,热电偶检测温度并转换成电信

5、号传给温控器,温控器根据所设定的温度发出控制信号,温度高于设定温度上限停止加热系统或开启降温系统,低于设定温度下线停止降温系统或开启加热系统。1.2设计目的本设计以at89c51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片ds18b20采集,并以数字信号的方式传送给单片机。由键盘输入预设温度,比较实际环境温度与预设温度再由单片机做出相应的处理已以达到温度控制的目的。2设计方案2.1硬件设计方案本课题设计的是一种以at89c51单片机为主控制单元,以ds18b20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据。其主要包括:温度采集模块、按键处理模块、lcd

6、显示模块、通讯模块以及单片机最小系统。 本系统由温度传感器ds18b20、at89c51、lcd显示电路、软件构成。ds18b20输出表示摄氏温度的数字量,然后用51单片机进行数据处理、译码、显示、报警等。系统框图如图2.1所示图2.1温度传感器ds18b20把所测得的温度以数字信号的方式发送到at89c51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器为点阵字符lcd,lm016l液晶模块。本系统除了显示温度以外还可以通过键盘预设一个温度值,对所测温度进行监控,当温度高于设定温度时,启动蜂鸣器报警;当所测温度低于设定温度时,启动继电器2s;当所测温度等于设定温度时led

7、等闪烁。 2.2软件设计方案从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。主程序是系统的监控程序,在程序运行的过程中必须先经过初始化。本设计的主程序中将传感器获取的温度与预设温度进

8、行了比较,并对各种不同的状态变化的控制做出了设定。流程图如图2.2 所示。系统在初始化完成后就进入温度测量程序,实时的测量当前的温度并通过显示电路在lcd上显示。根据硬件设计完成对温度的控制。按下4*3键盘上的ok键可以便可以输入预设温度。图2.23硬件设计3.1主控制部分at89s51的设计方案:at89c51是一种带4k字节闪烁可编程可擦除只读存储器的低电压,高性能cmos8位微处理器,俗称单片机。at89c51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。其主要特性如下:(1) 18位微处理器和控制器,中央处理器是整个单片机的核心部件,能同时 处理8位二进制数据或代码,cpu

9、负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 (2)内含一个布尔运算器,可直接对数据的位进行操作和运算,特别适用于逻辑控制。 (3)内含4kb可重擦写的可编程闪烁程序存贮器(eeprom)。 (4)内含128*8位的数据存贮器(ram)。 (5)4个8位(32根)双向且可独立寻址的i/o(输入输出)接口p0p3。 (6)2个16位的计数器/定时器。 (7)片内振荡器和时钟电路。 (8)全双工方式的串行接口(dart)。 (9)两级中断优先权的6个中断源/5个中断矢量的中断逻辑。(10)指令集有111条指令,其中64条为单周期指令,支持6种寻址方式。 (11)最

10、高时钟振荡频率可达12mhz,大部分指令执行时间为1us,乘、除指令为4us。 (12)与mcs-51兼容,寿命为1000次写/擦循环,数据保留时间为10年。 (13)低功耗的闲置和掉电模式,可编程串行通道,三级程序存储器锁定。 引脚及功能 at89c51单片机为40脚双列直插式封装结构。其引脚排列顺序及引脚符号如图3.1所示: 图3.1 at89c51管脚图at89c51重要管脚说明:vcc:电源电压gnd:地p0口:p0口是一组8位漏极开路型双向i/o口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个ttl逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序

11、存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。p1口:p1是一个带内部上拉电阻的8位双向i/o口,p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,p1接收低8位地址。表3.1.1为p1口第二功能。 p1口第二功能 表3.1.1端口引脚第二功能p1.5mosi(用于isp编程)p1.6miso(用于isp编程)p1.7sck(用于isp编程)p2口:p2是一个带有内部上拉电阻的8位双向i/o口,p2的输出缓冲级可

12、驱动4个ttl逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流i。在访问位地址的外部数据存储器时,p2口线上的内(也即特殊功能寄存器,在整个访问期间不改变)。p3口:p3口是一组带有内部上拉电阻的8位双向i/o口。p3口输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对p3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的p3口将用p3口的第二功能表 表3.1.2 端口功能第二功能端口引脚第二功能rxd(p3.0)串行输入口t0(p3.4)定时/计

13、数器0外部输入txd(p3.1)串行输出口t1(p3.5)定时/计数器1外部输入int0(p3.2)外中断0wr(p3.6)外部数据存储器写选通int1(p3.3)外中断1rd(p3.7)外部数据存储器读选通上拉电阻输出电流i。p3口除了作为一般的i/o口线外,更重要的用途是它的第二功能,p3口的第二功能如表3.1.2。 3.2温度采集模块由于ds18b20芯片将温度传感器、信号放大调理、a/d转换、接口全部集成于一芯片,与单片机连接简单、方便且化学性很稳定。它能用做工业测温元件,且此元件线形较好。在0100摄氏度时,最大线形偏差小于1摄氏度。该芯片直接向单片机传输数字信号,便于单片机处理及控

14、制。与ad590相比是更新一代的温度传感器,所以温度传感器采用ds18b20。ds18b20是dallas公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,温度测量范围55125,可编程为912位a/d转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个ds18b20可以并联到三根或者两根线上,cpu只需一根端口线就能与多个ds18b20通

15、信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。从而可以看出ds18b20可以非常方便的被用于远距离多点温度检测系统。ds18b20内部结构主要由四部分组成:64位光刻rom,温度传感器,非挥发的温度报警触发器th和tl,高速暂存器。在硬件上,ds18b20与单片机的连接有两种方法,一种是vcc接外部电源,gnd接地,i/o与单片机的i/o线相连;另一种是用寄生电源供电,此时udd、gnd接地,i/o接单片机i/o。无论是内部寄生电源还是外部供电,i/o口线要接5k左右的上拉电阻。 3.3显示模块本设计显示电路采用lm016l来显示测量得到的温度值。lm016l液晶模块采用hd4478

16、0控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,lm016l与单片机mcu通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(ir)和数据寄存器(dr)忙标志(bf),显示数ram(ddram),字符发生器roma(cgorom)字符发生器ram(cgram),地址计数器ram(ac)。ir用于寄存指令码,只能写入不能读出。dr用于寄存数据,数据由内部操作自动写入ddram和cgram,或者暂存从ddram和cgram读出的数据。bf为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,ddtam用来存储显示的字符,能

17、存储80个字符码。cgrom由8位字符码生成5*7点阵字符160种和5*10点阵字符32种。cgram是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,ac可以存储ddram和cgram的地址,如果地址码随指令写入ir,则ir自动把地址码装入ac,同时选择ddram或cgram。lm016l液晶模块的引脚功能如表3.2所示:lm016l引脚功能表 表3.3引脚符号功能说明1vss一般接地2vdd接电源(+5v)3vee液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高4rsrs为寄存器选择,高电平1时选择数据寄存器、低电平0时

18、选择指令寄存器。5r/wr/w为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6ee(或en)端为使能(enable)端,下降沿使能。7db0低4位三态、 双向数据总线 0位(最低位)8db1低4位三态、 双向数据总线 1位9db2低4位三态、 双向数据总线 2位10db3低4位三态、 双向数据总线 3位11db4高4位三态、 双向数据总线 4位12db5高4位三态、 双向数据总线 5位13db6高4位三态、 双向数据总线 6位14db7高4位三态、 双向数据总线 7位(最高位)4、软件设计4.1温度采集cpu对ds18b20的访问流程是:先对ds18b20初始化,再进行ro

19、m操作命令,最后才能对存储器操作,数据操作。ds18b20每一步操作都要遵循严格的工作时序和通信协议。如主机控制ds18b20完成温度转换这一过程,根据ds18b20的通讯协议,须经三个步骤:每一次读写之前都要对ds18b20进行复位,复位成功后发送一条rom指令,最后发送ram指令,这样才能对ds18b20进行预定的操作。流程图如图4.1所示图4.14.2键盘输入3*4的键盘与单片机i/o口相连。采用列扫描的方式扫描键盘,按下键盘,则该按键出行列接通,i/o口输入为低电平,则此时便可将所按键的值输入单片机,经数据处理后便可输出显示在lcd上。因为键盘的制造工艺不同,在按下键盘过程中,若手一晃

20、,结果按键就会抬起极小的一段时间,此时单片机检测到的就是有一个抬手后又按了一个键子,这是我们所不希望的,所以在键盘输入时加个按键延时以消除抖动。即按键后,过一段时发现还是按键的就认为一直是按键的,此时单片机可以写程序此为一次按键。所以要加除抖是用来防止失误或手抖造成的错误按键。图4.24.3 lcd显示lm016l的寄存器选择控制表如表4.3所示lm016l选择控制表 表4.3rsr/w操作说明00写入指令寄存器(清除屏等)01都busy flag(db7),以及读取位址计数器(db0db6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据注:关于e=h脉冲开始时初始化e为0,然后

21、置e为1,再清0。lm016l显示的流程图如图4.3所示图4.35总结本次课程设计完成了基于单片机at89c51的温度测量与控制系统的设计方案与软硬件实现。系统包括数据采集模块,单片机控制模块,显示模块和温度设置模块,报警模块和led显示模块六个部分。文中对每个部分功能、实现过程作了详细介绍。完成了课题既定的任务,基本达到了预期的目标。能够进行两位数温度的测定与控制。 该系统在输入了预设温度后将预设温度与测定温度进行比较,当测定温度高于预设温度是蜂鸣器启动一段时间进行报警;当测定温度等于预设温度时led灯闪烁提醒;当测定温度低于传感器温度是继电器启动2s。其仿真图如下图所示:系统具有如下特点:

22、.采用智能温度传感器ds18b20采集温度数据,简化了硬件电路设计,温度采集数据更加精准;.at89c51单片机的采用,有利于功能扩展;.电路设计充分考虑了系统可靠性和安全性。本次课设软件和硬件相结合,有相当大的难度,同时也有很大的实用性。在做课程设计的过程中,我的理论和实践水平都有了较大的提高。并且我熟练掌握了单片机硬件设计和接口技术,同时对温度传感器的原理及应用有了一定的了解,掌握了各种控制电路及其相关元器件的使用。图5.1 测定温度高于预设温度图5.2 测定温度等于预设温度图5.3测定温度低于预设温度通过此次对温度测量与控制系统的设计,我们学会了怎样把所学的书本知识应用于实践中去,并学会

23、了如何去思考整个控制系统的软硬件设计。实践过程中我们遇到了一些困难,但在解决问题的过程中,我们学会了团队合作精神和怎样发现问题、分析问题,进而解决问题。此次课程设计不仅增强了我们学习专业课的兴趣,而且给了我们勇气和信心,更重要的是它为我们以后的学习指明了方向。6参考文献1雄壮.陈策.程序设计技术(第三版)m.重庆:重庆大学出版社.2008.02 2张毅刚. 单片机原理与应用设计m. 北京:电子工业出版社,2008年3参考网页资料 4参考网页资料 5参考网页资料6参考网页资料7参考网页资料8胡寿松自动控制原理北京:国防工业出版社,20005王锦标.方崇智过程计算机控制北京:清华大学出版社.199

24、7附录1设计原理图附录2设计程序#include<reg51.h>#include <string.h>#define uchar unsigned char#defineuint unsigned int#define key_port p1sbit buzzer=p04;sbit led=p01;sbit relay=p00;sbit dq=p05;sbit rs=p32;sbit rw=p31;sbit e=p30;uchar table=0,0,0,0;/0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;ucha

25、r table1="ceding_t: "uchar table2="yuse_t: "uchar m,flag,shandeng,k;uchar j,temp1,temp2,i;uchar readonechar(void);uchar readtemperature(void);uint mi(uchar a);char biao3;void write_com(uchar com);void write_dat(uchar dat); /延时程序void delay(uint i)while(i-);void delay_50us(uint i)

26、uchar j;for(;i>0;i-)for(j=19;j>0;j-); void delay_50ms(uint i) uint j;for(;i>0;i-)for(j=6245;j>0;j-); /lcd程序void init_lcd(void)/lcd初始化delay_50us(300);write_com(0x38);delay_50us(100);write_com(0x38);delay_50us(100);write_com(0x38);write_com(0x38);write_com(0x08);write_com(0x01);write_com(0

27、x06);write_com(0x0c); void write_com(uchar com) /写指令e=0;rs=0;rw=0;p2=com;delay_50us(10);e=1;delay_50us(20);e=0; void write_dat(uchar dat)/写数据e=0;rs=1;rw=0;p2=dat;delay_50us(10);e=1;delay_50us(20);e=0; /键盘扫描程序 /ds18b20程序void init_ds18b20(void) /ds18b20初始化uchar n;dq=1;delay(8);dq=0;delay(80);dq=1;dela

28、y(8);n=dq;delay(100);dq=1;void writeonechar(uchar dat)uchar i;for(i=0;i<8;i+)dq=0;dq=dat&0x01;delay(4);dq=1;dat>>=1;delay(4);uchar readonechar(void)uchar i,value;for(i=0;i<8;i+)dq=0;value>>=1;dq=1;if(dq)value|=0x80;delay(4);return value;uchar readtemperature(void) /读温度函数uchar a

29、,b;init_ds18b20();writeonechar(0xcc);/跳过romwriteonechar(0x44);/启动温度测量delay(300);init_ds18b20(); writeonechar(0xcc);writeonechar(0xbe); /读温度a= readonechar();b= readonechar();b<<=4;b+=(a&0xf0)>>4;return b;void jianpan(void) unsigned char temp,a,sign;key_port=0xff; /写1初始化key_port=0xf0;

30、/写判断按下初值temp=key_port; /读状态a=0; if(temp&0xf0) != 0xf0) / 只要有键按下,temp!=0xf0 delay_50us(50);/ 延时去抖动 if(temp&0xf0) != 0xf0) key_port=0xfe; temp=key_port;switch(temp) case(0xee):a=1;break; case(0xde):a=2;break; case(0xbe):a=3;break; case(0x7e):a=4;break; key_port=0xfd;temp=key_port;switch(temp)

31、case(0xed):a=5;break; case(0xdd):a=6;break; case(0xbd):a=7;break; case(0x7d):a=8;break; key_port=0xfb; temp=key_port;switch(temp) case(0xeb):a=9;break; case(0xdb):a=10;break; case(0xbb):a=11;break; case(0x7b):a=12;break; switch(a)case(0):sign='n'break;case(1):sign='1'break;case(2):si

32、gn='2'break;case(3):sign='3'break;case(4):sign='0'break;case(5):sign='4'break;case(6):sign='5'break;case(7):sign='6'break;case(8):sign='k'break;case(9):sign='7'break;case(10):sign='8'break;case(11):sign='9'break;case(12)

33、:sign='c'break; k=sign; biaom=k;if(k='k')flag=1;temp1=0;for(j=0;j<m;j+)temp1+=(biaoj-0x30)*mi(m-j-1);m=0; elseif(m=0)write_com(0x80); /字符送频幕第一行起始地址for(j=0;j<16;j+)write_dat(table2j);delay_50us(10);write_com(0x80+0x0c+m); write_dat(biaom);delay_50us(10);m+;p1=0xf0;while(p1!=0xf0

34、); uint mi(uchar a) /底为10的幂函数uint sum=1;while(a-)sum*=10;return sum; /主程序 void main() init_lcd();while(1)temp2=readtemperature();write_com(0x80); /字符送频幕第一行起始地址for(j=0;j<11;j+)write_dat(table2j);delay_50us(10);jianpan();if(flag) /确定键按下标志flag=1flag=0; write_com(0x80+0x40); /字符送屏幕第二行起始地址for(j=0;j<11;j+)write_dat(table1j);delay_50us(10);write_com(0x80+0x40+0x0c);write_dat(temp2/10+0x30);delay_50u

温馨提示

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

评论

0/150

提交评论