恒温箱,修改版_第1页
恒温箱,修改版_第2页
恒温箱,修改版_第3页
恒温箱,修改版_第4页
恒温箱,修改版_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、西南科技大学计算机控制系统设计报告设计名称: 恒温箱温度计算机控制系统设计 姓 名: 孙兰 学 号: 2 0 1 21856 班 级: 自动1201 班 指导教师: 聂诗良 起止日期: 2015.9.15-2012.12.15 西南科技大学信息工程学院制28设 计 任 务 书学生班级: 自动1201 学生姓名: 孙兰 学号: 20121856 设计名称: 恒温箱温度计算机控制系统设计 起止日期: 9月15日12月25日 指导教师: 聂诗良 设计要求: (1)温度采集传感器采用热电阻或热电偶,或一体化数字温度传感器DS18B20。(2)控制灯泡亮度或发热量,采用继电器开关控制或用可控硅平滑控制。

2、(3)采用单片机或PLC作为控制器。(4)采用LED或LCD或PC机的液晶显示器作为显示器,同时显示给定温度和实际温度。(5)采用自制按键或PC机的键盘作为温度给定值输入。(6)恒温箱实际温度达到给定值时(误差要求±1)需声光提示,声音时延5秒后停止。(7)恒温箱最高温度60。(8)系统操作流程是:1)确认系统各硬件连线就绪,无安全隐患;2)系统上电;3)设置温度给定值后,启动系统工作,系统进入温度自动控制工作状态。4)系统工作完毕后,若不需系统工作,则可关闭系统电源,查看并确保系统无安全隐患后可离开。恒温箱温度计算机控制系统设计摘要:本设计的温度测量及加热控制系统以AT89S52单

3、片机为核心部件,外加温度采集电路、键盘及显示电路、加热控制电路和越限报警等电路。采用单总线型数字式的温度传感器DS18B20,及行列式键盘和动态显示的方式,以容易控制的固态继电器作加热控制的开关器件。本作品既可以对当前温度进行实时显示又可以对温度进行控制,以使达到用户需要的温度,并使其恒定在这一温度。人性化的行列式键盘设计使设置温度简单快速,两位整数一位小数的显示方式具有更高的显示精度。建立在模糊控制理论上的控制算法,使控制精度完全能满足一般社会生产的要求。通过对系统软件和硬件设计的合理规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降低了硬件成本,系统操控简便。关键

4、词:单片机;恒温控制;模糊控制The design of incubator temperature computer control system Abstract: The design of the temperature measurement and heating control systems to AT89S52 microcontroller core component, plus the temperature acquisition circuit, keyboard and display circuit, heating circutal temperature s

5、ensor DS18B20, and the determinant of the keyboard and dynamic display in order to easily control the solid-state relays for heating control of the switching device. This works both on the current temperature in real-time display of temperature can be controlled in order to enable users to reach the

6、 required temperature, and make it constant at this temperature. Humanized design keyboard determinant temperature easy Express, the two decimal integer, a display shows a higher accuracy. Set up in the fuzzy control theory, control algorithms, so that the control accuracy can meet the general requi

7、rements of social production. Through the system software and hardware design of rational planning, exert their own single-chip integration of many system-level functional unit of the advantages, does not reduce the functions at the premise of effectively reducing the cost of hardware, the system ea

8、sy to manipulate. Key words: microcontroller, temperature control, fuzzy control一、 设计目的和意义1.1概述利用AT89S52对温度进行控制,采用单总线传输方式读取DS18B20当前温度值并用龙丘小液晶显示,使用按键更改设定温度,使用PID算法控制箱体温度到一个恒定值,这样一个控制系统涵盖了以计算机控制系统课程为核心的单片机原理及应用、自动控制原理等相关课程知识,提供了真正将理论课程所学的知识应用于实践的平台。从硬件的搭建到软件算法的探索都需要扎实的理论基础。在涉及光耦驱动晶闸管电路的设计过程中还考察了器件选型的

9、重要性,对于箱体的设计还考察了学生对于实际的考虑。整个设计过程需要工程的思想,正是迎合了我自动化专业优秀学生所必须具备的知识与能力!1.2 设计要求(1)温度采集传感器采用热电阻或热电偶,或一体化数字温度传感器DS18B20。(2)控制灯泡亮度或发热量,采用继电器开关控制或用可控硅平滑控制。(3)采用单片机或PLC作为控制器。(4)采用LED或LCD或PC机的液晶显示器作为显示器,同时显示给定温度和实际温度。(5)采用自制按键或PC机的键盘作为温度给定值输入。(6)恒温箱实际温度达到给定值时(误差要求±1)需声光提示,声音时延5秒后停止。(7)恒温箱最高温度60。(8)系统操作流程是

10、:1)确认系统各硬件连线就绪,无安全隐患;2)系统上电;3)设置温度给定值后,启动系统工作,系统进入温度自动控制工作状态。4)系统工作完毕后,若不需系统工作,则可关闭系统电源,查看并确保系统无安全隐患后可离开。二、系统的总体结构2.1 总体方案设计系统整体框图如下图: 图1 系统原理总框图上面的系统总体框图中,该系统中微控制器采用AT89S52单片机小系统,温度显示采用LCD1602液晶显示模块、声光报警器模块、DS18B20温度采集模块、键盘输入设定温度模块、继电器驱动模块。2.2 温度控制方案选择该温度控制系统的控制对象是箱体内的温度,但是温度这个量的控制必须借助其他产热原件才能实现。经过

11、多方调查,我总结到可行又比较简单的方案大体都是使用灯泡发光产热来改变箱体内温度,控制灯泡产热的方案分别如下所述:方案一:采用继电器作为程控开关,控制灯泡的开或关,进而控制其产热。这种方案简单易行,但是继电器控制的频率一般只有10Hz左右,不能在50Hz交流电的每个周期都控制灯泡开关一次,也就是只能控制灯泡的亮或灭,不能调节灯泡的亮度。方案二:采用开关器件晶闸管作为控制灯泡亮度的执行部件,由于晶闸管的开关速度可以达到很快,因而可以控制灯泡的亮度。由于本装置要求控制调节控制温度的精度要达到1°C,用继电器方案也可以达到要求,但是不能实现平滑控制灯泡发热量的要求。为了能够平滑控制灯泡亮度,

12、最终选定使用晶闸管控制方案,即方案二。2.3 主控芯片的选择对于本系统这样一个典型而又全面的控制系统来说,用八位的52单片机或者AVR单片机就可以满足控制要求。方案一:采用52系列单片机,有两个外部中断口、3路定时器、4路8位I/O口,资源丰富,编程简单。方案二:使用AVR系列的ATMEGA16单片机,除了拥有一般的中断、定时、输入输出功能外,还有PWM输出功能,JTAG等外加功能,但是需要烧写熔丝位,编程相对复杂些,而且价格要高出好多。综合考虑到价格因素以及资源需求,最终选定AT89S52单片机作为主控芯片。2.4 液晶显示方案选择方案一:使用的最为广泛的方案也就是使用1602字符型液晶显示

13、器,该液晶价格便宜,编程简单,但是只能显示两行16个字符以内的英文字符。方案二:使用龙丘小液晶,分辨率128*64,可以显示不同大小的汉字和字符,功耗很低,采用3.3V供电。由于本系统使用便宜的7805线性稳压芯片供电,其发热功率与输入与输出电压差以及负载电流的大小乘积正相关。所以采用LCD1602字符型液晶继电器,选择方案一。三、 系统模块设计3.1 AT89S52单片机小系统模块设计3.1.1 AT89S52单片机简介AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指

14、令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。3.1.2 单片机最小系统电路单片机工作的基本要

15、求包括必要的5V电源(40引脚),接地(20引脚),晶振电路(18、19引脚),复位电路(9引脚)以及使用内部存储器需要给31脚接高。 图2 AT89S52最小系统电路图3.2 DS18B20温度采集模块设计3.2.1 DS18B20简介DS18B20数字温度计是Dallas公司生产的1Wire器件,即单总线器件。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化成串行数字信号,以供单片机处理,具有连线简单、微型化、低功耗、高性能、抗干扰能力强、精度高等特点。因此用它来组成一个测温系统,具有电路简单,在一根通信线上可以挂很多这样的数字温度计,十分方便。目前已被众多行业进行广泛的运用(

16、锅炉、温控表粮库、冷库、工业现场温度监控、仪器仪表温度监控、农业大棚温度监控等)。通过编程,DS18B20可以实现912位的温度读数。3.2.2 温度检测部分电路温度检测部分很简单,因为信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线就可以正常工作,这里我还是给它接入了电源线。 图3 温度检测部分电路3.3 LCD1602液晶显示器显示模块设计该款液晶显示器与单片机通信属于串行口数据通信方式,可以直接与单片机引脚连接,接受5V电平逻辑。 图4 小液晶连接电路3.4 键盘输入温度设定模块设计为了简便,我只使用了5个独立按键作为按键输

17、入,分别作为模式切换键、温度升高键、温度降低键。 图5 按键检测电路3.5 声光报警模块本设计用一个LED灯来显示此刻恒温箱内的温度状态,采用NPN三极管控制蜂鸣器的鸣叫, 当BUZZER端高电平的时候,NPN三极管导通,蜂鸣器叫;相反,当BUZZER端低电平的时候,三极管截止,蜂鸣器也不发出叫声。图6 声光报警电路3.6 过零检测模块过零检测原件采用光耦,在交流电过零点的时候,会产生下降沿,进而产生中断,稳定性好,原理简单,如图7。图7 过零检测电路3.7 可控硅驱动模块设计可控硅使用的型号是BT137,配合使用光耦MOC3021驱动它,MOC3021又用了一个PNP三极管来驱动,这里也就是

18、运用了两级驱动来控制强电的灯泡亮灭,完全隔离保证安全。 图8 可控硅驱动部分电路四、 系统软件设计整个软件系统的流程图绘制在下面图中。系统初始化液晶显示 是否按键重设温度重设温度Y N开中断读一次温度显示当前温度和设定温度再读一次温度判断正确性并显示现实判断PID调光检测温度=设定温度 NY声光报警 Y图9 软件流程图4.1 液晶显示程序设计4.1.1 LCD显示当前实际温度的个、十位和小数位void lcdntemp(uchar sw,uchar gw,uchar xs)write_com(0x80+0x09);/指针的位置移至第一行第9个位置write_dat(tmsw);delay1ms

19、();/延时1ms给硬件一点反应时间write_com(0x80+0x0a);write_dat(tmgw);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x0c);write_dat(tmxs);delay1ms();/延时1ms给硬件一点反应时间4.1.2 LCD1602液晶模块的操作程序sbit lcdrs=P02;/定义lcdrs脚sbit lcdwr=P01;/定义lcdwr脚 sbit lcde=P00;/定义lcde脚 sbit lcdBLK = P37;/BLKuchar tm="0123456789"/定义字符数组uc

20、har no="now temp="uchar set="set temp="/定义字符串显示uchar sn="input st="/定义设置时字符串4.1.3 对LCD的显示模式进行初始化设置void init()delaynms(15);/延时15ms,首次写指令时应给LCD一段较长的反应时间write_com(0x38);/显示模式设置:16×2显示,5×7点阵,8位数据接口delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x38);delaynms(5);/延时5ms,给硬件一

21、点反应时间write_com(0x38);/连续三次,确保初始化成功delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x0c); /显示控制:显示开,光标关,闪烁关delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x06); /输入方式设置:数据读写操作后,AC自动加1,画面不动delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x01);/清屏幕指令,将以前的显示内容清除delaynms(5);/延时5ms,给硬件一点反应时间 4.2 温度检测程序设计DS18B20采集温度的精度可以设置,我们使用了最高精度的模

22、式,也就是12位。其源码在官方资料上以及网上随处可见,经过修改后,该模块简化程序如下。4.2.1 18B20读温度函数uchar ds18b20_temp()/18B20读温度函数uchar temp=0,temph=0,templ=0;ds18b20_reset();/将DS18B20初始化ds18b20_write(0xcc);/ 跳过读序号列号的操作ds18b20_write(0x44);/ 启动温度转换delaynms(10); /转换一次需要延时一段时间 ds18b20_reset();/将DS18B20初始化ds18b20_write(0xcc);/跳过读序号列号的操作ds18b2

23、0_write(0xbe);/读取温度寄存器,前两个分别是温度的低位和高位 templ=ds18b20_read();/将读取到的温度的低位存在templ中temph=ds18b20_read();/高位存在temph中temp=temph*16+templ/16;/读出温度整数部分,2位xs=(templ%16)*10/16;/读出温度的小数部分,1位return temp;/返回温度的整数部分4.3 按键输入温度设定模块设计sbit KEY1=P14;/按键1+1 sbit KEY2=P15;/按键2-1sbit KEY3=P16;/按键3+5sbit KEY4=P15;/按键2-5sbi

24、t KEY_I=P35;/模式切换按键uchar st;/存放设定温度值uchar c=0;/存放小数int flag=0;/定义模式切换标志位,初始化为0,默认为工作模式4.3.1 检测模式切换按键程序int KEY_IJC()if(KEY_I=0)delaynms(10);/延时10ms,按键消抖处理if(KEY_I=0)flag=flag;while(KEY_I);/按键消抖处理,释放按键有效return flag;5、 调试过程及结果分析5.1 软件调试软件调试首先是在keil编译器下进行,包括源程序编译及运行调试。接着链接proteus进行硬件实时调试。 5.2 硬件调试 硬件调试时

25、,主要检查印制板及焊接的质量是否符合要求,有无虚焊点及线路间有无短路、断路。检查无误后,通电检查 LCD 液晶显示器亮度情况,再依次检查各部分结构安装是否牢固。5.3 系统调试系统调试在硬件调试结束后,将程序下载到单片机上面,然后通电检查运行效果。5.4 结果分析 能够达到基本的控制要求,即恒温箱实际温度达到给定值时,有声光提示,并且声音时延5秒后才停止。六、心得体会通过本次制作恒温箱,对于计算机控制系统有更实际的了解,以前学习的知识,都是基于理论,实践动手的机会不是很多,实践动手能力低。但是,这次的课程设计,从买器材,到电路设计,画电路图,焊电路板,软件程序设计及仿真都靠自己完成。这样一个控

26、制系统运用了以计算机控制系统课程为核心的单片机原理及应用、自动控制原理等相关课程知识,提供了真正将理论课程所学的知识应用于实践的平台。从硬件的搭建到软件算法的探索都需要扎实的理论基础。在涉及光耦驱动晶闸管电路的设计过程中还考察了器件选型的重要性,对于箱体的设计还考察了学生对于实际的考虑。整个设计过程需要工程的思想。 通过这次的设计制作,我学习到了如何把理论上的东西运用到实践当中,并且对于PID参数的调整有了更加深入的理解,体会颇深,对于以后做项目又增加了不少经验。参考文献1姜志海.单片机原理及应用M.北京:电子工业出版社,2013.8 2陈伯时.电力拖动自动控制系统M.第3版.北京:机械工业出

27、版社, 2003.3 徐玮.51单片机快速入门M.北京:机械工业出版社,2011.114阎石数字电子技术基础(第四版)M北京:高等教育出版社,2005.125程国钢.51单片机典型模块开发查询手册M.北京:电子工业出版社,2012.56康华光数字电子技术基础(第五版)M北京:高等教育出版社,2006.17康华光模拟电子技术基础(第五版)M北京:高等教育出版社,2006.18毕效辉.自动控制原理M.北京:科学出版社,2014.69 谭浩强. C程序设计(第四版)M. 北京: 清华大学出版社,2010.610 何克忠. 计算机控制系统(第二版)M. 北京: 清华大学出版社,2015附录一 元器件清

28、单numberCommentQuantity1各种型号电容若干2LED发光二极管53一般二极管24各种阻值型号电阻若干5电源座16NPN三极管27蜂鸣器18L7805模块19按键510单片机11111M晶振1121.5V电池313DS18B20温度传感器114LCD1602液晶显示器115晶闸管116光耦117白炽灯118灯座1附录二 完整程序#include<reg52.h> /包含单片机寄存器的头文件#include<intrins.h> /包含_nop_()函数定义的头文件#define uchar unsigned char/宏定义uchar#define ui

29、nt unsigned int/宏定义uintsbit CF=P24; /定义触发脉冲发送引脚 /*以下是延时函数模块*/*函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i<4;i+) for(j=0;j<33;j+) ; /*函数功能:延时若干毫秒入口参数:n*/void delaynms(unsigned int n)unsigned int i;for(i=0;i<n;i+) delay1ms();/*以下是DS

30、18B20的操作程序 */ sbit DQ=P26;/定义18B20数据引脚uchar time;/设置全局变量,专门用于严格延时uchar xs;/存放读取温度的小数位/*函数功能:将DS18B20传感器初始化*/void ds18b20_reset()/18b20复位函数while(1)DQ=1;DQ=0;time=250; /540us延时,当delay=1时延时为2us ,T=2*xwhile(-time);DQ=1;time=25;while(-time);while(DQ=0) time=220; while(-time); if(DQ) break; time=150;while

31、(-time);break; /*函数功能:向DS18B20写入一个字节数据入口参数:dat*/ void ds18b20_write(uchar dat)/18B20写函数uchar i=0;for (i=0; i<8; i+) DQ=0;/将数据线从高拉低时即启动写时序 DQ=dat&0x01;/利用与运算取出要写的某位二进制数据, /并将其送到数据线上等待DS18B20采样for(time=0;time<25;time+);/延时约45us,DS18B20在拉低后的约1560us期间从数据线上采样DQ=1;/释放数据线 dat>>=1;/将dat中的各二进

32、制位数据右移1位for(time=0;time<25;time+);/稍作延时,给硬件一点反应时间 /*函数功能:从DS18B20读取一个字节数据出口参数:dat*/uchar ds18b20_read()/18B20读函数uchar i=0,dat=0;/储存读出的一个字节数据for (i=0;i<8;i+) DQ=1; DQ=0; _nop_();_nop_();_nop_(); _nop_();/延时4个机器周期,给系统反应时间 DQ=1;/拉高数据线 _nop_();_nop_();_nop_();_nop_();/延时4个机器周期,给系统反应时间 if(DQ) dat|=

33、0x01<<i; time=25; while(-time); DQ=1;/拉高数据线 _nop_(); return(dat);/返回读出的十六进制数据/*函数功能:从DS18B20读取温度出口参数:temp*/uchar ds18b20_temp()/18B20读温度函数uchar temp=0,temph=0,templ=0;ds18b20_reset();/将DS18B20初始化ds18b20_write(0xcc);/ 跳过读序号列号的操作ds18b20_write(0x44);/ 启动温度转换delaynms(10); /转换一次需要延时一段时间 ds18b20_res

34、et();/将DS18B20初始化ds18b20_write(0xcc);/跳过读序号列号的操作ds18b20_write(0xbe);/读取温度寄存器,前两个分别是温度的低位和高位 templ=ds18b20_read();/将读取到的温度的低位存在templ中temph=ds18b20_read();/高位存在temph中temp=temph*16+templ/16;/读出温度整数部分,2位xs=(templ%16)*10/16;/读出温度的小数部分,1位return temp;/返回温度的整数部分/*以下是LCD1602液晶模块的操作程序 */sbit lcdrs=P02;/定义lcdr

35、s脚sbit lcdwr=P01;/定义lcdwr脚 sbit lcde=P00;/定义lcde脚 /sbit lcdBLK = P37;/BLKuchar tm="0123456789"/定义字符数组uchar no="now temp="uchar set="set temp="/定义字符串显示uchar sn="input st="/定义设置时字符串 /*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:com*/void write_com(uchar com) P1=com;/将数据送入P1口,即写

36、入指令或地址lcdrs=0;lcdwr=0;/根据规定,RS和R/W同时为低电平时,可以写入指令delaynms(5);lcde=0;delaynms(5);lcde=1;/*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:dat(为字符常量)*/void write_dat(uchar dat)P2=dat;/将数据送入P2口,即将数据写入液晶模块lcdrs=1;lcdwr=0;/RS为高电平,RW为低电平时,可以写入数据delaynms(5);lcde=0;delaynms(5);lcde=1;/*函数功能:对LCD的显示模式进行初始化设置*/void init()dela

37、ynms(15);/延时15ms,首次写指令时应给LCD一段较长的反应时间write_com(0x38);/显示模式设置:16×2显示,5×7点阵,8位数据接口delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x38);delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x38);/连续三次,确保初始化成功delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x0c); /显示控制:显示开,光标关,闪烁关delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x06); /输

38、入方式设置:数据读写操作后,AC自动加1,画面不动delaynms(5);/延时5ms,给硬件一点反应时间write_com(0x01);/清屏幕指令,将以前的显示内容清除delaynms(5);/延时5ms,给硬件一点反应时间/*函数功能:LCD在第一行显示"now temp= . °C "字符串*/void lcdnt()uchar i;write_com(0x80);for(i=0;i<9;i+)write_dat(noi);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x0b);write_dat('.&

39、#39;);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x0d);write_dat(0xDF);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x0e);write_dat('C');delay1ms();/延时1ms给硬件一点反应时间/*函数功能:LCD在第二行显示"set temp= . °C "字符串*/void lcdgg()uchar i;write_com(0x80+0x40);for(i=0;i<9;i+)write_dat(seti);delay1m

40、s();/延时1ms给硬件一点反应时间write_com(0x80+0x40+0x0b);write_dat('.');delay1ms();/延时1ms给硬件一点反应时间?write_com(0x80+0x40+0x0d);write_dat(0xDF);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x40+0x0e);write_dat('C');delay1ms();/延时1ms给硬件一点反应时间/*函数功能:设置模式下LCD在第二行显示"input st"字符串*/void lcdst()ucha

41、r i;write_com(0x80+0x40);for(i=0;i<9;i+)write_dat(sni);delay1ms();/延时1ms给硬件一点反应时间/*函数功能:LCD显示当前实际温度的个、十位和小数位入口参数:sw,gw,xs*/void lcdntemp(uchar sw,uchar gw,uchar xs)write_com(0x80+0x09);/指针的位置移至第一行第9个位置write_dat(tmsw);delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x0a);write_dat(tmgw);delay1ms();/延时1ms

42、给硬件一点反应时间write_com(0x80+0x0c);write_dat(tmxs);delay1ms();/延时1ms给硬件一点反应时间/*函数功能:LCD显示设置温度的个、十位和小数位入口参数:a,b,c*/void lcdxs(uchar a,uchar b,uchar c)write_com(0x80+0x40+0x09);/将指针移至第二行第9个位置write_dat(tma);/显示设置温度的十位delay1ms();/延时1ms给硬件一点反应时间write_com(0x80+0x40+0x0a);write_dat(tmb);delay1ms();/延时1ms给硬件一点反应

43、时间write_com(0x80+0x40+0x0c);write_dat(tmc);delay1ms();/延时1ms给硬件一点反应时间/*以下是按键模块的操作程序 */sbit KEY1=P14;/按键1+1 sbit KEY2=P15;/按键2-1sbit KEY3=P16;/按键3+0.1/sbit KEY4=P17;/按键4-5sbit KEY_I=P17;/模式切换按键uchar st;/存放设定温度值uchar c=0;/存放小数int flag=0;/定义模式切换标志位,初始化为0,默认为工作模式/*函数功能:检测模式切换按键,按下后改变模式出口参数:flag*/int KEY_IJC()if(KEY_I=0)delaynms(10);/延时10ms,按键消抖处理if(KEY_I=0)flag=flag;while(KEY_I);/按键消抖处理,释放按键有效return flag;/*函数功能:按键检测,在设置模式下修改给定值入口参数:st出口参数:st*/uchar aj(uchar st)if(KEY1=0)delaynms(10);/延时10ms,按

温馨提示

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

评论

0/150

提交评论