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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

水温控制系统设计论文.docx

1、水温控制系统设计论文水温控制系统设计论文学校:系别:专业:指导教师:姓名及学号: 2011年5月目 录标题.2摘要.2一、设计要求.2二、设计方案及论证. .2三、硬件设计及实现.31、主控系统设计. . . . . . . 32、温度采集系统. .4四、系统软件设计. . . . . . . . . . . . . . . . . . . . .71 系统软件流程图.72 系统软件.9结束语. .10参考文献. .10水温控制系统 摘要:设计关键词:AT89C52单片机 数字温度传感器DS18B20 八段数码管显示 独立键盘输入 温度采集与转换一、设计要求1、温度设定范围为4090,最小区分

2、度为1,标定温度小于等于1。2、环境温度降低时,(如用电风扇降温)温度控制的静态误差小于等于1。3、用十进制数码管显示水的实际温度。二、设计方案及论证1、控制器模块:采用AT89C52作为系统控制器。2、温度采集模块:采用数字温度传感器DS18B20,如图1 所示 。图1 DS18B20测温电路3、显示模块:采用三位LED七段数码管分别显示温度的十位、个位和小数位。按键采用单列3按键进行温度设定。系统框图如图2所示:三、硬件设计与实现系统硬件电路主要由AT89C52单片机开发板、DS18B20单线数字温度传感器组成。1、主控系统设计图3 系统硬件模块关系图2、温度采集部分设计本系统采用半导体温

3、度传感器作为敏感元件。传感器我们采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20应用广泛,性能可以满足题目的设计要求。DS18B20的测温电路如图4所示。图4 DS18B20测温电路(1)DSI8B20的测温功能的实现:其测温电路的实现是依靠单片机软件的编程上。当DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0062 5LSB形。温式表

4、示度值格式如表1所示,其中“S”为标志位,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。DSI8B20完成温度转换后,就把测得的温度值与 TH做比较,若TTH或TTL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令做出响应。 (2)温度转换算法及分析由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MS Byte)高5位是用来保存温度的正负(标志为S的bit11bit15),高字节(MS Byte)低3位和低字节来保存温度值(bit0 bit10)。其中低字节(LS Byte)的低4位来保存

5、温度的小数位(bit0 bit 3)。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。算法核心:首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LS Byte)取反加一变成原码。处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中。(3)键盘、显示系统键盘使用AT89C52单片机开发板上

6、自带键盘进行键盘输入操作。数字显示部分第一种方法是采用采用数码管,由于要求的测量精度为10C,所以本系统采用三位数码管进行显示。 数码管显示图如图5图5本系统通过键盘设定温度并可以进行复位,其电路图如图6 图6四、 系统软件设计1、 系统软件流程图系统软件主要由温度采集、键盘扫描、数码管显示、报警子程序、中间接口程序组成。其主程序流程图如图7,温度采集子程序流程图如图3.2,键盘扫描子程序流程图如图8。Y N蜂鸣器连续鸣响图7 主程序流程图读取温度DS18B20模块的流程图8 温度采集子程序流程图键盘扫描处理流程图9 键盘扫描子程序流程图注:显示温度(1) 未插DS18B20时,数码管显示设定

7、值50.(2) 插入DS18B20时,数码管显示当前温度XX.X2、系统软件系统软件的源程序:#include #include #define uchar unsigned char#define uint unsigned intsbit DS=P20; /定义DS18B20接口sbit DAT_595_PIN = P12;sbit SCK_595_PIN = P10;sbit RCK_595_PIN = P11;sbit BUZZ=P33;int temp,seding; uchar flag1,sebai=0,seshi=5,sege=0,sexiao=0; void display(

8、unsigned char *lp,unsigned char lc);/数字的显示函数;lp为指向数组的地址,lc为显示的个数void Write_595(uchar *lp);/void delay(void);/延时子函数,5个空指令/void delay10ms(void);/void readrom(void);code unsigned char table=0xf5,0x05,0xb3,0x97,0x47,0xd6,0xf6,0x85,0xf7,0xd7, /0 1 2 3 4 5 6 7 8 9 0xfd,0x0d,0xbb,0x9f,0x4f,0xde,0xfe,0x8d,0

9、xff,0xdf,0x00; /0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 灭 /共阴数码管 0-9 - _ 空 表uchar code bit_buf8 = 0xdf,0xbf,0x7f,0xef,0xfd,0xfb,0xf7,0xfe;/0xf7,0xef,0xdf,0xbf,0x7f;unsigned char l_tmpdate8=0,0,0,0,0,0,0,0;/定义数组变量,并赋值1,2,3,4,5,6,7,8,就是/本程序显示的八个数int tmp(void);void tmpchange(void);void tmpwritebyte(uchar dat);uc

10、har tmpread(void);bit tmpreadbit(void);void dsreset(void);void delayb(uint count); void Scan_Key(void);void Delayk(void);void main() /主函数 int l_tmp; BUZZ=1; while(1) Scan_Key(); /设定温度上限 if(sebai=0)l_tmpdate4=20;else l_tmpdate4=sebai; l_tmpdate5=seshi; l_tmpdate6=sege+10; l_tmpdate7=20; tmpchange();

11、/温度转换 l_tmp=tmp(); if(l_tmp10*seding) /超过设定值报警 BUZZ=0; else BUZZ=1;display(l_tmpdate,5); void display(unsigned char *lp,unsigned char lc)/显示 uchar i; for(i=0;ilc;i+) Write_595(lp); void Write_595(uchar *lp) /写数到595,数码管显示 uchar i,j; uint dat; for(i=0;i8;i+) RCK_595_PIN=0; dat =bit_bufi; dat =dat8; da

12、t |= tablelpi; for(j=0;j16;j+) SCK_595_PIN = 0; if(dat & 0x8000) DAT_595_PIN = 1; else DAT_595_PIN = 0; dat=dat0) i-; count-; void dsreset(void) /DS18B20初始化 uint i; DS=0; i=103; while(i0)i-; DS=1; i=4; while(i0)i-;bit tmpreadbit(void) / 读一位 uint i; bit dat; DS=0;i+; /小延时一下 DS=1;i+;i+; dat=DS; i=8;wh

13、ile(i0)i-; return (dat);uchar tmpread(void) /读一个字节 uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好/一个字节在DAT里 return(dat); /将一个字节数据返回void tmpwritebyte(uchar dat) /写一个字节到DS18B20里 uint i; uchar j; bit testb; for(j=1;j1; if(testb) / 写1部分 DS=0; i+;i+; DS=1; i=8;while(i0

14、)i-; else DS=0; /写0部分 i=8;while(i0)i-; DS=1; i+;i+; void tmpchange(void) /发送温度转换命令 dsreset(); /初始化DS18B20 delayb(1); /延时 tmpwritebyte(0xcc); / 跳过序列号命令 tmpwritebyte(0x44); /发送温度转换命令int tmp() /获得温度 float tt; uchar a,b; dsreset(); delayb(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); /发送读取数据命令 a=tmpread(); /连续读两个字节数据 b=tmpread(); temp=b; temp0;m-); /for(n=200;n0;n-);参考文献:1 张毅刚,单片机原理及应用M。高等教育出版社,2003 2 王晓威, 左谨平, 唐叔进. 基于液晶显示模块的图片处理技术J. 中国仪器仪表,2005,(07) 3 田军夏, 路平. 中文LCD与单片机的4种常用接口电路J. 仪表技术与传感器 , 2005,(03)

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

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