《电子系统设计(单片机)课程设计总结报告.docx》由会员分享,可在线阅读,更多相关《电子系统设计(单片机)课程设计总结报告.docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、电子系统设计(单片机)课程设计总结报告 电子系统设计(单片机)课程设计总结报告 题目 基于单片机的井水水温水位测量系统 院(系)名称:信息与通信工程学院 班级: 学生姓名: 学生学号: 指导教师: 2022年6月 一、研究意义和实现功能指标 (一)研究意义 二十一世纪是科技高速发展的信息时代,随着超大规模集成电路技术的发展而诞生的电子技术、信息技术、单片机技术的应用更是空前广泛。由于它具有体积小、功能强、性价比高等特点,因而单片机也得到了更加快速的发展和应用。 在现代的探井作业中,由于井筒容积大,井深等问题,很难快速获取井水的深度,同时测得准确的温度数据,也不能实时得到的问题,为了更快、更准确
2、的获得试油测试数据,我以8952单片机为检测控制核心,采用LED显示温度,设计了一种水温水位测量系统,实现了温度的实时显示,同时实现对水位的控制。本装置电路简单、实用性强、性价比高、水温控制灵活,水位显示直观醒目。可广泛应用于探井工作,具有良好的市场前景。 (二)实现功能目标 1、具有水温的测量及显示功能; 2、可以设定水温临界值,当水温高于设定值时,报警器会实现报警功能; 3、具有水位的测量功能,当处于低水位时,会启动继电器实现加水,当处于高水位时,继电器停止工作,即停止继续加水; 二、总体设计方案 水位由潜入储水容器不同深度的水位电极检测,当水位处于低水位时,会启动继电器工作,给容器加水,
3、当处于高水位时,继电器会停止工作,不再向容器内加水。水温由四个LED数码管显示,水温检测器由18B20组成。电路总共有四个按键,一个是复位键,一个是设置键,按下设置键说明处于水温设置状态,还有两个是加减键,用于设置水温临界值。 三、硬件实现 (一)总体电路图 (二)文字说明 温度显示模块由8550三极管,1k的电阻和数码管显示器组成,s1、s2、s3、s4位分别接到8952的P0口的33,35,36,37管脚。 温度测量模块由18B20和47k电阻组成,接到8952的P3.4。 液位上限传感器与下限传感器分别接到LM393的两个运放中,再连接到P1.0和P1.1,利用两个电位器来设定水位阈值。
4、当水位处于高水位时,两个水位电极都浸在水中,则两个运放正输入都大于负输入,运放输出都为高电平,此时继电器不工作。当水位处于低水位时,运放输出都为低电平,此时继电器工作,给容 器加水。 按键总共有四个。复位键连接到9管脚。设置键连接到P1.2,当按下设置键时,数码管显示器的第一位显示一杠,说明此时处于设置状态。加减键分别连接到P1.3和P1.4,用来设置温度临界值。 报警模块由蜂鸣器来完成,通过一个三极管和一个1k的电阻连接到P3.6,当实测温度大于临界值时,蜂鸣器报警。 四、软件实现 流程图: 水温测量系统 水位测量系统 程序 /*头文件*/ #include #include /*宏定义*/
5、 #define uint unsigned int #define uchar unsigned char /*位操作端口定义*/ sbit set_key=P12; /“设置”键K1 sbit add_key=P13; /“加”键K2 sbit cut_key=P14; / “减”键K3 sbit speak=P36; / 蜂鸣器 sbit JK=P37; / 继电器 sbit DQ1=P34; sbit qian_wei=P06; sbit bai_wei=P03; sbit shi_wei=P02; sbit ge_wei=P04; sbit SX=P10; /wei上限标志 sbit
6、 XX=P11; /wei下限标志 uchar bianma=0x05,0xdd,0x46,0x54,0x9c,0x34,0x24,0x5d,0x04,0x14,0xfe; uchar flog4; uint DD1; uchar T_data4=0,0,0,0; uchar Set_data3=0,0,0; uint HT=400; void delay_1ms(uchar i) uint x,y; for(x=i;x0;x-) for(y=124;y0;y-); void data_pro() Set_data0=HT/1000; Set_data1=(HT%1000)/100; Set_
7、data2=(HT%100)/10; /*延时子程序*/ void Delay_DS18B20(int num) while(num-) ; /*初始化DS18B20*/ void Init_DS18B20(void) uchar x=0; DQ1=1; /DQ复位 Delay_DS18B20(2); /稍做延时 DQ1=0; /单片机将DQ拉低 Delay_DS18B20(80); /精确延时,大于480us DQ1=1; /拉高总线 Delay_DS18B20(14); x=DQ1; /稍做延时后,如果x=0则初始化成功,x=1则初始化失败 Delay_DS18B20(20); /*读一个
8、字节*/ uchar ReadOneChar(void) uchar i=0; uchar dat=0; for(i=8;i0;i-) /串行接收数据 DQ1=0; / 给脉冲信号 dat=1; DQ1=1; / 给脉冲信号 if(DQ1) dat|=0x80; Delay_DS18B20(8); return(dat); /*写一个字节*/ void WriteOneChar(uchar dat) uchar i=0; for(i=8;i0;i-) DQ1=0; DQ1=dat&0x01; /写入最低位 Delay_DS18B20(10); DQ1=1; dat=1; /右移一位 /*读取温
9、度*/ uint ReadTemperature(void) uchar a=0; uchar b=0; uint t=0; float tt=0; Init_DS18B20(); /初始化DS18B20 WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0x44); /启动温度转换 Delay_DS18B20(20); Init_DS18B20(); /初始化DS18B20 WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器 a=ReadOneChar(); /读低8位 b=ReadOneChar(); /读高8位 t=b; t1250) 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(); 五、调试过程和设计效果 1.用水温传感器测量水温,测得此时的温度是37度。 2.将水温临界值设置在50度,此时实时温度低于临界值,报警器不工作。
限制150内