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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机课设Word文档下载推荐.docx

1、Keywords:Temperature measurement,AT89C52 microcontroller,DS18B20 temperature sensor,LCD1602 1 引言温度传感器将环境温度数据转换成数字信号发送给单片机,单片机通过程序内部的运算将转换好的温度数值发送给显示器出来。初步确定设计系统由单片机主控、测温、显示、警示、手动控制,共5个模块组成。使用两个温度传感器,可以用于测试家庭中不同房间的温度并集中监视。2 设计方案及原理2.1 设计方案首先,由DS18B20温度传感器芯片测量当前的温度,并将结果送入单片机。然后,通过AT89C52单片机芯片对送来的测量温度读

2、数结果进行处理,并将此结果送入显示模块。其次,LCD1602芯片将送来的值显示于显示屏上。同时LED会通过量不同的灯来提示当前的温度是不是在设定的范围之内,还可以在显示屏上看出是哪个房间的温度超出了范围。最后,采取升降温措施。设计方案框图如图1所示。图1 设计框图2.2 设计原理电路主要由晶振电路、复位电路、测温电路、显示电路、报警提示电路以及温度控制电路组成。DSI8B20温度传感器芯片采用“一线制”与单片机相连,它独立地完成温度测量以及将温度测量结果送到单片机的工作。而单片机对传送来的结果有计算、转换等进一步处理的功能。然后,输出到显示器显示。3 硬件设计3.1 芯片选择主要选用DSl88

3、20温度传感器芯片、LCD1602显示芯片和AT89C52单片机芯片。3.2 硬件电路晶振电路是保证单片机能运行的所必须电路,而测温电路、显示电路、报警提示电路以及温度控制电路是为了完成设计中的各功能而设计的。硬件电路如图2所示。图 2 硬件电路图4 软件设计程序主要由主程序和各个子程序构成,主程序主要完成是调用LCD液晶显示器的初始化及18b20初始化,对温度的采集、转化并显示以及对相应温度的控制处理。主程序相当于一条主线,将各个子程序模块组合在一起,以实现功能要求,将当前温度值显示在液晶显示器上。其中传感器DS18B20的软件设计是一个很重要环节。对各个芯片的初始化、初值设定、温控门限设置

4、、延时时间等都是软件设计所要考虑的必要因素。系统源程序见附录一,程序流程图如图3所示。图3程序流程图5 系统仿真当传感器的温度都在范围之内时,蓝灯亮,表示正常。仿真图如图4所示。图 4 正常时的仿真图其中任一个的温度超出范围,红灯都会亮,表示报警。若第一个温度传感器的温度过高,可以按下降温装置的开关,此时绿灯亮,表示降温。仿真图如图5所示。图 5 温度过高且降温时的仿真图若第二个温度过低,则可以按下升温装置的开关,此时黄灯亮,表示升温。仿真图如图6所示。图 6 温度过低且升温时的仿真图6 总结该温度控制器自动测温、显示、警示、手动控温等功能,可以在监控室里同时监视多个房间的温度,并且可以根据报

5、警和显示器的显示具体定位是哪个房间的温度超出了正常范围(15.020.0),然后可根据具体情况采取升温或降温等措施。在温控模块,由于知识的限制还不能做到智能化控制,造成了该设计的一大缺陷。所以该温度控制器属于一套简易的温控系统。参考文献1 彭伟.单片机C语言程序设计实训100例M.电子工业出版社,20092 王思明.单片机原理及应用系统设计M.科学出版社,20123 潘晓宁.单片机程序设计实践教程M.清华大学出版社,20094 高峰.单片微型计算机与接口技术M.科学出版社,1990附录一 系统源程序#include#define uchar unsigned char#define uint

6、unsigned intsbit DQ=P10;/ds18b20与单片机连接口sbit DQ1=P11;/ds18b201与单片机连接口sbit P20=P20;sbit P21=P21;sbit RS=P25;sbit RW=P26;sbit EN=P27;sbit P36 = P36;sbit P37 = P37;unsigned char code str1=1:;unsigned char code str2=H:unsigned char code str3=2:unsigned char code str4=L:unsigned char code str5=15.0/最低温门限u

7、nsigned char code str6=20.0/最高温门制uchar data disdata4;uchar data disdata14;uint temp,temp1,tempL=15.0,tempH=20.0;uint tvalue,tvalue1;/温度值uchar tflag,tflag1;/温度正负标志/*lcd1602程序*/void lcd_init()/初始化设置/delay1ms(15);wr_com(0x38);delay1ms(5); wr_com(0x08); wr_com(0x01); wr_com(0x06); wr_com(0x0c);void dela

8、y_18B20(unsigned int i)/延时1微秒 while(i-);void ds1820rst() DQ = 1; /DQ复位 delay_18B20(4); /延时 DQ = 0;/DQ拉低 delay_18B20(100); /精确延时大于480us /拉高 delay_18B20(40);void ds1820rst1() DQ1= 1; DQ1= 0; /DQ拉低 uchar ds1820rd() unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i-) DQ = 0; /给脉冲信号 dat=1; DQ = 1;

9、if(DQ) dat|=0x80; delay_18B20(10); return(dat);uchar ds1820rd1() /读第二个温度传感器/unsigned char j=0; unsigned char dat1 = 0; for (j=8;jj-) DQ1= 0; dat1 if(DQ1) dat1|=0x80; delay_18B20(10); return(dat1);void ds1820wr(uchar wdata) unsigned char i=0; i i-) DQ = 0; DQ = wdata&0x01; wdatavoid ds1820wr1(uchar w

10、data1) /写第二个温度传感器/ unsigned char j=0; j j-) DQ1= wdata1& wdata1read_temp()/读取温度值并转换/uchar a,b;ds1820rst();ds1820wr(0xcc);/跳过读序列号/ds1820wr(0x44);/启动温度转换/跳过读序列号/ ds1820wr(0xbe);/读取温度/ a=ds1820rd();b=ds1820rd();tvalue=b;tvalue=8;tvalue=tvalue|a; if(tvalue0x0fff) tflag=0; else tvalue=tvalue+1;tflag=1;tv

11、alue=tvalue*(0.625);/温度值扩大10倍,精确到1位小数return(tvalue);read_temp1() /读第二个温度传感器/uchar c,d;ds1820rst1();ds1820wr1(0xcc);ds1820wr1(0x44);ds1820wr1(0xbe);c=ds1820rd1(); /温度2进制低8位d=ds1820rd1(); /温度2进制高8位tvalue1=d;tvalue1tvalue1=tvalue1|c; /合并高低位 if(tvalue1 tflag1=0; tvalue1=tvalue1+1; tflag1=1; tvalue1=tval

12、ue1*(0.625);return(tvalue1); void ds1820disp()/温度值显示uchar flagdat; disdata0=tvalue/1000+0x30;/百位数 disdata1=tvalue%1000/100+0x30;/十位数 disdata2=tvalue%100/10+0x30;/个位数 disdata3=tvalue%10+0x30;/小数位 temp=tvalue/10+tvalue%10; if(tflag=0) flagdat=0x20;/正温度不显示符号 flagdat=0x2d;/负温度显示负号:- if(disdata0=0x30) di

13、sdata0=0x20;/如果百位为0,不显示 if(disdata1=0x30)disdata1=0x20;/如果百位为0,十位为0也不显示 wr_com(0x82); wr_dat(flagdat);/显示符号位 wr_com(0x83); wr_dat(disdata0);/显示百位 wr_com(0x84); wr_dat(disdata1);/显示十位 wr_com(0x85); wr_dat(disdata2);/显示个位 wr_com(0x86);void ds1820disp1()/温度值显示 uchar flagdat1; disdata10=tvalue1/1000+0x3

14、0; disdata11=tvalue1%1000/100+0x30; disdata12=tvalue1%100/10+0x30; disdata13=tvalue1%10+0x30; temp1=tvalue1/10+tvalue1%10; if(tflag1=0) flagdat1=0x20; flagdat1=0x2d; if(disdata10=0x30) disdata10=0x20; if(disdata11=0x30) disdata11=0x20; wr_com1(0xc0+0x02); wr_dat1(flagdat1); wr_com1(0xc0+0x03); wr_da

15、t1(disdata10); wr_com1(0xc0+0x04); wr_dat1(disdata11); wr_com1(0xc0+0x05); wr_dat1(disdata12); wr_com1(0xc0+0x06); wr_dat1(0x2e);/显示小数点 wr_com1(0xc0+0x07); wr_dat1(disdata13);/显示小数位/*报警程序*/ main() P37=1; init_play();/初始化显示 while(1) delay1ms(400); read_temp1();/读取温度 ds1820disp1();/显示 read_temp(); ds1820disp(); wr_com(0xcb); display(str5); wr_com(0x8b); display(str6);if(temptempH)|(temp1tempH) unsigned char i; for(i=20; P37=0; P36=1; delay1ms(100); P36=0; else P37=1; return 0;

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

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