欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机原理及系统课程设计报告温度湿度控制系统.docx

    • 资源ID:12321239       资源大小:112.46KB        全文页数:23页
    • 资源格式: DOCX        下载积分:8金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机原理及系统课程设计报告温度湿度控制系统.docx

    1、单片机原理及系统课程设计报告温度湿度控制系统单片机原理及系统课程设计专 业: 自动化 班 级: 姓 名: 学 号: 指导教师: 评语:平时(40)修改(30)报告(30)总成绩 2012 年 7月 1日目 录1引言 12方案设计 12.1 总体方案设计 12.2 系统组成及框图 13硬件电路设计 23.1 温度测量电路设计 23.2 湿度测量电路设计 23.3 按键电路设计 34 软件设计 34.1 主程序流程图 34.2 温度模块程序设计 44.3 湿度模块程序设计 54.4 显示子程序设计 55总结 56参考文献 57 附录 67.1 附录A 67.2 附录B 61引言本次课程设计主要基于

    2、AT89C51单片机,开发环境温度及湿度检测及控制系统。该系统采用AT89C51单片机作为控制器,DS18B20作为温度传感器,HS1101作为湿度传感器。系统主要功能如下:()对温度、湿度进行测量;()温度及湿度的显示;()设定预期温度与湿度值并显示。关键词:AT89C51,温度及湿度检测,LCD显示。2方案设计本章从控制系统的总体构成及原理框图对系统进行了总体分析说明,控制系统组成以后,主要通过控制器、传感器及执行器对控制变量进行分析和处理。2.1 总体方案设计本系统采用AT89C51单片机作为微处理器,DS18B20作为温度传感器对温度进行检测,HS1101作为湿度传感器与NE555组成

    3、湿度测量模块,使用LM016L对测得的温度及湿度值进行显示,使用按键对温度及湿度的设定值进行修改。2.2 系统组成及框图系统主要有温度测量模块、湿度测量模块、显示模块、及按键模块。其原理框图如图21所示。 图. 系统组成框图3硬件电路设计本温度及湿度控制系统使用AT89C51作为控制器,用DS18B20实现对温度测测量,用HS1101及NE555实现的湿度的测量,并采用LM016L将采集的的数据显示。现将系统硬件设计表述如下。3.1 温度测量电路设计采用DS18B20数字温度传感器测量温度, DS18B20与单片机是单线双向通信。其连接电路如图3.1所示。图3. DS18B20的测温电路(DQ

    4、端接51的P2.7)3.2 湿度测量电路设计图3.2 NE555测湿电路HS1101实际上相当于一个可变电容,它会因外部环境湿度的变化而致使电容值变化,湿度测量模块采用HS1101及NE555一起组成,将该HS1101置于NE555震荡电路中,将电容值的变化转化为与之呈反比的电压频率信号,可直接被计算机采集。表3.1 等效电容值与相对湿度之间的数值关系相对湿度RH(%)电容值C(PF)相对湿度RH(%)电容值C(PF)01636018310166701862017080191301739019540176100202501793.3 按键电路设计系统可以调节设定的温度及湿度值,我们可以通过四个

    5、按键来进行实现,前两个按键选择是温度设定还是湿度设定,后两个按键实现加一和减一操作,设计电路图如图3.3所示。图3.3 按键电路其工作原理如下:当闭合温度控制开关,可以通过“加”、“减”按钮来实现目标温度值的加一或者减一;同理闭合湿度开关,通过“加”、“减”按钮来实现目标湿度值的加一或者减一。而且,当两个开关同时闭合时,可以实现温度和湿度的同加一或同减一。4 软件设计本章主要对各个功能模块的程序流程进行说明。4.1 主程序流程图主程序的主要功能是负责读出并处理DS18B20的测量温度值,读出测湿电路的结果,并将温度及湿度进行实时显示,直到需要退出该系统时结束并退出。程序流程图如图4.1所示 :

    6、 N Y图4.1 主程序流程图4.2 温度模块程序设计温度模块主要包括DS18B20的初始化以及与单片机之间的数据处理。DS18B20与微处理器之间的通信比较复杂,每一次通信之前必须进行复位,复位的时间、等待时间、回应时间应严格按时序编程。4.3 湿度模块程序设计湿度模块主要是利用定时器T0和T1对555的输出频率进行测量,进而得到相对湿度值。在该块程序设计中,我们选取T0做定时器,定时时间是50ms,而选择T1做计数器,每当T0定时时间到就读取T1的计数值,然后将T1的计数值乘以20就可得到555芯片的输出频率,可进行数据处理从而得到相对湿度值。4.4 显示子程序设计显示子程序包括1602的

    7、初始化,以及对温度和湿度值的显示。初始化时第一行显示“wend”,第二行显示“shid”,然后根据温度的测得值及其正负将测得温度值和设定温度值在第一行,并将测得的频率值装换为相对湿度值,并将其和湿度设定值显示在第二行。5总结在设计中,通过对硬件电路不断的处理,使得硬件部分比较完善。另外,在电路中加入了限流电阻,保证了各个器件的使用寿命。总之,硬件电路的设计达到了抗干扰,较高精度的目的。软件部分中,对程序也做了数次修改,最终在Keil uVision3中实现了成功的模拟,进一步验证了设计思路。本系统实现的功能如下。1. 对温室大棚温度和湿度进行实时测量;2. 通过LCD显示屏分别进行温度和湿度显

    8、示;3对温度和湿度的设定值通过按键可以进行调节。本系统的优点有以下几点。 1. 结构简单,容易实现; 2. 造价低廉,性价比高;3达到了一定的精度要求。6参考文献1金伟正.单线数字温度传感器的原理与应用J.电子技术与应用,2000(6).2单晓锋,杨建红.电容型温湿度传感器模拟计算与分析J.半导体技术,2010(11).3胡汉才.单片机原理及接口技术M.北京:清华大学出版社,2004.7 附录7.1 附录A 系统仿真电路图如图5.1所示。在调试过程中,通过改变温度传感器的数值,来检验系统中温度模块是否运行正常。经过测试温度模块可以正常的显示,并且具有一定的快速性。通过改变NE555振荡电路中C

    9、3的容值(即HS1101的等效容值),来检验湿度摸快是否可以正常工作,经过测试湿度模块可以正常工作。并且对四个按键(即温度、湿度、+、-)的功能进行了测试,都实现了应有的功能。图5.1 系统仿真调试图7.2 附录B#include#define uchar unsigned char#define uint unsigned intsbit DQ=P27;/DS18B20与单片机连接口sbit RS=P30;/LCD1602控制端与单片机的连接sbit RW=P31;sbit EN=P37;sbit ST=P00;/按键接口sbit SH=P01;sbit Sjia=P32;sbit Sjia

    10、n=P33;uchar code str1=Wend:;uchar code str2=Shid:;uchar data disdata16;uchar data disdata24;uint tvalue;/温度值uchar tflag;/温度正负标志uint tem0,tem1;uint temp0,temp1;uint f=0;int hhhh=0;int tsheding=20;/设置温度值int hsheding=40;/设置湿度值void zhongd0() interrupt 0 /外部中断0 :加设置 if(ST=1) tsheding+; /温度值加1 if(SH=1) hs

    11、heding+; /湿度值加1 void zhongd1() interrupt 2 /外部中断1 :减设置 if(ST=1) tsheding-; /温度值减1 if(SH=1) hsheding-; /湿度值减1 void timer0() interrupt 1 /T0定时中断 TR0=0; TR1=0; TL0=0xB0;/重装值,定时50000us TH0=0x3C; tem0=TL1;/读数 tem1=TH1; TL1=0x00;/计数器1清零 TH1=0x00; TR0=1; TR1=1; void timer1() interrupt 3 /T1计数中断 TR0=0; TR1=

    12、0; TL0=0xB0;/重装值,定时50000us TH0=0x3C; TL1=0x00;/计数器1清零 TH1=0x00; TR0=1; TR1=1; void init_timer() TMOD=0x51; TL0=0xB0;/定时器0初值定时50000us TH0=0x3C; TL1=0x00;/定时器1清零 TH1=0x00; TR0=1;/T0开始计时 TR1=1;/T1开始计数 void delay1ms(uint ms)/延时1毫秒 uint i,j; for(i=0;ims;i+) for(j=0;j0;i-) DQ=0; /给脉冲信号 dat=1; DQ = 1; /给脉冲

    13、信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat);void ds1820wr(uchar wdata)/DS18B20写数据 uchar i=0; for(i=8;i0;i-) DQ=0; DQ=wdata&0x01; delay_18B20(10); DQ=1; wdata=1; void read_temp()/读取温度值并转换 uchar a,b; ds1820rst(); ds1820wr(0xcc);/跳过读序列号 ds1820wr(0x44);/启动温度转换 ds1820rst(); ds1820wr(0xcc);/跳过读序列号 d

    14、s1820wr(0xbe);/读取温度 a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue=8; tvalue=tvalue|a; if(tvalue0x0fff) tflag=0; else tvalue=tvalue+1; tflag=1; tvalue=tvalue*(0.625);/温度值扩大10倍,精确到1位小数/*/void ds1820disp1()/温度值显示 uchar flagdat; uchar flagtsheding; disdata10=tvalue/1000+0x30;/百位数 disdata11=tvalue%1000/10

    15、0+0x30;/十位数 disdata12=tvalue%100/10+0x30;/个位数 disdata13=tvalue%10+0x30;/小数位 if(tshedinghhhh)/判断温度设定值是正是负 flagtsheding=-; disdata14=(tsheding+1)/10+0x30; disdata15=(tsheding+1)%10+0x30; else flagtsheding= ; disdata14=tsheding/10+0x30; disdata15=tsheding%10+0x30; if(tflag=0) flagdat=0x20;/正温度不显示符号 els

    16、e flagdat=0x2d;/负温度显示负号:- if(disdata10=0x30) disdata10=0x20;/如果百位为0,不显示 if(disdata11=0x30) disdata11=0x20;/如果百位为0,十位为0也不显示 wr_com(0x85); wr_dat(flagdat);/显示符号位 wr_com(0x86); wr_dat(disdata10);/显示百位 wr_com(0x87); wr_dat(disdata11);/显示十位 wr_com(0x88); wr_dat(disdata12);/显示个位 wr_com(0x89); wr_dat(0x2e)

    17、;/显示小数点 wr_com(0x8a); wr_dat(disdata13);/显示小数位 wr_com(0x8b);/显示设定温度值 wr_dat(); wr_com(0x8c); wr_dat(flagtsheding); wr_com(0x8d); wr_dat(disdata14); wr_com(0x8e); wr_dat(disdata15); wr_com(0x8f); wr_dat();/*/void ds1820disp2()/湿度值显示 f=tem1*256+tem0; f=f*20; if(6033=f)&(f=7351) if(7224f)&(f=7351) temp

    18、0=0;temp1=(7351-f)*10/127; if(7100f)&(f=7224) temp0=1;temp1=(7224-f)*10/124; if(6976f)&(f=7100) temp0=2;temp1=(7100-f)*10/124; if(6853f)&(f=6976) temp0=3;temp1=(6976-f)*10/123; if(6728f)&(f=6853) temp0=4;temp1=(6853-f)*10/125; if(6600f)&(f=6728) temp0=5;temp1=(6728-f)*10/128; if(6486f)&(f=6600) temp

    19、0=6;temp1=(6600-f)*10/132; if(6330f)&(f=6486) temp0=7;temp1=(6468-f)*10/138; if(6186f)&(f=6300) temp0=8;temp1=(6330-f)*10/144; if(6033f)&(f=6186) temp0=9;temp1=(6186-f)*10/153; else temp0=0;temp1=0; disdata20=temp0+0x30; disdata21=temp1+0x30; disdata22=hsheding/10+0x30; disdata23=hsheding%10+0x30; w

    20、r_com(0xc8);/显示所测湿度值 wr_dat(disdata20); wr_com(0xc9); wr_dat(disdata21); wr_com(0xca); wr_dat(%); wr_com(0xcb);/显示设定湿度值 wr_dat(); wr_com(0xcc); wr_dat(disdata22); wr_com(0xcd); wr_dat(disdata23); wr_com(0xce); wr_dat(%); wr_com(0xcf); wr_dat(); /*主程序*/void main() Sjia=0; Sjian=0; WBJ=0; HBJ=0; init_play();/1602初始化显示 delay1ms(50); EA=1; /开中断 EX0=1;/允许外部中断0中断 EX1=1;/允许外部中断1中断 ET0=1;/允许定时器0中断 ET1=1;/允许计数器1中断 IT0=1; IT1=1; init_timer();/定时/计数器初始化设置 while(1) read_temp();/读取温度 ds1820disp1();/显示温度 delay1ms(50); ds1820disp2();/显示湿度 delay1ms(50);


    注意事项

    本文(单片机原理及系统课程设计报告温度湿度控制系统.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开