




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多 路 数 据 采 集 与 传 输 系 统摘 要数据采集系统作为沟通模拟域与数字域的必不可少的桥梁有着非常重要的作用。本文介绍的重点是数据采集系统。数据采集与通信控制采用了模块化的设计,数据采集与通信控制采用了单片机8051来实现,硬件部分是以单片机为核心,还包括模-数转换模块,显示模块,和串行接口部分,还有一些简单的外围电路。8路被测电压通过通用adc0809模-数转换,实现对采集到的数据进行模拟量到数字量的转换,由单片机对数据进行处理,用lcd显示模块来显示所采集的结果,并将数据通过串行口传输到pc机上,mcu与 pc机间的电平匹配采用max232接口芯片,由pc机完成数据接收和显示,vb程序编写了更加人性化的人机交互界面。关键词:单片机,lcd,模数转换,串行传输abstract key words:前 言在各种测控系统中,往往需要对一些参数进行测量并送回计算机进行监控及处理,因此多路数据采集系统被广泛应用于各种测控场合。单片机作为微型计算机的一个重要分支,应用广泛,对人类社会产生了巨大的影响。intel公司生产的51系列单片机,由于具有集程度高、处理功能强、可靠性好、系统结构简单、价格低廉、易于使用等优点。在我国已经得到了广泛应用。在智能仪器仪表、工业检测控制、电力电子、机电一体化方面取得了瞩目的成就。数据采集系统作为沟通模拟域与数字域的必不可少的桥梁地位十分重要。基于单片机的数据采集系统完全能够满足各种测控系统需要,实时性好,应用前景广阔。对于本设计而言,其主要任务就是将05伏的直流电压进行测量并送到远端的pc机上进行显示。由于采集的是直流信号,对于缓慢变化的信号不必加采样保持电路,选用了市面上比较常见的逐次逼近型adc0809芯片,其转换速度快,价格低廉,可以直接将直流电压转换为计算机可以处理数字量。考虑到本系统是采用5伏电池供电,选用了低功耗的lcd显示器件,以满足其在终端显示采集结果的需求。终端键盘控制采用尽可能少的键来实现控制功能,为了防止键盘不用时的误操作,设置了锁键功能,在键盘的输入的消抖方面采用了软件消抖的方法,以降低硬件的开销,来提高系统的抗干扰能力。软件设计方面,采用了功能模块化的设计思想;键盘模数转换等采用了中断的方式来实现,大大提高了单片机的效率,实时处理能力。在上位机pc端运用了可视化编程语言vb,界面简单明了,人机交互性界面好。第一章 课题分析与方案论证1.1数据采集系统在任何计算机测控系统中,都是从尽量快速,尽量准确,尽量完整的获得数字形式的数据开始的,因此,数据采集系统作为沟通模拟域与数字域的桥梁起着非常重要的作用。70年代初,随着计算机技术及大规模集成电路的发展,特别是微处理器及高速a/d转换器的出现,数据采集系统结构发生了重大变革。原来由小规模集成的数字逻辑电路及硬件程序控制器组成的采集系统被微处理器控制的采集系统所代替。因为由微处理器去完成程序控制,数据处理及大部分逻辑操作,使系统的灵活性和可靠性大大的提高,系统的硬件成本和系统的重建费用大大的降低。数据采集系统一般由信号调理电路,多路切换电路,采样保持电路,a/d,单片机组成。1.1.1信号调理电路 调理与放大电路:包括:阻抗匹配、放大电路、隔离电路、滤波等电路。(1)阻抗匹配:放大电路与传感器之间往往存在阻抗不匹配的现象,信号要进入a/d转换器也存在阻抗匹配问题,阻抗不匹配会使信号在传输过程中严重畸变,导致严重检测误差,条例过程中必须十分注意阻抗匹配问题,一般阻抗匹配可以由运算放大器组成的跟随器完成。(2)信号放大电路:是信号调理电路的核心,一般传感器输出的物理信号量值很小,需要通过放大调理电路来增加分辨率和敏感性,将输入信号放大为a/d转换所需要的电压范围,为了获得尽可能高的精度,应将输入信号放大至与adc量程相当的程度。(3)信号隔离电路:隔离是指使用变压器、光电耦合或电容耦合等方法在被测系统中与测试系统之间传输信号,避免直流的电流或电压的物理连接的一种手段。(a)数据采集系统所监测的设备可能会有高压瞬变现象,足以使计算机与数据采集板损坏,隔离可使传感器信号与计算机隔离开,使系统安全得到保障。(b)保证数据采集各个环节间不受地电位或共态电压差异的影响,从而影响测试精度,这是因为在采集信号时,都需要以“地”为基准,如果在两“地”之间存在电位差,就可能导致地环路产生,从而导致所采集的信号再现不准确,若这一电位差太大,可能危机测量系统的安全,利用隔离电路的信号模块可以消除地环路,并保证准确的采集信号。模拟信号的隔离比数子信号的隔离难度大的多,成本高,常用的方法是,采用线性光耦或两个特性几乎完全接近的普通光耦用特殊的电路实现,另外,直接采用具有隔离作用的仪表放大器也行。(4)信号滤波:几乎所有的数据采集系统都会不同程度的受到来自电源线或机械设备的50hz噪声干扰,因此大多数信号调理电路包含低通滤波器,最大限度的剔除50hz或60hz的噪声。交流信号(如振动)则往往需要防混淆滤波器,防混淆滤波器是一种低通滤波器,具有非常陡峭的截止频率,几乎可以将频率高于采集板输入信号带宽的信号全部剔除;若不除去,这些信号将会错误的显示为数据采集系统输入带宽内的信号。1.1.2 多路切换电路通常被检测的物理量有很多个,如果每一通道都要有放大和adc几个环节就很不经济。而且电路也复杂。采用模拟多路开关就可以使多个通路共用一个放大器和adc,采用时间分割法使几个模拟开关通道轮流接通。这样既经济,又使电路简单。模拟多路开关的选择主要考虑导通电阻的要求,截止电阻的要求和速度要求。常用的模拟多路开关有cd4501,cd4066,ad7501,ad7507等。为降低截止通道的负载影响,提高开关速度,降低通道串扰,采用多级模拟多路开关来完成通道切换。1.1.3加采样保持电路的原则一般情况下直流和变化非常缓慢的信号可以不用采样保持电路.其他情况都要加采样保持电路。1.1.4 模-数转换器(adc)adc是计算机同外界交换信息所必须的接口器件,它需要考虑的指标有:分辨率,转换时间,精度,电源,输入电压范围等。1.1.5基本微处理系统单片机构成了基本的微处理系统,它完成系统数据读取,处理及逻辑控制,数据传输任务等。选择msc-51系列8051单片机。完成任务书所要求的功能的系统框图如下图1-1-5所示 图1-1-5系统框图1.2方案论证1.2.1 模数转换的选择a/d转换器的种类很多,就位数来分,有8位,10位,12位和16位等。位数越高分辨率就越高,价格也就越贵。a/d转换器的型号很多,在精度和转换速度上差异很大。(a)双积分a/d转换器:双积分式是一种间接式a/d转换器,优点是转换精度高,速度快缺点是转换时间长,一般要4050ms,适用于转换速度不快的场合。(b)逐次逼近式a/d转换器:逐次逼近式的属于直接式a/d转换器,转换精度高,速度高,价格适中,是目前种类最多,应用最广的a/d转换器,典型的8位模数转换器有adc0809。 鉴于方案(b)的换速度比方案(a)快,价格适中,种类繁多,应用广泛,在本设计中采用adc0809。051的选择单片微机是属于embedded system(嵌入系统),此系统的是把cpu 加上一些少量的内存和输出入组件(i/o),都嵌入在一颗芯片内,再使用特定的组译和编译软件编辑程序,利用烧录器把程序储存到单芯片,如此加上一些简单的周边电路,即可变成一个控制系统,所以单芯片又称为微控制器在本设计中选用intel8051其中内部已内建程序存储器rom,不必再去外扩程序存储器,使用更加方便。1.2.3 串行接口器件的选择(a)pc机配有标准rs-232接口,单片机输出的是ttl电平。因此,单片机与pc机之间通讯时,需要电平转换。rs-232电平转换芯片有mc1489,mc1488。mc1488内有三个与非门和一个相反器,供电电压为+15v-15v或者+12v-12v,输入为ttl电平,输出为rs-232电平。mc1489内部有四个相反器,输入为rs232电平,输出为ttl电平。 (b)采用max232作为单片机与pc之间通讯的桥梁。max232的优点是:一片芯片可以完成发送转换和接收转换的双重功能。 单一电源+5v供电。方案(a)中的mc1488和mc1489,完成电平转换时电路设计麻烦,比较容易出现错误,而且功能不如max232齐全。所以选择方案(b)中的max232作为电平转换的芯片,它不仅在功能上能满足本系统的要求,且电路设计与连接比较简单。1.2.4 显示部分lcd是一种被动式的显示器,即液晶本身并不发光,而是利用液晶经过处理后能改变光线通过方向的特性,而实现显示的目的。液晶显示器具有功耗低、抗干扰能力强等优点被广泛应用在各种仪器仪表和控制系统中。现在市面上的lcd显示器多以模块化形式出现,模块由lcd控制器、lcd驱动器、lcd显示装置三部分组成,它与cpu之间是通过lcd控制器直接进行沟通的,使用方便。所以在本系统中采用低功耗的sdec厂生产的2a16drg lcd第二章 硬件设计2.1 模数转换器adc08092.1.1 模数转换器原理介绍在我们所测控的信号中均是连续变化的物理量,通常需要用计算机对这些信号进行处理,则需要将其转换成数字量,a/d转换器就是为了将连续变化的模拟量转换成计算机能接受的数字量。根据a/d转换器的工作原理,常用的a/d转换器可分为两种,双积分式a/d转换器和逐次逼近式a/d转换器。(1)双积分a/d转换器工作原理双积分a/d转换器采用间接测量的方法,它将被测电压转换成时间常数t,其工作原理如图 所示,双积分a/d转换器由电子开关,积分器,比较器,计数器和控制逻辑等部分组成。比较器vxvref标准时钟计数器控制逻辑电子开 关数据输出所谓双积分就是进行一次a/d转换需要两次积分。电路先对被测的输入电压vx进行固定时间(t0)的正向积分,然后控制逻辑将积分器的输入端通过电子开关接参考电压vr,由于参考电压与输入电压反向且参考电压值是恒定的,所以反向积分的斜率是固定的,从反向积分开始到结束,对参考电压进行反向积分的时间t,正比于输入电压。图2-1-1(a)双积分型a/d转换器的电路原理图图2-1-1(b) 两次积分的输出曲线如图2-1-1(b)所示,输入电压越大反向积分时间越长,用高频标准脉冲计数测此时间,即可得到相应于输入电压的数字量。特点:可以有效的消除干扰和电源噪声,转换精度高,但是转换速度慢。(2)逐次逼近型a/d转换器逐次逼近型a/d转换器由d/a转换环节,比较环节和控制逻辑等几部分组成。图2-1-1(b)是逐次逼近型a/d转换器的电路原理图,其转换原理为:a/d转换器将一待转换的模拟输入电压ui与一个预先设定的电压ui(预定的电压由逐次逼近型a/d转换器中的d/a输出获得)电压相比较,根据预设的电压ui是大于还是小于待转换成的模拟输入电压uin来决定当前转换的数字量是“0” 还是“1”,据此逐位比较,以便使转换结果(相应的数字量)逐渐与模拟输入电压相对应的数字量接近。“预设的电压”值的算发如下:使逐次逼近型a/d转换器中的d/a的各位二进制数从最高位起依次置1,每变化一位就得到一个预设的电压ui并使之与待转换的模拟输入电压ui进行比较,若模拟输入电压ui小于预设的电压ui,则使比较器中相应的位为0,若模拟输入电压ui大于预设的电压ui,则使比较器中相应的输出位为1,无论哪钟情况,均应继续比较下一位,直到最低位为止,此时逐次逼近型a/d转换器中的d/a的数字输入即为对应模拟输入信号的数字量,将此数字量输出就完成了a/d的转换过程。2.1.2adc0809模数转换器的选择逐次逼近式的属于直接式a/d转换器,转换精度高,速度高,价格适中,是目前种类最多,应用最广的a/d转换器,典型的8位模数转换器有adc0809图2-1-2(a) adc0809内部结构adc0809采用工艺,片内带有锁存功能及8路模拟多路开关,可对8路05伏的输入模拟电压信号分时进行转换,完成一次转换约100微秒;片内具有多路开关的地址译码器和锁存电路,高阻抗斩波器及稳定的比较器,256r电阻t型网络和树状电子开关以及逐次逼近寄存器,输出具有三态锁存缓冲器,可直接接到单片机的数据总线上。(1)adc0809的介绍adc0809是8位逐次逼近式ad转换器,具有8个模拟量输入通道,最大不可调误差小于1lsb,典型时钟频率为640khz,每通道的转换时间约为100s。adc0809没有内部时钟,必须由外部提供,其范围为101280khz。 (2)引脚排列及各引脚的功能in0in7:8个通道的模拟量输入端。可输入05v待转换的模拟电压。d0d7:8位转换结果输出端。三态输出,d7是最高位,d0是最低位。a、b、c:通道选择端。当cba=000时,in0输入;当cba=111时,in7输入。ale:地址锁存信号输入端。该信号在上升沿处把a、b、c的状态锁存到内部的多路开关地址锁存器中,从而选通8路模拟信号中的某一路。 start:启动转换信号输入端。从start端输入一个正脉冲,其下跳沿启动adc0809开始转换。脉冲宽度应不小于100200ns。eoc:转换结束信号输出端。当eoc为 图2-1-2(b)adc0809引脚图高电平时表示转换结束,启动a/d转换时它自动变为低电平。oe:输出允许端。oe为低电平时,d0d7为高阻状态,oe为高电平时,允许转换结果输出。clk:时钟输入端。adc0809的典型时钟频率为640khz,转换时间约为100s。ref(-)、ref(+):参考电压输入端。adc0809的参考电压为5v。vcc、gnd:供电电源端。adc0809使用5v单一电源供电。 (3)a/d转换器的位数决定着信号采集的精度和分辨率。对于8通道的输入信号,要求分辨率为0.5%。8位的a/d转换器,其精度为:输入为05v时,分辨率为a/d转换器的满量程值 adc二进制位数量化误差为2.1.3adc0809时序图及其接口电路从时序图2-1-3 可以看出,地址锁存信号ale在上升沿将三位通道地址锁存,相应通道的模拟量经过多路模拟开关送到a/d转换器。启动信号start上升沿复位内部电路,start的下降沿启动转换,此时转换结束信号eoc呈低电平状态,由于逐位逼近需要一定过程,所以,在此期间模拟输入量应维持不变,比较器要一次次比较,直到转换结束,此时变为高电平。若cpu发出输出允许信号oe(输出允许为高电平),则可读出数据,其有较高的转换速度精度,及受温度影响小。图2-1-3 adc0809时序图从时序图2-1-3 可以看出,地址锁存信号ale在上升沿将三位通道地址锁存,相应通道的模拟量经过多路模拟开关送到a/d转换器。启动信号start上升沿复位内部电路,start的下降沿启动转换,此时转换结束信号eoc呈低电平状态,由于逐位逼近需要一定过程,所以,在此期间模拟输入量应维持不变,比较器要一次次比较,直到转换结束,此时变为高电平。若cpu发出输出允许信号oe(输出允许为高电平),则可读出数据,其有较高的转换速度精度,及受温度影响小。图2-1-4 adc0809与8051单片机的接口电路adc0809与mcs-51系列单片机的接口方法接口电路如图2-1-4所示。地址信号:74ls373输出的低3位地址a2、a1、a0加到通道选择端a、b、c,作为通道编码。通道基本地址为0000h0007h。控制信号:8051的wr与p2.7经过或非门后接至0809的start及ale引脚。8051的rd与p2.7经或非门后接至0809的oe端。adc0809的eoc经反相后接到8051的p3.3(int1)。2.2 键盘键盘在单片机系统中是一个重要部件。为了输入数据,查询和控制系统的工作状态,都要用到键盘,键盘是人工干预计算机的主要手段。在单片机控制系统中广泛使用的是机械键盘。按键的动作不是立刻就完成的,抖动是表现在输入电压信号上。在理想的状态下按键引脚电平的变化如下图(a)曲线,但是在实际中按键在按下或放开的瞬间,由于机械触点存在弹跳现象,结果实际按键电压波形如图(b)曲线,即机械按键在按下和释放瞬间存在抖动现象,抖动时间的长短与按键的机械特性有关,一般在5-15ms之间而按键稳定闭合期长短与操作者按键的时间有关,从数百毫秒到数秒之间,为了保证按键由“按下”到“松手”之间仅视为一次输入或数据次输入,(对于具有重复输入功能的按键),必须在硬件或软件上增加去抖动措施,以避免一次按键输入一串数码。图2-2(a) 按键按下的输出电平 在消除抖动的不良后果有俩种方法:一种是硬件实现,一种是软件实现。(1)硬件消抖是采用硬件电路的方法对键盘按下及释放抖动进行消抖,经过消抖电路使按键电路的输出电平信号只有两种稳定。状态,可以利用阻容滤波消抖电路,单稳态电路或触发器消除抖动现象。(2)软件上实现,可以用软件延迟的方式来解决抖动的问题。在我设计的基于单片机的多路数据采集系统中,将采用软件延迟的方法来解决抖动问题,这样可以降低硬件成本。图2-2(b)键盘硬件电路连接2.3单片机与pc机间的互连电路2.3.1串口通讯rs-232-c介绍目前串行通信接口标准都是在rs-232标准的基础上经过改进而形成的。rs-323c标准是美国eia(电子工业联合会)与bell等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在020000b/s范围内的通信。这个标准对串行通信接口如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与rs-232c制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。 1.电气特性eia-rs-232c对电器特性、逻辑电平和各种信号线功能都作了规定。在txd和rxd上:逻辑1(mark)=-3v-15v逻辑0(space)=+315v在rts、cts、dsr、dtr和dcd等控制线上:信号有效(接通,on状态,正电压)+3v+15v信号无效(断开,off状态,负电压)=-3v-15v以上规定说明了rs-323c标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(传号)的电平低于-3v,逻辑“0”(空号)的电平告语+3v;对于控制信号;接通状态(on)即信号有效的电平高于+3v,断开状态(off)即信号无效的电平低于-3v,也就是当传输电平的绝对值大于3v时,电路可以有效地检查出来,介于-3+3v之间的电压无意义,低于-15v或高于+15v的电压也认为无意义,因此,实际工作时,应保证电平在(315)v之间。eia-rs-232c与ttl转换:eia-rs-232c是用正负电压来表示逻辑状态,与ttl以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的ttl器件连接,必须在eia-rs-232c与ttl电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。2、db-9连接器db-9连接器作为提供多功能i/o卡或主板上com1和com2两个串行接口的连接器。它只提供异步通信的9个信号。db-9型连接器的引脚分配与db-25型引脚信号完全不同。因此,若图2-3-1(a)与配接db-25型连接器的dce设备连接,必须使用专门的电缆线。电缆长度:在通信速率低于20kb/s时,rs-232c所直接连接的最大物理距离为15m(50英尺)。最大直接传输距离说明:rs-232c标准规定,若不使用modem,在码元畸变小于4%的情况下,dte和dce之间最大传输距离为15m(50英尺)。可见这个最大的距离是在码元畸变小于4%的前提下给出的。为了保证码元畸变小于4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于2500pf 最简单连接图2-3-1(b)2.3.2单片机与max232的连接max232是一种双组驱动器/接收器max232芯片可完成ttleia双向电平转换,片内含有一个电容性电压发生器以便在单+5伏电压供电时,提供eia/tia-232-e电平。每个接收器将eia/tia-232-e电平转换为5伏ttl/cmos电平。这些接收器具有1.3伏的典型门限值及0.5伏的典型迟滞,而且可以接收30伏输入。每个驱动器将ttl/cmos输入电平转换为eia/tia-232-e电平。所有的驱动器,接收器及电压发生器都可以在德州仪器公司的元件库中得到标准单元。max232的工作温度范围为0度至70度。图2-3-2为max232芯片的工作电路图。在实际应用中,器件对电源的噪声很敏感。四个电容取同样数值的电解电容1.0u/16v,用以提高抗干扰能力。在本设计中,可从max232芯片中两路发送接收器中选用一路作为接口,应注意发送与接收的对应。图2-3-2 max232的工作电路图2.4单片机复位电路设计图(a)上电复位电路图(b)带手动复位的电路图2-4单片机复位电路单片机的复位只要保证rst端为高电平有效时间大于24个振荡周期,单片机就能可靠复位。分析: (a) 二极管d1的作用在于停电后,给电容 提供迅速的放电通道, 保证再次上电时rst为高电平,使单片机可靠复位,正常工作时,二极管d1反偏,对电路没有影响,而断电后,u逐渐下降,当u=0时,相当于u端与地等电位,这时电容c通过d1迅速放电,放电通路为c正极-电源u(与地等电位)-二极管d1正极-二极管负极-c负极,保证再上电时, rst为高电平(b)增加了手动复位按钮,避免死机时通过关机复位,复位按钮按下时,电容c通过r2放电,当电容c放电结束后,rst端的电位由r2, r1分压比决定,由于r2 r1,因此rst为高电平,单片机进入复位状态,松手后,电容c充电, rst端电位下降,单片机脱离复位状态, r2的作用在于限制按钮按 下瞬间电容c的放电电流,避免产生火花,以保护按钮的处点。2.5数据显示部分2.5.1 lcd介绍lcd可以分为两种类型,一种是文字式lcd,一种是绘图模式lcd。市面上有各个不同品牌的文字显示型lcd,但决大多都是采用日立公司编号为hd44780a的驱动器。在本设计中采用sdec的2a16drg。 lcd的内部内存(1)固定字型rom,称为cg romcg rom内存储192个5*7点阵的字型,这些字型均以固定。(2)数据显示ram,称为dd ramdd ram中用来存储写至lcd内部的字符,dd ram的地址分布为00h到67h,分别代表的各列位置,例如:要将“a”写入第2行的第1个位置,就先设置dd ram地址为40h,而后写入41h至即可。(3)用户自定义字型ram,称为cg ram此区域只有64字节,可将用户自行设计的字型写入lcd中,一个字的大小为5*7点阵,共可以存储8个字型,其显示码为00 h到07 h。 lcd的控制方式通过来控制lcd模块,方式十分简单,lcd其内部可以看成有两组寄存器,一个为指令寄存器,一个为数据寄存器,由rs引脚来控制,所有对指令寄存器或数据寄存器的存取均需检查lcd内部的忙碌标志,此标志用来告知lcd内部正在工作,并不允许接收任何的控制命令。而此位的检查可以令rs=0时,读取7位来加以判断,当此位为0时,才可以写入指令寄存器或数据寄存器。2.5.2 lcd接口设计lcd接口设计可以分为8位及4位控制方式,传统的控制方式是用8位d0d7数据线来传送控制命令及数据,而使用4位控制方式是使用d4d7数据线来传送控制命令及数据,如此一来单芯片的io控制线便可以减少了,省下来的控制线可以做其他硬件的设计。使用4位数据线做控制时需分两次来传送,先送出高4位数据,再送出低4位数据。本系统中有关lcd的控制是使用这种方式来设计,以最少的控制线来驱动lcd接口。图2-5-2为4位控制电路,以8051 p0的4条与p2的2条输出控制线来实现控制,p0还接有提升电阻以增加其驱动能力,控制信号说明如下:(1)rw lcd读写控制线直接接地,由于rw=0时,lcd执行写入的动作,rw=i时则执行读取的动作。因此简化设计后,则无法对lcd实现读取的动作。所有控制数据的写入需加入适当的延迟,以配合lcd内部控制信号的执行。(2)rs寄存器选择控制线由p2.0控制,当rs=0时,可以写入指令寄存器,如果rs=1则写入数据寄存器(3)en起用控制线由p2.1控制,高电平动作。高电平时lcd动作起用有效。(4)vo亮度调整控制引脚直接接地使字符显示最亮。(5)d0d7 双向数据总线lcd数据读写方式以4位方式进行写入,只用到d7d4,分别由p0.7p0.4控制。图2-5-2 8051与lcd的接口电路第三章 软件设计3.1中断的介绍及响应的过程cpu暂时中止其正在执行的程序,转去执行请求中断的外围设备或驱动事件的服务程序,等处理完毕后再返回执行原来中止的程序叫做中断cpu工作速度快,外围设备工作速度慢,形成cpu等待,效率降低。运用中断的方式后,不必花大量的时间去等待和查询外围设备的工作状态。在实时控制系统中,现场各种参数和状态的变化是随机变化的,要求cpu能做出快速响应、及时处理。有了中断系统,这些参数和状态的变化可以作为中断信号,使cpu中断。发生中断后, 图3-1-2中断响应过程 可以在相应的中断服务程序中及时处理这些参数和状态的变化。在本设计中,数据采集程序、键盘程序、串行数据传输都采用了中断的方式编写,提高了其工作效率。3.2采用adc0809中断方式的数据采集子程序8个通道转换完否?送 通 道 数 到 r2送0通道地址给dptr置数据缓冲区首址置中断发生标志启动a/d转换返 回允许中断中 断 服 务 程 序读 端 口 数 据存 数 据数 据 缓 冲 区 地 址 加1返 回修 改 模 拟 量 通 道 地 址清 中 断 标 志a)主程序流程图 (b)中断服务程序流程图图3-2数据采集程序流程图samp: mov r0,#30h ;数据缓冲区首址 mov #8 ;8通道计数 mov dptr,#7ff8h ;指向通道0start:setb f0 ;置中断发生标志movx dptr,a ;启动a/d(p2.7=0,wr=0)setb it0 ;置外部中断0为边沿触发setb ex0 ;允许外部中断0setb ea ;开中断 loop: jbf0, loop ;判发生中断标志1?djnz r2,start ;8个通道转换结束retintdata:movx a,dptr;读数据(p2.7=0,rd=0)硬件撤;销中断mov r0,a ;存数据inc r0inc dptr ;指向下一通道clr f0 ;清中断标志reti 3.3 标度变换 在计算机控制系统中,生产中的各个参数都有着不同的数值和量纲,所有这些都经过调理电路转换成a/d 转换器所能接收的05伏同一电压信号,又由a/d转换成00ffh(8位)的数字量,为进一步显示记录等,必须把这些数字量转换成不同单位,以便操作人员对其进行检测管理,这就是所谓的标度变换。线性参数标度变换:指一次仪表测量值与转换结果具有线性关系或者一次仪表是线性刻度的。其标度变换公式为:a0一次测量仪表的下限am一次测量仪表的上限ax实际测量值 n0仪表下限对应的数字量nm仪表上限对应的数字量nx测量值对应的数字量3.4键盘处理程序在本设计中采用软件消除抖动的方法来解决干扰的问题根据按键的功能一般分为两种情况来处理:(a)对于每按键一次视为一次输入的设定来说,在稳定闭合期内,不断检测按键是否已释放,当发现按键被释放后,读出对应按键的编码(或称为键号)(b)对于重要输入功能的键设定来说,每隔一定时间,如500毫秒(即按下某键不动,一秒内重复输入该键两次)对按键进行检测,发现按键依然被按下时,就输入该键,直到按键被释放。 键盘中断程序:int1:clrex1push pswpush accmova,p1anla,#0e7hjnb psw.0,exitmov r0,#0hmov r5,#1lcall delaymov a,p1mov r5,#50jbp1.0,ex1jb p1.1,ex2jb p1.2,ex3ex1:incr0mova,r0adda,18hmovb,#8divabmovr6,bmov18h,r6lcall delayjnbp1.0,exitjmpex1ex2:clrcincr0mova,18hsubba,r0jncexitdivabmovr6,bmov18h,r6延 迟 消 抖完成通道号减1功能,并存入18h完成通道号加1功能,并存入18h恢 复 现 场开 中 断结 束转各功能子程序段初 始 化 键 盘完成锁键功能是双键否?ynyn中断服务子程序关 中 断保 护 现 场是否有键按下?lcalldelayjnbp1.1, exitjmpex2ex3:jb p1.2,ex3cplp1.3exit:clrie1mov p1,#18hpop accpop pswsetbex1reti图3-4键盘中断程序流程图proc int13.5双字节二进制整数转换为压缩bcd码整数子程序n*8送入位计数器r3n字节二进制数左移一位, 高位送入cy2*(结果单元)+cy 送入结果单元(十进制加)返 回r3减1为0?开 始0送入结果单0送入结果单元开 始元0送入结果单元开 始nibtd:mova, r0movr5, amovr6, amova, r7inca mova, r3 clranbd0: movr1, a incr1 djnzr3, nbd0 mova, r7 movb, #08h mulab movr3, anbd4: mova, r5movr0, amova, r7movr2, aclrcnbd1: mova, r0 rlca 图3.5二进制整数转换为压缩bcd码 movr0, a整数子程序的程序流程图 incr0 djnzr2, nbd1 mova, r6movr1, amova, r7movr2, a incr2nbd3:mova, r1 addca, r1 da a movr1, a incr1 djnzr2, nbd3djnzr3, nbd4ret3.6 三字节压缩bcd码转换成ascii码子程序movr2,#n ;字节数存r2 movr0,#50h ;ascii码首地址movr2,#60h ;bcd码首地址bcdasc:mova,r1 ;取bcd码movr3,a ;bcd码暂存r3anla,#0f0h ;屏蔽低四位保留高四位swapa;a中的高低四位交换adda,#30h ;加30h得高位ascii码送所要显示的字符数lcd初始化并做显示测试调用lcd第一行的显示子程序设置第二行所要显示的字符首址设置第一行所要显示的字符及位置开 始设置所要显示的位置调用lcd第二行的显示子程序字符地址加1显示位置加1字符显示完否?返回mov a, r3 ;保存ascii码inc r0mov a, r3 ;再取bcd码anl a, #0fh;屏蔽高四位保留低四位add a, #30h ;加30h得低位ascii码movr0,ainc r1inc r0djnzr2, bcdascret3.7 lcd显示程序lcd:rs equp2.0;lcd rs 引脚定义en equp2.1;lcd en 引脚定义begin:clren;lcd被禁用callset_lcd;lcd初始化并做显示测试mov a,18h;设置所要显示的字符mov b,#11;设置所要显示lcd的位置calllcdp1;在lcd第一行显;示字符movr4,#6movr1,#39hmovr2,#8 图3-7 lcd显示流程图xu: incr1mova,r1;设置所要显示的字符incr2movb,r2;设置所要显示lcd的位置calllcdp2;在lcd第二行显示字符djnzr4,xuset_lcd:;lcd初始化并做显示测试clren;lcd被禁用callinit_lcd;lcd初始化movr5,#10;延迟一下calldelaymovdptr,#lmess1;指针指到显示消息1mova, #1;显示在第一行calllcd_print;显示执行消息1于lcd第一行movdptr,#lmess2;指针指到显示消息2mova,#2;显示在第二行calllcd_print;显示执行消息2于lcd第二行 ret init_lcd1:;4位i/o初始化lcdmova,#28hcallwcom;双列显示,字型使用5*7点阵mova,#0ehcallwcom;光标出现不闪烁mova,#06h callwcom;每次向右移一位,显示屏不移动mova,#01hcallwcom;清除lcd显示屏retclr_line1:;清除lcd第一行字符mova,#80h;设置第一行地址callwcommovr0,#24;设置计数值cl: mov# ;载入空格符至lcdcallwdata;输出字符至lcddjnar0, cl;计数结束ret;a=line 1 or 2;在lcd的第一行或第二行印出字符;dptr=message pointerlcd_print:cjnea,#1,line2line1:mova, 80h;设置lcd的第一行地址callwcomcallclr_linemova, #80hcallwcomjmpfillline2:mova, #0c0h;设置lcd的第二行地址callwcomcallclr_linemova, #0c0hcallwcomfill:clramovca, a+dptrcjnea, #0, l1retl1:callwdataincdptrjmpfillretclr_line:;清除lcd该行字符movr0, #24;设置计数值c1:mova, # ;载入空格符至lcdcallwdata;输出字符至lcddjnzr0, c1;计数结束retde: movr7, #5;短暂延时djnzr7, $reten1:setben;短脉冲calldeclrencallderetinit_lcd:;lcd 4位接口指令重置movp0, #30h;rs=0,r/w=0,d7d4=0011callen1movp0, #30hcallen1movp0, #30hcallen1movp0, #20h;启动4位接口指令callen1;rs=0,r/w=0,d7d4=0010callinit_lcd1;lcd指令设置初始化retwcom:;write hi 4 bitmovp0, a;先写入高4位命令clrrs;rs=0写入命令callen1;产生高电平启用脉冲rlca;向左移4位 rlcarlcarlca;write lo 4 bitmovp0, a;写入低4位命令clrrs;rs=0写入命令callen1;产生高电平启用脉冲retwdata:;write hi 4 bitmovp0, a;先写入高4位命令setbrs;rs=1写入数据callen1;产生高电平启用脉冲rlca;向左移4位rlcarlcarlca;write lo 4 bitmovp0, a;写入低4位命令setbrs ;rs=1写入数据callen1;产生高电平启用脉冲ret;-;delay r5*10ms;延迟子程序delay:movr6, #25;总延迟时间r5*10msd1: movr7, #99djnzr7, $djnzr6, d1djnzr5, delayret;-lmess1: db “channel:”lmess1: db “voltage: mv”;-;在lcd第一行特定位置显示字符;a=asc data所要显示的字符;b=line x pos所要显示的位置015lcdp1:;将a寄存器放入堆栈pushaccmova, badda, #80h;设置lcd的第一行地址callwcompopacc;由堆栈取出a寄存器的值callwdata;写入所要显示的字符ret;-;在lcd第二行特定位置显示字符;a=asc data所要显示的字符;b=line x pos所要显示的位置015lcdp2:;将a寄存器放入堆栈pushaccmova, badda, #0c0h;设置lcd的第二行地址;callwcompopacc;由堆栈取出a寄存器的值callwdata;写入所要显示的字符retend3.8串行通信子程序图3-8-1上位机人机交互界面3.8.1 上位机人机交互界面图3-8-1为人机交互界面的外观图,用可视化编程语言vb编写的可视化界面,简洁明了,操作方便,串行通信采用了事件驱动行方式,使用micorsoft公司的控件micorsoft communication 实现串行通信。3.8.2 上位机通信及显示程序(1)初始化代码private sub form_load()mscomm.commport=2设置串口2mscomm.settings=2400,n,8,1波特率9600,无校验,8位数据,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版杭州二手房买卖的合同范例
- 二零二五司机雇佣协议
- 二零二五饭堂伙食承包经营合同
- 事业单位聘用员工协议书二零二五年
- 渔业承包合同书范例
- 二零二五五保老人入敬老院协议合同书范例
- 二零二五股权协议转让合同
- 健身预售合同样本
- 新编-会员卡管理制度
- 小学提高教学质量的措施
- 乡镇安全生产网格员培训
- 小班数学《三只熊》课件
- 山东锈石测报告亚兴石材文档
- pe封口膜制作工艺
- 会计师聘书模板
- 粤教版科学四年级上册全册试卷(含答案)
- 呼吸系统疾病的护理研究进展与实际应用
- 盐酸丙卡特罗吸入溶液-药品临床应用解读
- DLT827-2002 灯泡贯流式水轮发电机组起动试验规程
- 青少版新概念英语1B-期末测试题(打印1)
- 房屋租赁合同模板(10篇)
评论
0/150
提交评论