电子设计大赛总结报告.doc

上传人:jian****018 文档编号:9459722 上传时间:2020-04-05 格式:DOC 页数:16 大小:121KB
返回 下载 相关 举报
电子设计大赛总结报告.doc_第1页
第1页 / 共16页
电子设计大赛总结报告.doc_第2页
第2页 / 共16页
电子设计大赛总结报告.doc_第3页
第3页 / 共16页
点击查看更多>>
资源描述
电子设计大赛总结报告 学号:201113010122 姓名:李永飞1. 摘要1.1目的 设计并制作一个家用电热水器控制系统,容量2升左右。水温可以在一定范围内设定,并保持设定的温度基本不变,同时具备水位检测控制功能。1.2方法 整个题目分温度测量与控制和液位检测两部分,温度测量和控制电热丝加热部分由单片机控制实现,液位检测部分由开关电路实现。1.3结果 开机后,当水位低于A点时,红色警示灯亮,水位上升至A点时,红色警示灯熄灭。当水位到达B点时,水泵会自动断开,停止加水。此时如果加水至C点,黄色警示灯亮。 单片机键盘输入温度为40,原水温由温度计检测为20度,且单片机显示也为20。在实验过程中,单片机输入温度后,电热丝开始加热,水温从20可以连续上升至40停止,同时该系统可以实现动态温度变化不超过4,静态温度变化不超过1。1.4结论 系统可以实现题目的基本要求,实验过程中误差较小,并且外围电路比较简单,可以考虑用于实际。2.关键词STC89C54单片机 DS18b20 本系统采用STC89C54实现液位和温度控制,温度信号和液位信号由DS18b20和三极管开关电路提供,通过信号反馈来实现对水温和水位的控制,同时可以通过单片机设定温度值和显示实际温度,并且可以实现对水泵和电热丝的控制。2. 目录摘要-1关键词-1正文-1系统设计-1单元电路设计-2软件设计-4系统测试-11结论-11参考文献-11附录-114.正文4.1系统设计 检测水位信号和产生警示作用由外围电路来实现,检测的水位信号传给单片机处理,单片机通过继电器控制水泵工作。温度检测由DS18b20芯片来实现,检测的温度信号传给单片机并显示出来,然后由单片机通过继电器控制电热丝的工作。(1)温度测量部分方案一采用热敏电阻,可实现40到90测量范围,但热敏电阻精度、重复性、可靠性较差。方案二采用18b20,它的测量温度范围为 -55+125,在-10+85范围内,精度为0.5,具有测温系统简单、测温精度高、连接方便、占用口线少等优点。(2)驱动控制部分方案一全部采用外部电路,通过电压、电流实现信号的检测和控制,但是电路比较复杂,容易受干扰,导致稳定性不好,误差较大。方案二采用单片机程序控制,可以使外围电路简化,减少外部干扰,能够准确控制,且误差较少。4.2单元电路设计4.2.1输出为5V的直流稳压电源 整流电桥将正弦交流电转换成单向脉动的直流电,但还有很大的波纹,并联小的电容可以滤去频率较大的正弦波,并联大电容可以滤去频率较小的正弦波,从而使直流分量更加稳定,7805可以使电路输出保持5V电压。此电路在试验过程中给各级电路及水提供5V电压。4.2.2液位检测这部分主要用到三极管的开关作用,当三级管处于饱和区,开关处于闭合状态,当三极管处于截止区,开关处于断开状态。B和C采用的是NPN型三极管,在允许范围内,当基极电压处于高电位时,电路连通。A采用的是PNP型三极管,当基极电压处于低电位时,电路连通。(1) 下限A点控制电路:当液位C时将产生过上限警报,即黄灯亮。4.2.3继电器 继电器电路的主要作用是小电流控制大电流,分别控制水泵和电热丝工作与否。控制水泵的电热丝在不工作时处在常闭状态,当水位到达B处时,继电器闭合,水泵所处的电路导通。控制电热丝的继电器在不工作时处于常开状态,当输入温度比显示水温高时,继电器闭合,使电热丝所在的电路导通。4.3软件设计 以下为编写程序,流程图在最后附录。#include/52系列单片机头文件#include#define uint unsigned int#define uchar unsigned char uchar code table=/定义数码管段数字0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code tablewe=/定义数码管位数字0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;sbit DQ=P10;/18B20sbit kzjr=P11;/控制加热继电器sbit jcyw=P12;/采集液位检测信号sbit kzyw=P13;/控制液位继电器sbit dula=P21;/控制段选sbit wela=P20;/控制位选sbit key1=P22;/控制四个独立按键sbit key2=P23;sbit key3=P24;sbit key4=P25;uint temp,atemp=0;uchar shi=0,ge=0,a1,a2,a3,a4;/*88void delayus(uint x,uchar y)/精确延时uint i;uchar j;for(i=x;i0;i-);for(j=y;j0;j-);void delay(uint x)/延时uint a,b;for(a=x;a0;a-)for(b=110;b0;b-);/#void yw_con()/液位检测if(jcyw=1)/判断是否到达B点kzyw=0;/关闭继电器else kzyw=1;/打开继电器/#void adisplay(uchar sshi,uchar sge)/数码管在第三,第四位显示输入数据dula=1;P0=tablesshi;dula=0;P0=0xff;wela=1;P0=tablewe2;wela=0;delay(1);dula=1;P0=tablesge;dula=0;P0=0xff;wela=1;P0=tablewe3;wela=0;delay(1);/*88void keys()/控制按键if(key1=0)/按一键十位加一delay(10);/延时去抖if(key1=0)shi+;if(shi=10)/到10归0shi=0;while(!key1);/等待按键释放if(key2=0)/按二键个位加一delay(10);/延时去抖if(key2=0)ge+;if(ge=10)/到10归0ge=0;while(!key2);/等待按键释放if(key3=0)delay(10);/延时去抖if(key3=0)shi=0;/十位个位全部归0ge=0;while(!key3);/等待按键释放/*88void anjian()/按键输入程序keys();adisplay(shi,ge);if(key4=0)delay(10);/延时去抖if(key4=0)atemp=shi*10+ge;/将这个二位数赋给atempwhile(!key4);/等待按键释放/#3/*_nop_();/1usdelayus(0,0);/20usdelayus(1,0);/30usdelayus(1,1);/45usdelayus(3,2);/70usdelayus(48,20);/750usdelayus(30,10);/500us*/void dqreset(void)/18B20初始化uchar st=1;DQ=1;_nop_();_nop_();while(st)DQ=0;delayus(48,20);DQ=1;delayus(3,2);if(DQ=1)/判断是否初始化成功st=1;elsest=0;/若不成功则循环delayus(30,10);uchar tempread()/读取一个字节数据函数uchar i,date;static bit j;for(i=8;i0;i-)date=date1;DQ=1;_nop_();_nop_();DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();DQ=1;_nop_();_nop_();_nop_();_nop_();j=DQ;if(j=1)date=date|0x80;/将第一位写入1,后7位保留delayus(1,0);return (date);void tempwrite(uchar date)/向18B20写一个字节数据函数uchar i,j;DQ=1;_nop_();_nop_();for(i=8;i0;i-)j=date&0x01;/将前七位写入0,只保留最后一位/读取最后一位DQ=0;delayus(0,0);if(j=1)DQ=1;delayus(1,1);DQ=1;date=date1;/右移一位void display(uchar a3,uchar a4 ) /数码管在第一,第二位显示测得温度dula=1;/开段选P0=tablea3;dula=0;/关段选P0=0xff;wela=1;/开位选P0=tablewe0;wela=0;/关位选delay(1);dula=1;P0=tablea4;dula=0;P0=0xff;wela=1;P0=tablewe1;wela=0;delay(1);void get_temp()/读取寄存器中存储的温度,并显示uchar a,b;float aaa;dqreset();tempwrite(0xCC);/跳过读ROM指令tempwrite(0x44);/开始温度转换dqreset();tempwrite(0xCC);/跳过读ROM指令tempwrite(0xBE);/告诉18B20将读它的暂存器a=tempread();/读低8位b=tempread();/读高8位aaa=(b*256+a)*0.0625;/将b左移8位与a相加,再乘0.0625得实际温度temp=(int)aaa;/将aaa转换成整型a1=(temp%100)/10;/将十位赋给a1a2=temp%10;/将个位赋给a2display(a1,a2);/输出温度/*void main()while(1)yw_con();/液位控制get_temp();/温度检测并显示anjian();/按键控制if(atemptemp)/判断输入温度是否大于实际温度kzjr=1;/打开加热继电器elsekzjr=0;/关闭加热继电器 4.4系统测试本系统的是一个水温控制系统,同时具备液位检测功能。可用键盘设定温度值并能显示,范围为2080,同时可以测量并显示水的实际温度,并且可以在全量程内任意设定一个温度值,控制系统可以实现该给定温度的恒值自动控制。控制的最大动态误差4,静态误差1,系统达到稳态的时间15min。同时具有液位检测功能,正常情况保证液位在B点附近,当液位C或液位C或液位A时,有明显报警提示。开机后自动上水至B点附近。5.参考文献51单片机C语言教程郭天祥编著 电子工业出版社郭天祥电子教程6.附录6.1电路图5V直流电源电路图液位检测: 下限液位警报电路 控制水泵停止工作电路 上限液位警报电路6.2 元件清单名称参数个数电阻4K410K12K2电容0.1F20.01F32200F11000F1三极管8050285501二极管发光二极管2普通二极管5继电器2DS18b201变压器220:1216.3使用说明:数码管显示的是实际水温,用户根据需要可用键盘设定温度值,范围为2080,只要设置的水温大于实际水温,热水器就能加热,并保持到设置温度。若想让水冷却,按键清0,再点确定键。当红灯亮时,说明热水器水量不足;黄灯若亮了,说明水位太高,要及时断开开关。判断液位是否到达B点关闭控制水泵继电器打开控制水泵继电器YN检测并显示温度按键控制,按一键十位加一,按二键个位加一,按三键清零,按四键将该数赋予atemp判断atemp是否大于检测温度打开控制加热继电器关闭控制加热继电器YN第16页 共16页
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!