1、 目 录第1章 绪论11.1 8051单片机的简介11.2 主要功能特性21.3 时序21.4 引脚及其功能3第2章 内部单元62.1 运算器62.2 控制器72.2.1 复位电路72.3 600立方米水箱给水设备系统的构成92.3.1 本系统8051单片机控制部分结构102.3.2 本系统的工作原理11第3章 主程序框图123.1 主程序框图123.2 自动模式子程序123.3 手动模式子程序13第4章 本系统程序清单14第5章 模拟仿真图18第6章 结论19参考文献20 摘 要本单片机系统设计的目的是应用单片机控制技术,以8051单片机为核心控制某电厂的600立方米的水箱的水位,并实现了报
2、警和手动、自动切换功能。该系统操作方便、性能良好,比较符合电厂生产用水系统控制的需要。本文还详细的给出了相关的硬件框图和软件流程图,该系统主要由两台给水水泵组、水箱和三只浮球及有关开关器件组成,并编制了C语言程序,通过LED和有关的显示部件显示出来。关键词:单片机;水箱水位;控制;报警III第1章 绪论1.1 8051单片机的简介目前,8051单片机在工业检测领域中得到了广泛的应用,因此我们可以在许多单片机应用领域中,配接各种类型的语音接口,构成具有合成语音输出能力的综合应用系统,以增强人机对话的功能。89C51是Intel公司生产的一种单片机,在一小块芯片上集成了一个微型计算机的各个组成部分
3、。每一个单片机包括:一个8位的微型处理器CPU;一个256K的片内数据存储器RAM;片内程序存储器ROM;四个8位并行的I/O接口P0-P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工UART的串行I/O口;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是12MHZ。以上各个部分通过内部总线相连接。下面简单介绍下其各个部分的功能。中央处理器CPU是单片微型计算机的指挥、执行中心,由它读人用户程序,并逐条执行指令,它是由8位算术逻辑运算部件(简称ALu)、定时控制部件,若干寄存器A、B B5w、5P以及16位程序计数器(Pc
4、)和数据指针寄存器(DM)等主要部件组成。算术逻辑单元的硬件结构与典型微型机相似。它具有对8位信息进行+、-、x、/ 四则运算和逻辑与、或、异或、取反、清“0”等运算,并具有判跳、转移、数据传送等功能,此外还提供存放中间结果及常用数据寄存器。控制器部件是由指令寄存器、程序计数器Pc、定时与控制电路等组成的。指令寄存器中存放指令代码。枷执行指令时,从程序存储器中取来经译码器译码后,根据不同指令由定时与控制电路发出相应的控制信号,送到存储器、运算器或Io接口电路,完成指令功能。程序计数器Pc 程序计数器Pc用来存放下一条将要执行的指令,共16位可对以K字节的程序存储器直接寻址c指令执行结束后,Pc
5、计数器自动增加,指向下一条要执行的指令地址。 CPU功能,总的来说是以不同的方式,执行各种指令。不同的指令其功自略异。有的指令涉及到枷各寄存器之间的关系;有的指令涉及到单片机核心电路内部各功能部件的关系;有的则与外部器件如外部程序存储器发生联系。事实上,cRJ是通过复杂的时序电路完成不同的指令功能。所谓cRJ的时序是指控制器控照指今功能发出一系列在时间上有一定次序的信号,控制和启动一部分逻辑电路,完成某种操作。1.2 主要功能特性 表1.1 C51单片机的主要功能兼容MCS51指令系统 4k可反复擦写(1000次)Flash ROM 32个双向I/O口 可编程UARL通道 两个16位可编程定时
6、/计数器 全静态操作0-24MHz 1个串行中断 128x8bit内部RAM 两个外部中断源 共6个中断源 可直接驱动LED 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能1.3 时序 (1)时钟电路 M田51片内设有一个由反向放大器所构成的振荡电路,XTALI和XTAL2分别为振荡电路的输入端和输出端。时钟可以由内部方式产生或外部方式产生。采用内部方式时,在C1和C2引脚上接石英晶体和微调电容可以构成振荡器, 振荡频率的选择范围为1212MHZ在使用外部时钟时,XTAL2用来输入外部时钟信号,而XTALI接地。 (2)时序 MGL5l单片机的一个执器周期由6个状态(s1s6)组成,
7、每个状态又持续2个接荡周期,分为P1和P2两个节拍。这样,一个机器周期由12个振荡周期组成。若采用12MHz的晶体振荡器,则每个机器周期为1us,每个状态周期为16us;在一数情况下,算术和逻辑操作发生在N期间,而内部寄存器到寄存器的传输发生在P2期间。对于单周期指令,当指令操作码读人指令寄存器时,使从S1P2开始执行指令。如果是双字节指令,则在同一机器周期的s4读人第二字节。若为单字节指令,则在51期间仍进行读,但所读入的字节操作码被忽略,且程序计数据也不加1。在加结束时完成指令操作。多数Mcs51指令周期为12个机器周期,只有乘法和除法指令需要两个以上机器周期的指令,它们需4个机器周期。
8、对于双字节单机器指令,通常是在一个机器周期内从程序存储器中读人两个字节,但Movx指令例外,Movx指令是访问外部数据存储器的单字节双机器周期指令,在执行Movx指令期间,外部数据存储器被访问且被选通时跳过两次取指操作。下面是51单片机的振荡电路图:图1.1 振荡电路1.4 引脚及其功能MCS51系列单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。下面按引脚功能分为4个部分叙述个引脚的功能。电源引脚Vcc和VssVcc(40脚):接+5V电源正端;Vss(20脚):接+5V电源正端。外接晶振引脚XTAL1和XTAL2
9、XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHOMS单片机,该引脚作为外部振荡信号的输入端。XTAL2(18脚):接外部晶体的另一端。在单片机内部,接至片内振荡器的反相放大器的输出端。当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。对于CHMOS芯片,该引脚悬空不接。控制信号或与其它电源复用引脚 控制信号或与其它电源复用引脚有RST/VPD、ALE/P、PSEN和EA/VPP等4种形式。(A)RST/VPD(9脚):RST即为RESET,VPD为备用电源,所以该引
10、脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。当VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD(+5V)为内部RAM供电,以保证RAM中的数据不丢失。(B)ALE/ P (30脚):当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的低位。(C)PSEN(29脚):片外程序存储器读选通输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机器周期PESN两次有效,以通过数据总线口读回指令或常数。当访问外部数据存储器期间,PESN信
11、号将不出现。(D)EA/Vpp(31脚):EA为访问外部程序储器控制信号,低电平有效。当EA端保持高电平时,单片机访问片内程序存储器4KB(MS52子系列为8KB)。若超出该范围时,自动转去执行外部程序存储器的程序。当EA端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。对于片内含有EPROM的单片机,在EPROM编程期间,该引脚用于接21V的编程电源Vpp。4.输入/输出(I/O)引脚P0口、P1口、P2口及P3口.P0口(39脚22脚):P0.0P0.7统称为P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展I/O口时,
12、P0口为地址/数据分时复用口。它分时提供8位双向数据总线。对于片内含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节。.P1口(1脚8脚):P1.0P1.7统称为P1口,可作为准双向I/O接口使用。对于MCS52子系列单片机,P1.0和P1.1还有第2功能:P1.0口用作定时器/计数器2的计数脉冲输入端T2;P1.1用作定时器/计数器2的外部控制端T2EX。对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。.P2口(21脚28脚):P2.0P2.7统称为P2口,一般可作为准双向I/O接口。当接有外部程序存储器或扩展I/O接口且寻址范围
13、超过256个字节时,P2口用于高8位地址总线送出高8位地址。对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。.P3口(10脚17脚):P3.0P3.7统称为P3口。它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。P3口的第2功能见下表。 表1.2 p3.0口- p3.7口的具体的功能引脚第2功能P3.0RXD(串行口输入端0)P3.1TXD(串行口输出端)P3.2INT0(部中断0请求输入端,低电平有效)P3.3INT1(中断1请求输入端,低电平有效)P3.4T0(时器/计数器0计数脉冲端
14、)P3.5T1(时器/计数器1数脉冲端)P3.6WR(部数据存储器写选通信号输出端,低电平有效)P3.7RD(部数据存储器读选通信号输出端,低电平有效)综上所述,MCS51系列单片机的引脚作用可归纳为以下两点:.单片机功能多,引脚数少,因而许多引脚具有第2功能;.单片机对外呈3总线形式,由P2、P0口组成16位地址总线;由P0口分时复用作为数据总线。图1.2 89C51的引脚图第2章 内部单元2.1 运算器i) 算术逻辑部件ALU:用以完成+、-、*、/ 的算术运算及布尔代数的逻辑运算,并通过运算结果影响程序状态寄存器PSW的某些位,从而为判断、转移、十进制修正和出错等提供依据。ii) 累加器
15、A:在算术逻辑运算中存放一个操作数或结果,在与外部存储器和I/O。接口打交道时,进行数据传送都要经过A来完成。iii) 寄存器B:在 *、/ 运算中要使用寄存器B 。乘法时,B用来存放乘数以及积的高字节;除法时,B用来存放除数及余数。不作乘除时,B可作通用寄存器使用。iv) 程序状态标志寄存器PSW:用来存放当前指令执行后操作结果的某些特征,以便为下一条指令的执行提供依据。【PSW】 (D0H) D7 D6 D5 D4 D3 D2 D1 D0 Cy AC F0 RS1 RS0 OV PCy:进位标志。有进位或借位,则Cy1,否则Cy0 ;在布尔运算时,Cy(简称C)作为布尔处理器。AC:辅助进
16、位标志位。F0:用户标志位:用户可用软件对F0置位“1”或清“0”,以决定程序的流向。OV:溢出标志位:当运算结果溢出时,OV为“1”,否则为“0”。D.1:未定义。P: 奇偶校验位:当累加器A中的“1”的个数为奇数时,P置“1”,否则P置“0”。RS1、RS0:工作寄存区选择位: 【片内工作寄存器组】RS1、RS0与片内工作寄存器组的对应关系 RS1 RS0 寄存器区 片内RAM地址 通用寄存器名称 0 0 0 00H07H R0R7 0 1 1 08H0FH R0R7 1 0 2 10H17H R0R7 1 1 3 18H1FH R0R72.2 控制器1、指令寄存器IR和指令译码器。2、程
17、序计数器:存放CPU执行下一条指令的地址。是一个16位寄存器,可寻址64KB。 3、堆栈指针SP:用于子程序调用和中断处理。【机器复位后,SP#07H ,因此压栈的第一个数据在08H单元中。 4、数据指针寄存器DPTR:16位的寄存器,也可以作为两个8位寄存器DPH和DPL, DPTR主要作外部数据指针,可对64KB外部RAM进行间接寻址。MCS-51由包括PC在内的22个特殊功能寄存器,它们除有各自的名称外,还有唯一的地址离散的分布在片内RAM中的80HFFH共128个存储单元中。在这128个储存单元构成的电SFR块中,未被占用的单元不可使用!输出型双向I/O端口。作为输出型双向I/O端口。
18、作为输出 P0口:是一个8位漏极开路端口时,每位能以吸收流的方式驱动8 个TTL输入,对端口写1时,又可作高阻抗输入端用。 在访外部程序或数据存储器时,它是时分多路转换的地址(低8位)。 在稳定的状态条件下Io 低被外部限制如下1、每个管脚的最大IOL 15mA 注85 规格2、每个8 位口的最大IOL 26 mA3、IOL 输出最大总和 71mA4、如果IOL 超过测试条件VOL 可能会超过相应规格不能保证超过测试电流2.2.1 复位电路 图2.1上电复位图 图2.2手动复位图89C51单片机是在一块芯片中集成了CPU,RAM,ROM,定时器/计数器和多种功能的I/O线等一台计算机所需要的基
19、本功能部件。89C51单片机内包含下列几个部件:(一) 一个8位CPU;(二) 一个片内振荡器及时钟电路;(三) 4K字节的ROM程序存储器;(四) 128字节RAM数据存储器;(五) 两个16位定时器/计数器;(六) 可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;(七) 32位可编程的I/O线(四个8位并行I/O端口);(八) 一个可编程全双工串行口;(九) 具有五个中断源,两个优先级嵌套中断结构;89C51单片机框图如下所示。各功能部件内部总线连接在一起。图2.3 89C51的内部总线图2.4 89C51的内部存储器2.3 600立方米水箱给水设备系统的构成600立方米由
20、两台给水泵机组、水箱和三只浮球开关组成,其系统结构如图:图2.5 系统结构图其中M1、M2为给水泵机组,LG、LD、LDD分别为水位高、水位低、水位低低浮球开关,当水位高(大于90开度)时,LG闭合,当水位低(小于75开度)时,LD闭合,当水位低低(小于50开度)时,LDD闭合。 600立方米水箱的控制器由8051系统构成。为避免电机的起停和电源波动时对电路的影响,输入输出均采用光电隔离。输出通过继电器,控制水泵机组的起停和报警,其电路图如下:图2.6 控制电路图给水泵电机主控回路图如下:图2.7 主控回路图2.3.1 本系统8051单片机控制部分结构本系统采用8051单片机,引脚具体控制如下
21、:P1口和P3口为输入输出检测信号和控制信号。下面是8051芯片引脚具体分配:P1.0:水位低低输入信号。(低0 高1)P1.1:水位低输入信号。(低0 高1)P1.2:水位高输入信号。(低0,高1)P1.3:手动与自动转换输入信号。(手动1,自动0)P1.4:M1起动KM1控制输出信号。(手动1,自动0)P1.5:M2起动KM1控制输出信号。(手动1,自动0)P1.6:M1开关状态输入信号。(开0,关1)P1.7:M2开关状态输入信号。(开0,关1)P3.0:水位低低报警输出信号。P3.1:水位低报警输出信号。P3.2:水位高报警输出信号。P3.4:手动起动M1输入信号,低电平有效动作。P3
22、.5:手动起动M2输入信号,低电平有效动作。P3.6:手动停M1输入信号,低电平有效动作。P3.7:手动停M2输入信号,低电平有效动作。2.3.2 本系统的工作原理当水箱水位低时,起动M1、M2给水,水位上升到90%,停M1。当水箱水位低低(小于50%)时,同时起动M1、M2,当水位上升到50%以上70%以下时,停M2,M1继续运行到水位上升到90%以上才停止工作。经过调试系统,测得以下数据:水位从50%-70%,两台泵运行需要约10分钟;水位从70%-90%,一台泵运行需要约15分钟。水箱的水位一般保持在70%-90%。报警控制如下:当水位高与90开度的时候,由传感器经变送器发送信号,LG闭
23、合,系统水位高报警。当水位低于75开度的时候,由传感器经变送器发送信号,LD闭合,系统水位低报警。当水位低与50开度的时候,由传感器经变送器发送信号,LDD闭合,系统水位低低报警。手动/自动模式转换控制如下:全自动模式下,系统自动判断水位的状况,选择不同的工作状态。在手动的模式下,两台给水泵的运行控制可由人工自己操作。第3章 主程序框图3.1 主程序框图图3.1 主程序框图3.2 自动模式子程序图3.2 自动模式子程序图3.3 手动模式子程序图3.3 手动模式子程序图第4章 本系统程序清单#include #define uchar unsigned char#define uint unsi
24、gned int/自动控制程序void autoplay(void) if(P1_0P1_1)=1) /低低水位处理数码显示“L”2个led都亮 P1_6=0;P1_7=0;P1_4=0;P1_5=0;P0=0xc7; if(P1_1P1_2)=1) /低水位处理数码显示“L”1个led亮 TR0=0;P1_6=0;P1_7=1;P1_4=0;P1_5=1; P0=0xc7; if(P1_2=0) /高水位处理数码显示“H”2个led闪烁 P1_6=1;P1_7=1;P1_4=1;P1_5=1; P0=0x89; TR0=1; if(P1_0&P1_1&P1_2) /其它情况处理数码显示“”
25、TR0=0; P1_6=1;P1_7=1;P1_4=1;P1_5=1;P0=0xff; /手动控制程序void play(void)P1_4=1;P1_5=1; if(P1_0P1_1)=1) /低低水位处理数码显示“L”2个led都亮 P1_6=0;P1_7=0;P0=0xc7; if(P1_1P1_2)=1); /低水位处理数码显示“L”1个led亮 TR0=0;P1_6=0;P1_7=1; P0=0xc7; if(P1_2=0) /高水位处理数码显示“H”2个led闪烁 P1_6=1;P1_7=1; P0=0x89; TR0=1; if(P1_0&P1_1&P1_2) /其它状态处理数码
26、显示“” TR0=0; P1_6=1;P1_7=1;P0=0xff; /LED灯闪烁程序void t0(void) interrupt 1 using 1 P1_6=P1_7; P1_7=P1_6;/主程序 void main(void) P1=0xff; /初始化 P3=0xff;TCON=0x02;TH0=(256-50)/256;TL0=(256-50)%256;TR0=0;EA=1;ET0=1; while(1) if(P1_3=1) autoplay(); else play(); 第5章 模拟仿真图图5.1 模拟仿真图第6章 结论开始我就一直遇到大大小小的问题刚开始,不知道该怎么入
27、手,特别是在硬件方面,很多都是空白的,不懂,上网去找资料,东西很多很多,但是我能用的少的可怜,几乎没有。就拿传感器来说吧,它种类很多,就单单检测水位的就有好多种,网站里对一种传感器介绍的质料又少,很难选择。最后我选择了浮球开关。还有一个在做设计里最难的一个问题。那就是弱电与强电之间的问题,单片机出来的是5V 电,起控制作用,而要起动电机的运行需要大电压220V 或380V,这中间又怎么把它联系在一起呢?我思考了很久,最后我找到了SSR 继电器,它解决了我的难题。从这件事上让我懂得如果一件事如果行不通,就应该想想,是不是可以转个弯,通过中介把事情给解决,毕业论文范文网给了我很大的帮助。在经过我不
28、懈的努力下,我的毕业论文范文终于出来了,很开心,收获也很多。参考文献1 康华光主编. 电子技术基础 模拟部分M(第四版). 北京: 高等教育出版社.1999.2 高吉祥. 模拟电子线路设计M. 北京:电子工业出版社2007.3 谢自美电子线路综合设计M. 武汉:华中科技大学出版社.2005.4 高吉祥. 电子仪器仪表设计M. 北京:电子工业出版社2007.5 胡乾斌, 李光斌等. 单片微型计算机原理与应用M(第二版). 武汉:华中科技大学出 版社, 2005.6 周立功, 夏宇闻. 单片机与CPLD综合应用技术M. 北京:北京航空航天大学出版社.2003.7 夏路易, 石宗义. 电路原理图与电
29、路板设计教程Protel 99SEM. 北京:北京希望电子出版社.2002.8 谢自美. 电子线路设计.实验.测试M(第二版). 武汉: 华中科技大学出版社.9 王毓银. 数字电路逻辑设计J. 高等教育出版社, 2006 年.10 康华光主编. 电子技术基础 数字部分M(第四版). 北京: 高等教育出版社.1999. 11 姚艳南, 薛钧义等主编. 微型计算原理M(第四版) .西安电子科技大学出版社.2006.12 陈明荧编著. PLC课程设计实训教材 M(第二版). 北京:清华大学出版社, 2007年8月.13 李科杰等编著.现代传感技术M.北京:电子工业出版社.2005.14 刘强,郭文. MAXIM热门集成电路使用手册M.北京:人民邮电出版社,1997.982122.15郭勇,肖明清.DDS 芯片AT89C51 及其应用J.电子技术2001年第2 期20