当前位置:文档之家› 液位监测系统

液位监测系统

题目:液位监测系统液位监测系统一、设计目的1. 采用单片机、ADC0809、压力变送器为主要器件,设计水深检测系统;2. 通过本次课程设计加深对单片机课程的全面认识和掌握,对单片机课程的应用进一步的了解;3. 掌握定时器、外部中断的设置和编程原理;4. 通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

二、设计要求1.压力变送器输出为4-20mA电流信号,通过转换电路把其转换为电压信号;2.处理模拟信号并显示其实际水的深度数值。

三、设计器材器件个数器件个数STC89C52 1 晶振(12M) 1ADC0809 1 22uf电容 1直流电机 1 1KΩ电阻 19012型三极管 4 10KΩ电阻 1开关 1 10Ω电阻 14位数码管 1 470Ω电阻 1底座 2 液位变送器 1四、设计方案及分析1. 单片机最小系统电路单片机最小系统电路如图1所示,由主控器STC89C52、时钟电路和复位电路三部分组成。

单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。

图1 单片机最小系统2. 时钟电路STC89C52 单片机芯片内部设有一个由反向放大器所构成的振荡器。

19脚(XTAL1)为振荡器反相放大器和内部时钟发生电路的输入端,18脚(XTAL2)为振荡器反相放大器的输出端。

在XTAL1和XTAL2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。

本系统采用的定时元器件为石英晶体(晶振)和电容组成的并联谐振回路。

晶振频率为12MHz,电容大小为33pF,时钟电路如图所示。

图2 时钟电路(晶振)3. 复位电路STC89C52的复位是由外部的复位电路来实现的,复位电路通常采用上电复位和按钮复位两种方式,本设计采用的是最按钮复位电路,其电路图如图所示。

图3 复位电路4.数码管显示电路LED又称为数码管,它主要由8段发光二极管组成的不同组合,可以显示a~g为数字和字符显示段,h段为小数点显示,通过a~g为7个发光段的不同组合,可以显示0~9和A~F共16个数字和字母。

LED可以分为共阴极和共阳极两种结构。

共阳极结构即把8个发光二极管阳极连在一起。

这种装入数码管中显示字形的数据称字形码,又称段选码。

本设计用到的是LED显示器静态显示方式,其电路如图所示是发光二极管显示器(LED)的结构、工作原理及接口电路。

图4 数码管电路五、问题分析与解决方法问题1.连接硬件电路时错将NPN三极管当作了PNP。

问题2. 数码管显示太亮。

问题3 刚连接好电路时数码管显示灯不亮,原因是接入的保护电阻本来是10Ω而我们接的是10KΩ的电阻,换了电阻后数码管就亮了。

六、设计结果1.方案图2.总体电路原理图3.软件流程图电机ADC0809 信 号转换L E D 显 示单片机处理水深变送器4.软件设计 #include <reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; uint8 a[5]; uint8 j=0; sbit eoc=P3^1; sbit oe=P3^0; sbit st=P3^2;开始数码管的初始化定时器,计数器中断初始化定时器定时500msY定时器0定时标志位清0 计数器1清0N继续等待定时计数数码管显示结束sbit ADDR0=P2^0;sbit ADDR1=P2^1;sbit ADDR2=P2^2;sbit ADDR3=P2^3;sbit clock=P2^4;bit flag=0;code uint8 table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void delay() //延时子函数{uint8 i,K;for(i=1;i>0;i--)for(K=10;K>0;K--);}void diplay(){switch(j){case 0:ADDR0=1;ADDR1=1;ADDR2=1;ADDR3=0;P0=table[a[0]];delay(); //显示第一位数码管break;case 1:ADDR0=1;ADDR1=1;ADDR2=0;ADDR3=1;j++; //显示第二位P0=table[a[1]];delay();break;case 2:ADDR0=1;ADDR1=0;ADDR2=1;ADDR3=1;j++;P0=table[a[2]];delay(); //显示第三位break;case 3:ADDR0=0;ADDR1=1;ADDR2=1;ADDR3=1;j++;P0=table[a[3]];delay(); //显示第四位break;ADDR0=0;ADDR1=0;ADDR2=0;ADDR3=0;j=0;P0=table[a[4]];delay(); //显示第四位break;default:break;}}void timer0() interrupt 1{flag=~flag;clock=flag;}main(){uint16 temp=P1;TMOD=0x02;TL0=0xFF;TH0=0xFF;TR0=1;EA=1;ET0=1;while(1){st=0; //给start一个上升沿脉冲,将内部所有寄存器清零st=1;st=0; //给start一个下降沿脉冲,开启AD转换while(!eoc) //转换结束标志oe=1; //允许输出转换后的数据temp=P1; //定义temp,用于表示从0809接收的数据oe=0;a[3]=temp/1000; //ADC来的数据的各个位a[2]=(temp/100)%10;a[1]=(temp/10)%10;a[0]=temp%10;diplay();}}七、设计体会与收获历经两个星期的单片机课程实习,我们对Keil软件,Proteus仿真软件更加熟练,对单片机的实际运用有了了解。

我们的课程设计题目是液位测量,需要利用C51,以及0809芯片等器件搭成仿真电路,通过改变电阻从而来改变液位,通过显示管显示出结果。

通过这次实习,我学到的不仅是那些知识,更多的是团队和合作。

现在想来,也许学校安排的课程设计有着它更深层的意义吧,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!自我感觉,实习之前我对单片机的实际运用掌握的远远不够,对相关的软件也不是很熟练,对这次的课程设计更是摸不着头脑,不知道从哪下手,软件编程只会写它的一部分,不能将整体连接起来,对于硬件仿真,我也是一头雾水,就这样,我一边学一边做,我们组的组员也都耐心的给我讲解,葛浩给我讲了软件的调试,以及这两个软件的运用,李国强给我分析了程序的功能,让我进一步对每条语句的功能有了更深的理解,在后期的硬件调试中,李欢给我说了我不懂的硬件问题,就这样,通过合作,通过学习,我又学到了很多东西。

在后期的焊板子的过程中,这项看起来不需要多少技术的工作却是非常需要耐心和精力在两个星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结。

作为一名自动化专业的学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。

在已度过的大学时间里,我们大多数接触的是专业课。

我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。

在做本次课程设计的过程中,我感触最深的当属查阅设计资料了。

为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。

其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:汇编语言、模拟和数字电路知识等。

虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

同时,课程实习中的提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。

通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。

每个小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的,在以后的学习工作中,我会积极锻炼自己的这种能力,让自己做的更好!通过这次课程设计,我不仅仅是在知识上有丰富的收获,在团队合作上有更大的丰富经验。

老师在我们团队分工上指出了很多。

在实验中参考了一些书籍,但是设计和实际有很大的差距。

最突出的是:设计好的电路,在模拟仿真中能够实现,但在连接实际电路中问题多多;就在四位七段数码管前接地时,我们通过计算估计出需要的电阻值(8.7——12.3)欧姆,后来也在模拟实验中也调试了,发现只有在这个区间,四位七段数码管才能正常工作。

还有在使用三级管上也有收获,三极管有 npn 和 pnp 两种之分,还有再放大功能上同类的不同型号的放大值不同,通过实验法测得只有型号为9012的三极管符合要求。

但是实际电路问题还有的,我用万用表测得有个功能管角也存在设置问题,后来查看程序发现初始化设置不完整,缺少高低电平的初始化。

经过我们反复检查模拟电路和程序已经能很好的运行,实际电路还是有误差,这可能是实际电路中有的电阻值过大或电路中功率过大导致的。

这次是课程设计我们从中的受益匪浅。

本次历经两周的课程设计,我们做的是液位检测系统的设计,其中包括相关资料的查找,资料的整理,然后是电路仿真,硬件电路的焊接,C51程序的编写,调试等,本次实验我主要负责硬件电路的焊接及写实验报告的工作,以前我对仿真软件protus不太熟悉,本次实验通过其他组员用该软件仿真我也对该软件的基本功能有了比较深得了解,在实验中也遇到许多问题,比如把保护电阻阻值接的太大导致数码管不亮,还有在连硬件电路时由于前几天做的比较慢所以连的比较粗心,错把NPN当作PNP连到了电路中导致显示结果与仿真结果不符合。

虽然最后还是没能达到和仿真结果一样的结果但在实验中我学会了解决基本问题的能力;做什么事都应该认真的去做,这是走向社会也很实用的东西。

通过这两个星期的课程设计,我们组主要做液位监测系统,我主要负责电路的设计、仿真、程序的调试。

在电路的仿真中我学会了protues 这个软件,它能仿真很多电路,只要能在它上面实现的电路,在实际电路中都能实现,只要哪里有错,我们直接在那上面改错既可以了,这样就节省了很多的器材。

相关主题