基于单片机的水塔水位控制系统方案_第1页
基于单片机的水塔水位控制系统方案_第2页
基于单片机的水塔水位控制系统方案_第3页
基于单片机的水塔水位控制系统方案_第4页
基于单片机的水塔水位控制系统方案_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 摘 要水塔是在日常生活和工业应用中经常见到的蓄水装置,基于单片机的水塔水位控制系统使水塔水位自动保持在一定的位置,通过对其水位的控制对外供水,以满足需要。该系统使用水位传感器对水塔水位进行检测并将检测到的信号传给单片机STC89C52进行处理,通过调整定时器的定时时间来增大或者缩小占空比,并采用C语言编写控制程序,从而实现电机的调速。最后,使用带字库的LCD1602液晶屏显示当前水位状态以与电动机的转速。该系统实现了过低水位蜂鸣器鸣笛报警、过低警戒水位自动处理、正常水位蜂鸣器鸣笛报警以与正常水位处理、手动按键调整PWM(Pulse Width Modulation)电机调速等功能。本系统适应

2、在不同的用水场合下的用水速度需要,节省工作时间,提高了整体工作的效率,实现水塔水位的自动控制。关键词:单片机控制;水位检测;LCD1602显示;PWM电机调速ABSTRACTThe water tower is commonly seen in daily life and industrial as application of storage device. The system is based on single-chip microcomputer control system help to keep water towersin certain water level and a

3、ccording to the automatic level of control to supply the needs of water. Water level sensor is used for towers on the examination detect signal and transfer the signal to STC89C52, through the adjustment of the time to increase or narrow the duty ratio, and using C language program, so as to realize

4、 the compilation control of motor speed. Finally, current levels and motor speed are shown with 1602 LCD screen in this system. This system realizes the buzzer low level alarm, low whistle warning level automatic processing, normal level alarm or normal water buzzer sirens and manual buttons Pulse W

5、idth Modulation. This system realizes the automatic control in different water situation of water to save the working time, speed, and also improves the overall efficiency of water towers.Key Words:SCM control; Water detection; LCD1602 display; PWM motor speed;目录1引 言11.1课题简介12系统的整体方案设计32.1功能要求32.2设计

6、要求32.3系统基本方案选择和论证32.3.1单片机芯片的选择方案论证42.3.2显示模块选择方案论证43系统的硬件设计53.1电路设计框图53.2MCU主控芯片简介53.2.1主控制器芯片STC89C52概述53.2.2芯片下载程序73.3液晶屏1602的简单介绍73.3.1液晶屏1602的简要概述73.3.2液晶屏1602的使用具体83.4系统功能电路123.4.1最小工作系统原理123.4.2蜂鸣器报警电路原理143.4.3电机驱动电路原理143.4.4按键功能电路原理153.4.5液晶1602显示功能电路图153.5系统总体原理图设计164系统的软件设计174.1编程语言介绍174.1

7、.1C语言简介174.1.2C语言的特点174.1.3C源程序的结构特点184.2PWM调速控制概述194.2.1PWM脉宽调制简介194.2.2PWM调节的具体过程194.3系统程序的设计204.3.1程序设计步骤204.3.2软件的安全冗余设置214.3.3程序流程图214.4程序源代码235调试245.1调试过程245.2电路检测245.2.1调试步骤245.2.2调试遇到的问题与解决方案245.3功能实现25结论26参考文献27附录一系统原理图28附录二程序源代码29致3536 / 391 引 言1.1 课题简介水塔是在日常生活和工业应用中经常见到的蓄水装置,通过对其水位的控制对外供水

8、以满足需要,其水位控制具有普遍性。水塔水位的单片机控制系统水塔水位控制在铁路、油田、化工等部门有着广泛的应用。水位控制在日常生活与工业领域中应用相当广泛,自动检测水位的检测系统能根据水位变化的情况自动调节。水塔供水的主要问题是塔水位应始终保持在一定围,避免“空塔”、“溢塔”现象发生。在水塔中的水位到达水位下限时自动启动电机,给水塔供水;在水塔水位达到正常水位的时候自动关闭电机,停止供水。并能在供水系统出现异常的时候能够发出警报,以与时排除故障,随时保证水塔的对外的正常供水作用。在工业和我们的日常生活中,对水位的监测是非常必要的。大到对江河,水库等的水位,特别在洪灾或者旱灾的时候,需要与时得到第

9、一手数据;小到对水箱,热水器水位等家用贮水容器的监测,可以减少很多危险和不必要的损1。现举一例:在煤矿的开采过程中,会产生大量的水。为了保证煤矿的安全和开采煤矿的正常进行,应将这些水通过水仓安全排放,因此不仅应控制水仓水位在一定的围之,同时要保持一定的上下限,超过了限度则报警,从而给其排水2。目前,控制水塔水位方法较多,其中较为常用的是由单片机控制实现自动运行,使水塔水位保持恒定,以保证连续正常地供水。实际供水过程中要确保水位在允许的围浮动,应采用水位传感器测量水位变化,从而控制电动机,保证水位正常3。因此,这里给出以STC89C52单片机为核心器件的水塔水位检测控制系统,该系统能实现水塔水位

10、检测、LCD1602显示当前水位功能以与蜂鸣器鸣笛报警,手动按键调整PWM电机调速功能,实现过低警戒水位报警、过低警戒水位处理的系统要求。80年代以来,我国又发展了以自记遥测为主的水位测量技术。它主要是建立自记水位计,实现水位自动采集、存储、远传。同期,还发展了无人立尺观测技术,这种技术采用激光测距仪与经纬仪接口配套组成的一套设备,利用激光测距仪无须反射棱镜测定距离(测距精度:05m)的性能,配以经纬仪测角测定目标高程的一种测量方法。随着近代科学技术的发展和新材料新器件的开发,采用传感器研制水位计近年来有较大发展4。主要采用的传感器有超声波、光电、压力、接触式、浮于式等几种。超声波式水位计是将

11、换能器向水面发射超声波,测量超声波传播时间,计算出水位。压力式水位计也是不需要水位测并,其基本原理是测量静水压力来实现水深的测量,已采用过波纹管和水银位移式压力传感器等方法。固态压力传感器由于其灵敏度高、体积小、寿命长、且有抗腐蚀性而受到重视,但由于半导体传感器受温度影响大等原因,使其实用受到限制。近年来固态传感器温度自动补偿问题有了进展,固态压阻式水位计已经得到应用5。接触式水位计使用机电的方法用探头跟踪井水面高低变化测量水位,已在少数领域使用,浮子式水位计,利用水球(或其它浮子) 作敏感器件,避免了温度、湿度等因素的影晌,性能稳定,工作可靠,因而得到长期使用和发展。 我国使用的自记水位计,

12、最常见的为浮子式水位计。近年来,由于土建工程费用不断上涨,无需水位量的压力式水位计随着现代技术的发展和进步也日趋稳定和成熟,致使人们越来越重视使用压力式水位计。单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。正因为单片机有如此多的优点,因此其应用领域之广,几乎到了无孔不入的地步6。在我国,单片机已被广泛地应用在工业自动化控制、自动检测、智能仪表、智能化家用电器、航空航天系统和和国防军事、尖端武器等各个方面。单片机的潜力越来越被人们

13、所重视。特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用围,也进一步促使单片机性能的发展。我们可以开发利用单片机系统以获得很高的经济效益。虽然单片机的引入使控制系统大大“软化”,但与其它计算机应用问题相比,单片机控制应用中的硬件容仍然较多,所以说单片机控制应用有软硬件相结合的特点。为此,在单片机的应用设计中需要软、硬件统筹考虑,设计者不但要熟练掌握汇编语言等编程技术,而且还要具备较扎实的单片机硬件方面的理论和实践知识。更重要的意义是单片机的应用改变了控制系统传统的设计思想和方法。以前采用硬件电路实现的大部分

14、控制功能,正在用单片机通过软件方法来实现7。这种以软件结合硬件或取代硬件并能提高系统性能的控制技术称为微控制技术。例如,本文所要论述的基于单片机的水塔水位控制系统。2 系统的整体方案设计2.1 功能要求实际供水过程中要确保水位在允许的围浮动,应采用水位传感器测量水位变化,从而控制电动机,保证水位正常。因此,这里给出以STC89C52单片机为核心器件的水塔水位检测控制系统,该系统能实现水塔水位检测、LCD1602显示当前水位功能以与蜂鸣器鸣笛报警,手动按键调整PWM电机调速功能,实现过低和正常警戒水位报警、过低和正常警戒水位处理的系统要求。2.2 设计要求按下电源按钮后,灯会闪烁几下,然后是常亮

15、状态,蜂鸣器会响。电机不会转的,此时系统在待机状态,且为正常状态。要先选择好电机的抽水速度是哪个档位,共有4个档位。档位越高,速度越快。在电机转的时候,按下选择档位,电机立马会停止的,这个是一个软件安全冗余的设计理念。电机在水位模拟传感器端口(低水位)按下后,说明水位太低,电机转动,此时蜂鸣器会响一下,灯会闪烁几下,以此表示报警,并且液晶也会显示水位太低。当水位模拟传感器端口(正常水位)按下后,说明水位已经到正常状态,电机停转,此时蜂鸣器也会响一下,灯一样会闪烁,以此表示报警,且液晶屏也会显示水位正常。而PWM速度调整就是档位的选择,必须在电机停止的状态下去选择电机输出的速度。2.3 系统基本

16、方案选择和论证 此系统可以采用多种的方式设计,能采用液罐液压检测的方式来做,这样在不同的水位时因为有不同的压力值,所以我们可以根据不同的压力值来确定到底水位在某个状态,但是这样的系统设计理念用处比较狭窄,因为这样的设计理念的前提必须是一个液压的封闭系统,这样才能有精确的压力值传送,保证系统的稳定性。但是目前很多用到的水塔水位控制系统都不是封闭的水罐,所以这个方案有一定局限性。 而采用特殊的水位传感器,就可以克服上述的困难。因为液位检测器可以很精确的检测到液位系统,同样达到预期的目的,且系统的应用面很广,而且系统的安全性能很好,因此我们采取检测液位作为系统的设计思想。 2.3.1 单片机芯片的选

17、择方案论证 目前市场上的单片机的种类有很多种,最多的51单片机、avr单片机,和Msp430,以与PIC单片机,但是由于单片机的种类很多,功能各不一样,我们不需要多先进,功能多强大的单片机,我们设计的要求就是够用即可,因为性能低劣了,系统功能实现不了,并且系统的稳定性很差,用的单片机性能太好了,由于高性能的单片机不只是价钱昂贵,且有很多资源都不会用到,这样造成了很大的浪费。因此我们选用目前市场上用到比较多的、且可以满足系统设计要求的51单片机。 因为Atmel 公司的51单片机需要专门的编程器,这样无形中加重了系统的成本,而STC公司单片机不仅支持ISP,还支持IAP等多种下载程序的方式,并且

18、STC公司单片机工作在宽电压围,电压的波动对系统的影响不大,这样提高了系统的稳定性,另外STC单片机的加密性能也由于其他单片机,并且STC的单片机是增强型的51单片机8。因此我们选用STC89C52单片机作为系统的主控芯片。2.3.2 显示模块选择方案论证显示模块是系统的人机交互模块,增加了显示模块增加了系统的交互性。目前市场上用到的显示模块有很多种,有数码管显示,还有液晶显示,因为数码管只是显示数字,不能显示字符,而此系统需要用到显示当前的水位状态。这样就必须要用到字符显示的液晶显示器,液晶显示器也有很多种,但根据系统的需要我们选用的是LCD1602,很大程度上增加了系统的人机交互功能,让使

19、用者可以得到更多系统工作的信息,更方便的使用此系统。 3 系统的硬件设计3.1 电路设计框图系统的总体框图主要由主控芯片基本电路、按键电路、电动机和蜂鸣器驱动电路、液晶显示电路组成。除主控芯片电路外,其他的都是外围功能性电路。蜂鸣器和电动机电路驱动原理基本一样,都为三极管驱动电路,按键电路为平常的独立按键电路,液晶电路参考设计手册既可。电路设计框图如图3-1所示:图3-1电路设计框图3.2 MCU主控芯片简介3.2.1 主控制器芯片STC89C52概述STC89C52是一款完全兼容8051核指令的芯片,是宏晶科技公司的新一代增强性的8051单片机9。采用最新的加密技术解决了全球89系列单片机都

20、被解密的困惑。并且管脚完全兼容,性能更好,驱动力更强,功耗更低,价格也比传统的89系列低10。STC89C52的引脚说明图如图3-1。STC89C52单片机的特点如下:1.增强性6时钟/机器周期,12时钟/机器周期 8051 CPU2.工作电压:5.5v-3,4v(5v单片机)/3.8V-2.0V(3V单片机)3.工作频率围:0-40MHZ,相当于普通8051的0-80MHZ,实际工作频率可达48MHZ4.用户应用程序空间4K/8K/13K/16K/20K/32K/64K,字节片上集成1280字节/512字节RAM5.通用I/O口(32/36个),复位后为:P1/P2/P3/P4是准双向口/若

21、上拉(普通8051传统I/O口。P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/0口用时,需要上拉电阻。6.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器可通过串口(P3.0/P3.1)之下载用户程序,8K程序3秒即可完成一片。7.共三个16位定时器/计数器,其中定时器0还可以当成2个8为定时器使用8.外部中断4路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平触发中断方式唤醒9.通用异步串行口(UART),还可用定时器软件实现多个UART.10.部Flash 擦写次数为100,000次以上,STC89C51RC/RD+ 系类单片机

22、加密性强,出厂时就已经加密。图3-2 STC89C52的引脚图说明3.2.2 芯片下载程序对于STC89C52的单片机而言,程序不需要专门的编程器或者仿真器去下载程序,而只是使用串口通讯的两个引脚就可以把程序烧写到程序里,十分方便简洁,并且有相关配套的官方软件,使用起来也十分方便11。图3-2是程序下载的线路连接图:图3-3 程序下载线路连接图3.3 液晶屏1602的简单介绍3.3.1 液晶屏1602的简要概述液晶显示器以其微功耗、体积小、显示容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用12。 字符型液晶模块是一种用5×7点阵图形来显示字符的液晶显示

23、器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等。字符型液晶显示模块是一类专用于显示字母、数字、符号等的点阵型液晶显示模块。之所以称字符型液晶显示模块是因为其液晶显示器件的电极图形是由若干个5×8或5×11点阵块组成的字符块集。每一个字符块是一个字符位,每一位都可以显示一个字符,字符位之间空有一个点距的间隔起着字符间距和行距的作用,这是其一;其二是这类模块使用的是专用于字符显示控制与驱动的IC芯片13。这两种因素确定了这类模块的应用围仅局限于字符而显示不了图形,所以称其为字符型液晶显示模块。字符型液晶显示驱动控制器广泛应用于字符型液晶显示模块上。目前最

24、常用的字符型液晶显示驱动控制器是HD44780U,也出现使用HD667O1或HD66702等字符型液晶显示驱动控制器单片控制的字符型液晶显示模块。液晶显示驱动器为HD44100与其替代品。字符型液晶显示模块在世界上是比较通用的,而且接口格式也是比较统一的,其主要原因可能是各制造商所采用的模块控制器都是HD44780U与其兼容品,不管它的显示屏的尺寸如何,它的操作指令与其形成的模块接口信号定义都是兼容的。所以会使用一种字符型液晶显示模块,就会通晓所有的字符型液晶显示模块。3.3.2 液晶屏1602的使用具体液晶1602有三条控制线,RS/数据命令端,RW/读写选择端、EN/使能端,一个8位的数据

25、端口。常用指令说明如表3-1:表3-1常用指令说明指令名称控制信号控制代码D/I R/WD7 D6 D5 D4 D3 D2 D1 D0清屏0 00 0 0 00 001归home位0 00 0 0 00 01 *输入方式设置0 00 0 0 001 I/D S显示状态设置0 00 0 0 0 1 D C B光标画面滚动0 00 0 0 1 S/C R/L * *工作方式设置0 00 0 1DL N F * *CGRAM地址设置0 00 1 A5 A4 A3 A2A1 A0DDRAM地址设置0 01 A6 A5 A4 A3 A2A1 A0读BF和AC0 1BFAC6AC5AC4AC3AC2AC1

26、AC0写数据1 0数 据读数据1 1数 据(一)指令详细解释如下:1).清屏(Clear Display)格式 0000000101H该指令完成下列功能:将空码(20H)写入 DDRAM的全部 80个单元;将地址指针计数器AC清零,光标或闪烁归home位;设置输入方式参数 ID=1,即地址指针 AC为自动加一输入方式。该指令多用于上电时或更新全屏显示容时。在使用该指令之前要确认DDRAM的当前容是否有用。2).归home位(Return home)格式 0000001002H该指令将地址指针计数器AC清零。执行该指令的效果有;将光标或闪烁位返回到显示屏的左上第一字符位上,即DDRAM地址00H

27、单元位置;这是因为光标和闪烁位都是以地址指针计数器 AC当前值定位的。如果画面已滚动,则撤消滚动效果,将画面拉回到home位14。3).输入方式设置(Enter Mode Set)格式 000001I/DS04H07H该指令的功能在于设置了显示字符的输入方式,即在计算机读写DDRAM或CGRAM后,地址指针计数器AC的修改方式,反映在显示效果上,当写入一个字符后画面或光标的移动。该指令的两个参数位 1D和 S确定了字符的输入方式。 ID表示当计算机读写 DDRAM或 CGRAM的数据后,地址指针计数器 AC的修改方式,由于光标位置也是由AC值确定,所以也是光标移动的方式。 ID0 AC为减1计

28、数器,光标左移一个字符位。 ID1 AC为加 1计数器,光标右移一个字符位。 S 表示在写入字符时,是否允许显示画面的滚动。 S0禁止滚动。 S1允许滚动。 S1且IDO显示画面向右滚动一个字符位。 S1且ID1显示画面向左滚动一个字符位。4).显示状态设置(Display on/off Control)格式 00001DCB08H0FH该指令控制着画面,光标与闪烁的开关。该指令有三个状态位D、C、B,这三个状态位分别控着画面,光标和闪烁的显示状态。 D 画面显示状态位。当D1时为开显示,D0时为关显示。注意关显示仅是画面不出现,而DDRAM容不变。这与清屏指令截然不同。 C 光标显示状态位。

29、当C1时为光标显示,C0时为光标消失。光标为底线形式(5×1点阵),出现在第八行或第十一行上。光标的位置由地址指针计数器 AC确定,并随其变动而移动。当 AC值超出了画面的显示围,光标将随之消失。 B 闪烁显示状态位。当Bl时为闪烁启用,B0时为闪烁禁止。闪烁是指一个字符位交替进行正常显示态和全亮显示态,闪烁频率在控制器工作频率为250kHz时为2.4Hz。闪烁位置同光标一样受地址指针计数器AC的控制。闪烁出现在有字符或光标显示的字符位时,正常显示态为当前字符或光标的显示;全亮显示态为该字符位所有点全显示。若出现在无字符或光标显示的字符位时,正常显示态为无显示,全亮显示态为该字符位所

30、有点全显示。这种闪烁方式可以设计成块光标,如同计算机CRT上块状光标闪烁提示符的效果。5).光标或画面滚动(Cursor Or Picture Shift)格式 0001S/CR/L00 执行该指令将产生画面或光标向左或向右滚动一个字符位。如果定时间隔地执行该指令将产生画面或光标的平滑滚动。画面的滚动是在一行连续循环进行的,也就是说一行的第一单元与最后一个单元连接起来,形成了闭环式的滚动15。当未开光标显示时,执行画面滚动指令时不修改地址指针计数器 AC值;有光标显示时,由于执行任意一条滚动指令时都将使光标产生位移,所以地址指针计数器AC都需要被修改。光标的滚动是在DDRAM全程进行的,它不分

31、是一行显示还是两行显示。如果用光标的指针地址指针计数器AC加一和减一功能来解释,就能理解光标从第1显示位左移至第80显示位,或从第80显示位右移至第1显示位原理了。光标的滚动功能可以用于搜寻需要修改的显示字符。该指令有两个参数位:1.SC滚动对象的选择SCl画面滚动SC0光标滚动2.RL滚动方向的选择RLl向右滚动RL0向左滚动 该指令与输入方式设置指令都可以产生光标或画面的滚动,区别在于该指令专用于滚动功能,执行一次,显示呈现一次滚动效果;而输入方式设置指令仅是完成了一种字符输入方式的设置,仅在计算机对DDRAM等进行操作时才能产生滚动的效果。6).工作方式设置(Function Set)格

32、式 001DLNF00该指令设置了控制器的工作方式,包括有控制器与计算机的接口形式和控制器显示驱动的占空比系数等。该指令有三个参数DL,N和F它们的作用是: DL设置控制器与计算机的接口形式。接口形式体现在数据总线长度上。 DL1设置数据总线为8位长度,即DB7DBO有效。 DL0设置数据总线为4位长度,即DB7DB4有效。在该方式下8位指令代码和数据将按先高4位后低4位的顺序分两次传输。 N设置显示的字符行数。 N0为一行字符行。 N1为两行字符行。 F设置显示字符的字体。 F0为5×7点阵字符体。 F1为 5 × 10点阵字符体。该指令可以说是字符型液晶显示控制器的初始

33、化设置指令,也是唯一的软件复位指令。HD44780U虽然具有复位电路,但为了可靠的工作,HD44780U要求计算机在征作HD44780U时首先对其进行软件复位。也就是说在控制字符型液晶显示模块工作时首先要进行的软件复位16。7). CGRAM地址设置(Set CGRAM Address)格式 01A5A4A3A2A1A0该指令将6位的CGRAM地址写入地址指针计数器AC,随后计算机对数据的操作是对 CGRAM的读写操作。8).DDRAM地址设置(Set DDRAM Address)格式 1A6A5A4A3A2A1A0该指令将 7位的DDRAM地址写入地址指针计数器AC,随后计算机对数据的操作是

34、对 DDRAM的读写操作。9).读“忙”标志和地址指针值(Read Busy Flag and Address)格式 BFAC6AC5AC4AC3AC2AC1AC0计算机对指令寄存器通道读操作(RS0,RWl)时,将读出此格式的“忙”标志BF值和7位地址指针计数器AC的当前值。计算机随时都可以对HD44780U读“忙”操作。BP值反映HD4478OU的接口状态。计算机在对HD44780U每次操作时首先都要读BF值判断HD44780U的当前接口状态,仅有在BF01时计算机才可以向HD44780U写指令代码或显示数据和从HD44780U读出显示数据。计算机读出的地址指针计数器AC当前值可能是 DD

35、RAM地址也可能是 CGRAM的地址,这取决于最近一次计算机向AC写入的是哪类地址17。10).写数据(Write Data to CG or DD RAM)计算机向数据寄存器通道写入数据,HD44780U根据当前地址指针计数器AC值的属性与数值将该数据送入相应的存储器的AC所指的单元里。如果AC值为DDRAM地址指针,则认为写人的数据为字符代码并进入DDRAMAC所指的单元里;如果AC值为CGRAM的地址指针,则认为写入的数据是自定义字符的字模数据并送入 CGRAM AC所指的单元里18。所以计算机在写数据操作之前要先设置地址指针或人为的确认地址指针的属性与数值。在写人数据后地址指针计数器A

36、C将根据最近设置的输入方式自动修改。由此可知,计算机在写数据操作之前要作两项工作,其一是设置或确认地址计数器AC值的属性与数值,以保证所写数据能够正确到位;其二是设置或确认输入方式,以保证连续写入数据时AC值的修改方式符合要求。11).读数据(Read Data from CG or DD RAM)在HD44780U的部运行时序的操作下,地址指针计数器AC的每一次修改,包括新的AC值的写入,光标滚动位移所引起的AC值的修改或由计算机读写数据操作后所产生的AC值的修改,HD44780U都会把当前AC所指单元的容送到接口部数据输出寄存器,供计算机读取19。如果AC值为DDRAM地址指针,则认为接口

37、部数据输出寄存器的数据为DDRAM AC所指单元的字符代码;如果AC值为CGRAM的地址指针,则认为数据输出寄存器的数据是CGRAMAC所指单元的自定义字符的字模数据。计算机的读数据是从数据寄存器通道中数据输出寄存器读取当前所存放的数据。所以计算机在首次读数据操作之前需要重新设置一次地址指针AC值,或用光标滚动指令将地址指针计数器AC值修改到所需的地址上,然后进行的读数据操作将能获得所需的数据。在读取数据后地址指针计数器AC将根据最近设置的输入方式自动修改。由此可知,计算机在读数据操作之前要作两项工作,其一是设立或确认地址计数器AC值的属性与数值,以保证所读数据的正确性。3.4 系统功能电路3

38、.4.1 最小工作系统原理图3-4 最小系统原理图此图是单片机工作的最小系统原理图,在这个电路中又可以分为复位电路和晶振电路,如图3-4和图3-5所示:图3-5复位电路 复位电路可以分为上电复位和手动按键复位两种。在系统上电的一瞬间单片机上电复位,原理是利用电容两端的电压不能突变,在一上电的瞬间电容好比短路,所以加在第九脚RST的电平是高电平,虽然时间很短,但是足以让单片机系统复位。手动按键复位的原理是,在系统正常工作的过程中可以手动触动按键使单片机复位。具体原理是,按下S1按键,因此5V电压经过一个200欧姆的电阻分压后加到系统的RST上,手动按键按下到抬起的过程足以使系统复位。图3-6晶振

39、电路对于单片机系统而言,晶振电路就好比是人的心脏一样,是一个跳动的动力来源,18,19号引脚接的是11.0592M的晶振。 3.4.2 蜂鸣器报警电路原理图3-7蜂鸣器报警功能电路 蜂鸣器报警功能电路使用的是三极管8550驱动,三极管8550是PNP三极管,射极接电源+5V,基极通过一个电阻连接到P1.0口,集电极接蜂鸣器,当P1.0为高电平时,三极管截止,蜂鸣器没有不响,当P1.0为低电平时,三极管导通,蜂鸣器发出响声。3.4.3 电机驱动电路原理图3-8电机驱动电路 电机驱动电路和蜂鸣器的电路基本一样,同样使用8550三极管驱动,三极管的基极接P1.1,当P1.1为高电平时,电机不转动,当

40、P1.1为低电平时,电机转动。 3.4.4 按键功能电路原理图3-9按键功能电路 按键功能电路里面有两种按键,一种按键是模仿水塔水位开关的功能按钮,一种是电机PWM输出的调整按钮。原理是通过一个10k的电阻接到+5v电源线上,当按键没有按下时,按键没有导通,所以没有电流,但对于连到引脚上的那一端来讲是高电平。当按键按下时,因为电路导通,有电流流过,和单片机引脚接触的那一端接地,所以是低电平。因此能检测到信号的变化,交给程序处理后做出相关的动作。3.4.5 液晶1602显示功能电路图图3-10液晶1602显示电路图 液晶1602从左到右依次有16根引脚,每个引脚定义不同。有三根控制引线和八根信号

41、线,必须注意的一点是3号引脚是背光电源指示端。背光电阻选择的不同有不同的结果。我们这里选择2.7k电阻做为背光电阻。3.5 系统总体原理图设计 系统总体原理图即是这些功能电路的组合,主要包括最小系统电路、按键电路、电机和蜂鸣器驱动电路、液晶电路组成,还包括一个按键指示灯。详细电路见附录一。4 系统的软件设计4.1 编程语言介绍4.1.1 C语言简介C语言是在70年代初问世的。一九七八年由美国电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书20。通常简称为K&a

42、mp;R,也有人称之为K&R标准。但是,在K&R中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。 早期的C语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问存

43、的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,形成了多种版本的C语言。C语言对操作系统和系统使用程序以与需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。4.1.2 C语言的特点(1)简洁紧凑、灵活方便:C语言一共只有32个关键字,9

44、种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以和汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元21。 (2)运算符丰富:C的运算符包含的围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。 (3)数据结构丰富:C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有

45、强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。 (4) C是结构式语言:结构式语言的显著特点是代码与数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以与调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 (5) C语法限制不太严格、程序设计自由度大:一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。 (6) C语言允许直接访问物理地址,可以直接对硬件进行操作:因此既具有高级语言的功能,又具有低

46、级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。(7) C语言程序生成代码质量高,程序执行效率高:一般只比汇编程序生成的目标代码效率低1020%。(8) C语言适用围大,可移植性好:C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。4.1.3 C源程序的结构特点(1)一个C语言源程序可以由一个或多个源文件组成。(2)每个源文件可由一个或多个函数组成。(3)一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。(4)源程序中可以有预处理命令(include 命令仅为其中的

47、一种),预处理命令通常应放在源文件或源程序的最前面。(5)每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“”之后不能加分号。(6)标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。4.2 PWM调速控制概述4.2.1 PWM脉宽调制简介脉宽调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。简而言之,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在

48、给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。随着电子技术的发展,出现了多种PWM技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等,而在镍氢电池智能充电器中采用的脉宽PWM法,它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可

49、以通过调整PWM的周期、PWM的占空比而达到控制充电电流的目的。 模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。9V电池就是一种模拟器件,因为它的输出电压并不精确地等于9V,而是随时间发生变化,并可取任何实数值。与此类似,从电池吸收的电流也不限定在一组可能的取值围之。模拟信号与数字信号的区别在于后者的取值通常只能属于预先确定的可能取值集合之,例如在0V, 5V这一集合中取值。 尽管模拟控制看起来可能直观而简单,但它并不总是非常经济或可行的。其中一点就是,模拟电路容易随时间漂移,因而难以调节。能够解决这个问题的精密模拟电路可能非常庞大、笨重(如老式的家庭立体声设备)和昂贵。模拟电路还

50、有可能严重发热,其功耗相对于工作元件两端电压与电流的乘积成正比。模拟电路还可能对噪声很敏感,任何扰动或噪声都肯定会改变电流值的大小。 通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。此外,许多微控制器和DSP已经在芯片上包含了PWM控制器,这使数字控制的实现变得更加容易了。4.2.2 PWM调节的具体过程脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断

51、(OFF)的重复脉冲序列被加到模拟负载上去的22。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。多数负载(无论是电感性负载还是电容性负载)需要的调制频率高于10Hz,通常调制频率为1kHz到200kHz之间。许多微控制器部都包含有PWM控制器。例如,Microchip公司的PIC16C67含两个PWM控制器,每一个都可以选择接通时间和周期。占空比是接通时间与周期之比;调制频率为周期的倒数。执行PWM操作之前,这种微处理器要求在软件中完成以下工作: 1、设置提供调制方波的片上定时器/计数器的周期。2、 在PWM控制寄存器中

52、设置接通时间。3、设置PWM输出的方向,这个输出是一个通用I/O管脚。4、启动定时器。5、使能PWM控制器。4.3 系统程序的设计4.3.1 程序设计步骤 程序设计就是用计算机所能接受的语言把所需解决问题的步骤逐一描述出来,也就是编制计算机的程序,在设计应用系统时,软件的编制是重要环节。软件的质量直接影响整个系统功能的实现。应用程序的设计因系统而异,但程序设计总是有共同特点与其规律的。在编写程序时,采取如下几个步骤:(1)分析问题,明确所要解决问题的要求,将软件分成若干个相对独立的部分。根据功能关系和时序关系,设计出合理的软件总体结构。(2)定程序框图,即根据所选择的计算方法制定框图,这不仅是

53、程序设计的一个重要组成,而且是决定成败的关键部分。(3)合理分配系统资源,包括定时器/计数器、中断、堆栈等。分配好单元后,进一步将程序框图画成详细的操作流程。(4)根据程序的流程图和指令系统编写出程序。注意在程序的有关位置处写上功能注释,提高程序的可读性。(5)程序调试。通过编辑软件编辑出的源程序,必须用编译程序汇编后生成目标代码。如果源程序有语法错误,需修改源文件后继续编译,直到无语法错误为止,然后利用目标代码通过仿真器进行程序调试,排除设计和编程中的错误直到成功。(6)程序优化。使各功能程序模块化,子程序化,缩短程序的长度,加快运算速度和节省数据存储空间,减少程序执行的时间。4.3.2 软

54、件的安全冗余设置因为是水塔水位自动控制系统,而且用到了电动机和调速,所以我们必须考虑系统的安全性能,在电机转动的时候去调动电机的转速是很危险的,所以我们要求要在电机停止的情况下去调节电机的速度。这样对人和对电机、整个系统都是必须的。所以在软件中我们做了安全的冗余设置,当电机在转动时按下电机调速键,电机会立即停止。4.3.3 程序流程图PWM调速按键调整子程序检测是否有按键按下YN延时15ms,确定有按键按下N检测哪一个按键按下先停止电机,PWM速度增加液晶屏显示速度值增加先停止电机,PWM速度减少液晶屏显示速度值减少减按键加按键图4-1 PWM按键调整子程序流程图停止电机,灯闪烁几下,蜂鸣器响

55、几声,液晶显示正常检测模拟水塔水位正常按键开始系统初始化,灯闪烁,蜂鸣器响一声,液晶显示进入主程序等待状态显示速度启动电机,灯闪烁几下,蜂鸣器响,液晶显示低水位检测模拟水塔水位按键检测模拟水塔水位低按键NYNYPWM按键调制子程序NYPWM调速按键选择电机的转速图4-2程序总体流程图在进入PWM按键子程序后,首先要做的事是先检测是否确定有按键按下,这个过程延时15ms,在确认有按键按下后,判断是哪一个按键按下,如果是速度加按键按下,电机不管在什么状态,都是首先停止,然后是调整PWM调制时间,液晶屏显示速度增加,按下减按键,也是先停止电机,调整PWM调制时间,液晶屏显示速度减少。具体流程图如图4-1所示。当系统按下电源开关,且确定有电源存在时候,系统进入初始化状态,灯会闪烁、蜂鸣器响一声、液晶初始化,初始化完以后,进入PWM按键调速选择,如有按键按下,进入PWM按键调整子程序,若没有,进入主程序等待状态,检测水塔水位的液位状态,当模拟液位低水位按键按下后,电机以显示速度启动,模拟抽水过程,此时蜂鸣器报警,灯闪烁,且液晶会显示水位过低状态。当模拟水位正常按键正常按键按下后,电机停止转动,蜂鸣器报警、液晶显示当前正常状态,然后程序进入循环,继续检测模拟水位状态按键。具体流程图的如图4-2所示。4.4 程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论