




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 报 告 课程名称_单片机综合应用设计 题目名称基于单片机的水位水温控制系统学生学院_电气与信息工程学院 _ 专业班级_ 学 号 学生姓名_ 2014 年 7 月 4 日课程设计题目: 基于单片机的水位水温控制系统设计一、设计项目简介1. 设计意义及目的早期温度和水位的参数控制是通过模拟电路实现的。这种方式不仅电路复杂成本高而且误差大,系统的稳定性不好。单片机及微型计算机技术的发展和应用有效地解决了这些缺点,特别是传感器的发展更好的提高了检测参数的精度。选择基于单片机的水温水位控制系统是因为它不仅在人们生活中具有显著的意义,更重要的是能系统地聚温度和水位参数于一身,对于
2、更好的掌握和认识单片机的应用和传感器的应用,系统地深刻认识自动控制的实际应用,掌握复杂的多子系统地设计起到了很强的锻炼作用。2. 系统功能描述本设计的控制系统由水位控制模块和水温控制模块组成。水位控制部分主要由水位检测、按键调整、水位控制和显示等组成。水温控制部分主要由温度检测、按键调整和显示等组成。本设计的控制系统测量水位水温方便、直观成本较低较好地解决了工程应用问题。3. 设计达到目标对水池内的温度水位进行监测,用lcd1602进行显示,当水位低于某个程度时,输出启动抽水的控制信号,达到水位标准时停止抽水;当温度低于某个温度时,输出启动加热装置控制信号,达到指定温度时,停止加热。二、系统硬
3、件设计1. 系统设计方案 用51单片机作为中心处理器,用lcd1602显示数据,用ds18b20测量温度,用继电器控制加热工具加热温度,用超声波测水液位,当温度到达一定温度停止加热,水位低于标准水位就启动水泵加水。图12. 系统电路原理图设计及说明本次设计用的是AT85C51作为主控制芯片 AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以
4、反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图2所示。LCD1602是本次用来显示数据的显示硬件液晶显示器1602(Liquid Crytal Display)简称LCD1602,其主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯光构成画面。1602表示每行显示16个字符,
5、共有2行。LCD与51单片机连接如图3图3本次用的DS18B20测温度,经过cpu再转换到LCD1602显示DSl8B204数字温度计提供9位(二进制)温度读数,指示器件的温度。信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线(和地线)。DSl8B20的电源可以由数据线本身提供而不需要外部电源,这允许在许多不同的地方放置温度敏感器件。DSl8B20的测量范围从-55摄式度到+125摄式度,增量值为0.5摄式度,可在l s(典型值)内把温度变换成数字。 用HC-SR04声波测液位HC-SR04超声波测距模块可提供2cm-40
6、0cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。基本工作原理:(1)采用IO口TRIG触发测距,给最少10us的高电平信呈。(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S)/2;图6为蜂鸣器与单片机连接图图6图7为按键电路图7图8为时钟电路和复位电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按
7、时序进行工作。 在51芯片内部有一个高增益反相放大器,其输入端为芯片引脚1XTAL,输出端为引脚2XTAL,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。 此电路采用12MHz的石英晶体。复位电路:复位是单片机的初始化操作。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。 RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为12MHz的晶振,则复位信号持续时间应超过4ms才能完
8、成复位操作。复位操作有上电自动复位和按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的 三、系统软件设计1. 软件设计方案图112. 软件设计框图及说明本系统中,主程序主要分两部分,分别是设置部分和工作部分。设置部分需要调用设置子程序,工作时需要调用显示屏初始化、键盘扫描、错误检验、温度读取、显示、继电器控制、延时子程序。因为系统开始工作时需要先设置目标温度,所以需要设置子程序。目标温度设置好之后可以在工作中微调。工作时首先要将显示屏初始化,这样才能保证显示屏的工作。因为需要微调,所以除了设置子程序之外,主程序也需要调用键盘扫描和错误检验程序。之后,需要显示目标温度和实际温
9、度的比较,于是需要从传感器读取温度值,即温度读取子程序。读到温度之后,需要将两个温度显示出来,于是需要调用显示子程序。当然,因为要控制升温降温设备,所有还需要继电器控制子程序。最后,延时,否则屏幕会持续闪动系统无法正常使用。 温度传感器图13四、设计调试及结果分析(做实物的同学给出实际调试结果,附结果图片;仿真的同学写仿真结果分析,给出仿真结果图)五、 结束语本次设计优点:本系统简单可行,所用原件均为市场主流原件,造价低廉并能准确完成我们需要的对温度的显示和控制等功能。并且通过LCD液晶显示明确直观地将目标温度和现场实际温度显示出来,便于我们观察和记录。本次设计缺点:焊接电路的时候有虚焊,有的
10、元件连接不好,控制系统部署很灵敏通过这次课题设计,我对单片机的工作原理有了更深一步的了解,对于I/O工作方式更加明确,并且在应用上掌握了不少方法。在与同学们交流中,也发现不少问题,并且及时的做出相应的更改,还有一些应用巧妙的方法,这些使我对单片机技术能更灵活的应用。致谢:多谢老师在课堂上传授的知识,感谢队员的各方面的帮助,让我可以完成这个课程设计,让我学到了很多东西,以前不懂的地方经过同学指点已经基本可以明白。六、 附录1. 电路原理图整体绘制图2. 电路PCB图整体绘制图3. 相关程序代码#include<reg52.h>#include<intrins.h>#def
11、ine uint unsigned int#define uchar unsigned char#define NOP() _nop_();_nop_();_nop_();_nop_();#define LCD_DATA P2sbit DSPORT=P10; /DS18b20sbit Heat = P00; /温度控制继电器sbit Push = P01;/抽水控制/-Beep-sbit BEEP = P11;/sbit LED = P14;/-Key-sbit AUTO = P34;sbit MOV = P35;sbit ADD = P36;sbit DEC = P37; /sbit EN
12、= P24;sbit INT = P33;/-LCD引脚-sbit LCD_RS=P04;sbit LCD_RW=P05;sbit LCD_EN=P06;/-超声波引脚-sbit Tx=P31;/触发控制信号输入sbit Rx=P32;/回响信号输出 uchar temp_dis = "N:00.0 C 000.0cm"/LCD第一行uchar table = " :00.0 C 000.0cm"/LCD第二行显示uchar Hand_table= "H: heat push "/uchar Auto_table= "A:0
13、0.0 C 000.0cm"uchar Set_Table7 =3,6,0,0,2,0,0;/设定温度值,水位值数组uchar Con_Flag=0;/控制标志位1为自动,0为手动uchar aa=0, bb=0;long int t,distance,S_Distance=0,R_Distance=0;/L=500;/distance=超声波安装点 与 水面的距离,水深=超声波安装点-distancelong int temp = 0,S_Temp=0,R_Temp=0;int TError=0,DError=0;uchar cache4=0,0,0,0;uchar datas3
14、= 0,0,0; /定义数组/double Kp=0.0;/PID控制的比例、积分、微分常数/* 函 数 名 : Delay1ms* 函数功能 : 延时函数* 输 入 : 无* 输 出 : 无*/void Delay1ms(uint ms)uint t;while(ms-)for(t=0;t<120;t+);/* 函 数 名 : Init_Config* 函数功能 : 中断配置* 输 入 : 无* 输 出 : 无*/void Init_Config(void)TMOD=0x19;TR0=1;/启动定时器EX0=1;/开外部中断IT0=1;EX1=1;IT1=1;PX0=1;PX1=0;E
15、A=1;/开总中断/* 函 数 名 : read_lcd_state* 函数功能 : 读取LCD状态* 输 入 : 无* 输 出 : 无*/uchar read_lcd_state()uchar state;LCD_RS=0;LCD_RW=1;LCD_EN=1;_nop_();state=LCD_DATA;LCD_EN=0;_nop_();return state;/* 函 数 名 : lcd_busy_wait* 函数功能 : LCD测忙* 输 入 : 无* 输 出 : 无*/void lcd_busy_wait()while(read_lcd_state() & 0x80)=0x8
16、0);NOP();/* 函 数 名 : lcd_write_com* 函数功能 : 写命令入LCD* 输 入 : 无* 输 出 : 无*/void lcd_write_com(uchar com)lcd_busy_wait();LCD_RS=0;/RS为0时,写指令,RS为1时,写数据LCD_RW=0;LCD_DATA=com;NOP();LCD_EN=1;NOP();LCD_EN=0;/* 函 数 名 : lcd_write_data* 函数功能 : 写数据入LCD* 输 入 : dat* 输 出 : 无*/void lcd_write_data(uchar dat)lcd_busy_wai
17、t();LCD_RS=1;LCD_RW=0;LCD_DATA=dat;NOP();LCD_EN=1;NOP();LCD_EN=0;/* 函 数 名 : lcd_init* 函数功能 : LCD初始化* 输 入 : 无* 输 出 : 无*/void lcd_init()LCD_EN=0;lcd_write_com(0x38);/LCD显示模式设置lcd_write_com(0x0c);/LCD显示开/关及光标设置lcd_write_com(0x06);/当写一个字符后地址指针加1,且光标加1lcd_write_com(0x01);/显示清屏/* 函 数 名 : set_lcd_pos* 函数功能
18、 : 设置LCD显示地址* 输 入 : p* 输 出 : 无*/void set_lcd_pos(uchar p)lcd_write_com(p|0x80);/* 函 数 名 : lcd_print* 函数功能 : 打印显示字符* 输 入 : p,*s,low* 输 出 : 无*/void lcd_print(uchar p,uchar *s,uint low)uint num;set_lcd_pos(p);for(num=0;num<low;num+)lcd_write_data(snum);Delay1ms(1);void HC05_Init()Tx=1;/触发脉冲NOP();NOP
19、();NOP();NOP();Tx=0;distance=0.17*t;/距离计算/distance=L-distance;/水深/* 函 数 名 : distance_convert* 函数功能 : 距离装换* 输 入 : Ldat* 输 出 : 无*/void distance_convert(long int Ldat)cache0=Ldat/1000;cache1=Ldat/100%10;cache2=Ldat/10%10;cache3=Ldat%10;temp_dis9=cache0+'0'temp_dis10=cache1+'0'temp_dis11
20、=cache2+'0'temp_dis13=cache3+'0'/* 函 数 名 : Ds18b20Init* 函数功能 : 初始化DS18b20* 输 入 : 无* 输 出 : 无*/uchar Ds18b20Init()uchar i;DSPORT = 0; /将总线拉低480us960usi = 70;while(i-); /延时642usDSPORT = 1;/然后拉高总线,如果DS18B20做出反应会将在15us60us后总线拉低i = 0;while(DSPORT)/等待DS18B20拉低总线i+;if(i>5)/等待>5MSreturn
21、 0;/初始化失败Delay1ms(1);return 1;/初始化成功/* 函 数 名 : Ds18b20WriteByte* 函数功能 : 向18B20写入一个字节* 输 入 : Tdat* 输 出 : 无/*/void Ds18b20WriteByte(uchar Tdat)uint i, j;for(j=0; j<8; j+)DSPORT = 0; /每写入一位数据之前先把总线拉低1usi+;DSPORT = Tdat & 0x01; /然后写入一个数据,从最低位开始i=6;while(i-); /延时68us,持续时间最少60usDSPORT = 1;/然后释放总线,至
22、少1us给总线恢复时间才能接着写入第二个数值Tdat >>= 1;/* 函 数 名 : Ds18b20ReadByte* 函数功能 : 读取一个字节* 输 入 : 无* 输 出 : 无*/uchar Ds18b20ReadByte()uchar byte, bi;uint i, j;for(j=8; j>0; j-)DSPORT = 0;/先将总线拉低1usi+;DSPORT = 1;/然后释放总线i+;i+;/延时6us等待数据稳定bi = DSPORT; /读取数据,从最低位开始读取/*将byte左移一位,然后与上右移7位后的bi,注意移动之后移掉那位补0。*/byte
23、= (byte >> 1) | (bi << 7); i = 4;/读取完之后等待48us再接着读取下一个数while(i-);return byte;/* 函 数 名 : Ds18b20ChangTemp* 函数功能 : 让18b20开始转换温度* 输 入 : 无* 输 出 : 无*/void Ds18b20ChangTemp()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc);/跳过ROM操作命令 Ds18b20WriteByte(0x44); /温度转换命令Delay1ms(100);/等待转换成功,而如果你是一直刷
24、着的话,就不用这个延时了 /* 函 数 名 : Ds18b20ReadTempCom* 函数功能 : 发送读取温度命令* 输 入 : 无* 输 出 : 无*/void Ds18b20ReadTempCom()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc); /跳过ROM操作命令Ds18b20WriteByte(0xbe); /发送读取温度命令/* 函 数 名 : Ds18b20ReadTemp* 函数功能 : 读取温度* 输 入 : 无* 输 出 : 无*/int Ds18b20ReadTemp()uchar tmh, tml;uchar da
25、tas3 = 0,0,0; /定义数组Ds18b20ChangTemp(); /先写入转换命令Ds18b20ReadTempCom();/然后等待转换完后发送读取温度命令tml = Ds18b20ReadByte();/读取温度值共16位,先读低字节tmh = Ds18b20ReadByte();/再读高字节temp = tmh;temp <<= 8;temp |= tml;temp=temp*0.625;return temp; /* 函 数 名 : Ds1820Disp* 函数功能 : DS18b20的显示* 输 入 : Tdata* 输 出 : 无*void LcdDispl
26、ay(int Tdata) /lcd显示 datas0 = Tdata % 1000 /100 ;datas1 = Tdata % 100 / 10;datas2 = Tdata % 10 ;temp_dis2=datas0+'0'temp_dis3=datas1+'0'temp_dis5=datas2+'0'temp_dis6=0xdf;/摄氏度符号/* 函 数 名 : Read_Value* 函数功能 : 写入温度值、水位值的显示* 输 入 : 无* 输 出 : 无*/void Write_Value(void) /温度值 table2= S
27、et_Table0+'0' /十位 table3= Set_Table1+'0' /个位 table5 = Set_Table2+'0' /小数位 table6 = 0xdf; /水位值 table9= Set_Table3+'0' table10= Set_Table4+'0' table11= Set_Table5+'0' table13= Set_Table6+'0' /* 函 数 名 : Read_Value* 函数功能 : 读取温度值、水位值的显示* 输 入 : 无* 输
28、出 : 无*void Read_Set_Value(void)S_Distance= Set_Table3*1000+Set_Table4*100+Set_Table5*10+Set_Table6; 水位S_Temp= Set_Table0*100+Set_Table1*10+Set_Table2; 温度/* 函 数 名 : Read_Value* 函数功能 : 读取温度值、水位值的显示* 输 入 : 无* 输 出 : 无*void Read_Real_Value(void)R_Distance = cache0*1000+cache1*100+cache2*10+cache3;R_Temp
29、= datas0*100+datas1*10+datas2;/* 函 数 名 : Auto_Temp_Control* 函数功能 : * 输 入 : 无* 输 出 : 无*void Auto_Temp_Control(void)if(TError>20) Heat=0;else if(TError<-20)Heat=1;/* 函 数 名 : Auto_Distance_Control* 函数功能 : * 输 入 : 无* 输 出 : 无*void Auto_Distance_Control()if(DError>50) Push=0;else if(DError<-10
30、)Push=1;/* 函 数 名 : Auto_Activity* 函数功能 : 自动* 输 入 : 无* 输 出 : 无*void Auto_Activity(void)while(1)table0='S'LcdDisplay(temp);lcd_print(0x00,temp_dis,16);Set_Tablebb=aa;Write_Value();lcd_print(0x40,table,16);Delay1ms(1);HC05_Init();distance_convert(distance);Ds18b20ReadTemp();Set_Tablebb=0x5f;Wri
31、te_Value();lcd_print(0x40,table,16);if(!MOV)Delay1ms(1);bb+;if(bb=7)bb=0;else if(!ADD)Delay1ms(1);aa+;if(aa=10)aa=0;Set_Tablebb=aa;else if(!DEC)if(aa=0)aa=10;Delay1ms(1);aa-;Set_Tablebb=aa;else if(!AUTO)Read_Set_Value();break;else if(!AUTO)break;/* 函 数 名 : Hand_Activity* 函数功能 : 手动模式配置* 输 入 : 无* 输 出 : 无*void Hand_Activity(void)if(!ADD) /手动加热Heat=0;Hand_table3='H'Hand_table4='E'Hand_table5='A'Hand_table6='T'elseHeat=1;Hand_table3='h'Hand_table4='e'Hand_table5='a'Hand_table6='t'if(!DEC)/手动抽水Push=0;Hand_table9='P'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拍卖参与流程说明协议
- 篷布制造过程中的节能与减排措施考核试卷
- 竹材在农业支撑材料中的应用考核试卷
- 竞争合作建材协议
- 空调器节能减排措施考核试卷
- 羊的饲养饲料作物种植模式考核试卷
- 纺织品的智能物流系统考核试卷
- 纺织产品的标准化与认证考核试卷
- 纺织面料鞋的环保生物降解材料研究考核试卷
- 世界第一运动-足球主题课件
- 年产15万吨煤制甲醇生产的工艺设计0
- 河南省郑州市2023-2024学年高二下学期6月期末英语试题(解析版)
- 国家开放大学专科《法理学》(第三版教材)形成性考核试题及答案
- 2023年小型水库雨水情测报和大坝安全监测设施项目-实施方案
- (2024年)面神经炎课件完整版
- 减盐减油健康教育教案反思
- 特斯拉国产供应链研究报告
- 如何进行医疗垃圾的安全运输
- 公共停车场建设项目可行性研究报告
- 保安服务标准及工作流程
- 2024年中考数学几何模型归纳(全国通用):18 全等与相似模型之十字模型(学生版)
评论
0/150
提交评论