版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湘潭大学 课 程 设 计 2013 年 08 月 日 课 程 传感器 题 目 温湿度测试系统 院 系 材料与光电物理学院 专业班级 测控技术与仪器 学生姓名 学生学号 指导教师 任务书 课程 传感器原理设计与应用 题目 温湿度测试系统 专业 测控技术与仪器 姓名 学号 组长 组员 (1) 设计目的:设计制作一个温湿度,温度测量范围为-10-50,湿度为 0-100% 实验仪器:电烙铁,Proteus 软件,Keil 软件,剥线钳,万用表,温度计 主要内容:该系统主要有以下系统快构成:中央控制处理器 STC89C52 组成的主 机系统;环境数据采集系统,输出显示与键盘控制系统等。 主要的系统电路
2、有:电源电路,温度传感器与湿度传感器电路,显示电路, 报警电路,键盘输入电路。 该系统的主要特点有: (1) 、该产品互换性好,响应速度快,抗干扰电路图,外围电路简单易懂, 因此体积小。 (2) 、该系统能用软件的方式控制硬件,所有用软件方式设计的系统向硬件 的转换是由有关开发软件完成的,易操作。 (3) 、可以从以前的组合设计转向真正的自由设计,所以设计的移植性好, 效率高。 参考资料 1、 单片机原理及应用湘潭大学出版社; 2、 单片机接口技术 (C51 版)中国水利水电出版社; 3、郭天祥“十天学会单片机”视频; 4、 传感器原理设计与应用国防科技大学出版社; 完成期限 2013.08.
3、20 2013 年 08 月 20 日 温湿度测试系统设计 摘要:此温湿度测试系统是基于单线式温度传感器 DS18B20、电容式湿度传感器 HS1101、单片机 STC89C52 对温湿度分别测试并通过液晶显示屏 1602 经行显示。 温度传感器 DS18B20 是单线式,体积超小,硬件开销超低,抗干扰能力强,精 度高,附加功能强的理想单片机温度传感器,可实时根据指令给出温度数据,可 读性高。HS1101 是电容式空气湿度传感器,在不同的湿度环境下呈现不同的电 容数值,0%-100%RH 湿度范围内,电容从 162 变到 200PF,误差为 2%RH,可见 精度非常之高,为了反映出其电容的变化
4、,本系统采用 555 多谐振荡电路产生不 同的频率,用于检测湿度。单片机采集到的两个传感器给出的数据进行处理与计 算,得出当前的温度与湿度并送给液晶屏显示。本系统具有可读性高,稳定性高, 反应速度快,测量值准确的特点。 关键词:单片机,温湿度,DS18B20,传感器,液晶显示器 Abstract: Key words:microcontroller, temperature and humidity,DS18B20,sensor,LCD 引言引言: : 二、方案设计二、方案设计 (1) 、方案的选取 DS18B20 传感器; HS1101 湿度传感器 (2) 、显示模块的选取 采用 1602
5、液晶模块显示所测数据,1602 接线简单方便,同时也能满足显示需求, 价格远低于 12864 液晶。 三、三、.结果及原理分析结果及原理分析 根据所要实现的功能,将系统模块化设计,总体模块结构图如下图所示: 以下就分别就各模块功能实现进行设计。 1. 1602 液晶显示模块电路设计 1602 液晶显示模块电路原理图如下所示: 2. DS18B20 温度检测模块 如上图所示。其中温度传感器 DS18B20 的各引脚功能如下: 1:GND 接地;2:DQ 输出端;3:VCC 电源。 3. HS1101 湿度检测模块 5 55 芯片外接电阻 R4、R5、R6、R8 与 HS1101,构成对 HS11
6、01 的充电回路,7 端通过芯片内部的晶体管对地短路实现对 HS1101 的放电回路,并将引脚 2,6 端 相连引入片内比较器,构成多谐振荡器。 HS1101 作为一个变化的电容器,原理图中我们用电容代替,连接 2 和 6 引脚, 充电,放电时间: 由 HS1101 的技术手册可得湿度和电容的函数关系呈线性关系,因此有: 当时 由得,空气相对湿度与 555 芯片输出偏绿存在一定关系,可通过 微处理器采集 555 芯片的频率,查表即可得到相对湿度。 (电容不可直接测量, 由 555 多谐振荡器检测频率,有单片机计算电容值,进而求得相对湿度) 4. 电源模块 系统部分电源采用的是 4 节 1.5
7、伏干电池,能为系统提供稳定的 5V 电压。 四、四、软件流程图软件流程图 五、五、系统总的程序设计系统总的程序设计 见附录一 六、六、设计过程问题解决设计过程问题解决 本次设计过程很费周折,由于 proteus 里面缺少一些必要的元件,故实验过程中 是先设计好硬件电路,焊好电路以后才进行调试的,其间的艰难可想而知。也因 为这样,硬件电路的错误比较多,中间一直在修改硬件电路,造成电路板修修补 补不美观。 实验过程中遇到的困难很多 ,尤其是实现界面切换和返回主界面的过程,同时 光标也要随着界面一起移动。否则就会显示出错。而在本次设计过程中,我们调 用了两次显示,一次写显示温度,一次显示湿度。 4.
8、总结 1. 刚开始烧了程序以后,发现 LCD 什么都不显示,后来发现是因为没 有开背光,因为没开背光显示不明显,如果角度不对会发现什么都 没显示。而背光要通过可调电阻来调,在 1602 的背光正极接一个 可调电阻,电阻的两端是接地和电源。 2. 能够显示以后,发现显示界面一直在刷新,显示不稳定。原因是每 秒随着秒刷新初始化界面一次,解决的方案是不重新调用显示,而 是只给显示秒的位置刷新,其他时间随秒变化。温湿度值则是有了 变化就刷新。 3.由于编写程序时,没有考虑到温度传感器 DS18B20 数据的 十六进制与显示字符之间的数据处理关系,导致在液晶屏中只显示 了传回的最后一个十六进制数所对应的
9、 ASC的字符,找到问题的解 决关键所在后,经过数的分位与字符显示后,成功的显示了传回的 温度、湿度的数据,让我们距离成功只差一小步了。 参考文献 1、 单片机原理及应用湘潭大学出版社; 2、 单片机接口技术 (C51 版)中国水利水电出版社; 3、郭天祥“十天学会单片机”视频; 4、 传感器原理设计与应用国防科技大学出版社; 附录一:系统总程序附录一:系统总程序 # include # define uchar unsigned char # define uint unsigned int sbit DQ=P20;/定义定义 DS18B20 端口端口 DQ sbit BEEP=P22;/蜂
10、鸣器驱动器蜂鸣器驱动器 bit presence; sbit LCD_RS=P12; sbit LCD_RW=P11; sbit LCD_EN=P10; sbit led=P21; sbit key1=P23; sbit key2=P24; uchar code cdis1=wendujishiyan; uchar code cdis2=T= , C ; uchar code cdis3=shidujishiyan ; uchar code cdis4=shidu: %; uchar code cdis5=the system of ; uchar code cdis6= temp and h
11、um; unsigned char data temp_data2=0 x00,0 x00; unsigned char data disp5=0 x00,0 x00,0 x00,0 x00,0 x00; unsigned code ditab16=0 x00,0 x01,0 x01,0 x02,0 x03,0 x04,0 x04, 0 x05,0 x06,0 x06,0 x07,0 x08,0 x08,0 x09,0 x09; void beep(); unsigned char code mytb8=0 x0c,0 x12,0 x12,0 x0c,0 x00,0 x00,0 x00,0 x
12、00; bit int_flag;/定时器定时器 0 1S 到标志位到标志位 unsigned char volatile int_count;/定时器定时器 0 中断次中断次 unsigned char volatile T1count;/定时器定时器 1 中断次中断次 unsigned long sum,wet;/1s 内脉冲个数内脉冲个数 unsigned char le16;/LED 显示缓存显示缓存 # define delayNOP();_nop_();_nop_();_nop_():_nop_(); /* */ void delay1(int ms) unsigned char
13、y; while(ms-) for(y=0;y250;y+) _nop_(); _nop_(); _nop_(); _nop_(); /*/ /*检查检查 LCD 忙状态忙状态 */ /*lcd_busy 为为 1 时,忙,等待。时,忙,等待。lcd_busy 为为 0 时,闲,时,闲, 可写指令与数据可写指令与数据*/ /*/ bit lcd_busy() bit result; LCD_RS=0; LCD_RW=1; LCD_EN=1; delayNOP(); result=(bit)(P0 LCD_EN=0; return(result); /*/ /*写指令数据到写指令数据到 LCD*
14、/ /*RS=L,RW=L,E=高脉冲,高脉冲,D0-D7=指令码指令码*/ /*/ void lcd_wcmd(uchar cmd) while(led_busy(); LCD_RS=0; LCD_RW=0; LCD_EN=0; _nop_(); _nop_(); P0=cmd; delayNOP(); LCD_EN=0; /*/ /*写数据到写数据到 LCD /*RS=H,RS=L,E=高脉冲,高脉冲,D0-D7=数据。数据。*/ /*/ void lcd_wdat(uchar dat) LCD_RS=1; LCD_RW=0; LCD_EN=0; delayNOP(); LCD_EN=0;
15、 /*LCD 初始化初始化 */ /*/ void lcd_init() delay1(15); lcd_wcmd(0 x01); /清除清除 LCD 的显示内容的显示内容 lcd_wcmd(0 x38); /16*2 显示,显示,5*7 点阵,点阵,8 位数据位数据 delay1(5); lcd_wcmd(0 x38); delay1(5); lcd_wcmd(0 x38); delay1(5); lcd_wcmd(0 x0c); /显示开,关光标显示开,关光标 delay1(5); lcd_wcmd(0 x06); /移动光标移动光标 delay1(5); lcd_wcmd(0 x01);
16、 /清除清除 LCD 显示内容显示内容 delay1(5); /*设定显示位置设定显示位置 */ /*/ void lcd_pos(uchar pos) lcd_wcmd(pos|0 x80);/数据指针数据指针=80+地址变量地址变量 /*自定义字符写入自定义字符写入 CGRAM */ /*/ void writeab() unsigned char i; lcd_wcmd(0 x40); for(i=0;i0;i-) DQ=0;/给脉冲信号给脉冲信号 dat=1; DQ=1;/ 给脉冲信号给脉冲信号 if(DQ) dat|=0 x80; Delay(4); return(dat); /*写
17、一个字节写一个字节 */ /*/ WriteOneChar(unsigned char dat) unsigned char i=0; for(i=8;i0;i-) DQ=0; DQ=dat Delay(5); DQ=1; dat=1; /*读取温度读取温度 */ /*/ Read_Temperature(void) Init_DS18B20(); WriteOneChar(0 xcc);/跳过读序列号的操作跳过读序列号的操作 WriteOneChar(0 x44);/启动温度转换启动温度转换 Init_DS18B20(); WriteOneChar(0 xcc);/跳过读序列号的操作跳过读序
18、列号的操作 WriteOneChar(0 xbe);/读取温度寄存读取温度寄存 temp_data0=ReadOneChar(); /温度低八位温度低八位 temp_data1=ReadOneChar(); /温度高八位温度高八位 /*数据转换与温度显示数据转换与温度显示 */ /*/ Disp_Temperature() display4=temp_data0 display0=ditabdisplay4+0 x30 ; display4= (temp_data0 else BEEP=0; /* */ /*湿度测量湿度测量 */ /* */ /软件延时软件延时 void delay(unsi
19、gned int cnt) while(-cnt); /定时定时 /定时器定时器 0 初始化初始化 void init_t0(void) TMOD=(TMOD TH0=0 x4c; TL0=0 x00; /定时器定时器 1 初始化初始化 void init_t1(void) TMOD=(TMOD TH1=0 x00; TL1=0 x00; /定时器定时器 0 中断服务程序中断服务程序 void int_t0(void) interrupt 1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; int_count+; if(int_count=20) T
20、R1=0; int_flag=1; int_count=0 x00; /定时器定时器 1 中断服务程序中断服务程序 void int_t1(void) interrupt 3 T1count+; void disp(void) /湿度显示函数湿度显示函数 int_flag=0; sum=TL1+TH1*256+T1count*65536;/计算计算 1 秒内秒内 的脉冲个数的脉冲个数 /以下将数据格式化,转成以下将数据格式化,转成 LED 可显示的可显示的 BCD 码码 wet=100-(sum-4000)/50;/湿度计算公式湿度计算公式 le0=wet%10;/最低位最低位 wet=wet
21、/10; le1=wet%10; /第二位第二位 wet=wet/10; let2=wet%10 /第三位第三位 wet=wet/10; int_count=ox00; T1count=0; TH1=0 x00; TL1=0 x00; TR1=1; lcd_pos(ox4a); lcd_wdat(le2+48); lcd_pos(0 x4b); lcd_wdat(le1+48); lcd_pos(ox4c); lcd_wdat(le0+48); delays(100); void wendu_Menu() /显示温度的菜单显示温度的菜单 uchar m; lcd_pos(0);/设置显示位置为第一设置显示位置为第一 行第一个字符行第一个字符 m+0; while(cdis1m!=0) /显示字符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 线上敬老活动策划方案
- 续保团购会活动方案
- 耐克活动策划方案
- 节日福利活动方案
- 美好清晨活动方案
- 森林康养森林小屋创新创业项目商业计划书
- 精密光学测量仪器校准企业制定与实施新质生产力项目商业计划书
- 老年餐厅活动策划方案
- 羽毛球联谊活动方案
- 统计诚信活动方案
- 2025年度北京市公务员录用考试行政职业能力测验试卷真题及答案
- 五年(2021-2025)高考地理真题分类汇编:专题12 交通(全国)(原卷版)
- 消防证考试题目及答案
- 麦肯锡思维培训
- 新能源汽车企业财务风险分析及防范研究-以北汽蓝谷为例
- DB11-T 941-2021 无机纤维喷涂工程技术规程
- 隧道正洞机械开挖(电子雷管引爆)项目专项预算定额
- 2025年中国电信国际分公司招聘笔试模拟题及备考指南
- 2025年注册安全工程师考试《生产事故案例分析》真题及标准答案
- GB/T 3863-2025工业氧
- 2025离散型数字化工厂MES系统产品解决方案
评论
0/150
提交评论