电子器件市场调研与系统设计实践李淳晓.docx
《电子器件市场调研与系统设计实践李淳晓.docx》由会员分享,可在线阅读,更多相关《电子器件市场调研与系统设计实践李淳晓.docx(13页珍藏版)》请在冰豆网上搜索。
电子器件市场调研与系统设计实践李淳晓
电子器件市场调研与系统设计实践
评语:
考勤(10)
守纪(10)
过程(40)
报告(30)
答辩(10)
总成绩(100)
专业:
自动化
班级:
自动化1502
姓名:
李淳晓
学号:
201509433
指导教师:
杨剑锋
兰州交通大学自动化与电气工程学院
2018年10月12日
水温水位检测与控制
1设计目的
1.1设计目标
通过本设计,使自己掌握电子器件市场调研与电子系统设计的方法、过程。
在实际操作中提高自己对整体电路设计和把握能力,了解单片机系统设计流程,以及电路板的实际制作和调试能力。
同时也加强对数字电路、单片机和微机原理等课程知识的实际应用能力,也为同类产品的进一步发展奠定理论和实践基础。
1.2设计任务
以89C51为主控制芯片,温度采集采用温度传感器,通过外围电路来采集水位,用四位数码管显示当前的水温,用LED灯指示水位,并且通过键盘来输入所需控制的水温。
单片机将检测到的温度信号与输入的温度上、下限进行比较,由此作出判断是否启动继电器以开启设备。
系统包括单片机模块、温度检测模块、水位检测模块和驱动电路设计四个部分。
并且当水温水位超于限制时启动报警系统。
2元器件的市场调研与选择
元器件清单及市场调研如表1所示。
表1电子元器件清单及调研
序号
元件名称
数量
调研单价
调研地点
1
9*15万用板
1
6元
西北电子商贸城
2
40脚IC座
1
0.8元
西北电子商贸城
3
89C51单片机
1
8元
西北电子商贸城
4
5V继电器
1
2元
西北电子商贸城
5
DS18b20传感器(防水)
1
4元
西北电子商贸城
6
四位共阳数码管3641BH
1
3元
西北电子商贸城
7
S8050三极管
2
2元
西北电子商贸城
8
继电器端子
2
0.5元
西北电子商贸城
9
按键
4
0.5元
西北电子商贸城
10
LED黄灯
2
0.2元
西北电子商贸城
11
LED红灯
2
0.2元
西北电子商贸城
12
1k电阻
5
0.2元
西北电子商贸城
13
220Ω电阻
5
0.5元
西北电子商贸城
14
4.7k电阻
5
0.5元
西北电子商贸城
15
103排阻
3
0.5元
西北电子商贸城
16
S8550三极管
2
3.5元
西北电子商贸城
17
5V有源蜂鸣器
1
2元
西北电子商贸城
19
30pf电容
5
1元
西北电子商贸城
21
11.0592M晶振
1
0.5元
西北电子商贸城
22
10K电阻
3
1元
西北电子商贸城
23
10uf电容
1
0.5元
西北电子商贸城
24
Led(绿色)
1
0.5元
西北电子商贸城
25
自锁开关
8
0.2元
西北电子商贸城
26
水位传感器电路板(小电路板)
1
5元
西北电子商贸城
27
5P排针
10
10元
西北电子商贸城
28
5P杜邦线
10
2元
西北电子商贸城
29
DC插口
3
1.5元
西北电子商贸城
30
DC电源接头(含usb线)或者电池盒
2
1.5元
西北电子商贸城
31
锡丝若干
若干
1元
西北电子商贸城
32
导线若干
若干
1元
西北电子商贸城
传感器市场调研如表2所示。
表2传感器市场调研
序号
型号名称
规格
调研单价
备注
1
DS18B20温度传感器
探头
4元
防水
2
LM35DZ温度传感器
探头
4.6元
防水
3
T106温度传感器
探头
6元
热敏
4
智能温控器
微型温控板
17.2元
—
5
PT100温度传感器
探头
15元
带热电阻
3设计原理
3.1温度检测系统
具体硬件设计原理如图3.1所示。
加热继电器
图3.1温度计电路总体设计方案
3.2水位检测系统
水位
检测硬件设计如图3.2所示。
图3.2水位检测设计方案
采用89C51单片机为核心控制器的电路。
因为单片机电路结构简单成本低廉、可靠性高,便于实现各个控制功能能很好的完成设计任务。
水位检测由本设计使用的电极式水位传感器通过检测来实现水位的改变。
获得当前水位并通过LED灯显示。
3.3显示电路
显示电路如图3.3所示。
图3.3显示电路图
3.4按键电路
按键电路是模拟水位的,通过接通电路达到使相对应单片机引脚的电平置低电平,从而使显示器上显示与之相对应的水位。
按键电路图如图3.4.1所示。
图3.4.1按键电路图
相应水位如图3.4.2所示。
图3.4.2水位表示电路图
4软件设计
4.1.1软件设计方案
程序的功能是:
启动DS18B20测量温度,将测量值与给定值进行比较,若测得温度小于设定值,则进入加热阶段,置P1.1为低电平,这期间继续对温度进行监测,直到温度在设定范围内,置P1.1为高电平断开可控硅,关闭加热器,等待下一次的启动命令。
当测得温度大于设定值,则蜂鸣器报警,加热装置停止加热,温度降低到设置值以下时,报警信号自动取消。
4.1.2程序流程图
方案实施流程图如图4.1所示。
图4.1系统流程图
4.2主程序
程序见附录一。
5水位控制系统仿真
仿真结果见附录二。
6总结
本次课设首先是进行市场调研,了解对比电子产品的性价比,然后选用合适的电子器件设计出一个具体的水温水位检测与控制系统。
系统包括数据采集模块,单片机控制模块,显示模块和温度设置模块,驱动电路五个部分。
文中对每个部分功能、实现过程作了详细介绍。
完成了课题既定的任务,达到了预期的目标。
系统具有如下特点:
(1)采用智能温度传感器DS18B20采集温度数据,简化了硬件电路设计,温度采集数据更加精准;
(2)89C51单片机的采用,有利于功能扩展;
(3)电路设计充分考虑了系统可靠性和安全性。
参考文献
[1]陈海宴.51单片机原理及其应用[M].北京:
北京航空航天大学出版社,2010.3
[2]何希才.传感器及其应用实例[M].北京:
机械工业出版社,2004.9
[3]王思明,张金敏,苟军年等.单片机原理及应用[M].北京:
科学出版社,2012.7
附录一
/*头文件*/
#include
#include/*****************宏定义******************/
#defineuintunsignedint#defineucharunsignedchar/***********位操作端口定义**************/
sbitset_key=P1^4;//“设置”键K1
sbitadd_key=P1^5;//“加”键K2
sbitcut_key=P1^6;//“减”键K3
sbitspeak=P3^7;//蜂鸣器
sbitJK1=P3^6;//温度继电器
bitJK2=P3^5;//水位继电器
sbitDQ1=P3^3;
sbitqian_wei=P0^7;
sbitbai_wei=P0^6;
sbitshi_wei=P0^5;
sbitge_wei=P0^4;
sbitled4=P0^3;//满水位指示灯红色
sbitled3=P0^2;//3/4水位指示灯
sbitled2=P0^1;//1/2水位指示灯
sbitled1=P0^0;//1/4水位指示灯
sbitSW041=P1^0;//1/4水位
sbitSW021=P1^1;//1/2水位
sbitSW043=P1^2;//3/4水位
sbitSW01=P1^3;//满水位
ucharbianma[]={0x05,0xdd,0x46,0x54,0x9c,0x34,0x24,0x5d,0x04,0x14,0xf6};ucharflog4;uintDD1;
ucharT_data[4]={0,0,0,0};
ucharSet_data[3]={0,0,0};
uintHT=500,LT;
voiddelay_1ms(uchari){uintx,y;for(x=i;x>0;x--)for(y=124;y>0;y--);}voiddata_pro(){Set_data[0]=HT/1000;
Set_data[1]=(HT%1000)/100;Set_data[2]=(HT%100)/10;}
/*****延时子程序*****/
voidDelay_DS18B20(intnum)
{while(num--);}/*****初始化DS18B20*****/
voidInit_DS18B20(void){ucharx=0;DQ1=1;//DQ复位Delay_DS18B20
(2);//稍做延时DQ1=0;//单片机将DQ拉低Delay_DS18B20(80);//精确延时,大于480usDQ1=1;//拉高总线Delay_DS18B20(14);x=DQ1;//稍做延时后,如果x=0则初始化成功,x=1则初始化失败Delay_DS18B20(20);}
/*****读一个字节*****/
ucharReadOneChar(void){uchari=0;uchardat=0;for(i=8;i>0;i--)//串行接收数据
{DQ1=0;//给脉冲信号
dat>>=1;DQ1=1;//给脉冲信号
if(DQ1)dat|=0x80;Delay_DS18B20(8);}
return(dat);}
/*****写一个字节*****/
voidWriteOneChar(uchardat){uchari=0;
for(i=8;i>0;i--){DQ1=0;DQ1=dat&0x01;//写入最低位Delay_DS18B20(10);DQ1=1;dat>>=1;//右移一位}}
/*****读取温度*****/
uintReadTemperature(void){uchara=0;ucharb=0;uintt=0;floattt=0;Init_DS18B20();//初始化DS18B20WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换Delay_DS18B20(20);Init_DS18B20();//初始化DS18B20WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器a=ReadOneChar();//读低8位b=ReadOneChar();//读高8位t=b;t<<=8;t=t|a;tt=t*0.0625;t=tt*10+0.5;//放大10倍输出并四舍五入return(t);}
voidpos_data()
{DD1=ReadTemperature();T_data[0]=DD1/1000;T_data[1]=(DD1%1000)/100;T_data[2]=(DD1%100)/10;T_data[3]=DD1%10;}
voiddisplay_set()//温度报警值设置
{qian_wei=0;bai_wei=1;shi_wei=1;ge_wei=1;P2=bianma[10];delay_1ms(5);qian_wei=1;bai_wei=0;shi_wei=1;ge_wei=1;P2=bianma[Set_data[0]];delay_1ms(5);P2=0xff;qian_wei=1;bai_wei=1;shi_wei=0;ge_wei=1;P2=bianma[Set_data[1]];delay_1ms(5);P2=0xff;qian_wei=1;bai_wei=1;shi_wei=1;ge_wei=0;P2=bianma[Set_data[2]];delay_1ms(5);P2=0xff;}
voiddisplay()//测量值显示{qian_wei=0;bai_wei=1;shi_wei=1;ge_wei=1;P2=bianma[0];delay_1ms(5);qian_wei=1;bai_wei=0;shi_wei=1;ge_wei=1;P2=bianma[T_data[1]];delay_1ms(5);
P2=0xff;qian_wei=1;bai_wei=1;shi_wei=0;ge_wei=1;P2=bianma[T_data[2]]&0xfb;delay_1ms(5);P2=0xff;qian_wei=1;bai_wei=1;shi_wei=1;ge_wei=0;P2=bianma[T_data[3]];delay_1ms(5);P2=0xff;}
/**********报警处理函数******************/
voidbaojing(){LT=HT-10;//测量温度低于设定温度10度以下时重新加热if(HT{JK1=1;}
if(DD1{JK1=0;}
if((SW01==1)&&(SW043==1)&&(SW021==1)&&(SW041==1))//0水位指示启动水泵加水
{led1=1;led2=1;led3=1;led4=1;JK2=0;}if((SW01==0)&&(SW043==1)&&(SW021==1)&&(SW041==1))//1/4水位指示{led1=0;led2=1;led3=1;led4=1;}if((SW01==0)&&(SW043==0)&&(SW021==1)&&(SW041==1))//1/2水位指示{led1=0;led2=0;led3=1;led4=1;}if((SW01==0)&&(SW043==0)&&(SW021==0)&&(SW041==1))//3/4水位指示{led1=0;led2=0;led3=0;led4=1;}if((SW01==0)&&(SW043==0)&&(SW021==0)&&(SW041==0))//如果水满了指示灯指示停止加水
{led1=0;led2=0;led3=0;led4=0;JK2=1;}
if(((SW01==1)&&(SW043==1)&&(SW021==1)&&(SW041==1))||(HT{speak=0;}
else{speak=1;}}
/**********主函数******************/
voidmain(){data_pro();while
(1)
{if(set_key==0)
{delay_1ms(5);
if(set_key==0)
{flog4=!
flog4;while(set_key==0);
}
}
if(flog4==1)
{if(add_key==0)
{delay_1ms(5);if(add_key==0)
{HT=HT+10;while(add_key==0);
if(HT>1250)
{HT=1250;}}}
if(cut_key==0)
{delay_1ms(5);if(cut_key==0){HT=HT-10;while(cut_key==0);
if(HT<=0){HT=0;}}}
data_pro();
display_set();}
else{pos_data();display();baojing();}}}
附录二