摘要
随着科技的逐渐发展,智能化设备也在逐步走进人们的生活之中。通过单片机实现智能设备的驱动,通过单片机技术实现一些智能化的服务。单片机通过执行程序实现了数据的采集、数据的运算、与数据的处理实现智能化服务。
本次设计采用单片机作为整体设备的核心控制,通过单片机输入、输出、控制来完成本次液位检测系统的设计。通过绘制整体框图实现整体的架构,包括了采集传感器、单片机控制器、输出控制端,实现整体的方案设计。通过电路图绘制软件完成整体电路的原理设计,通过编程软件采用C语言实现单片机的程序编写。本次设计采用STC89C52作为核心控制器单片机负责整体的核心运算。通过按键实现人机交互与信息的输入,通过LCD1602显示实现设备整体运行状态的观察。本次设计通过蜂鸣器实现报警,通过继电器控制外围设备工作实现水位控制,采用超声波测量液位。通过绘制整体框图实现整体的架构,包括了采集传感器、单片机控制器、输出控制端,实现整体的方案设计。通过电路图绘制软件完成整体电路的原理设计,通过编程软件采用C语言实现单片机的程序编写。
关键词:单片机,液位,控制,报警
第1章 绪论
1.1研究背景与意义
近年来,随着电子技术和信号处理技术的迅速发展,液位测量仪表中的测量技术也发展很快,经历了由机械式向机电一体化再到自动化的发展过程。结合这两大技术,尤其是将微处理器引进液位测量系统以后,使得液位计的精度越来越高,越来越向智能化、一体化、小型化的方向发展。从上世纪八十年代开始,一些发达国家就借助微电子、计算机、光纤、超声波、传感器等高科技的研究成果,将各种新技术、新方法应用到储罐液位测量领域。电子式测量方法便是其中的重要成果之一。在电子式液位测量方法中,有许多新的测量原理,包括压电式、应变式、雷达式、超声波式、浮球式、电容式、磁致伸缩式、伺服式、混合式等二十多种测量技术。由于该方法测量精度高,可靠性强,持续时间长,安装维护简单,因而正在逐步取代旧的机械式液位测量方法。用于储罐液位测量的众多电子式技术中,压电式、超声波式、应变式、浮球式、电容式五种测量技术用最为广泛,约占总数的 60%以上。其中,超声波式测量技术的应用份额最大。
超声波液位测量有很多优点:它不仅能够定点和连续检测液位,而且能够方便地提供遥控或遥控所需的信号。与放射性技术相比,超声技术不需要防护。与目前的激光测量液位技术相比,超声方法比较简单而且价格较低。一般说来,超声波测位技术不需要有运动的部件,所以在安装和维护上有很大的优越性。特别是超声测位技术可以选用气体、液体或固体来作为传声媒质,因而有较大的适应性。所以在测量要求比较特殊,一般液位测量技术无法采用目前我国水文自动测报系统建设的三个阶段:初级阶段、发展阶段以及网络化阶段。上一世纪七十年代中期开始到八十年代中期为初级阶段。八十年代中后期开始的十余年为(小流域)水文自动测试系统建设的发展期。九十年代后期为适应防汛和水利调度现代化、信息化的要求,以及近代通信、嵌入式、计算机和网络技术高速发展的时代特点,水文自动测试系统的建设进入了网络化阶段。
近三十年的发展历史,液位自动测报系统的建设和技术有了巨大的进步。在不同的历史时期,所建系统快速采集的数据,为防汛和水利调度的决策提供了依据和参考,发挥了相当大的社会经济效益。不少系统除常规水雨情信息外,闸门开度、大坝渗压渗流、灌区水位流量、土壤墒情、风向风速、温度湿度、地下水位乃至在线水质监视参数陆续纳入遥测系统,使遥测系统的功能大为扩展,从而可为防汛、水利调度、水环境管理等各应用服务提供了更多的实时数据。现在用于自动化监测的水位传感器主要有浮子式水位计、压力式水位计、电子水尺和超声波水位计等。
1.3论文研究内容
本次设计一套基于单片机的液位检测系统,本次设计主要包括了六部分的主要设计,第一部分主要是介绍本次设计的背景及意义,从而引申出本次设计的系统主题;第二部分为本次设计则整体方案设计思路与整体的框图设
计,完成整个系统的总体构思;第三部分进行系统的硬件设计,包括了单片机最小系统的设计,采集电路设计,输出与控制电路设计;第四部分完成单片机的程序设计,实现软件的逻辑控制功能;第五部分实本次设计项目的整体测试,主要是测试软件与硬件设计是否符合预期,最后第六部分实现整体的总结。
第2章 系统的整体方案设计
2.1系统设计总体思路
本次设计的基于单片机的液位检测,主要是实现项目的硬件整体设计与原理图的绘制,实现软件的程序编写,本次项目设计采用C语言进行整体程序的编写设计。
硬件的绘制与设计:根据基于单片机的液位检测,首先确定硬件的选择,然后选择控制器选择单片机完成单片机最小系统的整体设计,然后设计外围辅助电路,根据设计功能实现整体电路的设计,然后绘制出整体电路图。电路通过模块化的绘制,从一个传感器到一个功能模块的设计。然后将外围辅助电路与单片机最小系统电路进行连接,通过单片机实现资源的分配与整合,最后完成整体电路的设计。通过查找元器件的应用手册进行器件的选择与购买,然后通过焊接实现设备的硬件组装,完成整个系统的硬件搭建设计。
C语言程序设计思路:设备需要软硬件协调才可以实现整体的功能,本次设计采用C语言来进行驱动设计。安装完成编译软件实现对各个功能模块的程序编写;先设计出程序整体框架,然后分别设计每个功能模块的C语言驱动代码,然后完成主函数的调用。遵从主程序、功能模块化程序、总体调用程序的整体设计思路。根据各个功能模块的子程序方便调用有利于完成整体的程序设计。通过各个模块化程序与主程序的依次调用完成系统的目标设计功能。
系统功能测试:在完成硬件与软件的基础上进行整体目标功能的测试,硬件主要是注意连接电路的正确性,在确保电路的正确之后用仪器进行测试,避免电路短路。然后分别测试各个外围辅助电路与程序设计的功能是否可以完美配合,最后进行整体测试,是否可以实现目标的功能。通过测试与改进实现整体目标的完成,实现各个功能的正确运行与配合完成整个项目的设计。
2.2设备总体框图
本次设计的基于单片机的液位检测,主要包括了单片机最小系统,输入输出电路等模块,通过单片机进行数据
的采集与处理完成整个项目的功能运行。单片机主要负责数据运算,通过采集外围搭建的电路实现信号的采集通过
控制IO引脚实现对外围控制的输出。整体的设备框图如图2.1所示;
图2.1 系统整体框图
单片机最小系统:主要由晶振电路与复位电路组成;主要负责外围数据的采集与数据运算,最后进行数据输出与逻辑控制功能;按键电路:按键电路由按键组成;主要功能实现信息的输入,通过按键实现与设备的控制交互;
显示模块:实现数据的显示,单片机通过显示程序驱动显示屏显示数据,从而让系统的运行状态清晰可见,方便进行观察;报警模块:通过驱动报警装置,当遇到限值超标情况实现报警方便人员快处理突发状况;
超声波液位状态检测模块:通过外围辅助传感器检测状态,单片机获取状态进行相应的逻辑处理与运算:
继电器输出模块:单片机通过采集的状态判断输出指示,通过控制输出状态与外围辅助电路实现输出的状态与输出控制功能;
2.3主要元器件选择
2.3.1单片机的选择
51内核单片机:以51为核心的单片机系统主要是8位单片机,比较具有代表意义的是国产的STC系列单片机,比较常用的型号是STC89C51、STC89C52单片机两种。单片机在程序的编写上可以作为通用,无较大差别。STC系列的单
片机使用是相对简单的,并且初入都采用此单片机作为入门选择。器件手册相对简单明了,网上资源也是非常多可以做到快速的使用。STC系列单片机使用非常的方便,主要体现在下载程序的便利,单片机的UART接口可以直接实现程序的载入。不必使用特定的烧写器,这样大大的减少了开发的难度,可以做到快速的调试、测试。只需要按照资料搭建好最小系统电路与外围辅助电路就可以构成项目系统,进行调试与测试。
STM32单片机:STM32单片机的厂家是国外芯片厂商生产的。此单片机采用的ARM进行架构,是一个32位的单片机。STM32单片机相对STC系列单片机来说相对复杂,参考器件开发手册可以看到驱动与使用相对较难,但是网上的资料与案例也比较多,具有参考意义。STM32单片机的开发可以直接使用底层寄存器进行开发也可以通过操作相应的库函数进行开发,可以根据项目的需求来进行具体的选择。STM32资源相对来说比较丰富,根据不同的开发功能可以选择对应的型号,具体的需要以实际项目为准则进行单片机的具体确定。
树莓派:树莓派是一个小型的微电脑,外加显示屏与键盘可以作为一个低配置的小型电脑应用。除此之外还可以作为单片机使用,具有扩展出的IO管脚供项目使用。树莓派可以采用C语言进行编程、也可以采用Python语言进行程序的编写。树莓派主要的优点体现为网络服务,可以作为小型的网络服务器,具有非常大的优势。树莓派的功能与性价比相对于电脑是非常的具有优势的,但是对单片机来说体现的就不明显;树莓派必须具有CPU、存储等所以在成本应用中单片机就更加的具有性价比。
本次基于单片机的液位检测经过综合的考虑与功能选择,采用STC89C52作为系统的控制器。完成单片机最小系统核心搭建实现项目数据的采集、处理、输出等相应的功能。
2.3.2显示电路的选择
OLED显示:OLED显示是一种字体自发光的一种显示屏,不需要进行额外的背光进行显示。由于这种优点OLED可
以做的非常的轻薄,OLED具有显示清晰,刷新速度快的优点。OLED的内部显示主要是由于电子的电场作用来产生的
,OLED的字符会发生光线,非常的容易看清显示的具体内容。由于OLED属于液显示所以不适合在低温状态下长期运
行,显示的内容相对自由可以通过点阵进行字符显示,在一些小型设备应用中比较常见。
LCD1602显示:显示屏是设备与人交互的重要设备,实现人机交互系统。LCD1602是162显示通过屏幕中的“.”来构成每一个字符。可以通过字库进行任意字符的显示。LCD1602具有两种的驱动方式,串行驱动与并行驱动。LCD1602并行刷新速度非常快,可以快速的显示系统的数据信息。在一些要求不是非常严苛的场合LCD1602显示屏是一种很好的选择,但是在室外冬天时候会受到损坏不可以进行使用。LCD1602显示相对来说价格非常的具有优势,性价比很高,并且在显示上也行对美观。
LCD12864显示:LCD12864是一种显示相对较大的液晶显示屏,具有英文显示和汉字字库两种型号。英文显示能显示字符,具有字库的可以实现汉字的显示。显示屏幕可以实现164显示,根据不同的“.”实现不同的显示内容。LCD12864比LCD1602显示内容更加丰富,可以看成是LCD1602的升级或者扩大版本。比较适合应用在相对大型设备与需要汉字显示的项目中使用。LCD12864的价格性对来说也比LCD1602的更加贵,开发时候根据项目进行选择既可
本次基于单片机的液位检测经过综合考虑采用LCD1602作为显示屏实现人家交互界面比较合适,可以实现系统的数据观察与数据显示的功能。
2.3.3电源的选择
直流电源供电:设备电源为直流供电,只需要转化为5V直流电源可以实现为系统提供正常的供电电源。采用USB接口进行设备供电,可以通过220V适配器直接输出5V,通过手机充电或者USB电脑进行供电。USB电源直接输出了稳定文波比较小的优质电源。通过处理滤波实现了5V直流电压供电的转化。USB设备输出的电压稳定,只需要满足量程以内的设备都可以进行正常的供电。USB供电的优点在于设备电压小,供电安全,对于人接触具有安全保障。
交流电源供电:电源设计比较复杂,可以说可以单独的设立一个学科与项目。要设计一个成熟稳定的电源需要时间的验证。通常220V交流经过整流、降压、稳压的过程来实现交流到直流的转变。电源的设计要考虑到很多因素,包括了稳定、文波、抗干扰、滤波、整流。如果较高场合还需要考虑到雷击、浪涌等一些实现,相对来说交流转直流的设计比较复杂,并不是短时间就可以做成一款稳定的电源供电系统。最常见的交流转直流的做法是通过220V交流电经过变压器实现变压,然后通过整流桥实现交流到直流的变换,最后通过稳压芯片如7805系列实现5V稳压输出,然后通过电容实现滤波,最后输出5V直流电压为设备系统供电。设计交流电由于电压较高所以存在一定的危险性,电压太高对主板设计要求也较高,否则容易烧毁设备。
本次基于单片机的液位检测经过综合考虑采用USB直流电源进行供电,可以保证设备稳定、高效、安全的运行,为系统提供稳定的优质供电。
2.3.4按键的选择
独立按键:独立按键是单独一个按键连接到单独的单片机IO引脚,采用多少个独立按键就需要占用多少单片机的IO管脚。独立按键电路简单,通过单片机检测按键的状态就可以实现人机的交互,当按键按下与抬起的电平变化判断出按键的动作实现检测。独立按键设计简单程序简单,在8个按键以下都是比较适合的。独立按键具有使用灵活、程序设计简单、成本低、操作简单的优点。
矩阵按键:矩阵按键比较常见的是4*4矩阵按键,具有16个按键系统,比较常见具有密码设置等复杂的人机交互之中。矩阵按键需要8个单片机的IO管脚,具有4行4列的排布。通过行与列不间断的扫描可以实现每一个坐标点的获取,通过获取每一个按键的坐标点来实现判断按键按下的状态。相对来说矩阵按键的检测较慢,每一次按下相对于检测16次独立按键,矩阵按键的结构比独立按键也复杂一些,但是独立按键具有按键数量多,占用单片机资源少的优点,在复杂系统就显得尤为可贵。本次基于单片机的液位检测经过综合考虑,采用独立/矩阵按键进行系统的输入,实现控制。
2.4 本章小结
本章主要介绍了设备设计的整体思路,明确了设备设计的步骤,从方案确定到硬件电路的设计,再到软件的程序编写,最后完成测试完成整个系统的正常运行。通过设备的整体框图明确设备所具有的各个功能,并对功能做出大致介绍为后期大小基础,同时明确各个模块的器件选择从而为第三章的硬件电路设计提供基础。
第3章系统硬件设计
3.1单片机电路设计
3.1.1 单片机简介
世界上最早出现的单片机是以单板机形式出现的,开始发展阶段结构比较庞大,主要是由模拟电路搭建出来。随着科技的逐渐进步,晶体管技术发展得到了进步,单片机在晶体管的发展基础上逐渐取得了突破,将体积缩小融合到一块芯片之中,单片机从此以芯片形式出现。单片机的构成主要是由硅晶圆构成,数以万计的晶体管实现单片机的逻辑控制功能。单片机将晶体管通过工艺将各种与非门按照特定的规则排列最后封装实现了单片机芯片的制作。单片机的形状不同,但是总结起来都有一样的特征,每一个单片机都具有引出的IO管脚,根据单片机的不同IO引脚的功能也不禁相同。通过控制单片机的内部寄存器可以实现不同引脚的功能,包括了UART、IIC、SPI、输入、输出等引脚功能。在使用单片机根据不同的单片机手册查看寄存器可以实现对单片机引脚的控制,单片机通过外围辅助电路可以检测引脚的电平状态,通过电平状态判断外部器件实现输入状态的检测,实现控制或者设置等功能。总体来说对于单片机的实质操作就是改变引脚电平的状态或者检测引脚的电平状态,一共只具有两种状态‘0’或者‘1’即低电平或者高电平两种状态。
操作一款单片机首先对单片机的引脚进行掌握,本次设计使用的STC89C52单片机一共具有40个引脚。STC89C52
单片机的40个引脚包括了32个通用IO管脚,电源供电引脚VCC,电源地GND引脚,REST复位引脚,这些是比较常用的引脚。其中32个通用IO管脚包括了P0端口、P1端口、P2端口、P3端口,每一个端口具有8个引脚。单片机的引脚如图3.1所示;
图3.1 STC89S52电路图
P0端口:P0端口是8个普通端口,从P0.0到P0.7引脚,每一个引脚既可以作为输入也可作为输出;
P1端口:P1端口是8个普通端口,从P1.0到P1.7引脚,每一个引脚既可以作为输入也可作为输出;
P2端口:P2端口是8个普通端口,从P2.0到P2.7引脚,每一个引脚既可以作为输入也可作为输出;
P3端口:P3端口是8个普通端口,从P3.0到P3.7引脚,每一个引脚既可以作为输入也可作为输出;同时P3.0与P3.1为复用端口,为单片机的UART通讯接口,其中P3.0为单片机的通讯输入RXD引脚,P3.1为单片机的通讯输出接口
TXD引脚。
电源:单片机的电源供电VCC接入5V电源,GND与地连接,供电电压在3.6V到5.5V之间都可以让系统正常工作,
电压过大会烧毁单片机系统。
3.1.2 单片机晶振电路
单片机晶振电路连接单片机的XTAL1与XTAL2两个引脚,通过11.0592M外接晶振与两个30PF的电容为单片机提供稳定的时钟周期。此处选择30PF电容的C1与C2可以快速起震,根据器件指导手册可以稳定的工作。晶振是给单片机的工作提供脉冲波,晶振提供的震荡频率越高在理论上来说单片机的运行速度就越快,但是在保证稳定的前提之下STC89C52单片机的工作频率不会超过24M,否则单片机的稳定性会严重受到影响。单片机的晶振电路如图3.2所示;
图3.2单片机晶振电路
3.1.3 单片机复位电路
单片机的复位电路是让单片机从初始化重新执行的一种电路结构,可以让单片机恢复初始状态。单片机复位电路如图3.3所示,当按下SW2按键之后单片机进入复位状态,图中的E1电容大小为10uf,R3电阻为10千欧电阻,当正常工作RST引脚为低电平单片机正常工作不会进入复位状态,当SW2按键按下,单片机的RST引脚为高电平此时单片机进入手动复位状态,单片机的程序从初始化地址开始重新执行。在单片机复位的时候需要保证RST引脚保证0.2S以上的高电平,当SW2按键按下,E1电容处于放电状态,将RST引脚置位高电平从而实现复位,E1电容的大小可以根据复
位时间进行调节,STC89C52单片机一般电容大小为10UF,本次设计电容E1取值大小为10uf/16V。
图3.3单片机复位电路
3.2显示电路设计
LCD1602是比较常见的一种液晶显示屏幕,主要显示字符型与数字信息。LCD1602的组成主要包括了液晶部分的LCD器件、控制与驱动电路部分、电容电阻等元器件集成在一块电板上做成的一种液晶显示器件。液晶显示屏幕主要具有功耗较低、显示内容灵活、信息较多、驱动方便、显示刷新频率快的特点。液晶屏幕只需要5V的供电电压就可以实现液晶的正常工作与驱动。LCD液晶显示是由‘.’分布组成,液晶主要结构是M*N个的单元模块进行组成。根据字库或者取模实现‘.’组成不同的数字与字符,驱动芯片内部的RAM的寄存器地址分别对应相应的字符组成结构。通过驱动芯片实现不同字符的驱动,间接在屏幕中显示不同图案与信息,
LCD的显示根据不同的指令进行驱动,比如01H为清屏指令,清楚当前屏幕的显示内容;80H为第一行第一列的显
示地址,当需要显示相应位置的字符需要发送相应的位置指令,80H+40H为第二行第一列的位置定义,根据不同的位
置进行寄存器数据的发送。如上图所示,单片机与LCD1602之间通过网络标号形式连接,其中D7到D0为LCD1602的并
口数据的8个引脚;LED-K与LED-A实现LED的背光灯控制,使LCD1602可以清晰看清显示内容。可调电阻RP1为10K可调
电阻,实现了LCD1602的屏幕对比度的调节,通过改变RP1的可调电阻可以实现最佳清晰显示。LCD1602具有三根控制
线,其中E连接单片机的P2.5引脚为LCD1602的片选信号,控制LCD1602是否有效;RW连接单片机的P2.6引脚主要实现
数据的读写模式;RS引脚连接到单片机的P2.7引脚,实现数据与命令的模式选择。通过配合实现数字或者字符在
LCD1602上进行清晰的显示。
3.3 按键控制模块
按键是一个机械结构,当触发时候两端的按键管脚会接通,当弹开时候按键两端管脚断开。根据按键这种特性
在按键的一端连接一个GND低电平,另外一端连接到单片机的IO引脚可以实现按键检测功能。单片机的引脚通过检测
引脚处的电平来实现判断是否有外部信号接入,当正常时候没有外部触发信号单片机的引脚保持在高电平的状态,
当按键按下接通GND低电平,单片机与按键连接的引脚实现了电平的翻转,单片机检测到低电平说明外部按键触发,
从而执行按键操作程序。按键是一个接卸结构,当按下可能看不出震动,但是单片机检测时候会存在一个震荡过
程,所以就需要一些处理手段来实现防抖动的一个过程否则按键就会多次检测实现误差或者按键不灵敏。采用程序
实现一个防抖动的过程,在检测按键时候加入一个5到10毫秒的延时就可以实现按键防抖正常工作。按键的电路如图
3.4 报警模块设计
报警模块是发出声音或者发光实现一个警示的作用,通过声音实现异常状态的提醒。本次采用蜂鸣器实现报警功能,当系统异常时候发出声音报警。蜂蜜器的驱动电压对于单片机来讲是相对较大的,不能采用单片机的IO管脚去直接驱动,必须加入驱动电路。本次采用三极管实现蜂鸣器的驱动,三极管的基极连接到单片机的IO引脚,采用9012三极管,需要一个低电平三极管处于导通状态,蜂鸣器发出鸣叫,当单片机的IO引脚变为高电平时候三极管截止,蜂鸣器关闭停止发生。
3.5 继电器模块
采用继电器模块作为控制输出,继电器是典型的一种弱电控制强电的手段,通过单片机的IO引脚的电平来实现对线圈的通电与断电,来实现对电磁铁的控制,然后对触点的接通与关断来控制强电的导通与关闭。继电器模块的原理如图3.4所示,继电器一共有三个触点输出端依次为COM端,NC(常闭点),NO(常开点)来实现对外部控制,输入端包括供电电源VCC端电压为5V供电,IO引脚连接单片机的P16引脚,通过对IO引脚高低电平的控制来实现继电器的开启或者关闭控制,GND引脚是电源的地。位号Q1为一个9012三极管实现开关功能,当P16引脚输出低电平时候三极管导通,继电器会被施加电压从而实现动作。位号VD1为4148二极管主要作用是当继电器关闭之后为线圈提供放电防止继电器烧毁。
3.6继电器控制电路
3.7超声波模块
采用超声波模块实现对距离的测量,超声波模块具有发射与接收两个模块,相互之间配合可以实现对距离的测量。超声波利用声波速度在空气中的传输速度来进行距离的计算,当超声波模块发射模块发出超声波,当声波遇到障碍物之后会发生发射回来,接收模块接收到超声波。根据发射与接收之间的时间计算出距离的大小,通过此方式来实现对距离的测量。超声波电路如下图3.8所示,超声波模块的供电电压是5V,GND端连接到地端,两个引脚连接到单片机P1.3引脚与P1.4引脚通过程序驱动来完成对超声波模块的使用。
3.9 本章小结
本章主要是对设备的电路进行设计,通过对单片机最小系统的完成,显示系统的完善,然后将系统的各部分模块进行分模块设计。完成各个独立模块的电源电压供给,完成各个模块与单片机的连接,最后设计出整个系统的电路,通过对电路设计掌握各个模块的使用方式,方便后期对模块进行读写或者控制。通过本章设计结束完成了设备硬件电路部分的设计,为后期的软件设计提供准确可用的硬件设备。
第4章 系统软件设计
4.1软件环境
本次设计采用C语言进行程序设计,在编程时候需要掌握C语言的相关知识与相关编程软件,程序开发软件采用KEIL软件进行程序的编写。单片机只能识别机器语言也就是只能识别二进制,0或者1代码,C语言是接近人类语言的高级语言,通过编译软件进行编译可以将利于人类识别的语言转化为机器识别的语言,这个过程需要KEIL软件进行编译转化。开发人员通过KEIL软件来进行程序的编写,界面具有简洁、清晰、编译方便的特点,当编译时候会进行语法错误的检查,通过检测可以将错误的程序定位,非常方便相对较大工程的编写与纠错。KEIL软件工程师使用的非常的多,会大大加快开发人员程序的编写周期,通过软件编译生成HEX可执行的文件,并且可以进行整体的测试与分步编译测试对代码进行进一步的分析。
安装好开发软件KEIL之后是对工程的建立,通过新建立的工程可以对项目进行代码的编写。创建工程界面如图4.1所
示,点击Project→New Project之后进行工程的建立。
图4.1 KEIL工程建立图
完成工程建立之后进行程序的编写,程序编写的时候先建立main函数,作为主程序的入口,程序从主程序开始
执行,通过添加各个功能模块的子程序,然后主程序实现对整体的功能逻辑控制,按照这个思路进行具体的C程序编
写,程序编写界面如图4.2所示。
图4.2 KEIL程序编写界面
KEIL程序编写之后每一次完成一个模块就需要对相应的功能进行编译测试,编译程序的时候点击编译按钮之
后,KEIL软件就行自动进行信息的打印与编译,当编译结果出现错误的时候会显示错误编译不过去,这个时候需要
点击错误之处去到代码的具体位置来查找错误之处,直到编译出现 “0 Error”字样表明程序没有错误这个时候可
以继续调试与编写其它功能,
在KEIL软件编译成功之后会生成单片机的可执行HEX文件,将HEX可执行文件烧写到单片机中就可以实现功能执行,这需要专业的配套软件可以实现,本次设计采用STC系列的国产单片机进行设计,所以下载软件为“STC-ISP”软件,通过STC下载软件可以将程序写入到单片机中,“STC-ISP”软件如图4.4所示,这里主要选择的参数包括了单
片机的型号“STC89C52/LE52RC”单片机,串口根据插入的烧写器来确定,查看方法可通过我的电脑→COM端口来查看具体的串口号,连接好单片机之后点击“下载/编程”按钮即可,出现下载成功代表程序写入正确。
4.2主程序设计
主函数是从main函数开始执行,单片机在上电之后就会自动跳转到main函数存储位置,从main函数中的语句依次执行下去。本次设计的程序开始执行,然后进行系统与传感器的初始化与初始参数的加载,然后设定液位的上下限值,主函数通过子程序来调用各个模块采集数据实现了数据的采集,当采集成功之后模拟量进行AD转换,屏幕显示数据,观察屏幕数据是否小于给定范围,系统根据程序执行顺序来决定开启或者关闭水泵,若是低于给定值则蜂鸣器进行报警,开启水泵,若是水位高于给定值则蜂鸣器报警关闭水泵。主流程图如图4.5所示。
图4.5 主程序流程图
4.3 报警电路程序设计
当液位超过设定值时,电路发出报警,同时进水泵关闭,排水泵开始排水,直至液位达到设定值后关闭排水泵;同样的,当液位低于设定值的时候,进水泵打开,开始加水,直至液位达到设定值后关闭排水泵。蜂鸣器与引脚P1.3连接。
4.4按键程序设计
按键子程序是通过检测单片机的IO引脚来实现检测的,单片机的按键引脚需要配置为输入模式,这样单片机的IO引脚就可以检测外部电平变化。按键一端连接GND低电平,当按键没有按下时候单片机的输入检测是高电平,当按键按下单片机的引脚就检测到低电平,这个时候单片机就识别到了外部动作执行按键程序。
4.5传感器程序设计
传感器检测程序是通过传感器检测项目所需要的外部数据信息,首先进行传感器的初始化,等待传感器进入正常的工作状态,当传感器进入正常状态单片机通过传感器特有的程序协议进行数据的采集,当采集失败之后进行重新的采集,当成功采集数据之后单片机会根据具体的功能逻辑对采集的数据进行处理执行。
4.6执行程序设计
系统的逻辑处理需要进行输出控制,包括报警或者动作的处理都属于输出程序。系统按照一定的逻辑进行数据处理,当检测到的数据符合哪一个逻辑输出系统就会驱动单片机的IO管脚去执行相应的动作,执行程序如图4.8所示。
图4.8动作执行流程图
4.7显示程序设计
显示程序是作为系统与人交互的程序,是一种输出结果,显示输出的数据具有参考价值也是比较重要的数据参数。当单片机采集或者运算出重要的数据经过显示屏幕显示出来,首先进行显示程序的初始化,然后进行参数的写入,最后展示在显示屏幕中,
4.8 本章小结
本章主要介绍了程序的编写,采用C语言实现程序的编写,包括了使用的编程软件KEIL的应用以及主程序与子程序的调用,编译成功后进行下载程序的验证。并且通过流程图进行进一步的逻辑整理,包括了主程序整体的流程图以及一些与项目相关的子程序流程图,先设计出主程序然后设计子程序最后进行主程序对子程序的进一步调用。程序的编写思路是将程序模块化编写,方便对每一个功能模块进行测试,最后完成整体程序的编写。
第5章 系统仿真设计
5.1系统仿真软件
单片机仿真软件对于单片机应用具有一定的益处,可以根据仿真状态查看设备的运行状态,本次采用Proteus(ISIS)作为设备仿真软件。Proteus是英国开发的一款仿真的EDA软件,Proteus软件可以对单片机以及其外围电路进行整体的仿真。Proteus软件对于仿真来说非常的优秀可以适应多种编译器的开发,包括了KEIL、IAR编译器,可以进行电路原理图的设计、PCB设计、仿真集于一身的设计。Proteus软件具有很多快捷按键设置,F8可实现工作区域电路图的全部显示、F6与F7实现对电路的放大缩小功能等。掌握快捷方式会让设计变得更加的快捷与高效。
Proteus软件主要具有以下的优点;
1.在绘制电路原理图时候可以通过Proteus软件进行原理图绘制;
2.可以进行PCB的设计包括了自动布置线路与手动布置线路;
3.具有电路的仿真功能,通过加载程序可以直接观察运行状态;
4.具有多种的单片机仿真型号包括了51单片机、ARM、PIC等单片机系统;
5.具有非常丰富的元器件库,并且元器件库根据时代的发展在逐渐的增肌。超过2.7万个元器件,并且可以创建新的器件;
6.Proteus软件具有很多的仿真仪表资源,包括了虚拟终端、逻辑分析、电压电流表、示波器等设备,并且具有图形显示功能,可以通过以上设备仪器对设备的电路进行电路测试分析,实现模拟或者数字信号的准确获取。
5.2仿真建立
采用Proteus软件进行系统的仿真设计首先需要建立一个工程文件工程文件的建立如图5.1所示,点击File菜单实现项目的建立。
图5.1 建立仿真工程文件
建立工程之后根据电路的原理进行电路图的绘制,通过Proteus软件去寻找项目所需要的器件并且将器件拖入到新建立的工程中,发现与器件拖入如图5.2所示。点击OK按键实现单片机加入到新建立的工程中。
图5.2单片机加入工程图
当器件完成之后进行器件位置的摆放,尽量布局美观并且保证连接时候比较容易,这里主要将一个功能实现的器件模块尽量布置在一处。器件完成布局之后需要对器件进行电气连接,根据设计的原理图按照原理图对器件进行正确的连接,并且根据器件的规格来决定器件的供电电源,保证器件可以正常的进行工作。器件连接之后的原理图
如图5.3所示。
图5.3 器件连接仿真图
5.3仿真调试
将上面已经对仿真原理检查完毕,设备的仿真图已经保证完全正确没有错误,可以放心在各个模块上进行程序的调试编写。编写的每一个模块进行测试,观察各个模块的运行与数据采集是否正确,每一个模块都调试完成之后进行系统的整体测试。测试步骤从分到总测试,完成设备的整体功能,最后将系统功能与预期目标进行对比直至符合所有的任务目标。首先进行显示部分的程序编写,在编写的时候只编写显示部分程序,编写显示程序的好处是可以对以后的模块测试提供更加方便,一个个功能模块的代码逐渐添加测试,加入仿真程序如图5.4所示。
图5.4 添加HEX文件到仿真文件
在编写显示时候按照显示屏幕的数据手册进行程序的时序编写,通过单片机对屏幕进行控制,初始时候只需要显示简单的字符或者数字既可。当调试完成显示时候就完成了主程序与显示程序的架构,一下的各个功能模块依次加入到主函数main的死循环while(1)中实现各个模块的分别测试。在将各个模块调试通过之后进行各个子程序的直接调用,然后根据设备的任务目标进行显示界面的最后确定,逻辑功能的最后确定。最后程序的仿真显示效果如图
5.5所示。
图5.5 显示屏最终显示效果
在各个模块的子程序加入到主程序的过程中要不断进行测试,将每一次修改的程序都进行一次仿真实验,成品的设备是一次次调试失败之后总结出来的。直到测试的系统达到任务目标之后,在对设备的整体进一步的仿真测
试,在确定设备没有BUG之后可以说完成了该设备的设计目标完成了任务目标。系统测试之后整体仿真效果如图5.6所示。
图5.6设备整体仿真效果图
完成系统的任务目标,但是还要对系统进行不断的完善,每一个仿真系统都是在不断的改进中趋于完美。
5.4本章小结
本章主要介绍了仿真测试的具体步骤,仿真软件的测试过程,最后进行整体的测试。通过对各个模块进行测试来完成整个系统的构建,从模块化编程向整体构建程序最后完成测试,展示出仿真的演示效果。
第6章 系统调试与测试
6.1系统测试步骤
1.电路设计完成之后按照硬件电路进行焊接,根据电路图中的电气标号采用飞线进行连接各个器件。用焊锡将每一个器件的引脚焊接牢固,焊接好之后要进行检查,避免虚焊或者焊接不牢固,烙铁与器件的时间接触不易时间太久避免高温时候烧坏器件。
2.实物完成焊接之后要与电路图进行比对,确保焊接的正确性,如果出现错误会影响后期的调试,当检测与电路图完全正确之后需要用万用表进行测试,测试焊接系统的VCC与GND之间是否短路,将万用表设置到测量短路状态,红色表笔测量VCC,黑色表笔与GND连接,当无报警说明没有短路,有蜂鸣器鸣叫需要对整体电路进行依次检查。
3.当完成检测之后设备就可以进行上电测试,给系统进行电源电压供电,观察器件的指示灯是否正常亮,是否有器件过热烧毁,并且对各个模块的电压进行测量,保证每一个的模块供电系统正常。
4.将编写的每一个模块进行测试,观察各个模块的运行与数据采集是否正确,每一个模块都调试完成之后进行系统的整体测试。测试步骤从分到总测试,完成设备的整体功能,最后将系统功能与预期目标进行对比直至符合所有的任务目标。
6.2硬件模块测试
首先进行单片机的测试,在焊接好的硬件上用万用表连接上电时候测量单片机的P40与P20引脚观察万用表的电压是否为工作电压数值,确保单片机最小系统可以正常的运行。
单片机硬件系统正确之后进行各个模块的观察,确保各个模块的供电电压,模块到单片机之间的引脚都连接正确并且不具有开路和虚焊。下图6.1为显示上电状态,LED背光灯可以正常的点亮。
图6.1显示正常状态
模块的引脚与单片机的连接测试如图5.2所示,图中“0”代表模块中的引脚与单片机的引脚是连通状态,在每一个模块上验证成功表明硬件设备没有问题。
图6.2 引脚连通测试图
在测试时候会遇到问题,其中晶振焊接的时候由于焊锡不均匀导致了焊接出现了断点的现象,断点图片如图6.3
所示,在晶振与单片机的XTAL1处断点,这样就导致单片机系统无法正常的运行,需要进行重新连接。
图6.3晶振处断点图
将电烙铁与焊锡准备好之后进行焊接,焊接完成图片如图6.4所示,焊接之后的晶振与单片机的XTAL1进行完整的连接,保证了单片机最小系统的运行。
图6.4 焊接完整图片
完成对系统的整体上电与各个功能模块上电检查之后就可以在设备上进行下一步骤,进行程序的编写与测试。
6.3软件测试
上面已经对引脚检查完毕,设备的硬件已经保证完全正确没有错误,可以放心在各个模块上进行程序的调试编写。首先进行显示部分的程序编写,在编写的时候只编写显示部分程序,编写显示程序的好处是可以对以后的模块测试提供更加方便,一个个功能模块的代码逐渐添加测试。
在编写显示时候按照显示屏幕的数据手册进行程序的时序编写,通过单片机对屏幕进行控制,初始时候只需要显示简单的字符或者数字既可。当调试完成显示时候就完成了主程序与显示程序的架构,一下的各个功能模块依次加入到主函数main的死循环while(1)中实现各个模块的分别测试。在将各个模块调试通过之后进行各个子程序的直接调用,然后根据设备的任务目标进行显示界面的最后确定,逻辑功能的最后确定。最后程序的显示效果如图6.5所示。
图6.5 显示屏最终显示效果
在各个模块的子程序加入到主程序的过程中要不断进行测试,将每一次修改的程序都进行一次实验,成品的设备是一次次调试失败之后总结出来的。直到测试的系统达到任务目标之后,在对设备的整体进一步的测试,在确定设备没有BUG之后可以说完成了该设备的设计目标完成了任务目标。系统测试之后整体效果如图6.6所示。
图6.6设备整体演示效果图
完成系统的任务目标,但是还要对系统进行不断的完善,每一个系统都是在不断的改进中趋于完美。
6.4本章小结
本章主要介绍了实物测试的具体步骤,从硬件到软件的测试过程,最后进行整体的测试。通过对各个模块进行测试来完成整个系统的构建,从模块化编程向整体构建程序最后完成测试,展示出实物的演示效果。
结论
本次设计的基于单片机的液位检测,实现了任务目标的功能,通过对系统的逐步完善与测试设备可以正常的运行。在调试的过程中主要有以下几方面的总结。
1.在设备制作之前应该对设备进行资料的查找,了解一下设备的应用场合与设备的基础知识,然后根据自己的任务目标进行了解进而制定方案,通过与导师沟通最后确定功能。然后通过框图的模式将整体的框架构思出来。根据整体的设备框图然后进行下一步的制作。
2.在完设备整体框图时候去查找相关的硬件功能与模块,通过网上资料或者请教导师确定所选择的器件。根据器件查找相关的数据参考手册来实现电路的制作。最后完成设备的电路图制作,并且将硬件检查无误之后方可进行下一步。
3.完成硬件之后就可以进行程序的编写,本次采用C语言设计,程序相对来说更加的通读易懂,在设计程序时候可以查阅相关器件的程序设计,然后进行测试验证。通过对设备的各个模块编程,各个模块测试可以高效的完成程序,这样做具有针对性,也可以掌握各个模块的功能,最后再将整体的程序进行融合既可。在调试模块的时候不可避免的会遇到问题,比如调节显示时候显示屏显示的不对,这个时候就要对程序进行检查,首先是对程序的引脚检查,发现驱动的引脚与硬件相反,这个时候只需要将程序的引脚对调,然后显示正确,在遇到问题一定要细心反复的查找,确保解决问题。
4.在程序调试完成之后进行整体功能测试修改,一定要根据任务目标进行修改,完全的符合任务目标是最关键的,也就像写作文不能跑题一个道理,符合设备目标之后可进行扩展,这个需要根据实际情况实现延伸。
本次的设计完成了整体的设备目标,加深了对基于单片机的液位检测的了解,通过本次设计总结到项目的设计流程与设计的经验。在项目中一定不要盲目去做,要定好任务目标,整体架构与分步实现到最后汇总的一个构成。在项目实施中不可避免会遇到问题,这个时候就要找到根源,耐心、细心去逐个击破,最后对系统进行整体的完善。本次设计将所学内容与实践应用相互结合、融合、贯通最后来提高自身专业技能。