宾馆供水智能控制器的设计
宾馆供水智能控制器的设计,宾馆,供水,智能,控制器,设计
? ed !9* 袁新娣 ( 2 =S 0,null 341000) Knull1:为了克服传统的浮子系统控制水塔水位的不足,本论文设计了一种实时无线水位智能监测系统,该系 统以 AT89S52单片机为核心,通过安装在水塔上的超声波传感器测量出水位后,单片机与设定的水位上下限进行 比较决定是否接通或断开抽水机电路,同时该单片机通过无线发射器把数据发至中控室的单片机以显示水塔水 位.论文从硬件设计与软件设计两方面进行了阐述.实践表明:该系统简单可靠,实用性较强. 1oM:水位;单片机;超声波传感器;无线发射器 ms |: TP212. 11null null nullDS M : Anull null nullcI|: 1004- 8332( 2010) 06- 0052- 03 1nulld -,S) 3 1 T, V7n , V 7 C HC, e = S BS. -, e ZE 0_ ,YV0 Y 7 T ,d V L,7 O 4 L H A , T1 e /K9dZL. !9 B ? ed, n5YV . L H_ , . ) , ! /KT 1 , T /K,5 , , T r K,5# HT , nulln null7 n ,i O /K H V L= f m 71; H e L? ? e i )A U, LC L HS .Nd V e,9 V ZB S = e. 2nulldq !9 2. 1null 系统框图 图 1null 系统总体框图 d98 m m1 U.m V A, d1 _#L? s L l sF, eq .m1 ( a)s ), ( b)s e i LC A U. ( a) 2o l 2o? v , NRF24L01L? v L H? ( b)NRF24L01L l . A U PAA U LCD1602. L= , _#L? s V Z125,7 L lsB, ?B l,V7 LCB u = S e. 2. 2null 系统主要模块硬件设计 2. 2. 1null 单片机控制器的介绍 d, e v,s) . _ , l? .d Atm el 3AT89S52, Ba ?CMOS 8 e , P d i% / /,80C51 7 Y . AT89S52 /S ?: 8k3Flash, 2010 Mnull null null null null null null null null null null null null null 2 =Snull null null null null null null null null null null null null null null null . 6 B null null null null null null null null null null null null JournalofGannan NormalUniversitynull null null null null null null null null null null null Dec. 2010 * l : 2010- 09- 15null null : 2010- 10- 19 nullTe:( 1974- ), o, , 2 =S 0 =,1V Y0Z . 2563RAM, 32I/O gL(P0, P1, P2, P3), A H , 2 , 16 H /9 ,B 6_ 2), 1 g, =# H ,W% hv ID 1. 2. 2. 2null 超声波收发器模块的设计 d P 2o l? T . . q ? 1 = 9F 2o? 5TE D , 1 HW. 2o l m3 U,s1 2o lhR#_o l CX20106AF,y l CX20106Ao q38KHZ,7 2o? ? 2o q40KHZ, , T 2o l . LV , 2o| HCX20106A ,| H B |, O 2 H, ?Y| V$ l, LC/ K 1 K 1T ,N H1 m M 71SW1 V| - T M MQ, ;8C m e98C 1 e. 7 1SW2u 7 H,9 7 1 e ?,N 1 es H, 71 e|,N H m 536 null null null null null null null null nullnull ? ed !9 e ? i,1M 71SW1 9 V| MMQ. 2. 2. 5null 测量范围设置模块及显示模块的设计 vM1 e, S !9 e /K !,1m 71F,YV P1. 0 P1. 3 g MYm 71 , % S, V L= ! /K. null null 图 6null 系统软件主流程图 A U P LCD1602A v, LCD1602 = 3? 3i% (CGROM )Xi% 160 3m,t3: u 3a3 vla |a L . B3B% , sI9Me .d e i LCD1602 ) LCD1602A U = , 9 M,| P0. 0 P0. 716027 14T , P2. 5 P2. 716024 5T e, 5. 3null q !9 d qC 7?, qs91s s,B _iL? s; = L ls, m m6 U. 2o? 30f YV P2. 4 g? 8 2o |, H H9 T0u 79 H. _f 0_R 2o|,B lR 2o|(INT0C ), f . , n51 H 9 T0T9 H,| S1,i|. HW|. ; |N : ,iA U;K : , T : v 90%,5T , T : l10%,5 7 S , T : 10%90%W,5 - . T30MS l 2o|,5 9 f ,A U,A U BQ , L? -A U . L l1 ?V , L H lA U. ( ) 4null d !9 LC e_,i O VZL L= f S, ?r null b nullnulln nullC.d !9e,LR, PZL, z, z Lil. ID: 1 null , , Y. ATMELAT89S52 # M .: bv , 2006. 2 null k, S.e 2o NT J.y 7, 2006( 7): 131- 132. 3 null , , .nRF24L01L 3. d J.? v, 2007, 23( 3): 38- 40. Design aboutWater Towernull sWater LevelControl System Based on Singlenullchip Computer YUAN X innulldi (School of Physics and E lectronical Information , G annan normal un iversity , G anzhou 341000, China ) Abstract: In order to overcome the shortcom ing of the traditionalwater towernull swater levelcontrol system , an intelligent and realnull timewater level control system is introduced in this paper. This system ismanaged by two singlenullchip computersAT89S52. After the ultrasonic sensormeasures thewater leve,l the AT89S52 analyzes the data and determ ines the working state of the pump based on the setwater leve.l At the same time, the data aboutwater level is transm itted through w ireless transm itter to anotherAT89S52 and disnull plays in the control room. The hardware and software about the control system are described in the paper. Experiment showed that the system is simple and reliable. K ey words: water leve,l singlenullchip computer, ultrasonicsensors, w ireless transm itter 54 2 =Snull null null null null null null null null null null null null null null null 2010 M 1 绪论单片机应用发展迅速而广泛。在过程控制中,单片机既可作为主计算机,又可作为分布式计算机控制系统中的前端机,完成模拟量的采集和开关量的输入、处理和控制计算,然后输出控制信号。单片机广泛用于仪器仪表中,与不同类型的传感器相结合,实现诸如电压、功率、频率、湿度、流量、速度、厚度、压力、温度等物理量的测量;在家用电器设备中,单片机已广泛用于电视机、录音机、电冰箱、电饭锅、微波炉、洗衣、高级电子玩具、家用防盗报警等各种家电设备中。在计算机网络和通信、医用设备、工商、金融、科研、教育、国防、航空航天等领域都有着十分广泛的应用。随着科技的发展,液位测量技术趋于智能化、微型化、可视化。本设计思想是用单片机做下位机,PC机做上位机,单片机和PC机相结合对水箱液位进行测量和监控。该设计要求具有一定的智能化,可操作性和稳定性好。11 课题背景与研究意义在工农业生产中,常常需要测量液体液位。随着国家工业的迅速发展,液位测量技术被广泛应用到石油、化工、医药、食品等各行各业中。低温液体(液氧、液氮、液氩、液化天然气及液体二氧化碳等)得到广泛的应用,作为贮存低温液体的容器要保证能承受其载荷;在发电厂、炼钢厂中,保持正常的锅炉汽包水位、除氧器水位、汽轮机凝气器水位、高、低压加热器水位等,是设备安全运行的保证;在教学与科学研究中,也经常碰到需要进行液位控制的实验装置。12 国内外研究现状及发展液位测量的方法比较多,依据测量方式的不同可分为接触式与非接触式两种类型。接触式测量法接触式测量法是指测量用传感器直接与容器内存储液体相接触,从而获得测量参数的方法。本方法所使用的电容通常由两块圆柱形极板或一个探极与罐壁构成。当液位不同时,电容器的介电常数就不同,故电容量也不同。在此基础上可以把电容量转化为电压、相移、频率、脉宽等物理量,再进行测量。电容式液位测量装置通常结构简单、灵敏度高、稳定性好、动态响应快,适合于恶劣的工作环境,生产成本也不高;但电容液位测量器需要考虑温度补偿,且介质的成分、水分、温度、密度等不确定变化因素直接影响测量结果的准确性,另外检测电路比较复杂,尤其是检测微小电容量的变化。非接触式测量法非接触式测量法包括超声波法、调制型光学法、微波法等。其特点是测量手段并不采用浮子之类的固态物,而是利用声、光、射线、磁场等的能量。液位传感器不和被测介质接触,不受被测介质影响,也不影响被测介质,故适用范围广泛。特别是接触式测量装置不能适用的特殊场合,如高粘度、强腐蚀性、污染性强,易结晶的介质。光纤测量法光纤液位检测是近年来出现的一种新技术。根据光导纤维中光在不同介质中传输特性的改变对液位进行测量。光纤液位测量有以下优点:精度高、灵敏度好、抗电磁干扰、耐腐蚀、电绝缘性好、检测现场无电、光路有抗扰性以及便于与计算机连接,便于与光纤传输系统组成网络等。目前,市面上进行液位测量的仪表种类繁多,但是同时具有测量、监控、数据记录及处理的液位测量装置并不多。在某些工业控制系统中,数据的测量这一基本功能已不能满足现代工业的要求,往往需要对大批数据进行记录,对其进行后期处理分析,实现差错控制、工艺改善、资源优化等一系列工作。为了获得大批量的数据,得到可靠的分析资料,往往需要长期、多网点的监控记录。在液位测量这一领域中,如江河湖海、城市用水等方面,大量数据长时间,多网点的采集记录分析具有普遍的意义。液位的变化分析,有助于人们进一步对自然环境、天气变化甚至是灾害预警提供可靠的支持。13 本课题主要研究内容利用单片机设计一个水位控制系统,要求选择合适的水位传感器及电磁阀,当设定完水位后,系统根据水位情况控制电磁阀的开启和关断。具体要求如下:1、设计单片机工作电源模块及其复位电路2、选择合适的水位传感器,单片机通过相应的调理电路采集当前水位值,设计相应的电磁阀控制电路,根据水位情况控制器开启和关断3、通过键盘设置其预定水位4、画出电路方框图,叙述主要模块的功能及他们之间的控制关系和数据传输,利用Visio软件绘制软件流程图5、编制相应的控制程序,并用C语言或汇编语言对软件进行编译。并能通过调试。6、利用protel进行原理图绘制,并利用Proteus进行仿真2 系统设计方案2.1 系统设计方案比较对于水位进行控制的方式有很多,而应用较多的主要有2种,一种是简单的机械式控制装置控制,一种是复杂的控制器控制方式。两种方式的实现如下: (1)简单的机械式控制方式。其常用形式有浮标式、电极式等,这种控制形式的优点是结构简单,成本低廉。存在问题是精度不高,不能进行数值显示,另外很容易引起误动作,且只能单独控制,与计算机进行通信较难实现。 (2)复杂控制器控制方式。这种控制方式是通过安装在水泵出口管道上的压力传感器,把出口压力变成标准工业电信号的模拟信号,经过前置放大、多路切换、AD变换成数字信号传送到单片机,经单片机运算和给定参量的比较,进行PID运算,得出调节参量;经由DA变换给调压变频调速装置输入给定端,控制其输出电压变化,来调节电机转速,以达到控制水位的目的。本设计利用单片机设计一个水位控制系统,要求选择合适的水位传感器及电磁阀,当设定完水位后,系统根据水位情况控制电磁阀的开启和关断。2.2 系统设计总框图电机控制模块A/D转换模块按键与显示模块时间模块存储模块通信模块单片机主控模块 图2-1 系统总体框图2.3 硬件设计方案2.3.1 工作原理基于单片机实现的水位控制器是以AT89C51芯片为核心,由键盘、数码显示、AD转换、传感器,电源和控制部分等组成。工作过程如下:当水位发生变化时,引起连接在水位底部软管管内的空气气压变化,气压传感器在接收到软管内的空气气压信号后,即把变化量转化成电压信号;该信号经过运算放大电路放大后变成幅度为05 V标准信号,送入AD转换器,AD转换器把模拟信号变成数字信号量,由单片机进行实时数据采集,并进行处理,根据设定要求控制输出,同时数码管显示液位高度。通过键盘设置液位高、低和限定值以及强制报警值。该系统控制器特点是直观地显示水位高度,可任意控制水位高度。2.3.2 主控模块设计方案单片机作为主控模块,使得在对单片机选型上有了较大的空间。单片机在30多年的发展历程中,形成了多公司、多系列、多型号“百家争鸣”的局面。因而,选择一个合适的单片机有时真的不太容易,要考虑的方面太多。大致总结出以下几点:1) 单片机的基本参数。例如速度、程序存储器容量、I/O引脚数量等。2) 单片机的增强功能。例如看门狗、双指针、双串口、RTC(实时时钟)、EEPROM、扩展RAM、CAN接口、I2C接口、SPI接口、USB接口。3) Flash和OTP(一次性可编程)。4) 封装:DIP(双列直插),PLCC(PLCC有对应插座)还是贴片。5) 工作温度范围,工业级还是商业机。6) 功耗。7) 工作电压范围。例如设计电视机遥控器,2节干电池供电,至少应该能在1.83.6V电压范围内工作。8) 供货渠道畅通。9) 价格。10) 烧录器价格,能否ISP(在线系统编程)。11) 仿真器。12) 单片机汇编语言支持。13) 资料尽量丰富。14) 抗干扰性能好。15) 和其他外设芯片放在一起的综合考虑。单片机采用由Atmel公司生产的双列40脚AT89C51芯片,如图22所示。其中,P0口用于AD转换和显示;P1口连接一个35的键盘;P2口用于控制电磁阀和水泵动作;P3口用于上、下限指示灯,报警指示灯以及用于读写控制和中断等。 图2-2 AT89C51的管脚图 2.3.3 键盘显示模块设计方案键盘显示电路主要是实现水位设定值的输入和显示实时水位的功能。键盘接口及其软件的设计任务主要包括:是否有键按下的检测并判断键值,有操作则进行延时去消抖,并根据键值计算出调整量送执行机构开启进水或排水阀,进行一系列的动作处理和执行。本系统采用4行4列的16键行列式键盘,占用单片机P1口的8个端口。显示采用4位LED数码显示当前水位测量值。2.3.4 A/D转换模块设计方案ADC0809是M美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片。1、主要特性(1)8路输入通道,8位A/D转换器,即分辨率为8位。 (2)具有转换起停控制端。 (3)转换时间为100s(时钟为640kHz时),130s(时钟为500kHz时) (4)单个5V电源供电 (5)模拟输入电压范围05V,不需零点和满刻度校准。 (6)工作温度范围为-4085摄氏度 (7)低功耗,约15mW。2、内部结构和外部引脚ADC0809的内部结构和外部引脚分别如下两图所示。内部各部分的作用和工作原理在内部结构图中已一目了然,在此就不再赘述,下面仅对各引脚定义分述如下: (1)IN0IN78路模拟输入,通过3根地址译码线ADDA、ADDB、ADDC来选通一路。(2)D7D0A/D转换后的数据输出端,为三态可控输出,故可直接和微处理器数据线连接。8位排列顺序是D7为最高位,D0为最低位。(3)ADDA、ADDB、ADDC模拟通道选择地址信号,ADDA为低位,ADDC为高位。地址信号与选中通道对应关系如表11.3所示。(4)VR(+)、VR(-)正、负参考电压输入端,用于提供片内DAC电阻网络的基准电压。在单极性输入时,VR(+)=5V,VR(-)=0V;双极性输入时,VR(+)、VR(-)分别接正、负极性的参考电压。(5)ALE地址锁存允许信号,高电平有效。当此信号有效时,A、B、C三位地址信号被锁存,译码选通对应模拟通道。在使用时,该信号常和START信号连在一起,以便同时锁存通道地址和启动A/D转换。(6)STARTA/D转换启动信号,正脉冲有效。加于该端的脉冲的上升沿使逐次逼近寄存止,重新从头开始转换器清零,下降沿开始A/D转换。如正在进行转换时又接到新的启动脉冲,则原来的转换进程被中。地 址选中通道ADDCADDBADDA000011110011001101010101IN0IN1IN2IN3IN4IN5IN6IN7 图23 ADC0809外部引脚图7)EOC转换结束信号,高电平有效。该信号在A/D转换过程中为低电平,其余时间为高电平。该信号可作为被CPU查询的状态信号,也可作为对CPU的中断请求信号。在需要对某个模拟量不断采样、转换的情况下,EOC也可作为启动信号反馈接到START端,但在刚加电时需由外电路第一次启动。(8)OE输出允许信号,高电平有效。当微处理器送出该信号时,ADC0808/0809的输出三态门被打开,使转换结果通过数据总线被读走。在中断工作方式下,该信号往往是CPU发出的中断请求响应信号。2.3.5 电机控制模块设计方案选用继电器作为电机控制的元件。继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。继电器主要产品技术参数:1) 额定工作电压。是指继电器正常工作时线圈所需要的电压。根据继电器的型号不同,可以是交流电压,也可以是直流电压。2) 直流电阻。是指继电器中线圈的直流电阻,可以通过万能表测量。3) 吸合电流。是指继电器能够产生吸合动作的最小电流。在正常使用时,给定的电流必须略大于吸合电流,这样继电器才能稳定地工作。而对于线圈所加的工作电压,一般不要超过额定工作电压的1.5倍,否则会产生较大的电流而把线圈烧毁。4) 释放电流。是指继电器产生释放动作的最大电流。当继电器吸合状态的电流减小到一定程度时,继电器就会恢复到未通电的释放状态。这时的电流远远小于吸合电流。5) 触点切换电压和电流。是指继电器允许加载的电压和电流。它决定了继电器能控制电压和电流的大小,使用时不能超过此值,否则很容易损坏继电器的触点。根据以上的参数,结合设计的演示性,选用额定工作电压120VAC/24VDC,工作电流3A,控制电压5VDC的小型继电器。3 硬件电路设计3. 1 AT89S52硬件设计AT89S52引脚定义及功能介绍如图3-1。图3-1 AT89S52引脚及网络标号P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在FLASH编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如下所示:l 在FLASH编程和校验时,P1口接收低8位地址字节。l 引脚号第二功能:P1.0/T2 (定时器/计数器T2的外部计数输入),时钟输出P1.1/T2EX (定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI (在系统编程用)P1.6 MISO (在系统编程用)P1.7 SCK (在系统编程用)P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在FLASH编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。表3-1 端口引脚第二功能端口号第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INTO(外中断0)P3.3INT1(外中断1)P3.4TO(定时/计数器0)P3.5T1(定时/计数器1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。为了便于接下来的说明,单片机各管脚网络标号定义如图3-1。根据电路设计规范和AT89S52芯片手册,设计时钟电路与复位电路如图3-2:图3-2 复位电路及时钟电路图中网络标号RST连接单片机RST引脚,具有上电复位与手动复位的功能;XTAL1与XTAL2连接单片机XTAL1和XTAL2引脚,且并联两个30pF匹配电容使晶振起振。由于单片机P0口作普通I/O口时不能输出高电平,因此需接上拉电阻,实际电路中,使用8*10K电阻作为上拉电阻。3. 2 按键设计键盘在单片机应用系统中是一个很关键的部件,它能实现向单片机系统输入数据、发送命令等功能,是人工干预单片机的主要手段。考虑到本设计实际需要的按键较少,故采用独立式键盘接口电路。它是将每个独立按键按一对一的方式直接接到单片机的I/O口上,通过程序扫描查询方式实现与单片机系统交互的。在程序查询方式下,通过I/O端口读入按键状态,当有按键按下时,相应的I/O端口变为低电平,而未被按下的按键在上拉电阻作用下为高电平,这样通过读I/O口的状态判断是否有按键按下。系统按键电路如图3-3所示。下图中,S2S5便是控制显示用的按键。其作用就是通过按动它们实现对高低警戒液位的设置。具体来说,S3、S4分别实现数字的增一与减一,S2、S5则作为高低警戒液位的模式选择和确认键。图3-3 系统按键电路3. 3 显示单元硬件设计在显示单元上,使用了74LS273带公共时钟复位八位触发器与74LS47共阳极BCD显示译码驱动芯片。两个芯片的管脚图如图3-4:图3-4 74LS273及74LS47引脚图3. 4 存储单元硬件设计存储模块的硬件设计比较简单,由于AT89S52单片机为数据线与低8位地址线复用,需要使用地址锁存芯片74LS373。上文中已叙述,使用32KRAM作为存储芯片,因此选用与51系列兼容的62256随机数据存储器。该模块中使用的两个芯片管脚功如图3-6:在62256中,A0A14管脚为地址总线,共15位,寻址范围可达到32kB;I/O0I/O7为8位三态双向数据接口;Vcc,Vss为电源和地;CS是片选接口,低电平有效;OE/WE分别是读选通和写选通数据输入输入线,低电平有效。图3-5 62256引脚图图3-6 存储的单元电路3. 5 时间单元硬件设计DS1302因其较小的体积,占用I/O口资源少等特点,是常用的时间芯片。此次设计采用DIP-8封装,管脚功能如图3-8:图3-7 DS1302引脚图其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中电压较大者供电。当Vcc2大于Vcc10.2V时,Vcc2供电,当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源接口,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传输。RST输入有两种功能:首先RST接通控制逻辑,允许地址/命令序列送入移位寄存存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果传送过程中RST置为低电平,则会终止此次传输,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端。SCLK始终是输入端,用来输入串行时钟信号。根据DS1302的特点,设计电路如图3-9:图3-8 时间单元电路在实际应用中,起控制、输入输出的三个端口上拉较弱,容因产生信号串扰,因此加上了上拉电阻与单片机P1口相连,加强信号的稳定性;为了保证时钟的可靠性,在Vcc1上使用了CR2032纽扣电池作为备用电源,输出电压为3V,从而保证了系统掉电状态下,时钟能够继续保持运行。3. 6 A/D转换单元硬件设计A/D转换模块是系统中较为重要的一部分,由于涉及到模拟部分,A/D转换器的结构较为复杂。图3-9 ADC0804引脚图根据以上参数分析,设计电路如图3-11:图3-10 A/D转换单元电路图3. 7 通信单元硬件设计MAX485仅有8个管脚,电路设计比较简单。图3-11 MAX485引脚图RO引脚接到单片机串口接收引脚RXD(P3.0),DI引脚接到单片机串口发送引脚TXD(P3.1)。由于MAX485为半双工通信方式,不能同时发送和接收数据,只能通过控制RE和DE引脚的状态来进行发送数据和接收数据的转换。为了节省单片机I/O口资源,将RE和DE引脚连在一起,输入低电平时,MAX485处于接收状态;输入高电平时,其处于发送数据状态。定义RE和DE连接在一起的网络标号为E,接入单片机P1口,用于发送与接收的转换。A,B端为发送接收差分信号端,一般需在A,B端之间加匹配电阻,匹配电阻为120。硬件电路如图3-13:图3-12 串行通信模块电路图3. 8 其他外围电路的设计继电器电路设计。由于使用单片机I/O口的驱动电流较弱,不满足继电器吸合电流参数的要求,所以需使用三极管驱动继电器吸合。设计电路如图3-14。为了防止电源尖峰脉冲引发的噪声干扰以及高频信号线间的耦合干扰,在电源入口处及芯片顶端或底端,接入去耦电容,以增强系统的稳定性。电源指示灯设计如图3-15。图3-13 继电器部分电路图 3-14 电源指示灯电路图4 软件程序设计4.1 系统主程序流程图系统主程序的功能主要是完成对单片机的初始化,设置警戒液位的上下限,实时显示液位值以及键盘扫描等工作。主程序流程图如图4-1所示。开始CPU初始化参数设定是否有按键采样子程序显示实时液位数据处理子程序控制电机启停按键处理是否 图41 主程序流程图4.2 显示与A/D转换的数据处理系统中,显示输出的要求为压缩BCD码,而A/D转换输入的数据是8位16进制码,因此在实现显示之前需要编码的转换。对8位A/D转换器而言,其十六进制、相对满偏电压比率、相对电压幅值的关系对应如表4-2:十六进制二进制满刻度比率相对电压幅值Vref=2.5V高四位低四位高四位电压低四位电压F111115/1615/2564.8000.320E111014/1614/2564.4800.280D110113/1613/2564.1600.260C110012/1612/2563.8400.240B101111/1611/2563.5200.220A101010/1610/2563.2000.200910019/169/2562.8800.180010008/168/2562.5600.160701117/167/2562.2400.140601106/166/2561.9200.120501015/165/2561.6000.100401004/164/2561.2800.080300113/163/2560.9600.060200102/162/2560.6400.040100011/161/2560.3200.020000000/160/2560.0000.000 表4-2 A/D转换幅值数据关系对照表显示转换部分程序简略如下:uchar dis_transform(uchar num)uchar ac, quotient, play, mid ;ac = num%5;quotient = (num-ac)/5;if(ac2)quotient+;ac=quotient%10;mid=(quotient-ac)/10;play=ac+mid*16;return play;4.3 系统主程序ORG 0000HAJMP MAINORG 0060HMAIN: MOV P1, #FFH ; P1 P3口初始化置1MOV P3,#FFHJNB P1.3 , AVT ; 若手动在自动位置,跳到自动模式程序AJMP MEN ; 否则转到手动模式子程序ENDAUT: NOP(空命令)JNB P1.2 , LG ; 水位高LGJB P1.1 LD , ; 水位没低-LDCLR P3.1 ; 水位低报警JB P1.0, LDD ; 水位未低低-LDDCLR P3.0 ; 水位低低报警JNB 3.1 P1.6, Y1 ; M1已启动Y1CLR P1.4 ; 否则启动M1Y1:JNB P1.7 ,Y2 ; M2已启动-Y2 CLR P1.5 ; 否则启动M2Y2:ACALL DELAY ; 延时1分钟 AJMP AUT ; 返回自动模式LDD: JNB P1.6 ,Y3 ; 单独运行M1(LDD水位LD)CLR P1.4Y3: JB P1.7 Y2 SETB P1.5 AJMP Y2 LG:CLR P3.2 ; 水位高报警 LD: AJMP MAIN ; 返回主程序 5 总结作为一名电气的大四学生,在即将毕业之际,通过做这次课程设计是很有意义的,而且也是必要的。在做这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。其次,在这次课程设计中,我们运用了以前学过的专业课知识,如:proteus仿真、汇编语言、模拟和数字电路知识等。虽然过去我从未独立应用过他们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,这样为资料的保留和交流提供了方便;在设计中遇到的问题要记录,以免下次遇到同样的问题。在这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次课程设计的最大收获。附 录 系统软件源代码#include #include #define uchar unsigned charuchar hostmark;uchar idata sec,min,hr,date,mon,day,year;uchar idata uplq,downlq,numm,prelq,xdat,key;uchar xdata * idata numtab;uchar xdata * idata xmark;uchar idata num1,num2;int tab;uchar bdata iodat;uchar bdata ddat;sbit iodat7=iodat7;sbit ddat0=ddat0;sbit SCLK=P10;sbit IO_DATA=P11;sbit RST=P12;sbit adRD=P13;sbit adWR=P14;sbit E=P15;sbit DIS=P16;sbit RELAY=P17;/*延迟子程序*yanshi()int i,j;for(i=0;i120;i+)for(j=0;j2)quotient+;ac=quotient%10;mid=(quotient-ac)/10;play=ac+mid*16;return play;/液位显示*display()DIS=0;_nop_();_nop_();_nop_();_nop_();_nop_();P0=dis_transform(prelq);_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();DIS=1;/*/DS1302读写*ds_read()uchar j;iodat=0x00;for(j=8;j0;j-)iodat=iodat1;iodat7=IO_DATA;_nop_();SCLK=1;_nop_();SCLK=0;ds_write(uchar ad)uchar i;ddat=ad;for(i=8;i0;i-)IO_DATA=ddat0;_nop_();SCLK=1;_nop_();ddat=ddat1;SCLK=0;/读取时间*uchar ds_gettime(uchar gadd) RST=0;_nop_();SCLK=0;_nop_();RST=1;ds_write(gadd);IO_DATA=1;ds_read();RST=0;return iodat; /设置时间*ds_settime(uchar sadd,uchar sdat)RST=0;_nop_();SCLK=0;_nop_();RST=1;ds_write(sadd);ds_write(sdat);RST=0;/*/*ad转换模块*ad_start() /启动 adWR=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();adWR=1;_nop_();_nop_();_nop_();ad_read() /读取P0=0xff;/adWR=0;_nop_();_nop_();adRD=0;_nop_();_nop_();prelq=P0;_nop_();_nop_();adRD=1;adWR=1;getalltime() /读所有时间sec=ds_gettime(0x81 );min=ds_gettime(0x83 );hr=ds_gettime(0x85 );date=ds_gettime(0x87 );mon=ds_gettime(0x89 );day=ds_gettime(0x8b );year=ds_gettime(0x8d );/*/*初始化*sp_init()TMOD=0x22;SCON=0x40;TH1=0xf4;TL1=0xf4;PCON=0x80;IE=0;TR1=1;REN=1;port_init()adRD=1;adWR=0;E=0;DIS=0;RELAY=1;data_init()xmark=0x7531;if(*xmark!=0xf0)xmark=0x0000;*xmark=0;numtab=0x0001;xmark=0x7531;*xmark=0xf0;num1=0;num2=0;ad_start();_nop_();_nop_();_nop_();ad_read();key=0;uplq=0x0af;downlq=0x96;getalltime();ds_init()if(ds_gettime(0xc1)!=0xaa) sec=0x00;min=0x00;hr=0x00;date=0x01;mon=0x01;day=0x04;year=0x09;ds_settime(0x90,0xab);ds_settime(0x80,sec);ds_settime(0x82,min);ds_settime(0x84,hr);ds_settime(0x86,date);ds_settime(0x88,mon);ds_settime(0x8a,day);ds_settime(0x8c,year);ds_settime(0xc0,0xaa);main_init()port_init();sp_init();ds_init();data_init();display();/*/串口通信*uchar receive()/接收int tmp; E=0; while(!RI); tmp=SBUF; RI=0; E=0; return tmp;send(uchar dd) /发送E=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();SBUF=dd;while(!TI);TI=0;E=0;/*/通信子程序*sp_connection()send(0xF0);sp_readtime()getalltime();send(0xF1);send(sec);send(min);send(hr);send(date);send(mon);send(day);send(year);sp_settime()send(0xf2);_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();sec=receive();min=receive();hr=receive();date=receive();mon=receive();day=receive();year=receive();ds_settime(0x80,sec);ds_settime(0x82,min);ds_settime(0x84,hr);ds_settime(0x86,date);ds_settime(0x88,mon);ds_settime(0x8a,day);ds_settime(0x8c,year);sp_readrec()send(0xf3);_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();send(prelq); sp_readdat()uchar xdata *pt;send(0xF4);send(num1);send(num2);yanshi();yanshi();xmark=0x0000;if(*xmark=0)for(pt=0x0001;ptnumtab;pt+)send(*pt);numtab=0x0001;num1=0;num2=0;*xmark=0;elsefor(pt=0x0001;pt=uplq & key=1) RELAY=1;key=0;makemark(1);else if(prelq=downlq & key=0)RELAY=0;key=1;makemark(0);/*/*主程序*main()main_init();while(1)check_lq();display();check_host(); 计算机控制技术课程设计说明书参 考 文 献1张毅刚,彭喜元,董继成.单片机原理及应用M.北京:高等教育出版社,2003.2李书旗,沈金荣.液位测量传感器系统的设计与实现J.计算机测量与控制,2009,17(11):2131-2133.3郑伟建,夏扬,夏晴.自抗扰控制器在液位控制中的研究J.计算机仿真,2009,26(10):190-193.4钟晓强.基于单片机实现的液位控制器设计J.现代电子技术,2009,32(2):51-53.5蔡黎.一种基于单片机的水位控制系统设计J.仪器仪表用户,2007,14(4):44-45.6陈霞,白小军.基于单片机的液位监控系统J.武汉理工大学学报,2007,29(3):3-5.7陈新昌,王万章,李祥付.单片机在水位控制中的应用J.中国科技信息,2006,(24):89-90,94.8苏晓龙,王香婷.基于RS-485总线的数据采集系统J.仪表技术与传感器,2007,(12).9张宝伟.基于Lab VIEW的液位监控系统D.哈尔滨:哈尔滨工业大学,2007.10张凤兰.液位测量与监控系统设计D.北京:北方工业大学,2010.11任开春,涂亚庆.20余种液位测量方法分析J.工业仪表与自动化装置,2003,(5):12-16.12柳军,等.基于AVR单片机的液面测量监控系统的设计J.中国医疗设备,2009,24(12):27-30.13丁希顺.单片微型计算机液位测量系统设计J.安阳师范学院学报,2005(2):71-73.14老虎工作室编著.电路设计与制版:Protel 99SE入门与提高M.北京:人民邮电出版社,2007.- 30 -
收藏