水箱水位单片机控制系统.docx
《水箱水位单片机控制系统.docx》由会员分享,可在线阅读,更多相关《水箱水位单片机控制系统.docx(24页珍藏版)》请在冰豆网上搜索。
水箱水位单片机控制系统
单片机课程设计
课程单片机课程设计
题目水箱水位控制系统设计
院系电气工程学院
专业班级09级自动化(3)班
学生姓名
学生学号
指导教师王晓燕
2011年12月25日
目录
课程设计任务书1
课程设计任务书1
摘要2
一8051单片机系统说明3
1.8051单片机简介3
2.时序4
3.引脚极其功能5
二直流电机驱动电路原理9
三水箱给水设备系统的构成13
三本系统8051单片机控制部分结构15
四本系统的工作原理16
五主程序框图17
1主程序框图18
2自动模式子程序:
19
3手动模式子程序:
20
六本系统程序清单21
七系统电路示意图24
八课程设计心得体会25
摘要
本单片机系统设计的目的是应用单片机控制技术,以8051单片机为核心控制
的水箱的水位,并实现了废水排放和进水手动、自动切换功能。
该系统操作方便、性能良好,比较符合电厂生产用水系统控制的需要。
本文还详
细的给出了相关的硬件框图和软件流程图,并编制了该C语言程序。
关键词:
单片机水位控制
1、设计任务:
(1)设计出能对水位进行实时显示的系统。
(2)可以键盘设定理想水位高度。
(3)当水位低于或高于设定水位5cm时,进行报警。
(4)其他功能。
2.实现方法
用单片机做水箱水位控制这个设计核心是传感器,将信号传送到单片机,单片机再将信号输出给电机,来完成设计的要求工作。
主要分三块:
单片机本身一块;传感器;电机控制一块。
2方案设计
当水箱水位低时,起动M1、M2给水,水位上升到90%,停M1。
当水箱水位低(小于50%)时,同时起动M1、M2,当水位上升到50%以上70%以下时,停M2,M1继续运行到水位上升到90%以上才停止工作。
经过调试系统,测得以下数据:
水位50%--70%,两台泵运行需要约10分钟;水位从70%--90%,一台泵运行需要约15分钟。
水箱的水位一般保持在70%--90%。
报警控制如下:
当水位高与90开度的时候,由传感器经变送器发送信号,LG闭合,系统水位高报警。
当水位低于75开度的时候,由传感器经变送器发送信号,LD闭合,系统水位低报警。
当水位低与50开度的时候,由传感器经变送器发送信号,LDD闭合,系统水位低低报警。
手动/自动模式转换控制如下:
全自动模式下,系统自动判断水位的状况,选择不同的工作状态。
在手动的模式下,两台给水泵的运行控制可由人工自己操作。
此方案设计我将采用AT89C51芯片。
AT89C51是美国ATMEL公司生产的低电压,高性能COMS8位单片机,片内含4Kbytes的可反复擦写的只读存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。
二、硬件设计
1、整体框图
2、具体设计
2.1、单片机的选择
2.1.18051单片机简介
目前,8051单片机在工业检测领域中得到了广泛的应用,因此我们可以在许多单片机应用领域中,配接各种类型的语音接口,构成具有合成语音输出能力的综合应用系统,以增强人机对话的功能。
89C51是Intel公司生产的一种单片机,在一小块芯片上集成了一个微型计算机的各个组成部分。
每一个单片机包括:
一个8位的微型处理器CPU;一个256K的片内数据存储器RAM;片内程序存储器ROM;四个8位并行的I/O接口P0-P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工UART的串行I/O口;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。
最高允许振荡频率是12MHZ。
以上各个部分通过内部总线相连接。
下面简单介绍下其各个部分的功能。
中央处理器CPU是单片微型计算机的指挥、执行中心,由它读人用户程序,并逐条执行指令,它是由8位算术/逻辑运算部件(简称ALu)、定时/控制部件,若干寄存器A、B、B5w、5P以及16位程序计数器(Pc)和数据指针寄存器(DM)等主要部件组成。
算术逻辑单元的硬件结构与典型微型机相似。
它具有对8位信息进行+、-、x、/四则运算和逻辑与、或、异或、取反、清“0”等运算,并具有判跳、转移、数据传送等功能,此外还提供存放中间结果及常用数据寄存器。
控制器部件是由指令寄存器、程序计数器Pc、定时与控制电路等组成的。
指令寄存器中存放指令代码。
枷执行指令时,从程序存储器中取来经译码器译码后,根据不同指令由定时与控制电路发出相应的控制信号,送到存储器、运算器或I/o接口电路,完成指令功能。
程序计数器Pc程序计数器Pc用来存放下一条将要执行的指令,共16位.可对以K字节的程序存储器直接寻址c指令执行结束后,Pc计数器自动增加,指向下一条要执行的指令地址。
CPU功能,总的来说是以不同的方式,执行各种指令。
不同的指令其功自略异。
有的指令涉及到枷各寄存器之间的关系;有的指令涉及到单片机核心电路内部各功能部件的关系;有的则与外部器件如外部程序存储器发生联系。
事实上,cRJ是通过复杂的时序电路完成不同的指令功能。
所谓cRJ的时序是指控制器控照指今功能发出一系列在时间上有一定次序的信号,控制和启动一部分逻辑电路,完成某种操作。
2.1.2时序
1.时钟电路M田—51片内设有一个由反向放大器所构成的振荡电路,XTALI和XTAL2分别为振荡电路的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
采用内部方式时,在C1和C2引脚上接石英晶体和微调电容可以构成振荡器,振荡频率的选择范围为1.2—12MHZ在使用外部时钟时,XTAL2用来输入外部时钟信号,而XTALI接地。
2.时序MGL5l单片机的一个执器周期由6个状态(s1—s6)组成,每个状态又持续2
个接荡周期,分为P1和P2两个节拍。
这样,一个机器周期由12个振荡周期组成。
若采用
12MHz的晶体振荡器,则每个机器周期为1us,每个状态周期为1/6us;在一数情况下,算术和逻辑操作发生在N期间,而内部寄存器到寄存器的传输发生在P2期间。
对于单周期指令,当指令操作码读人指令寄存器时,使从S1P2开始执行指令。
如果是双字节指令,则在同一机器周期的s4读人第二字节。
若为单字节指令,则在51期间仍进行读,但所读入的字节操作码被忽略,且程序计数据也不加1。
在加结束时完成指令操作。
多数Mcs—51指令周期为1—2个机器周期,只有乘法和除法指令需要两个以上机器周期的指令,它们需4个机器周期。
对于双字节单机器指令,通常是在一个机器周期内从程序存储器中读人两个字节,但Movx指令例外,Movx指令是访问外部数据存储器的单字节双机器周期指令,在执行Movx指令期间,外部数据存储器被访问且被选通时跳过两次取指操作。
下面是51单片机的振荡电路图:
2.1.3引脚极其功能
MCS—51系列单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。
下面按引脚功能分为4个部分叙述个引脚的功能。
1、电源引脚Vcc和Vss
Vcc(40脚):
接+5V电源正端;
Vss(20脚):
接+5V电源正端。
2、外接晶振引脚XTAL1和XTAL2
XTAL1(19脚):
接外部石英晶体的一端。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHOMS单片机,该引脚作为外部振荡信号的输入端。
XTAL2(18脚):
接外部晶体的另一端。
在单片机内部,接至片内振荡器的反相放大器的输出端。
当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。
对于CHMOS芯片,该引脚悬空不接。
3、控制信号或与其它电源复用引脚
控制信号或与其它电源复用引脚有RST/VPD、ALE/P、PSEN和EA/VPP等4种形式。
(A).RST/VPD(9脚):
RST即为RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端。
当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。
当VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD(+5V)为内部RAM供电,以保证RAM中的数据不丢失。
(B).ALE/P(30脚):
当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的低
(C).PSEN(29脚):
片外程序存储器读选通输出端,低电平有效。
当从外部程序存储器读取指令或常数期间,每个机器周期PESN两次有效,以通过数据总线口读回指令或常数。
当访问外部数据存储器期间,PESN信号将不出现。
(D).EA/Vpp(31脚):
EA为访问外部程序储器控制信号,低电平有效。
当EA端保持高
电平时,单片机访问片内程序存储器4KB(MS—52子系列为8KB)。
若超出该范围时,自动转去执行外部程序存储器的程序。
当EA端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。
对于片内含有EPROM的单片机,在EPROM编程期间,该引脚用于接21V的编程电源Vpp。
4.输入/输出(I/O)引脚P0口、P1口、P2口及P3口
(A).P0口(39脚~22脚):
P0.0~P0.7统称为P0口。
当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。
当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。
它分时提供8位双向数据总线。
对于片内含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节。
(B).P1口(1脚~8脚):
P1.0~P1.7统称为P1口,可作为准双向I/O接口使用。
对于MCS—52子系列单片机,P1.0和P1.1还有第2功能:
P1.0口用作定时器/计数器2的计数脉冲输入端T2;P1.1用作定时器/计数器2的外部控制端T2EX。
对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。
(C).P2口(21脚~28脚):
P2.0~P2.7统称为P2口,一般可作为准双向I/O接口。
当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。
对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。
(D).P3口(10脚~17脚):
P3.0~P3.7统称为P3口。
它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。
P3口的第2功能见下表
单片机P3.0管脚含义
引脚
第2功能
P3.0
RXD(串行口输入端0)
P3.1
TXD(串行口输出端)
P3.2
INT0(部中断0请求输入端,低电平有效)
P3.3
INT1(中断1请求输入端,低电平有效)
P3.4
T0(时器/计数器0计数脉冲端)
P3.5
T1(时器/计数器1数脉冲端)
P3.6
WR(部数据存储器写选通信号输出端,低电平有效)
P3.7
RD(部数据存储器读选通信号输出端,低电平有效)
综上所述,MCS—51系列单片机的引脚作用可归纳为以下两点:
1).单片机功能多,引脚数少,因而许多引脚具有第2功能;
2).单片机对外呈3总线形式,由P2、P0口组成16位地址总线;由P0口分时复用作为数据总线。
附:
89C51的管脚如图
2.2水温检测模块
2.2.1传感器的选择
传感器来自“感觉”一词。
人们用视觉、听觉、味觉、嗅觉和触觉等感官感受外界的有关信息,如物体的大小、形状和颜色,感觉到的声音、气味等。
在视觉情况下,绝不是靠眼睛本身进行感觉,而是从眼睛进入的外界刺激信号通过神
经传送到大脑,由大脑感知物体的大小和颜色,然后由大脑提供命令信号支配行动。
听觉和嗅觉等也完全一样。
然而要使大脑受到这些刺激,首先必须有接受外界刺激的“五官”人的“五官”可以称之为传感器。
它们的基本功能是首先接受外界的刺激信号然后产生作用于各种神经传送信号的能量,最后再传送到大脑。
在传感器的系统中,传感器模拟人“五官”的这些作用,将外界刺激信号转换为能传递的信号,即将特定的被测量(包括物理量、化学量、生物两等)按照
一定的规律转换成某种可用的输出信号。
在本设计方案中,提到浮球开关,经过我认真的挑选,我选了浮球开关。
如图2.1所示。
由于此传感器输出的是数字量所以就可以省下A/D转换器。
2.2.2放大器的选择
差分放大器也叫差动放大器是一种将两个输入端电压的差以一固定增益放大的电子放大器,有时简称为“差放”。
差分放大器通常被用作功率放大器(简称“功放”)和发射极耦合逻辑电路(ECL,EmitterCoupledLogic)的输入级。
如果Q1Q2的特性很相似,则Va,Vb将同样变化。
例如,Va变化+1V,Vb也变化+1V,因为输出电压VOUT=Va-Vb=0V,即Va的变化与Vb的变化相互抵消。
这就是差动放大器可以作直流信号放大的原因。
若差放的两个输入为
,则它的输出Vout为:
其中Ad是差模增益(differential-modegain),Ac是共模增益(common-modegain)。
因此为了提高信/噪比,应提高差动放大倍数,降低共模放大倍数。
二者之比称做共模仰制比(CMRR,common-moderejectionratio)。
共模放大倍数AC可用下式求出:
Ac=2Rl/2Re
通常以差模增益和共模增益的比值共模抑制比(CMRR,common-moderejectionratio)衡量差分放大器消除共模信号的能力:
由上式可知,当共模增益Ac→0时,CMRR→∞。
Re越大,Ac就越低,因此共模抑制比也就越大。
因此对于完全对称的差分放大器来说,其Ac=0,故输出电压可以表示为:
所谓共模放大倍数,就是Va,Vb输入相同信号时的放大倍数。
如果共模放大倍数为0,则输入噪声对输出没有影响。
要减小共模放大倍数,加大RE就行通常使用内阻大的恒流电路来带替RE差分放大器是普通的单端输入放大器的一种推广,只要将差放的一个输入端接地,即可得到单端输入的放大器。
很多系统在差分放大器的一个输入端输入反馈信号,另一个输入端输入反馈信号,从而实现负反馈。
常用于电机或者伺服电机控制,稳压电源,测量仪器以及信号放大。
在离散电子学中,实现差分放大器的一个常用手段是差动放大,见于多数运算放大器集成电路中的差分电路。
单端输出的差动放大电路(不平衡输出)
当Vo被在Q1或Q2的集极C对地取出时,称为单端Singleended或不平衡输出UnbalanceOutput。
单端较差动输出之幅度小一倍,使用单端输出时,共模讯号不能被抑制,因Vi1与Vi2同时增加,VC1与VC2则减少,而且VC1=VC2,但Vo=VC2,并非于零(产生零点漂移)。
但是加大RE阻值可以增大负回输而抑制输出,并且抑制共模讯号,因Vi1=Vi2时,Ii1及Ii2也同时增加,IE亦上升而令VE升高,这对Q1和Q2产生负回输,
令Q1和Q2之增益减少,即Vo减少。
当差动讯号输入时,Vi1=-Vi2,IC1增加而IC2减少,总电流IE=IC1+IC2便不变,因此VE也不变,加大RE电阻值之电路会将差动讯号放大,不会对Q1及Q2产生负回输及抑制。
使用恒流源的差动放大器
实际上,RE不能加得太大,因会使静态之IC1和IC2减少,使Q1和Q2得不到适当之偏压或需要很高之电源电压。
上图Q3及Q4为电流镜像恒流源代替电阻RE,使用恒流源可以得到高阻抗及固定电流,B极因R1和R2得到一个固定的偏压。
共模输入时,Vi1=Vi2,因IE为不变,IC1和IC2也不能改变,故Vo为零,而共模信号被抑制。
差动输入时,Vi1=-Vi2,虽然IE为不变,但IC1和IC2也可改变,因IC1上升而IC2下降,故此Vo不等于零,而将差动信号放大。
使用电流镜像作为差动放大器之有源负载:
主动式负载ActiveLoad(有源负载)作用:
a)提高增益:
。
b)减低功率消耗(相对纯电阻来说)。
c)提高差动放大之输出电压。
d)提高共模抑制比CMRR。
工作原理:
设Vi1增加,则Vi2减少(但数量相等,Vi1=Vi2)
即差动输入,则IC1升而IC2下降(并且,ΔIC1=ΔIC2)因电流镜像原理,IC4=IC1,故此,Io=IC4IC2=IC1IC2(ΔIo=2ΔIC1或2ΔIC2)
这说明了输出电流是IC1和IC2的相差,即将输出变为具有双端差动输出性能的单端输出(故对共模讯号之抑制有改善因双端差动输出才能产生消除共模讯号作用)。
IC2减少使Q2之VCE增加,使Vo上升而IC4增加,使Q4之VCE减少,这也是使Vo增加,故此,Vo上升之幅度是使用电阻为负载之单端输出电压大一倍。
2.3显示模块
2.3.1显示器件的选择
选择LED管如图
LED管原理图
2.3.2显示器件与单片机的连接
CD4511是一个用于驱动共阴极LED(数码管)显示器的BCD码—七段码译码器,特点:
具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。
可直接驱动LED显示器。
CD4511是一片CMOSBCD—锁存/7段译码/驱动器,引脚排列如图2所示。
其中abcd为BCD码输入,a为最低位。
LT为灯测试端,加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。
BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时,B1端应加高电平。
另外CD4511有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。
LE是锁存控制端,高电平时锁存,低电平时传输数据。
a~g是7段输出,可驱动共阴LED数码管。
另外,CD4511显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观图3是CD4511和CD4518配合而成一位计数显示电路,若要多位计数,只需将计数器级联,每级输出接一只CD4511和LED数码管即可。
所谓共阴LED数码管是指7段LED的阴极是连在一起的,在应用中应接地。
限流电阻要根据电源电压来选取,电源电压5V时可使用300Ω的限流电阻。
CD4511引脚图
利用CD4511将显示器件与单片机89C51连接起来,得图示如下:
2.4执行部分
当水箱水位低时,起动M1、M2给水,水位上升到90%,停M1。
当水箱水位低(小于50%)时,同时起动M1、M2,当水位上升到50%以上70%以下时,停M2,M1继续运行到水位上升到90%以上才停止工作。
经过调试系统,测得以下数据:
水位50%--70%,两台泵运行需要约10分钟;水位从70%--90%,一台泵运行需要约15分钟。
水箱的水位一般保持在70%--90%。
当水位高与90开度的时候,由传感器经变送器发送信号,LG闭合,系统水位高报警。
当水位低于75开度的时候,由传感器经变送器发送信号,LD闭合,系统水位低报警。
当水位低与50开度的时候,由传感器经变送器发送信号,LDD闭合,系统水位低低报警。
手动/自动模式转换控制如下:
全自动模式下,系统自动判断水位的状况,选择不同的工作状态。
在手动的模式下,两台给水泵的运行控制可由人工自己操作。
执行部分电路图:
2.5报警部分
报警部分电路图
当水位高与90开度的时候,由传感器经变送器发送信号,LG闭合,系统水位高报警,D6亮。
当水位低于75开度的时候,由传感器经变送器发送信号,LD闭合,系统水位低报警,D7亮。
当水位低与50开度的时候,由传感器经变送器发送信号,LDD闭合,系统水位低低报警,D8亮。
设计采用交流过零型固态继电器,它有电压过零时开启,负载电流过零时关断的特性。
它的最大接通、关断时间是半个电源周期,在负载上可得到一个完整的正弦波形。
它相应地减少了对负载的冲击,而在相应的控制回路中产生的射频
干扰也大大减少。
当控制端输入低电平时,SSR导通,控制电动机开始工作上水;当控制端输入高电平时,SSR截止,电动机停止工作并停止上水。
这样便可实现对水箱水位的控制。
其控制电路图如图2.6所示。
2.6信号从单片机输出,去控制电机的动作与报警系统
为避免电机的起停和电源波动时对电路的影响,输入输出均采用光电隔离。
输出通过继电器,控制水泵机组的起停和报警,其电路图下所示:
图2.7水泵机组起停与报警电路图
2.7按键部分
包括四个按键:
A、复位按键
B、功能切换键
C、加1键
D、减1键
三、软件设计
(一)主程序框图
(二)自动模式子程序:
(三)手动模式子程序:
四、系统调试
五、课程设计心得体会
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近两个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机C语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次的设计还有许多的不足点,希望通过以后不断地完善!
附件1本系统程序清单
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitk1=P3^0;//DD自动正转加水M1M2
sbitk2=P3^1;//手动反转抽水M1M2
sbitk3=P3^2;//GG自动停止M1M2
sbitk4=P3^3;//手动正转加水M1M2
sbitk5=P3^4;//手动停止
sbitk6=P3^5;//D自动正转加水M1
sbitLED1=P0^0;
sbitLED2=P0^1;
sbitLED3=P0^2;
sbitMA=P1^0;
sbitMB=P1^1;
sbitMC=P1^2;
sbitMD=P1^3;
voidmain(void)
{
LED1=1;LED2=1;LED3=0;
while
(1)
{
if(k1==0)
{
while(k1==0);
LED1=0;LED2=1;LED3=1;MA=0;MB=1;MC=0;MD=1;
}
if(k4==0)
{
while(k4==0);
LED1=0;LED2=1;LED3=1;MA