数字式温湿度测量仪设计_第1页
数字式温湿度测量仪设计_第2页
数字式温湿度测量仪设计_第3页
数字式温湿度测量仪设计_第4页
数字式温湿度测量仪设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、长 沙 学 院单片机原理及应用课程设计说明书题目数字式温湿度测量仪设计系(部)专业(班级)姓名学号指导教师起止日期单片机原理及应用课程设计任务书8系(部):电信系 专业:2011级电子信息工程课题名称数字式温湿度测量仪设计设计内容及要求1、课题内容:以单片机为核心,使用SHT11 温、湿度传感器设计一个数字式温湿度计。测量一路温度和湿度信号并用12864 液晶屏显示。测温范围55-125 摄氏度,精度0.5 摄氏度;湿度测量范围:0-100%RH。液晶屏的第一行显示“温湿度测量仪”,第二行显示设计者姓名和学号,第三行显示测量温度、温度设定的上、下限报警值。第四行显示测量湿度、湿度设定的上、下限

2、报警值。当温度或湿度高于设定上限值或低于下限值时驱动峰鸣器演奏歌曲一首作为报警信号。2、要求:完成该系统的硬件和软件的设计,在Proteus 软件上仿真通过,并提交一篇课程设计说明书。 设计工作量1、汇编或C51 语言程序设计;2、程序调试;3、在Proteus 上进行仿真成功;4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、调试过程,参考文献、设计总结等。进度安排起止日期(或时间量)设计内容(或预期目标)备注第一天课题介绍,答疑,收集材料,C51介绍第二天设计方案论证,练习编写C51程序第三天第六天程序设计第六天第八天程序调试、仿真第九天第十天系统测试并编写设计

3、说明书教研室意见年 月 日系(部)主管领导意见年 月 日目录一、概述5二、设计内容及要求51、课题内容52、要求5三、设计原理61、 温度传感器的选择62、  湿度传感器的选择6四、设计方案6程序:7五、测试结果18六、设计心得体会19七、参考文献19一、概述温湿度测量有着广泛的应用,标准温湿度测量仪主要应用于计量、气象、军事等领域,实现准确高精度的测量温湿度,同时还可以作为其他温湿度仪表校正的参考标准。数字式通风干湿表是一种重要的湿度标准器,干湿球温度的测量精度是制约其湿度精度的重要因素,本文设计的数字式标准温湿度测量仪,着重提高温度的测量精度,达到高精度湿度测

4、量的目的。温湿度是人们日常生活中接触最多的两个物理量,人们的日常生活、动植物的生存繁衍和周围环境的温湿度息息相关,石油、化工、冶金、纺织、机械制造、航空航天、制药、烟草、档案保管、粮食存储等领域对温、湿度也有着较高的要求。例如:烟叶和纸张是吸湿性极高的材料,卷烟生产的每一个阶段对温、湿度都有非常特别的要求,以确保所使用材料的水分,保证生产的效率和产品质量;印刷车间的温、湿度控制水平对印刷质量有很大的影响2;为防止库存武器弹药、金属材料等物品霉烂、生锈,必须保持环境温度不能过高和干燥;而水果、种子、肉类等的保存又需要保证一定的湿度;在矿山、棉麻、塑料、粉末金属、食品生产加工等企业的生产车间(环境

5、)中往往会产生大量的可燃或易燃粉尘,如果空气湿度过低,在一定的能量下,极易发生粉尘爆炸。二、设计内容及要求1、课题内容以单片机为核心,使用SHT11 温、湿度传感器设计一个数字式温湿度计。测量一路温度和湿度信号并用12864 液晶屏显示。测温范围55-125 摄氏度,精度0.5 摄氏度;湿度测量范围:0-100%RH。液晶屏的第一行显示“温湿度测量仪”,第二行显示设计者姓名和学号,第三行显示测量温度、温度设定的上、下限报警值。第四行显示测量湿度、湿度设定的上、下限报警值。当温度或湿度高于设定上限值或低于下限值时驱动峰鸣器演奏歌曲一首作为报警信号。2、要求完成该系统的硬件和软件的设计,在Prot

6、eus 软件上仿真通过,并提交一篇课程设计说明书。三、设计原理1、 温度传感器的选择 采用热电阻温度传感器。热电阻是利用导体的电阻随温度变化的特性制成的测温元件。现应用较多的有铂、铜、镍等热电阻。其主要的特点为精度高、测量范围大、便于远距离测量。 铂的物理、化学性能极稳定,耐氧化能力强,易提纯,复制性好,工业性好,电阻率较高,因此,铂电阻用于工业检测中高精密测温和温度标准。缺点是价格贵,温度系数小,受到磁场影响大,在还原介质中易被玷污变脆。按IEC标准测温范围-200650,百度电阻比W(100)=1.3850时,R0为100和10,其允许的测量误差A级为

7、7;(0.15+0.002 |t|),B级为±(0.3+0.005 |t|)。 铜电阻的温度系数比铂电阻大,价格低,也易于提纯和加工;但其电阻率小,在腐蚀性介质中使用稳定性差。在工业中用于-50180测温。2、  湿度传感器的选择 测量空气湿度的方式很多,其原理是根据某种物质从其周围的空气吸收水分后引起的物理或化学性质的变化,间接地获得该物质的吸水量及周围空气的湿度。电容式、电阻式和湿涨式湿敏原件分别是根据其高分子材料吸湿后的介电常数、电阻率和体积随之发生变化而进行湿度测量的。 采用CHR-01湿敏电阻。CHR-0

8、1湿敏电阻适用于阻抗型高分子湿度传感器,它的工作电压为交流1V,频率为50Hz2kHz,测量湿度范围为20%90%RH,测量精度±5%,工作温度范围为0+85,最高使用温度120,阻抗在60%RH(25)时为30(2140.5)K。采用555时基或RC振荡电路,将湿度传感器等效为阻抗值,测量振荡频率输出,振荡频率在1k Hz左右。四、设计方案把各个功能模块编写成单独的源文件进行调试,调试成功以后,再将各部分联合在一起。 用户温度输入数据时上限、下限分别在七段数码管的0、1、2、3位置显示,湿度输入数据时上限、下限分别在七段数码管的4、5、6、7位置显示。读键存储的

9、过程是循环程序。可循环等待直到用户输入正确并确认为止。 采样转换模块是一个比较重要的模块,在调试的阶段遇到的问题较多,由于它是程序运行的瓶颈,如果这一部分通不过的话,那么程序就无法执行下去,本系统采用的是延时的方法。 温湿度判断控制模块也一个非常重要的模块,由于温湿度对于植被的生长起着决定性的作用,因此,如果这两个因素控制不好,这个系统就失败了,这就需要我认真的考虑这一模块的控制方式,调试阶段比较顺利。 除了以上所提到的模块之外,还有一些模块也很重要,也都需要认真的调试,如报警模块等。调试了各模块之后,接下来的工作就是将各源程序段连接起来,进行综合调试了,综合调试

10、需要我们特别注意细节部分,这样才能尽可能的减少错误的产生。程序:#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar g,s,b;uint temp,temp_dat;float f_temp;void lcd_display_temp_max(uchar name,uchar max,uchar min,bit f);uchar ds18b20_int_date(void);uchar ds18b20_float_date(void);sbit rs=P20;sbit rw=P21;s

11、bit en=P22;sbit PSB=P23;sbit DS=P33;sbit fm=P34; sbit k1=P35;sbit k2=P36;sbit k3=P37;uint t,k;uchar timeh,timel;uchar shi,fen,miao;uchar code dis5='.'uchar code dis0="0123456789"uchar code dis1="00时00分00秒"uchar code dis2=" . -5590"uchar code dis3=""uch

12、ar code dis4=0xa1,0xa0,0xca,0xfd,0xd7,0xd6,0xca,0xbd, 0xce,0xc2,0xb6,0xc8,0xbc,0xc6,"" ;uchar code zbjbxf=0x64,0xA3,0xC1,0xA2,0x62,0x84,0x61,0x81,0x61,0xA4,0xA1,0x91,0xA1,0x81,0x64/*,0xA3,0xC1,0xD2,0xD2,0xD2,0xA2,0xC4,0xA1,0xC1,0xA1,0xC1,0xD2,0xD2,0xD2,0xA2,0xC4,0xC2,0x62,0xC2,0x62,0xA2,0x

13、A2,0x84,0x94,0x94,0x92,0x81,0x91,0xA2,0xC2,0xD4,0xE4,0xA4,0xE4,0xA2,0xE2,0xA2,0xE2,0xA2,0xA2,0x84,0x94,0x94,0x92,0x81,0x91,0xA2,0xC2,0xD8*/;uchar code chuzhi= 0xff,0xff, 0xFC,0x8E, 0xFC,0xED, 0xFD,0x43, 0xFD,0x6A, 0xFD,0xB3, 0xFD,0xF3, 0xFE,0x2D, 0xFE,0x47, 0xFE,0x76, 0xFE,0xA1, 0xFE,0xC7, 0xFE,0xD9

14、, 0xFE,0xF9, 0xFF,0x16;void warning();void delayms(uint xms)uchar i,j;for(i=xms;i>0;i-)for(j=110;j>0;j-);void delay(uint z)/延时165MS,即十六分音符uint y;for(z;z>0;z-) for(y=19000;y>0;y-);/大致时间void ds18b20_init(void) uint i; DS=0; i=103; while(i>0)i-; DS=1; i=4; while(i>0)i-;bit ds18b20_tmp

15、readbit(void) /read a bit 读一位 uint i; bit dat; DS=0; i+; /i+ for delay 小延时一下 DS=1; i+; i+; dat=DS; i=8; while(i>0)i-; return (dat);uchar ds18b20_tmpread(void) uchar i,j,dat;dat=0;for(i=1;i<=8;i+) j=ds18b20_tmpreadbit();dat=(j<<7)|(dat>>1); /读出的数据最低位在最前面,这样刚好 /一个字节在DAT里 return(dat);

16、 /将一个字节数据返回void ds18b20_tmpwritebyte(uchar dat) /写一个字节到DS18B20里 uint i; uchar j; bit testb; for(j=1;j<=8;j+) testb=dat&0x01; dat=dat>>1; if(testb) DS=0;i+;i+; DS=1; i=8;while(i>0)i-; else DS=0; i=8;while(i>0)i-; DS=1; i+;i+; void ds18b20_tmpchange(void) /DS18B20 begin change 发送温度转

17、换命令 ds18b20_init(); /初始化DS18B20 delayms(10); ds18b20_tmpwritebyte(0xcc); / 跳过序列号命令 ds18b20_tmpwritebyte(0x44); /发送温度转换命令uint ds18b20_gettemp() uchar a,b; ds18b20_init(); delayms(10); ds18b20_tmpwritebyte(0xcc); ds18b20_tmpwritebyte(0xbe); a=ds18b20_tmpread(); b=ds18b20_tmpread(); temp=b; temp<<

18、;=8; temp=temp|a; f_temp=temp*0.0625; temp=f_temp*10+0.5; f_temp=f_temp+0.05; return temp;void write_com(uchar com)rs=0;rw=0;en=0;P0=com;delayms(5);en=1;delayms(5);en=0;void write_data(uchar date)rs=1;rw=0;en=0;P0=date;delayms(5);en=1;delayms(5);en=0;void lcd_pos(uchar X,uchar Y)uchar pos;if(X=0)X=0

19、x80;if(X=1)X=0x90;if(X=2)X=0x88;if(X=3)X=0x98;pos=X+Y;write_com(pos);void write_sfm(int add,uint date)uchar shi,ge;shi=date/10;ge=date%10;lcd_pos(0,0+add);write_data(0x30+shi);write_data(0x30+ge);void keyscan()if(k1=0)delayms(5);if(k1=0)k+;while(!k1);if(k=1)TR0=0;write_com(0x0f);lcd_pos(0,5);if(k=2)

20、lcd_pos(0,3);if(k=3)lcd_pos(0,1);if(k=4)k=0;write_com(0x0c);TR0=1;if(k!=0)if(k2=0)delayms(5);if(k2=0)while(!k2);if(k=1)miao+;if(miao=60)miao=0;write_sfm(5,miao);lcd_pos(0,5);if(k=2)fen+;if(fen=60)fen=0;write_sfm(3,fen);lcd_pos(0,3);if(k=3)shi+;if(shi=24)shi=0;write_sfm(1,shi);lcd_pos(0,1);if(k3=0)de

21、layms(5);if(k3=0)while(!k3);if(k=1)miao-;if(miao=-1)miao=59;write_sfm(5,miao);lcd_pos(0,5);if(k=2)fen-;if(fen=-1)fen=59;write_sfm(3,fen);lcd_pos(0,3);if(k=3)shi-;if(shi=-1)shi=23;write_sfm(1,shi);lcd_pos(0,1);void init()PSB=1;write_com(0x30);delayms(5);write_com(0x0c);delayms(5);write_com(0x01);dela

22、yms(5);TH0=(65535-50000)/256;TL0=(65535-50000)%256;TMOD=0x11;ET0=1;ET1=1;PT0=1;PT1=0;EA=1;TR0=1;void write_sfm3(int add3,uint date3)uchar shi,ge;shi=date3/10;ge=date3%10;lcd_pos(1,0+add3);write_data(0x30+shi);write_data(0x30+ge);void write_sfm4(int add4,uint date4)uchar shi,ge;shi=date4/10;ge=date4%

23、10;lcd_pos(1,0+add4);write_data(0x30+shi);write_data(0x30+ge);void dis_temp(uint t) b=t/10;write_sfm3(0,b);/ lcd_pos(1,0); / write_data(dis0b);s=t%10;write_sfm4(2,s);/* s=t%100/10; lcd_pos(1,1); write_data(dis0s); lcd_pos(1,2); write_data('.'); g=t%10; lcd_pos(1,3); write_data(dis0g);*/void

24、warning()uint temp_music;/存放简谱数组中的每一个音符的临时变量uchar i=0;uchar jp;/jp用于取出temp中的高8位和低8位while(1)temp_music=zbjbxfi;if(temp_music=0xff)break;jp=temp_music/16; /取数的高4位,音频数值if(jp!=0)timeh=chuzhijp*2;/构造定时器初值高8位timel=chuzhijp*2+1; /构造定时器初值低8位TR1=1; /开定时器elseTR1=0; /关定时器fm=1; /关蜂鸣器delay(temp_music%16); /取数的低4

25、位,节拍(音符总时延)TR1=0; /唱完一个音停5MSfm=1;delayms(5); i+;TR1=0;/关定时器fm=1;/关蜂鸣器void main()uchar i;init();delayms(10);lcd_pos(0,1);i=0;while(dis1i!='0')write_data(dis1i);i+;lcd_pos(1,0);i=0;while(dis2i!='0')write_data(dis2i);i+;lcd_pos(2,0);i=0;while(dis3i!='0')write_data(dis3i);i+;lcd_pos(3,0);i=0;while(dis4i!='0')write_data(dis4i);i+; while(1)keyscan();ds18b20_tmpchange();temp_dat=ds18b20_gettemp();if(b>25|b<15)warning();void timer() interrupt 1TH0=15535/256;TL0=15535%25

温馨提示

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

评论

0/150

提交评论