




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南工业职业技术学院河南工业职业技术学院毕业论文(设计)论文题目:基于单片机的液位控制题 目 基于单片机的液位控制班 级 电气1206专 业 电气自动化学生姓名 王嵘奎指导教师 朱清智日 期 年 月 日摘 要 液位测量广泛应用于工业、经济、生活等领域。本设计以水箱供水为模型,用于对水箱液位信号进行测量监控记录。 基于单片机的液位测量装置具有测量准确、重复性好、功耗低、使用寿命长的特点,是广泛采用的技术。在深入学习科学发展观的同时,电子设备的设计也需融入可持续发展的设计理念。故此,在基于单片机的液位测量装置基础上,扩展实时监控、数据采集、计算机串行通信等功能,从而能够通过科学的方法将液位测量与统计科学结合,合理调度水资源,降低能源消耗。 本文从系统方案选择与论证,硬件电路设计,系统软件与上位机软件设计等几个方面介绍了基于单片机的液位测量监控系统的设计过程,最终实现了液位的实时测量与监控。最后,本文总结了设计过程中出现的问题及解决方法,简要叙述了所获数据的处理方法,引出了进一步设计开发的思路。 关键词:单片机;液位测量;实时监控;串口通信 目录引 言4第一章系统总体方案51.1 系统设计要求51.2 硬件设计方案51.2.1 主控模块设计方案51.2.2 数据存储模块设计方案71.2.3 时间模块设计方案81.2.4 A/D转换模块设计方案91.2.5 通信模块设计方案11第二章 硬件电路设计132.1 AT89S52硬件设计132.2 按键设计16第三章 系统软件设计183.1显示与A/D转换的数据处理183.2 按键部分软件设计193.3 显示模块的软件设计213.4 A/D转换模块软件设计223.5 电机控制模块软件设计223.6通信协议及通信模块软件设计233.7 时间模块软件设计253.8 上位机软件中的数据处理27结论与展望29感谢32参考文献33引 言上世纪40年代,电子计算机的诞生,标志着人类电子技术进入了一个新的阶段。1976年单片机的推出为电子电路设计提供了新的思路,也促进了模拟电路向数字电路发展的历程。它在一片芯片上集成了完整的计算机系统。从它的发展来看,低功耗CMOS化、微型单片化、主流与多品种共存的发展趋势更进一步促使了单片机在各个行业的应用。这些应用,很大一方面体现在工业控制中。在工业上,使用单片机可以构成形式多样的控制系统和数据采集系统。 单片机应用发展迅速而广泛。在过程控制中,单片机既可作为主计算机,又可作为分布式计算机控制系统中的前端机,完成模拟量的采集和开关量的输入、处理和控制计算,然后输出控制信号。单片机广泛用于仪器仪表中,与不同类型的传感器相结合,实现诸如电压、功率、频率、湿度、流量、速度、厚度、压力、温度等物理量的测量;在家用电器设备中,单片机已广泛用于电视机、录音机、电冰箱、电饭锅、微波炉、洗衣、高级电子玩具、家用防盗报警等各种家电设备中。在计算机网络和通信、医用设备、工商、金融、科研、教育、国防、航空航天等领域都有着十分广泛的应用。 工程应用中液位的测量常用方法主要有超声波、激光红外测距、机械浮子、压力传感器测距等几种。这些测量方式对一般液位的测量来说各有各的优点,可根据不同的应用场合和要求进行选择。比如,常见的液位控制系统多采用浮标、电极等,这种控制形式结构简单成本低廉,但是控制精度不高,不能进行数值显示;另外容易引起误操作,与上位机进行信息交互比较困难。 随着科技的发展,液位测量技术趋于智能化、微型化、可视化。本设计思想是用单片机做下位机,PC机做上位机,单片机和PC机相结合对水箱液位进行测量和监控。该设计要求具有一定的智能化,可操作性和稳定性好。 第一章系统总体方案1.1 系统设计要求 本设计以水箱供水为模型,鉴于单片机液位测量装置的测量准确、重复性能好、功耗低、使用寿命长等特点,设计以单片机为基础的液位测量监控记录系统。它具有实时测量监控水箱液位高度并显示的功能,并根据实时水量与设置的上、下液位参数的比较,启动电机供水或停止水泵。在启动电机与停止水泵时,实时记录时间点与电机状态。液位测量高度5米,测量精度10%,AC220V供电。 可通过上位机软件,可与监控记录系统进行通信,能够从PC机获取当前液位高度、电机状态、设备系统时间、上下液位高度等数据,并可根据需要改变系统默认的参数。同时可以获取设备运行时记录的数据,并能够对数据保存。能够根据一定的算法,计算分析单位时间水箱消耗水量,绘制图形,通过计算分析的结果,可以进行区域用水统筹,降低能源的消耗。 1.2 硬件设计方案1.2.1 主控模块设计方案 单片机作为主控模块,使得在对单片机选型上有了较大的空间。单片机在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) 和其他外设芯片放在一起的综合考虑。 根据以上因素:系统的实时性要求不高,因而运算速度无需很快,且系统规模不大,采用分时复用的方式使用总线,对I/O口的数量可以要求进一步降低。使用4路8位I/O接口即可满足设计要求;系统中需要扩展外部存储器对数据进行存储,数据存储量为32KB已满足要求,因此采用16位或准16位地址总线的单片机即可满足设计需要;由于是实验阶段,采用DIP(双列直插)封装的芯片便于实验,暂不考虑实际工业控制中的对外界环境的具体要求;系统采用AC220V供电,且对功耗没有具体要求,使用DC5V为芯片供电,便于系统外围电路的设计;芯片支持ISP可节省仿真器的投入。综上所述,采用与MCS-51兼容的AT89S52单片机满足设计要求。 AT89S52是一种低功耗、高性能CMOS工艺的8位微控制器,具有8K在线系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。1.2.2 数据存储模块设计方案 使用AT89S52内部256字节的数据存储器记录数据是远远不够的,因而需要扩展数据存储器进行数据存储。 数据存储器可选择的种类繁多,常用的有随机存取存储器(RAM)、只读存储器(ROM)与闪存(FLASH)。 RAM是存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。 ROM通常指固化存储器(一次写入,反复读取),它的特点与RAM相反。ROM又分一次性固化、光擦除和电擦除重写两种类型。 闪存则是一种不挥发性(Non-Volatile)内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。 NOR和NAND是现在市场上两种主要的非易失闪存技术。 NAND闪存的存储单元则采用串行结构,存储单元的读写是以页和块为单位来进行(一页包含若干字节,若干页则组成储存块,NAND的存储块大小为8到32KB),这种结构最大的优点在于容量可以做得很大,超过512MB容量的NAND产品相当普遍, NAND闪存的成本较低,有利于大规模普及。 NAND闪存的缺点在于读速度较慢,它的I/O端口只有8个,比NOR要少多了。这区区8个I/O端口只能以信号轮流传送的方式完成数据的传送,速度要比NOR闪存的并行传输模式慢得多。再加上NAND闪存的逻辑为电子盘模块结构,内部不存在专门的存储控制器,一旦出现数据坏块将无法修,可靠性较NOR闪存要差。NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在14MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于FLASH的管理和需要特殊的。 可以看出ROM的存储复杂,不适宜实时系统的数据存储。 FLASH是一个不错的解决方案。鉴于系统的复杂程度,暂时不考虑使用FLASH作为存储单元。 根据设计要求,记录某一记录点(电机状态改变时刻)的状态与时间需要6字节数据,即年(2000-2099年)、月(1-12月)、日(1-31日)、时(0-23时)、分(0-59分)、状态(0或1)这些数据,如果系统长时间的工作,将会有大批量的数据产生,假若数据存储空间不够大,将会产生数据的覆盖,从而降低了对数据分析的准确性。因此选用32K字节的数据存储器,可以记录大于5000项记录点数据,考虑到水箱上水与耗水的频繁程度不高,5000项数据已基本满足后期数据处理的需求。在实际应用中,系统设计在不掉电的工作环境下;软件上,上位机软件对数据提取后即可保存在PC机中,5000项数据进行时间上的缓冲是充足的。为节省CPU的工作时间,且由于RAM存储速度快、使用方便等特点,从而可以忽略了RAM掉电数据丢失的缺点。 1.2.3 时间模块设计方案 通过单片机的定时器,可以设计时间功能,然而单片机自身的产生时间数据大大占用了系统的资源,降低了工作效率,甚至影响了其他功能的实现,因此在本设计方案中,采用了外部芯片提供时间信号,用以系统记录时间信息。 目前市场上的时钟芯片很多,如DS1302/DS1307/HT1380/HT1381/PCF8563等。 DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日期、日、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线(1) RES(复位),(2) I/O(数据线),(3) SCLK(串行时钟)。时钟/RAM的读、写数据以一个字节或多达31个字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。 DS1302是由DS1202改进而来,增加了以下的特性双电源管脚用于主电源和备份电源供应,Vcc1为可编程涓流充电电源,附加七个字节存储器。它广泛应用于电话、传真、便携式仪器以及电池供电的仪器仪表等产品领域。下面将主要的性能指标作一综合: l 实时时钟具有能计算2100年之前的秒、分、时、日期、星期、月、年的能力,还有闰年调整的能力。 l 31*8位暂存数据存储RAM。 l 串行I/O口方式使得管脚数量最少。 l l 宽范围工作电压2.05.5V。 ll 工作电流2.0V时,小于300nA。 l 读/写时钟或RAM数据时有两种传送方式单字节传送和多字节传送字符组方式。 ll 8脚DIP封装或可选的8脚SOIC封装。l 简单3线接口。 l l 与TTL兼容Vcc=5V。 l l 可选工业级温度范围40至85摄氏度。 l 与DS1202兼容。 l l 在DS1202基础上增加的特性: 对Vcc1有可选的涓流充电能力; 双电源管用于主电源和备份电源供应; 备份电源管脚可由电池或大容量电容输入; 附加的7字节暂存存储器。 综上所述,选用DS1302时间芯片完全满足设计的需求。 1.2.4 A/D转换模块设计方案 A/D器件和芯片是实现单片机数据采集的常用外围器件。A/D转换器的品种繁多、性能各异,在设计数据采集系统时,首先碰到的就是如何选择合适的A/D转换器以满足系统设计要求的问题。选择A/D转换器件需要考虑器件本身的品质和应用的场合要求。基本上,可以根据以下几个方面的指标选择一个A/D器件。 1) A/D转换器位数 A/D转换器位数的确定,应该从数据采集系统的静态精度和动态平滑性这两个方面进行考虑。从静态精度方面来说,要考虑输入信号的原始误差传递到输出所产生的误差,它是模拟信号数字化时产生误差的主要部分。量化误差与A/D转换器位数有关。一般把8位以下的A/D转换器归为低分辨率A/D转换器,912位的称为中分辨率转换器,13位以上的称为高分辨率转换器。10位以下的A/D芯片误差较大,11位以上对减小误差并无太大贡献,但对A/D转换器的要求却提得过高。因此,取10位或11位是合适的。由于模拟信号先经过测量装置,再经A/D转换器转换后才进行处理,因此,总的误差是由测量误差和量化误差共同构成的。A/D转换器的精度应与测量装置的精度相匹配。也就是说,一方面要求量化误差在总误差中所占的比重要小,使它不显著地扩大测量误差;另一方面必须根据目前测量装置的精度水平,对A/D转换器的位数提出恰当的要求。 目前,大多数测量装置的精度值不小于0.1%0.5%,故A/D转换器的精度取0.05% 0.1%即可,相应的二进制码为1011位,加上符号位,即为1112位。当有特殊的应用时,A/D转换器要求更多的位数,这时往往可采用双精度的转换方案。2) A/D转换器的转换速率 A/D转换器从启动转换到转换结束,输出稳定的数字量,需要一定的转换时间。转换时间的倒数就是每秒钟能完成的转换次数,称为转换速率。 确定A/D转换器的转换速率时,应考虑系统的采样速率。例如,如果用转换时间为100us的A/D转换器,则其转换速率为10KHz。根据采样定理和实际需要,一个周期的波形需采10个样点,那么这样的A/D转换器最高也只有处理频率为1KHz的模拟信号。把转换时间减小,信号频率可提高。对一般的单片机而言,要在采样时间内完成A/D转换以外的工作,如读数据、再启动、存数据、循环计数等已经比较困难了。 3) 采样/保持器 采集直流和变化非常缓慢的模拟信号时可不用采样保持器。对于其他模拟信号一般都要加采样保持器。如果信号频率不高,A/D转换器的转换时间短,即采样高速A/D时,也可不用采样/保持器。 4) A/D转换器量程 A/D转换时需要的是双极性的,有时是单极性的。输入信号最小值有的从零开始,也有从非零开始的。有的转换器提供了不同量程的引脚,只有正确使用,才能保证转换精度。在使用中,影响A/D转换器量程的因素有:量程变换和双极性偏置;双基准电压;A/D转换器内部比较器输入端的正确使用。 5) 满刻度误差 满度输出时对应的输入信号与理想输入信号值之差。 6) 线性度 实际转换器的转移函数与理想直线的最大偏移。 1.2.5 通信模块设计方案 AT89S52单片机内部有一个全双工异步串行I/O接口,占用P3.0和P3.1两个引脚。利用该接口,可实现系统与上位机的通信。 不同设备间串口通信的过程中,需要采用相同的的接口标准才能通信。 典型的串行通讯标准是RS232和RS485,它们定义了电压,阻抗等,但不对软件协议给予定义。 RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(Ecommeded Standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。 区别于RS232,RS485的特性包括: 1) RS-485的电气特性:逻辑“1”以两线间的电压差为(26)V表示;逻辑“0”以两线间的电压差为(26)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。 2) RS-485的数据最高传输速率为10Mbps。 3) RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。 4) RS-485接口的最大传输距离标准值为4000英尺,实际上可达3000米,另外RS-232-C接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。 因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。 PC机作为上位机,一般情况下带有RS-232C通信接口,鉴于RS-485接口的优点与系统实际工作环境的需要,系统采用RS-485接口标准,使用RS-232/RS-485转换器与PC机连接进行通信。 MAX485接口芯片是Maxim公司的一种RS-485芯片。采用单一电源5V工作,额定电流为300A,采用半双工通讯方式。它完成将TTL电平转换为RS-485电平的功能。 第二章 硬件电路设计2.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特殊功能(第二功能)使用,如下表所示。此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。 RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。 为了便于接下来的说明,单片机各管脚网络标号定义如图3-1。 要使单片机按照设计要求正常工作,完整单片机最基本的工作要求,考虑到系统无需精确地定时功能,且为了方便串口通信波特率的计算,采用11.0592MHz的晶振提供系统时钟。并附加复位电路,组成单片机最小系统。根据电路设计规范和AT89S52芯片手册,设计时钟电路与复位电路如图:图中网络标号RST连接单片机RST引脚,具有上电复位与手动复位的功能;XTAL1与XTAL2连接单片机XTAL1和XTAL2引脚,且并联两个30pF匹配电容使晶振起振。 由于单片机P0口作普通I/O口时不能输出高电平,因此需接上拉电阻,实际电路中,使用8*10K电阻作为上拉电阻。 2.2 按键设计 键盘在单片机应用系统中是一个很关键的部件,它能实现向单片机系统输入数据、发送命令等功能,是人工干预单片机的主要手段。考虑到本设计实际需要的按键较少,故采用独立式键盘接口电路。它是将每个独立按键按一对一的方式直接接到单片机的I/O口上,通过程序扫描查询方式实现与单片机系统交互的。在程序查询方式下,通过I/O端口读入按键状态,当有按键按下时,相应的I/O端口变为低电平,而未被按下的按键在上拉电阻作用下为高电平,这样通过读I/O口的状态判断是否有按键按下。系统按键电路如图3-3所示。 下图中,S2S5便是控制显示用的按键。其作用就是通过按动它们实现对高低警戒液位的设置。具体来说,S3、S4分别实现数字的增一与减一,S2、S5则作为高低警戒液位的模式选择和确认键。 图系统按键电路2.3 通信单元硬件设计 MAX485仅有8个管脚,电路设计比较简单图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.1显示与A/D转换的数据处理 系统中,显示输出的要求为压缩BCD码,而A/D转换输入的数据是8位16进制码,因此在实现显示之前需要编码的转换。对8位A/D转换器而言其十六进制、相对满偏电压比率、相对电压幅值的关系对应如表:十六进制二进制满刻度比率相对电压幅值Vref=2.5V高四位低四位高四位电压低四位电压E111115/1615/2564.8000.320F111014/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/166/2561.6000.100401004/165/2561.2800.080300113/164/2560.9600.060200102/163/2560.6400.040100011/162/2560.3200.020000000/161/2560.0000.000表A/D转换幅值数据关系对照表综上,电压幅值与液位高度在数值上是相等的。为了通过LED直观显示液位高度,进行转换的思路如下: 设输入8位二进制数据为n,5/n的商即为以分米为单位的液位高度数据,余数为以厘米为单位的数据,由于显示位数仅为2位,最低位为分米,固使用“二舍三入”的办法保留分米单位的整数倍数据1n。为了将这个数据转换为为压缩BCD码,再将10/1n,得到的商左移四位(相当于乘以16)为压缩BCD码高四位,余数为压缩BCD码低四位,二者相加,就是最终的结果。 显示转换部分程序简略如下: 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; 3.2 按键部分软件设计 由于使用的按键较少,所以本文采用了独立式键盘,即每个按键单独占用一根口线。在程序查询方式下,通过I/O端口读入按键状态,当有按键按下时,相应的端口变为低电平,这样通过读入I/O口状态判断是否有按键按下。查询式键盘的程序流程图如下图3-2 键盘程序流程图下面给出键盘扫描的主程序,其分支程序省略。 void judge_key(void) uchar Key_value=0; Key_value=P3&0x3c; /*读取键值*/ switch(Key_value) case 0x38:delay(30000); /*调用延时子程序*/ if(Key_value=(P3&0x3c) /*进行判断按键是否为干扰*/ manage_key2();break; /*调用子函数*/ else break; case 0x1c:delay(30000); if(Key_value=(P3&0x3c) manage_key5();break; else break; default:break; 3.3 显示模块的软件设计 由于使用了静态锁存显示,需要对显示数据进行处理后进行锁存控制。硬件设计中使用了74LS273锁存数据。它的特点是在ALE输入信号的下降沿到来时锁存信号,因此首先置控制引脚高电平,延迟几个时钟周期待信号稳定,P0口输出处理后的数据,同样延迟几个时钟周期待信号稳定,控制引脚置低电平,数据锁存,显示输出。 液位显示部分程序简略如下: display() DIS=0; _nop_(); _nop_(); _nop_(); P0=dis_transform(prelq); _nop_(); _nop_(); _nop_(); DIS=1; 3.4 A/D转换模块软件设计 A/D转换的控制变量有两个,即adWR与adRD;上文中已说明了它的功能,故不再重复。该模块分为两个阶段,第一阶段是为A/D转换启动控制,通过adWR复位延迟置位完成。第二阶段是数据的提取过程,由于P0口做输入时的特性,首先软件上将P0口寄存器置为0xFF,延迟适当时间后adRD复位,输出A/D转换结果,随之通过P0口读入数据,还原adRD为高,该阶段结束。两个阶段中可加如适当的延迟,以满足ADC0804 100ns的转换时间。3.5 电机控制模块软件设计本设计采用单片机主控芯片控制继电器外围电路,用于驱动电机的启动与关停。其程序流程图如图4-3所示。以下是液位检测与电机控制部分源程序代码: check_lq() ad_start(); _nop_(); _nop_(); _nop_(); ad_read(); if(prelq=uplq & key=1) RELAY=1; key=0; makemark(1); else if(prelq0;j-) iodat=iodat1; odat7=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; 3.8 上位机软件中的数据处理 由于MFC下的编程设计许多不同的类,不同类中的成员变量与成员函数参数的类型不尽相同,因此在实现某些参数传递的过程中不免需要参数类型的转换。这也是此次上位机软件设计的难点之一。 在软件的编写过程中设计了以下几个类或参数类型: CString类:CString是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。在软件中,CString主要用来可视化输出。 Byte类型:Byte是字节类型,由于通信过程中有大量的二进制数据传输,因此Byte类型是必不可少的。 VARIANT类型:使用MSComm控件,在发送和接收数据时,都要用到VARIANT数据类型,VARIANT实际上是一种共用体,它由各种类型的的数据成员构成。 Byte转CString:CString中保存的是字符的ASKII码,如果直接将Byte强制转换为CString是不行的,因为Byte保存的是二进制数据。强制转换的结果在显示时将出现乱码。因此需要自行构造转换函数。由于设备系统软件中处理传输的数据为压缩BCD码,因此,采用移位+48地方法将Byte转换为CString。 Byte转VARIANT:Byte不能直接转换为VARIANT以字符串形式发送数据。这里引入CbyteArray类与COleVariant类间接进行转换,首先使用CbyteArry的成员函数Add()将Byte依次连接成CbyteArray字符串,使用ColeVariant类将CbyteArray强制转换为VARIANT,进行串行发送。 VARIANT转Byte:同样,二者之间不能直接转换,需要引入COleSafeArray类间接进行转换。现将VARIANT强制转换为COleSafeArray,再使用COleSafeArray的GetElement成员函数将数据转换为Byte类型。这种转换在接收数据时出现。 解决了类型的转换问题,在发送、接收、数据显示、数据运算等方面便可根据需要使用相应的数据类型了。 结论与展望 此次历时一学期的设计研究工作,我受益匪浅。查阅了大量的中英文资料,做了许多验证性试验,为最终设计的完成打下了坚实的基础。设计研究的过程也是一个学习的过程,其中使用的许多知识、技术是大学课程中未涉及的,这就需要在短时间内将这些知识、技术学以致用。在这里,我将此次设计中值得注意的地方加以总结。 以单片机为基础的应用系统的开发是一个有序的过程,同时也是一个经验积累的过程。一个有丰富开发经验的开发人员在硬件方案讨论,电路设计,软件设计及调试的过程中能够合理有效的开展各个阶段的工作,减少错误的发生,缩短研发周期。因此,多看、多做能够积累工程人员的经验,提高技能,在产品研发的过程中能够有所突破,有所创新。 电子技术应用广,设计领域多。在熟悉本职的技术工作外,开发设计人员还需对其他各个行业有所了解,这样才能使产品的功能更贴近实际,更合理,更行之有效。 技术的革新日新月异,为了保证开发产品成本更低、性能更强,开发更容易,周期更短,电子电路设计开发人员需要不断地学习掌握新技术,与时俱进。 由于时间和精力有限,在上位机软件设计上,未对数据处理模块进行进一步的实现与讨论。由于专业知识有限,在此仅提出自己一些浅薄的看法。 先假设已有5项接收的数据,如:设水箱上下液位间容积为V,水泵单位时间供水量恒定为m。设5项数据相邻两项间间隔时间为1t,2t,3t,4t,第一项至第五项总时间为T。m,V为已知量,t1t4以及T可通过获得的数据计算得到。设某段时间内平均耗水量为TP,1t水泵启动期间时平均耗水量为1tP,2t水泵停止期间平均耗水量为Pt2通过记录的数据,经过计算,便可获得单位时间内平均耗水量。大量的数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025云南昆明西山英才教育培训学校招聘30人备考考试题库附答案解析
- 2025年蚌埠市梅桥中学劳务派遣教师招聘(第四批)备考考试题库附答案解析
- 2025四川省红十字基金会招聘1人备考考试题库附答案解析
- 2025浙江绍兴市人民检察院 绍兴市司法局市级人民监督员选任75人笔试备考题库及答案解析
- 2025年新昌县总工会公开招聘工会社会工作者1人备考考试题库附答案解析
- 四川纵连横建设工程检测有限公司公开招聘工作人员考试参考试题及答案解析
- 2025江西吉安市青原区两山发展集团有限公司及下属子公司面向社会招聘32人备考考试题库附答案解析
- 2025版胆结石症状诊断及护理要点
- 游戏业界全景剖析
- 微纳机器人装配-洞察及研究
- 变电站电气设备巡视-变压器巡视(变电站电气运行)
- 净化空调施工方案
- 2025年甘肃瓮福化工有限责任公司招聘笔试参考题库含答案解析
- 人教版三年级语文上册第一次月考试卷含答案
- 毕业设计:平谷新城某高层住宅楼室内给排水、消防与采暖系统设计
- 《装饰艺术运动》课件
- 《公路工程量计算》课件
- 医院建筑综合设计与布局优化
- 阴道镜项目质量管理方案
- 边坡工程第3章 边坡工程地质勘察
- 索思医疗卓越产品系列穿戴式动态心电监测产品
评论
0/150
提交评论