基于单片机的温度及压力智能控制系统设计.docx

上传人:夺命阿水 文档编号:845511 上传时间:2023-12-24 格式:DOCX 页数:25 大小:63.86KB
返回 下载 相关 举报
基于单片机的温度及压力智能控制系统设计.docx_第1页
第1页 / 共25页
基于单片机的温度及压力智能控制系统设计.docx_第2页
第2页 / 共25页
基于单片机的温度及压力智能控制系统设计.docx_第3页
第3页 / 共25页
基于单片机的温度及压力智能控制系统设计.docx_第4页
第4页 / 共25页
基于单片机的温度及压力智能控制系统设计.docx_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《基于单片机的温度及压力智能控制系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度及压力智能控制系统设计.docx(25页珍藏版)》请在课桌文档上搜索。

1、基于单片机的温度及压力智能控制系统设计摘要木文设计了以AT89C51单片机为核心的温度和压力控制系统的工作原理以及设计方法。温度信号由温度传感器PTlOO采集,再由变送器将信号变换为0-5V的信号给PCF8591芯片。单片机最后通过IIC总线将模拟量信号读ISl来或者发送出去。压力信号也是由压力传感器采集FI来,再由变送器变换为0-5V的电压信号给PCF8591芯片。PCF8591芯片是支持4路模拟量输入,1路模拟量输出的8位芯片,并旦支持HC总线,最大可以同时接8个同样的芯片。单片机将采集回来的信号经过计算与处理后将温度和压力值显示在LCDl602液晶上,设计中介绍了控制系统的硬件电路,包括

2、:温度、压力检测电路、温度控制电路、压力控制电路、电源电路、报警电路、显示电路、单片机最小系统电路、按键电路和其他一些单片机的接口电路。本设计中还介绍了软件程序编写局部,都采用模块化的结构编程。软件程序局部主要包括:主程序、显示程序、温度和压力采集子程序、按键子程序、控制输出子程序等。关神词:A/D转换;单片机;温度及压力采集:智能控制AbstractInthispaper,thedesignof(heworkingprincipleanddesigningmethodofA89C51microcontrollerasthecoretothetemperatureandpressurecont

3、rolsystem.TemperaturesignalfromthetemperaturesensorPTlOOacquisition,andthenbythetransmittersignalintothe0-5Vsignalto(hePCF8591chip.SCMthroughHCbustoanalogsignalsreadbackorsendout.Thepressuresignalisreturnedfromthepressuresensor,thetransmitterisconvertedtothe0-5VvoltagesignaltoIhePCF8591chip.ThePCF85

4、91chipissupportedby4analoginput,8bitchip1analogoutput,andsupportforIICbus,themaximumcanconnect8ofthesamechip.SCMwillthecollectedsignalsthroughthecalculationandprocessingafterthetemperatureandpressurevaluesaredisplayedin(heLCD1602crystal,Ihedesignintroduces(hehardwarecircuit,controlsystemincludes:tem

5、perature,pressuredetectingcircuit,temperaturecontrolcircuit,pressurecontrolcircuit,powersupplycircuit,alarmcircuit,displaycircuit,MCUminimumsystemcircuit,akeycircuitandsomeothermcu.Thisdesignalsodescribesthesoftwareprogramming,theprogrammingmodularstructure.Thesoftwareincludes:mainprogram,displaypro

6、gram,temperatureandpressureacquisitionsubroutine,subroutinekeys,controloutputsubroutine.Keywords:AZDtransfbrmationtemperatureandpressureacquisitionintelligentcontrol;目录1绪论1.1 研究背景及现状单片机自从20世纪70年代产生以来,己经广泛地应用在工业自动化控制、自动检测、机电一体化设备、智能仪器仪表、家用电器、汽车电子等各个方面。单片机具有功能齐全,抗干扰能力强,应用可靠,前景广阔,简单方便等优点。此外,单片机还具有体积小、应

7、用灵活性强、性能价格比高等特点,在嵌入式微控制系统中具有非常重要的地位。从工业自动化、智能仪器仪表、自动控制、消费类电子产品等方面直到国防尖端技术领域,单片机都起着十分重要的作用。近些年来,随着微机的开展,单片机的应用在人们的日常生活和工作中显得越来越重要。工业过程控制也是它的一个重要应用领域。由单片机而构成的嵌入式系统越来越受到世人的关注。因此,可以毫不夸张的说,没有单片机的仪器不能算是先进的仪器,没有单片机的过程控制系统不能称做是智能控制系统。温度控制是与人们日常生活息息相关的,在各个领域温度的控制都有不同的意义。很多控制领域中都有大量的用电来加热的设备,比方用于热处理的电加热炉,用于融化

8、金属的电阻炉以及温度控制箱等。使用单片机来对它们进行控制不仅具有控制方便、灵活性大、简单等一些特点,而且还可以大大提高产品的质量,通常单片机将采集到的温度数据与设定的温度上、下限进行比拟,并由此作出判断是否启动继电器来开启加热设备,在设计中通常还参加常用的LCD液晶显示或者LED显示等常用的显示电路,使得整个设计更加灵活、完全。国内外的温度控制系统开展都非常迅速,并在智能化、参数自整定、自适应等方面取得了不同的成果。目前的温度控制大多都是采用智能调节器,国产调节器的精度和分辨率比拟国外的较低,温度的控制效果也不是很理想但价格非常廉价,国外的调节器精度和分辨率都比拟高,价格较贵。德国、美国、日本

9、、瑞典等技术领先,都生产出了商品化的,性能优异的温度控制器以及仪器仪表,并在各个行业己经广泛应用。压力的测量对于实时监测以及平安生产都具有非常重要的意义。在工业应用中,为了高效并且平安的生产,就必须要有效的控制生产过程中的一些重要数比诸如压力、温度、流量等主要参数。因为压力的控制在一般生产过程中都起着决定性的平安作用,因此更有必要准确的测量压力。为了测得不同位置的压力数据,本设计的压力测量系统。通过压力传感器将需要测量的压力信号转变为电信号,再由变送器最终转换为0-5V的电压信号给PCF8591AD-DA芯片。单片机通过IlC总线将模拟数据读回来再根据变换公式做数据处理,最终将温度和压力值显示

10、在LCdl602芯片转换时间受IlC总线速率影响,可以最大支持8个相同的PCF8591芯片,即最大支持32路模拟量输入,8路模拟量输出。键盘输入是单片机控制系统常用的实现人际对话的输入设备。通过键盘,向单片机控制系统输入各种数据或者命令,也可以通过键盘,设置单片机控制系统工作于预定的模式。1. 2实现温度及压力智能控制的意义温度、压力都是过程生产中非常重要的参数,它们是生产过程中判断设备是否正常运行的关键因素。在生产过程中对于温度和压力的控制也就显的极为重要。比方在化工生产过程中,压力能影响物料平衡,也能影响化学的反响速度,是标志着生产过程是否可以正常进行的极为重要的参数。从平安生产的角度,压

11、力的检测也是很重要的。如:保证压力容器内的压力值要在平安的指标之内,确保易燃易爆等介质的压力不能超标等等。总之,温度与压力的检测是通常是生产过程中不可缺少的环节,只有严格按照生产工艺的要求来保持温度及压力的稳定,才能保证生产的正常进行。因此温度及压力准确测量与控制在现实生活中是非常重要的。2系统方案设计及论证1.1 温度、压力采集方案选择1.1.1 温度采集方案比拟1 .使用DS18B20模块本方案的优点是:采集温度精度较高,接线简单;缺点:单总线方式,当系统需要扩容时要另外占用单片机管脚资源。并且远距离传输时,因为是单总线方式,不能传到太远。2 .普通热敏电阻优点:价格低廉缺点:电路设计相对

12、较为复杂些,精度低。3 .PTlOO伯电阻方式优点:精度高,使用方便,配合专用的变送器能远距离传输。缺点:价格较为低廉2.1.2压力采集方案1 .压力传感器配合变送器方式优点:价格相对低廉,可靠性高,能较远距离传输,精度较高缺点:相对带通信功能的压力模块,扩容是需要占用AD通道2 .压力采集带通信专用模块优点:采集精度高,更智能,扩容时不需要占用任何硬件资源缺点:造价高。本设计中温度采集选用PTlOO钳电阻的测温方式,PTlOO伯电阻传感器会根据温度的不同,自身阻值也会有相应的变化,专用的变送器只需要街上PTIoo钳电阻及电源就可以输出标准的4-20m或者是0-20m信号,本设计选用输出0-2

13、0m信号,选用电流信号是因为当较远距离传输时变送器相当于恒流源输出,减小线路阻值带来的误差,当接到本设计中的控制板时,再通过串接250欧姆的电阻来将电流信号转换为0-5V的电压信号。压力采集方案选用压力传感器配合变送器方式,压力采集原理也是如此,不同的是前端传感器不是PTloO而是压力传感器。接线示意图如图2T所示。设计温度控制输出采用开关量的输出方式,控制原理为当温度实际值大于等于温度上限值时停止加热,当温度实际值小于等于下限值时,开始加热。压力控制方式采用外接变频器控制电机,进而控制管道压力的方式,原理为当压力实际值小于等于下限值时,控制板将电机的供电,并给变频器输入相应的控制值,控制算法

14、采用建议的模糊控制算法,即在一定的时间内检测到前后两次的压力值变化的大小,如果变化很小,说明给出的值小了,需要加大此值,如果变化一般,说明给出的值适宜,如果变化很大,说明给出的值大了,需要减小此值。本设计默认分为6档判断。即压力差值的6个档位分别为小于等于0.05MPa;大于0.05MPa并且小于等于0.IMPa;大于0.IMPa并且小于等于o.15MPas大于0.15MPa并且小于等于0.2MPa:大于0.2MPa并且小于等于0.25MPa:大于0.25MPa并且小于等于0.3MPa;图2-1接线示意图2.2系统结构总框图本控制系统的主控局部由单片机AT89C51构成。通过按键电路可以进行温

15、度及压力的上、下限值的设定,温度及压力的实际值通过PCF8591AD-DA芯片采集,模拟量的输出也是通过PCF8591芯片输出的。当压力超过报警限值时,有蜂鸣器报警。显示局部用的主要期间是LCDl602液晶屏。按键局部采用四按键的方式进行设定,温度及压力的开关量输出方式使用继电器。电源需要外接+5V的干净电源。图2-2系统结构总框图2. 3单片机的选择单片机AT89C51是美国的ATMEL公司生产的一款低电压、高性能的CMOS的8位单片机,芯片内部含有4K字节的可擦写的只读程序存储区以及128个字节的数据存储器,该芯片是采用高密度和非易失性存储技术生产的,兼容了以往标准的MCS-51产品的指令

16、系统,单片机片内含有通用的8位中央处理器,T89C51单片机具有不错的性价比以及可靠性和应用性,此单片机可以灵活的应用在各种控制领域之中。T89C51芯片提供以下一些标准的功能:(D.4K字节的闪存(2) .128字节的内部数据存储区(3) .32个I/O口线,可以输入或者输出(4) .两个16位定时或者计数器(5) .一个5向量两级的中断结构(6) .有一个全双工的串行口单片机(AT89C51)的工作可以降至OHZ的静态的逻辑操作,并且还支持两种可以通过软件来选择节约电能的工作模式:(1) .空闲工作方式:停止单片机的工作,但是允许数据存储器(RAM)、定时或者计数器、通信口以及中断程序的工

17、作。(2) .掉电的方式:保存数据存储器(RAM)中的内容,但是单片机的晶振电路停止工作并且禁止其它所有部件的工作一直到下一个硬件复位。T89C51引脚图如图2-3所示。图2-3T89C51单片机引脚图引脚功能说明:VCC:电源电压正GND:电源电压负PO口:PO口是8位的漏极开路型的双向I/O口,即地址或者数据总线的复位口。如果PO口作为输出端口时,每个端口能驱动8个逻辑门电路,如果对端口写1时,可以作为高阻抗输入端口来使用。如果在访问外部数据存储器或者程序存储器的时候,这组口线分时转换地址(低8位)和数据总线复用,此时的Po端口激活内部的上拉电阻。Pl口:Pl端口是带有内部上拉电阻的8位的

18、双向口。Pl端口的输出可以驱动(输入或输出)4个TTL逻辑门电路。如果对端口写1时,通过内部的上拉电阻把端口拉到高电平,此时可以当作输入端口使用。因为内部存在上拉电阻,假设某个引脚被外部信号拉低时会输出一个电流。P2口匕2端口是带有内部上拉电阻的8位的双向口,P2端口可以驱动(输入或输出电流)4个TTL逻辑门电路。如果对端口写1,通过内部的上拉电阻把P2端口拉到高电平,此时P2端口可以作为输入口。P3D:P3端口是带有内部上拉电阻的8位的双向口。P3端口输出缓冲级可以驱动(输入或输出)4个TTL逻辑门电路。如果P3端口写入1时,他们被内部上拉电阻拉高并可作为输入口。此时,被外部拉低的P3端口将

19、用上拉电阻输出电流。P3端口还接收一些用于闪存编程和程序校验的控制信号。RST:复位。当单片机工作时,复位引脚如果有两个机器周期以上的高电平信号就可以让单片机复位。XTAL1、XTAL2:振荡器输入端。2.4温度传感器PtIOo是钳热电阻,钳电阻的阻值会随着温度的不同而改变。PT字符后的100即表示此电阻在(TC时的阻值为100欧姆,当它在100C时它的阻值大约为138.5欧姆。工作原理:当PTlOo伯电阻在OC的时候它的阻值大约为100欧姆,它的阻值会随着温度上升而近似匀速的增长。但是它们之间的关系却并不是简单的正比的宜线关系,而是更趋近于一条抛物线。钳电阻阻值随温度变化的计算公式如下:-2

20、00t0CRt=R0l+At+Bt*t+C(t-100)t*t*t(1)0t850CRt=RO(1+t+Bt2)(2)Rt为当tC时的钳电阻的电阻值,RO为当OC时的伯电阻的阻值。公式中的A,B,系数都是实验测定的。标准的DlNIEC751系数:A=3.9083E-3、B=-5.775E-7、C=-4.183E-12o根据韦达公式求得阻值大于等于100欧姆的Rt-)t的换算公式:0t850Ct=(sqrt(*RO)2-4*B*R0*(RO-Rt)-A*RO)/2/B/R0PTloO钳电阻温度传感器器是一种以白金(Pt)作成的电阻式的温度检测器,属于正阻系数,它的电阻和温度变化的关系式如下:R=

21、Ro(l+T)式中a=0.00392,R。为IOoQ(在OC的电阻值),T为摄氏温度因此白金作成的电阻式温度检测器,又称为PTlOOo2.5压力传感器液压压力传感器是工业中最为常见的一种压力传感器,它广泛应用于各种工业自控的环境中,涉及石油管道、铁路交通、水利水电、生产自控、智能建筑、航空航天、石化、军工、电力、油井、船舶、管道送风、机床、锅炉负压等等众多的行业。工作原理:液压压力传感器的工作原理为压力直接作用在传感器的薄膜片上,使膜片产生与介质压力成正比的微小位移,让传感器的电阻发生了变化,再用电子线路检测这一变化,并且转换输出一个对应于这个压力的标准的电信号。常见参数:全密封、平膜型不锈钢

22、焊接结构、高灵敏度、小体积、零点满度可调节。应用领域:液压、中央空调系统、压铸、恒压供水、机械、机车制动系统轻工、冶金、环保、石化、空压机等其他自动控制系统。实物图如图2-4所示。图2-4平模传感器量程:-0.10l1000(MPa)输出信号:420mA(二线制)、05V、15V、010V(三线制)综合精度:O.1%FS0.25%FS0.5%FS供电电压:24DCV(936DCV)介质温度:-2085150C环境温度:常温(-2085C)量程温度漂移:0.05%FSC零点温漂移:0.05%FSC补偿温度:070eC平安过载:150%FS极限过载:200%FS响应时间:5mS(上升到90%FS)

23、绝缘电阻:大于2000MC(100VDC)负载电阻:电流输出型:最大800C;电压输出型:大于5KC密封等级:IP65长期稳定性能:0.1%FS/年振动影响:在机械振动频率20HZIooOHZ内,输出变化小于0.1%FS机械连接(螺纹接口):M20X1.5等,其它螺纹可依据客户要求设计电气接口(信号接口):紧线螺母+四芯屏蔽线2.6A/D-D/A转换器PCF8591芯片是一个单片集成、低功耗、单独供电、8-bitCMOS数据获取器件。PCF8591具有4个模拟量输入、1个模拟量输出以及1个串行PC总线接口。PCF8591芯片的3个地址引脚A0、Al和A2可以用于硬件地址编程,允许在同个Pc总线

24、上最多接入8个PCF8591器件,而不需要额外的硬件。在PCF8591芯片上输入输出的地址和控制和数据信号都是通过双线双向DC总线以串行的方式进行传输的。PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。PCF8591的最大转化速率由FC总线的最大速率决定。AlNOAIN3:模拟信号的输入端。0A3:引脚的地址端。VDD、VSS:电源端。(2.56V)SDA、SCL:IIC总线的数据线、时钟线。OSC:外部时钟的输入端,内部时钟的输出端。EXT:内、外部时钟选择线,使用内部时钟时EXT要接地。AGND:模拟信号接地端。图2-5PCF8591引脚图2.7

25、液晶LCD16021.CD1602字符型的液晶显示模块是一种专门用于显示字母、符号、数字等点阵式的LCD,目前常用的有16*1、16*2、20*2以及40*2行等样式的模块。下面以长沙太阳人电子的生产的LCD1602字符型液晶显示器为例,来做简单的介绍。一般的LCDI602字符型液晶显示器实物如图2-6所示:图2-6LCD1602液晶实物图3锅炉温度和压力控制系统硬件电路的设计3.1 最小单片机系统单片机的最小系统,是指用最少的元器件组成的并可以正常工作的单片机系统,对本设计来说,单片机最小系统应该包括:单片机,晶振电路以以及复位电路。3.1.1 晶振电路典型的晶振值一般取11.0592MHZ

26、(因为可以准确地计算得到9600波特率和19200波特率,常用用于有串口通讯的场合)/12MHz。在图37中,晶振Y2与电容C8、C9构成了单片机的晶体振荡电路。本设计当中的晶振选用的是无源晶振,晶振为11.0592MHz。起振电容选用的是两个22pF的小电容。图3-1晶振电路3.1.2 复位电路在图3-2中,S2、C6及R18构成了夏位电路。此单片机是高电平复位,即当按键Sl按下时,单片机的RST引脚被拉高,单片机被复位;当按键Sl松开后,单片机的RST引脚被下拉电阻R18拉低,单片机开始执行用户程序。电容C6是滤波电容,防止按键Sl按下的瞬间,单片机的RST引脚电平信号抖动,影响单片机的工

27、作。图3-2复位电路刚上电的时候或者触动按钮后C6两端的电压为0,这时RST为高电平,而它高电平保持的时间是由电阻R18和电容C6的时间常数决定,由公式(37)可知,电容C6充电的时间常数T等于0.22ms,远远大于2us,即使复位管脚RST高电平的时间保持2us以上,保证了单片机正常复位。1=R*C(3-1)3.2 温度及压力采集电路设计如图3-3所示,PCF8591芯片是一个带4路模拟量输入,1路模拟量输出以及IIC总线的芯片。此IIC总线上最多可以挂8片PCF8591芯片。温度采集占用第一路模拟量采集通道即ANO,压力采集占用模拟量采集通道第二路即ANh模拟量输出接AOUT即J6。此处的

28、信号电平都是0-5V的电平信号。图3-3模拟量采集模块3. 3温度及压力控制输出电路设计温度及压力控制输出电路如图3-4所示。图中控制原理石油PNP三极管控制继电器,从而控制外界强电。Ql局部电路为温度控制电路,Q2局部电路为压力控制电路。以Ql局部电路举例来说明此局部电路的工作原理,Ql与Q2局部的电路原理是一样的。D2是指示灯,R3是限流电阻,当P3.O为高电平时,QI截至,继电器不吸合,当P3.1为低电平时Ql导通,继电器吸合。当继电器吸合时,指示灯亮,继电器不吸合时,指示灯灭。图3-4温度及压力控制输出电路3 .4键盘及显示电路显示器件用LCD1602,如图3-5所示。排阻Rp2为PO

29、口的上拉电阻。单片机管脚P2.4、P2.5、P2.6、P2.7分别对应按键S3、S4、S6,S7。按键S3为菜单(确定)键,S4为设置高位按键,S6为设置中位按键,S7为设置低位按键。高、中、低位按键都是每按一次相应位置数据加一。设置好后按S3确定键。设置顺序分别为设置温度上限,压力上限,温度下限,压力下限。最后设置完后按确定键S3那么退出设置环境。图中的D8为模拟量采集指示灯。正常运行时D8会每隔几秒就闪烁一次。图3-5键盘及显示电路4 .6报警电路设计本系统采用蜂鸣器报警的方式来发出报警信息。图3-6中U5为蜂鸣器,三极管Q3为驱动三极管,R5为限流电阻,当单片机管脚P3.3为高电平时,三

30、极管Q3截至,蜂鸣器不发声;当单片机管脚P3.3为低电平时,三极管Q3导通,蜂鸣器发出声音。来到达报警提示的功能。本设计只设计了压力报警提示,当压力实际值超过设定的报警限值时,蜂鸣器会发出声音报警,当压力实际值在正常范围内时,蜂鸣器停止发声。图3-6报警电路3. 7电源电路设计在图3-7中D9为电源指示灯,R6为限流电阻,电容Clo与CIl都为滤波电容。本设计选用外界直流5V电源的方式供电。图3-7电源电路4系统软件设计3.1 系统总流程图设计系统程序的流程图如图4T所示。图4-1系统程序流程图上电后,系统首先初始化,初始化完成后开始采集模拟量值,判断按键程序,之后再判断各值是否在正常范围内,

31、如果不在范围内做出相应的操作。最后输出控制逻辑。4. 2局部程序说明程序局部大致分为主程序、LCD显示程序、模拟量采集程序、模拟量输出程序、按键设置程序、自动控制程序等局部。4.2.1主程序main01.cDInitialise。;/LCD初始化AD_CHANNEL=0;Tj)UT=1;关闭温度输出alarm_0UT=l;关闭报警输出while(l)ISendByte(PCF8591,OX41);D0=IRcvByte(PCF8591):/ADCO模数转换1Delaylms;ConvertToVoltage(D0,0);求温度1.CDLinel2=VoItage2;1.CDLine13=Vol

32、tagel;1.CDLine15=Voltage;ISendByte(PCF8591,0x40);D1=IRcvByte(PCF8591);/ADCO模数转换1DelayIms(5);ConvertToVoltage(Dl,1);求压力1.CD_Line22=Voltage2;1.CDLine24=Voltagel;1.CDLine25=Voltage0;Ptime=Ptime+1;时间计数*ISendByte(PCF8591,0x42);D2=IRcvByte(PCF8591);/DC2模数转换3ISendByte(PCF8591,0x43);D3=IRcvByte(PCF8591);/AD

33、C3模数转换4*/while(menubit=l)keyread();按键读取函数PO=OXOe;显示开,光标开,闪烁ledenable();if(setbit=O)(setbit=2)key.set();按键设置elseif(setbit=l)(setbit=3)keysetl:按键设置if(setbit=O)(setbit=l)P()=0X80;设置第1行显示地址elseif(setbit=2)(setbit=3)PO=OXCO:设置第2行显示地址ledenable0;调用LCD显示设置函数if(Setbit=O)(setbit=l)writeh();/elseif(setbit=2)Il

34、(Setbit=3)write1();/keyread0;按键读取函数RC4、RC5、RC6、RC7分别为四个按键,按下瞬间,Trg值分别为16,3,64/28if(Trg=I6)/菜单键按下时bai=TH/100:shi=TH%l()OIO;ge=TH%10;menubit=l;菜单键标志)autot.,pO:自动控温及控压子程序DelayImS;DACconversion(PCF8591,0x40,D2);/DAC数模转换1.CDDisplayALine(0x()(),LCDLine1);LCDDisplayA=Line(0x40,LCLLine2);4.2.2LCD显示程序bitLCDB

35、USy-CheCkoLCD忙检测bitResult;结果标志位1.CDRS=0;1.CDRW=1;1.CDEN=1;Delay4us();延时4usResult=(bit)(P00x80);1.CDEN=O;returnResult;输出结果标志位voidLCDWriteCommand(ucharcmd)LCD控制命令whiIe(LCDBusyCheck();While循环1.CDRS=0;1.CDRW=0;1.CD.EN=0;一nop_();短延时nop一();Po=cmd;Delay4us();延时4us1.CDEN=1;Delay4us();1.CDEN=0;voidLCDWriteDa

36、ta(uchardat)LCD写数据whiIe(LCDBusyCheck();While循环1.CDRS=1;1.CDRW=O;1.CDLEN=O;PO=dat;Delay4us();1.CDEN=1;Delay4us();1.CDEN=O;ivoidLCDInitialiseOLCD初始化1.CDWriteCommand(0x38);DelayIms(5);1.CDWriteCommand(OxOc);DelayIms(5);1.CDWriteCommand(0x06);DelayIms(5);1.CDWriteCommand(OxOl);DelayIms(5);!voidLCDSetPos

37、ition(ucharpos)LCD设置显示位置1.CDWriteCommand(pos0x80);voidLCDDisplayLine(ucharLineddr,uchars)LCD显示行设置uchari;1.CDSetPosition(Lineddr);for(i=0;i16;i+)1.CDWriteData(si);4 .2.3模拟量采集程序voidConvertToVoltage(unsignedlongintval,uchara)数据转换,转换到电压值if(a=0)求温度val=100*val26;数据转换Voltage2=val100+0;Voltagel=val%10010+0;

38、Voltage0=val%10+0;TR=(Vo1tage2-0)*100+(Vo1tage1-0,)*10+(Voltage00);/温度实际值else求压力val=100*va1/255;数据转换Voltage2=val100+O1;Voltagel=val%10010+O1;Voltage0=val%10+0;PR=(Vo1tage2-,0)*100+(Vo1tage1-0)*10+(Voltage0-,0);压力实际值DAC变换,转化函数bitDACconversion(unsignedcharsia,unsignedcharc,unsignedcharVal)启动总线发送器件地址发送

39、控制字节StartI2c0;SendByte(sla);if(ack=O)return(0);SendByte(c);if(ack=O)return(0);SendByte(Val);if(ack=O)return(O);StopI2c0;return(1);发送DAC的数值结束总线DC发送字节命令数据函数bitISendByte(unsignedcharsla,unsignedcharc)StartI2c0;SendByte(sla);if(ack=O)return(0);SendByte(c);if(ack=O)return(0);StopI2c();启动总线发送器件地址发送数据结束总线r

40、eturn;ADC读字节数据函数unsignedcharIRcvByte(unsignedcharsia)unsignedcharc;StartI2cO;SendByte(sla+l);if(ack=O)return(0);C=RcvByte();AckI2c(l);StopI2c0;return(C);启动总线发送器件地址读取数据0发送非就答位结束总线5 .2.4按键设置程序/*按键设置函数*函数名:keyO*函数功能:按键函数1.无按键按下时,Pl=Oxff;ReadData=0;Trg=0;Cont=0;2 .P1.0按下时,PLO=OjReadData=0x01:Trg=OXoI(Tr

41、g只会在这个时候对应位的值为1,其它时候都为0);Cont=0x01;3 .PLO长按住时,Pl.O=OjReadData=0x01;Trg=0x00;Cont=0x01;如果是Pl.1按键那么Trg,Cont对应值都为2:如果是Pl.2按键那么Trg,Cont对应值都为4:是Pl.3按键那么Trg,Cont对应值都为8*输入:无*输出:无*/voidkeyread()按键读取函数unsignedchartemp=P20x0f;将临时变量temp的低高四位置一,高四位不变unsignedcharReadData=tempOxff;/1Trg=ReadData&(ReadDataCont);/2

42、Cont=ReadData;/延时函数voiddelay()Inti;for(i=0;i9)bai=0;elseif(Trg=64)设置十位键按下shi+;if(shi9)sh=O;elseif(Trg=I28)设置个位键按下ge+;if(ge9)ge=O:elseif(Trg=I6)设置菜单键按下setbit=setbit+1;result=bai*l()O+shi*10+ge;PO=OXOC;显示开,光标关ledenable0;if(setbit=l)TH=result;bail=PH/100;shil=PH%l()010;gel=PH%10;elseif(setbit=3)TL=resu

43、lt;bail=PL100;shil=PL%l()Ol();gel=PL%10;if(setbit=4)menubit=O;标志清零setbit=O;4.2.5自动控制子程序voidautotp0自动控温及控压子程序if(TR=TH)如果实际温度大于等于设定上限温度TOUT=I;停止加热if(PR=PL)M(PR=PH)在正常值范围内alarmOUT=1;关闭报警输出5仿真运行本设计通过proteus7.8仿真己经完全没有问题。仿真如图5T所示。单片机的管脚P2.4、P2.5、P2.6、P2.7接的按键分别为菜单(确定)按键、设置高位数据按键、设置中位数据按键、设置低位数据按键。P3.0、P3

44、.1、P3.2、P3.3管脚接的LED分别代表温度控制开关量输出、压力开关量控制输出、模拟量采集指示及报警输出指示。LCD1602上显示的T-25.3C,表示当前实际温度为25.3C。P-0.70MPaw表示当前压力值为0.70MPao调节温度或者压力可以通过前端的可调电阻来调节。PCF8591芯片的ANO通道接入的可调电阻代表温度模拟量输入;PCF8591芯片的ANl通道接入的可调电阻代表压力模拟量输入。输出仿真用电压表指示。本设计采用模糊控制,当在定长的时间段内,检测前后两次采集到的压力值,判断此压力的差值在模糊表中的哪个区间,对应给出相应的输出。图5TPrOteUS7.8仿真效果图温度低于下限时如图5-2所示。当温度低于下限时,P3.0端控制输出加热,当温度在正常范围内温度控制输出端状态不变,当温度高于上限时,温度控制输出端停止加热。图5-2温度低于下限图压力低于下限是如图5-3所示。

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号