ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:1.20MB ,
资源ID:8836416      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8836416.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的温度控制系统的设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的温度控制系统的设计.docx

1、基于单片机的温度控制系统的设计基于单片机的温度控制系统设计1设计要求要求设计一个温度测量系统,在超过限制值的时候能进行声光报警。具体设计要求如下:1数码管或液晶显示屏显示室内当前的温度;2在不超过最高温度的情况下,能够通过按键设置想要的温度并显示;设有四个按键,分 别是设置键、加1键、减1键和启动/复位键;3DS18B20温度采集;4超过设置值的5C时发出超限报警,采用声光报警,上限报警用红灯指示,下限报警用 黄灯指示,正常用绿灯指示。2.方案论证根据设计要求,本次设计是基于单片机的课程设计,由于实现功能比较简单,我们学 习中接触到的51系列单片机完全可以实现上述功能,因此可以选用 AT89C

2、51单片机。温度采集直接可以用设计要求中所要求的 DS18B20。报警和指示模块中,可以选用 3种不同 颜色的LED灯作为指示灯,报警鸣笛采用蜂鸣器。显示模块有两种方案可供选择。方案一:使用LED数码管显示采集温度和设定温度;方案二:使用LCD液晶显示屏来显示采集温度和设定温度。LED数码管结构简单,使用方便,但在使用时,若用动态显示则需要不断更改位选和 段选信号,且显示时数码管不断闪动,使人眼容易疲劳;若采用静态显示则又需要更多硬 件支持。LCD显示屏可识别性较好,背光亮度可调,而且比 LED数码管显示更多字符,但 是编程要求比LED数码管要高。综合考虑之后,我选用了 LCD显示屏作为温度显

3、示器件, 由于显示字符多,在进行上下限警戒值设定时同样可以采集并显示当前温度,可以直观的 看到实际温度与警戒温度的对比。LCD显示模块可以选用RT1602C。3硬件设计根据设计要求,硬件系统主要包含 6个部分,即单片机时钟电路、复位电路、键盘接 口模块、温度采集模块、LCD显示模块、报警与指示模块。其相互联系如下图 1所示:单片机时钟电路形成单片机时钟信号的方式有内部时钟方式和外部时钟方式。本次设计米用内部时钟图2所示。单片机内部有一个用于构成振荡器反相放大器,引脚XTAL1和XTAL2分大器的输入端和输出端,其频率范围为经由片外晶体振荡器或陶瓷振荡器与两容一起形成了一个自激振荡电路,为单片钟

4、源。复位电路复位是单片机的初始化操作,其作用系统中的其他部件都处于一个确定的初这个状态开始工作,以防止电源系统不稳工作不正常。在系统中,有时会出现工作况,为了从异常状态中恢复,同时也为了便,需要设计一个复位电路。1920X21方式,女口XT AL Cl 22pFGND图2单片机内部时钟方式电路是使CPU和始状态,并从定造成CPU不正常的情系统调试方单片机的复位电路有上电复位和按键复位两种形式3单片机按设计要求路位键,因此本次设计采用按键复位,如图运行时用户的按键复位功能。键盘接口模块本次设计需要的按键有4个,除去按键外,还有3个功能按键,因此选择盘。如图4,将键盘直接与单片机P1连。3个键设计

5、思路如下:当按下 S1进入上下限警戒值调整状态;当第一次时,进行上限警戒值设定,当第二次按进行下限警戒值设定,当第三次按下S1正常工作状态。在警戒值调整状态下,的高增益别为此放12MHz ,个匹配电机提供时需要有启动3。复位电路主要完成系统的上电复位和系统在图4键盘接口模块P10P11P12P13P14m 一个复位独立式键口的、相键时,系统按下S1键下S1键时,键时,回到按下S2键,上下限警戒值加1按下S3键,上下限警戒值减 1正常工作状态下,按下 S2和S3键无 作用。温度采集模块本次设计中的温度传感器使用的是 DALLAS公司的单总线数字温度传感器 DS18B20,这是一种常用的温度传感器

6、,具有体积小、硬件开销低、抗干扰能力强、精度高的特点。DS18B20采用独特的一线接口,具有只需要一条口线通信多点的能力,简化了分布式温度传感应用,无需外部元件。可用数据总线供电,电压范围为至,测量温度的范围为-55C至+125C,在-10C至+85C范围内精度为 土C。温度传感器可编程的分辨率为 912位,温度转换为12位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置,应用范围包括恒温控制、工业系统、温度计、或任信,所以与DS18B20只有一个一条口线连接。因为每一个 DS18B20的包含一个独特的序号,多个DS18B20可以同时存在于一条总线,这使得温度传感器放置在许多不同的

7、地方。它的用途 很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。图5DS18B20封装及引脚DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编 程的9、10、11或12位,分别以C,C,C和C增量递增。在上电状态下默认的精度为 12位。DS18B20启动后保持低功耗等待状态;当需要执行温度测量和 AD转换时,总线控制器必须发出44h命令。在那之后,产生的温度数据以两个字节的形式被存储到高速暂存 器的温度寄存器中,DS18B20继续保持等待状态。当DS18B20由外部电源供电时,总线控 制器在温度转换指令之后发起“读时序”,DS18B20正在

8、温度转换中返回0,转换结束返 回1。如果DS18B20由寄生电源供电,除非在进入温度转换时总线被一个强上拉拉高,否 则将不会由返回值。在硬件上,DS18B20与单片机的连接有两种方法:一种是 VDD接外部电源,GND接 地,DQ与单片机的I/O 口相连;另一种是用寄生电源供电,此时, VDD、GND接地,DQ在本次设计中,使用RT1602C字符型液晶显示模块(LCM)来设计当前温度和上下限警 戒值的显示电路。RT1602C字符型液晶显示模块是16字X 2行的采用5X 7点阵图形来显示字符的液晶显示器,采用标准的16脚接口,其引脚定义如图7所示引脚号引脚名说明引脚号引脚名说明1GND/V ss电

9、源地7D02Vdd+5V电源8D13Vl液晶显示偏压信号9D24RS数据/命令控制,H/L10D38位双向数据线5R/W读/写控制,H/L11D46E使能端12D515BLA背光源正极13D616BLK背光源负极14D7图7RT1602C的引脚定义RT1602C的内部结构可以分为3个部分:LCD控制器、LCD驱动器、LCD显示器,其中LCD控制器采用的是HD44780。RT1602C与单片机的连线如图8所示LCD1602Qu GNDvcc8RT1602C与单片机连线LCM的数据总线与单片机的P0 口通过一个上拉电阻排相连,LCM的三条控制线RS、3引脚使RW、EN分别与单片机的I/O 口、相连

10、,第1、2引脚分别与地、电源相连,第用一个10kQ的可调电阻对显示屏的明亮进行调整。报警与指示模块黄色发光二极管。整个报警灯分别接单片机、口,电平拉低时点亮 LED,蜂鸣器电路接单片机的口,电平拉高时蜂鸣器响。至此便完成了整个硬件电路的设计工作,整个系统的原理图见附录二,系统 I/O分配表如下:I/O 口功能说明I/O 口功能说明LCM数据口LCM读/写控制键盘输入LCM使能DS18B20温度米集LED信号输出LCM数据/命令控制报警信号输出4软件设计单片机应用系统的设计中,软件设计占有重要的位置。在本次设计中,根据功能要求, 可以把系统程序划分为5个模块,即主程序模块、显示模块、温度测量模块

11、、键盘扫描模 块、其它子程序模块,如图10所示。主程序设计主程序的内容包括单片机初始化、相关部件初始化和一些其它子程序的调用等。主程开始序清单如下,程序流程图如图11所示。/* 主程序 */(2)点击运行按钮开始仿真,初始上下限值为 90C和10C,当前温度为25C,当前模式为 N正常工作,绿灯亮,蜂鸣器不响,如图 16。(3)按下S1键,进入上限警戒值设置模式 H,此时按S2、S3键可以进行上限值设定,同时 温度正常显示,设置上限值 80C,如图17。 (4)再次按下S1键,进入下限警戒值设置模设定仿真图匕时按S2、图19下限报警仿真图(6)升高温度,超过上限值5C以上时,黄灯亮,蜂鸣器报警

12、,如图 20。(7)按下S4键,单片机复位。 图20上限报警仿真图在本次仿真中,可以看出,本次设计的硬件电路和软件程序均能成功仿真出来,设计 要求的各种功能均已达到6总结本次课程设计为期一周,到此已全部结束。回想一周中的设计过程,我深深感觉收获 良多。由于从前只是在理论上学习了单片机以及各种其它知识,即使是实验也只是按照实 验指导书进行操作,并没有实际的独立设计一个系统,因此在刚开始接触本次课程设计时, 有一点无从下手的感觉。后来通过查阅相关资料,渐渐开始了解课程设计的一般过程,开 始明白一些元器件的相关作用与编程实现方法,并在此期间通过不断深入的学习和锻炼, 开始渐渐能熟练运用和熟练编程起来

13、。通过本次计算机控制技术的课程设计,我更深层次的把理论知识和实际设计结合在一 起,锻炼了我的综合运用所学的专业基础知识和解决实际工程问题的能力。同时也提升了 我查阅文献资料、设计手册、设计规范以及电脑制图等其他知识能力水平。对各种系统的 适用条件,各种设备的选用标准,各种管道的安装方式,我都是随着设计的不断深入而逐 渐熟悉并学会应用的。并且,通过对整体的掌控,对局部的取舍,对细节的斟酌处理,以 及绘图的技巧都使我在设计领域的能力得到了锻炼,得到了较丰富经验。 ?最后,通过这次的课程设计,我也深刻地认识到,只有将书本与具体的实践相结合,才会有真正的收获, 才能巩固自己的所学,认识到自己的不足,同

14、时我们也要有一种积极学习的态度,时代在 进步我们也要跟着时代前进,要不断学习,不断创新,用自己的知识与行动来证明自己的 价值。本次课程设计以单片机为核心,介绍了用 DS18B20 温度传感器进行温度采集,并将其 传输给AT89C51单片机进行处理再送到LCD显示屏显示。在此期间可以通过按键进行上 下限警戒值设置,通过LED和蜂鸣器进行指示和报警。本文是采用模块化的方式进行叙述, 对各模块的设计进行了比较详细地阐述, 并着重分析硬件搭建过程和系统软件的设计过程, 使用单片机C语言进行程序没计。本次设计的基于DS18B20的温度测量系统是一个分布式 的温度测量系统,它可以远程对温度实现测量和监控,

15、广泛应用于电力工业、煤矿、森林、 火灾、高层建筑等场合。本设计应用性比较强,可以应用在仓库温度、大棚温度、机房温度、水池等的监控。当然,本次设计还存在一些不足,例如在本次设计中,由于时间较短,警戒值只是在199C 之间,没有能够扩展到负温度和 100C以上;在本次设计中只是用了 4个独立按键,实现 简单的上下限警戒值设定,操作较麻烦,如果能够设计出多按键的矩阵式键盘,则能够对 温度进行很方便的设定。此外如果把本设计方案扩展为多点温度控制,加上上位机,则可 以实现远程温度监控系统,将具有更大的应用价值。7.参考文献1潘新民,王燕芳微型计算机控制技术M.北京:电子工业出版社,20142王迎旭.单片

16、机原理与应用M.北京:机械工业出版社,20133康华光.电子技术基础M.北京:高等教育出版社,20134周正华,唐宁RT1602C与FPGA接口技术J.中国科技信息,2008(10)廖琪梅,韩彬等基于DS18B20的温度测量仪J.国外电子元器件,2008(2)附录一:程序清单#include#include#include#defineucharunsignedchar #defineuintunsignedint #defineBUSY0x80 voidDelay(uint);voidinit_LCD(void);voidLCD_Command(uchar,uchar);voidLCD_Da

17、ta(uchar);voidReadyLCD(void); voidDisplay_char(uchar,uchar,uchar); voidDisplay_str(uchar,uchar,ucharcode*Data); voidChange(void);voidDisplay(void); voidinit_18B20(void); ucharRead_18B20(void); voidWrite_18B20(uchar); voidRead_temp(void); voidDelay_us(uchari);voidKey_scan(void);voidKey_set(void); voi

18、dKey_inc(void); voidKey_dec(void);voidAlarm(void);sbitLCD_RS=P2P; sbitLCD_RW=P2a; sbitLCD_EN=P2A2;sbitDQ=P1A7;sbitNormal=P2A4;sbitAlarm_H=P2A5;sbitAlarm_L=P2A6; sbitAlarm_BEEP=P2A7;ucharSet_flag=0; ucharTemp_mea,Temp_set1,Temp_set2;ucharTemp_high_1,Temp_high_2; ucharTemp_low_1,Temp_low_2; ucharTemp_

19、true_1,Temp_true_2;externucharcodestr0=High:CLow:C; externucharcodestr1=Mode:Deg:C;externucharcodestr2=Hellow!;externucharcode externucharcodemode=NHL;主程序*/voidmain(void)P1=0xff;P2|=0x70;P2&=0x7f;Temp_set仁90;/上限报警温度初值90 Temp_set2=10;下限报警温度初值10 Delay(500);延时 500ms 启动 in it_LCD();/LCD 初始化in it_18B20()

20、;/DS18B20 初始化Display_str(0,0,st ;开机界面Display_str(0,1,st ;开机界面Delay(2000);Display_str(0,0,str0);Display_str(0,1,str1);while(1)Key_sca n();扫描键盘Read_temp(); 读取温度 Change();Display。;/ 显示Alarm();指示灯与报警程序Delay(1000);voidDelay(uintk)uinti,j;for(i=0;ik;i+)for(j=0;j60;j+)voidinit_LCD(void)P0=0;Delay(15);LCD_C

21、ommand(0x38,0);Delay(5);LCD_Command(0x38,0);Delay(5);LCD_Command(0x38,0);Delay(5);LCD_Command(0x38,1);/8位数据传送,2行显示,5*7字形LCD_Comma nd(0x08,1);/关闭显示LCD_Comma nd(0x01,1);/清屏LCD_Comma nd(0x06,1);/显示光标右移设置LCD_Comma nd(0x0c,1);/显示屏打开,光标不显示不闪烁voidLCD_Command(ucharLC,ucharBC)if(BC)ReadyLCD();P0=LC;LCD_RS=O;

22、选中指令寄存器LCD_RW=O;/写 模式LCD_EN=1;_nop_();_nop_();_nop_();LCD_EN=O;/*写显示数据到 LCD*/voidLCD_Data(ucharLD)ReadyLCD();PO=LD;LCD_RS=1;选中数据寄存器LCD_RW=O;/写 模式LCD_EN=1;_nop_();_nop_();_nop_();LCD_EN=O;检测LCD忙状态*/voidReadyLCD(void)PO=Oxff;LCD_EN=1;LCD_RS=0;LCD_RW=1;_nop_();while(P0&BUSY)LCD_EN=0;_nop_();_nop_();LCD

23、_EN=1;_nop_();_nop_();LCD_EN=0;/*显示一个字符 */voidDisplay_char(ucharX,ucharY,ucharData)Y&=0x01;X&=0x0f;if(Y)X|=0x40;X|=0x80;LCD_Command(X,0);LCD_Data(Data);/*显示一串字符 */voidDisplay_str(ucharX,ucharY,ucharcode*Data)ucharList=0;Y&=0x01;X&=0x0f;while(X0;i-)DQ=0;_nop_(); dat=1;DQ=1;Delay_us(1);if(DQ)dat|=0x80

24、;Delay_us(10);return(dat);voidWrite_18B20(uchardat)uchari=0;for(i=8;i0;i-)DQ=0;_nop_();DQ=dat&0x01;Delay_us(10);DQ=1;dat=1;Delay_us(10);/* 从 DS18B20读取温度 */voidRead_temp(void)uchara=0;ucharb=0;uchart=0;init_18B20();Write_18B20(0xcc);Write_18B20(0x44);init_18B20();Write_18B20(0xcc);Write_18B20(0xbe);a

25、=Read_18B20();b=Read_18B20();t=b;t=3)/Set_flag=1,设定上限值Set_flag=0;/Set_flag=2,设定下限值/*按键加一子程序 */voidKey_inc(void)switch(Set_flag)case1:Temp_set1+; if(Temp_set1=99)Temp_set1=99;break;case2:Temp_set2+; if(Temp_set2=Temp_set1)Temp_set2=Temp_set1;break; default:break;voidKey_dec(void)/Delay(150);switch(Set_flag)case1:Temp_set1-;if(Temp_set1=Temp_set2)Temp_set1=Temp_set2;break;case2:Temp_set2-;if(Temp_set2=1)Temp_set2=1;break;default:break;/*报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1