安徽建筑工业大学计算机控制技术课程设计课题名称8路数据采集及报警控制系统系别电子与信息工程学院专业电子信息工程班级10城建电子(2)班姓名邵磊学号10205900235指导老师严辉夏巍丁刚时间2013年6月17日至2013年6月30日目录一、总体设计:1.1设计思路1.2课题目的二、方案论证:2.1A/D模数转换的选择2.2单片机的选择2.3按键选择2.4系统框图三、硬件电路设计:3.1单片机介绍3.2ADC0809结构功能3.3ADC0809的工作时序3.4ADC0809工作过程四、系统程序设计:4.1程序流程框图4.2主程序五、结束语六、附录一、总体设计1.1设计思路我们选择单片机与A/D转换芯片结合的方法实现本设计。使用的基本元器件是:AT89C52单片机,ADC0809模数转换芯片,LCD显示器,按键,电容,电阻,晶振等。数字电压测量电路由A/D转换、数据处理及显示控制等组成。A/D转换由集成电路ADC0809完成。ADC0809具有8路拟输入端口,地址线(23~-25脚)可决定对哪一路模拟输入作A/D换。22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。6脚为测试控制,当输入一个2uS宽高电平脉冲时,就开始A/D转换。7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出。10脚为0809的时钟输入端。单片机的P1.5~P1.7、P3端口作1602液晶显示控制。P2端口作A/D转换数据读入用,P0端口用作0809的A/D转换控制。通过对单片机p3.5口置低电平控制LED亮灯,p3.4口置高电平时蜂鸣器报警。1.2课题目的(1)掌握数据采集系统的设计方法。(2)结合8051设计一个8路数据采集系统。二、方案论证2.1A/D模数转换的选择A/D转换器的种类很多,就位数来说,可以分为8位、10位、12位和16位等。位数越高其分辨率就越高,价格也就越贵。A/D转换器型号很多,而其转换时间和转换误差也各不相同。(1)逐渐逼近式A/D转换器:它是一种速度快、精度较高、成本较低的直接式转换器,其转换时间在几微秒到几百微秒之间。(2)双积分A/D转换器:它是一种间接式的A/D转换器,优点是抗干扰能力强,精度比较高,缺点是数度很慢,适用于对转换数度要求不高的系统。(3)并行式A/D转换器:它又被称为flash(快速)型,它的转换数度很高,但她采用了很多个比较器,而n位的转换就需要2n-1个比较器,因此电路规模也极大,价格也很贵,只适用于视频A/D转换器等数度特别高的领域。鉴于上面三种方案,在价格、转换速度等多种标准考量下,在本设计选用的是逐渐逼近式A/D转换器——ADC0809.2.2单片机选择单片机是一种面向大规模的集成电路芯片,是微型计算机中的一个重要的分支。此系统是由CPU、随即存取数据存储器、只读程序存储器、输入输出电路(I/O口),还有可能包括定时/计数器、串行通信口、显示驱动电路(LCD和LED驱动电路)、脉宽调制电路、模拟多路转换器及A/D转换器等电路集成到一个单块芯片上,构成了一个最小但完善的计算机任务。单片机要使用特定的组译和编译软件编译程序,本设计选用80C51单片机。2.3按键选择键盘是一种常见的输入设备,用户可以向计算机输入数据或命令。根据案件的识别方法分类,有编码键盘和非编码键盘两种。通过硬件识别的键盘称编码键盘;通过软件识别的键盘成为非编码键盘。非编码键盘有两种接口方法:一种是独立按键接口;另一种是矩阵式按键接口。1、独立按键接口在单片机中,如果所需的按键较少,可采用独立式键盘。每只按键接单片机的一条I/O线,通过对线的查询,即可识别各按键的状态。如图2.2所示。4只按键分别宇单片机的P1.0~P1.3I/O线上。无按键按下时,P1.0~P1.3线上均输入高电平。当某按键按下时,与其相连的I/O线将得到低电平输入。2.矩阵式按键接口在单片机中需要的按键较多时,通常把键排成矩阵形式,这样可以节省硬件资源。如对于20只按键接口,如采用按键独立方式,需要20个I/O口。如采用矩阵式按键方式,则只需要9个I/O口。如图2.3所示。单片机系统中的非编码式键盘程序主要由判别是否有键按下子程序、键的识别子程序、找到闭合键后,读入相应的键值,再转到相应的键处理程序几个部分组成。2.4、系统框图三、硬件电路设计3.1单片机介绍3.2.180C51P0.0~P0.7:P0口8位口线,第一功能作为通用I/O接口,第二功能作为存储器扩展时的地址/数据复用口。P1.0~P1.7:P1口8位口线,通用I/O接口无第二功能。P2.0~P2.7:P2口8位口线,第一功能作为通用I/O接口,第二功能作为存储器扩展时传送高8位地址。P3.0~P3.7:P3口8位口线,第一功能作为通用I/O接口,第二功能作为为单片机的控制信号。ALE/PROG:地址锁存允许/编程脉冲输入信号线(输出信号)PSEN:片外程序存储器开发信号引脚(输出信号)。EA/Vpp:片外程序存储器使用信号引脚/编程电源输入引脚RST/VPD:复位/备用电源引脚。3.2.2ADC0809IN7~IN0:八个通道的模拟输入量。ADDA、ADDB、ADDC:模拟通道地址线。当CBA=000时,IN0输入,当CBA=111时,IN7输入。ALE:地址锁存信号。START:转换启动信号,高电平有效。D7~D0:数据输出线。三态输出,D7是最高位,D0是最低位。OE:输出允许信号,高电平有效。CLK:时钟信号,最高频率为640KHZ。EOC:转换结束状态信号。上升沿后高电平有效。Vcc:+5V电源。Vref:参考电压。3.2.374LS37374LS373是带有三态门的八D锁存器,当使能信号线OE为低电平时,三态门处于导通状态,允许1Q-8Q输出到OUT1-OUT8,当OE端为高电平时,输出三态门断开,输出线OUT1-OUT8处于浮空状态。G称为数据打入线,当74LS373用作地址锁存器时,首先应使三态门的使能信号OE为低电平,这时,当G端输入端为高电平时,锁存器输出(1Q-8Q)状态和输入端(1D-8D)状态相同;当G端从高电平返回到低电平(下降沿)时,输入端(1D-8D)的数据锁入1Q-8Q的八位锁存器中。当用74LS373作为地址锁存器时,它们的G端可直接与单片机的锁存控制信号端ALE相连,在ALE下降沿进行地址锁存。3.2.474LS13874LS138是一个3-8译码器,共16个引脚。A、B、C:选择端即信号输入端E1、E2、E3:使能端,其中E1、E2低电平有效,E3高电平有效Y0~Y7:译码输出信号,始终只有一个为低电平Vcc:电源端,+5V3.2、ADC0809结构功能1)8路8位A/D转换器,即分辨率8位。2)具有转换起停控制端。3)转换时间为100μs4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW。3.3ADC0809的工作时序地址锁存信号ALE在上升沿将三位通道地址锁存,相应通道的模拟量经过多路模拟开关送到A/D转换器。启动信号START上升沿复位内部电路,START的下降沿启动转换,此时转换结束信号EOC呈低电平状态,由于逐位逼近需要一定过程,所以,在此期间,模拟输入量应维持不变,比较器要一次次比较,直到转换结束,此时变为高电平。若CPU发出输出允许信号OE(输出允许为高电平),则可读出数据。另外,ADC0809具有较高的转换速度和精度,同时受温度影响也较小。四、系统程序设计4.1程序流程框图4.2主程序ORG00HAJMPMAINORG30HRSEQUP1.6RWEQUP1.7EEQUP1.5MAIN:MOVR0,#00HMOVR4,#01HANJIAN:JNBP1.0,MOSHI0;判断按键是否按下JNBP1.1,MOSHI1SJMPANJIANMOSHI0:;按键1功能多路顺序采集电压AN1:JNBP1.0,AN1ACALLJ0INCR0INCR4JNBP1.0,MOSHI0JNBP1.1,MOSHI1ACALLDELAY1JNBP1.0,MOSHI0JNBP1.1,MOSHI1ACALLDELAY1JNBP1.0,MOSHI0JNBP1.1,MOSHI1ACALLDELAY1SJMPMOSHI0MOSHI1:;按键2暂停和单点采集AN2:JNBP1.1,AN2ACALLJ0INCR0INCR4SJMPANJIANDELAY1:;电压显示间隔延迟MOV43H,#02HD3:MOV40H,#0FFHD1:MOV41H,#0FFHD2:DJNZ41H,D2DJNZ40H,D1DJNZ43H,D3RETJ0:;显示单个电压主程序CJNER0,#08H,J1MOVR0,#00HCJNER4,#09H,J1MOVR4,#01HJ1:LCALLADLCALLVHDMOVP0,#00000010B;数码管初始化ACALLLOOPMOVP0,#00111000BACALLLOOPMOVP0,#00001111BACALLLOOPMOVP0,#00000110BACALLLOOPMOVP0,#0C0H;对数码管中数据显示位置确定ACALLLOOPMOVP0,#01011011B;给数码管赋要显示的数据ACALLXIANMOVP0,#0C1HACALLLOOPMOVP0,#00110000BACALLXIANMOVP0,#0C2HACALLLOOPMOVA,R4ADDA,#00110000BMOVP0,AACALLXIANMOVP0,#0C3HACALLLOOPMOVP0,#01011101BACALLXIANMOVP0,#0C4HACALLLOOPMOVA,R2ADDA,#00110000BMOVP0,AACALLXIANMOVP0,#0C5HACALLLOOPMOVP0,#00101110BACALLXIANMOVP0,#0C6HACALLLOOPMOVA,R3ADDA,#00110000BMOVP0,AACALLXIANMOVP0,#0C7HACALLLOOPMOVP0,#01010110BACALLXIANRETAD:;打开ADC0808启动A/D转化,将输出的二进制读入CLRP1.7MOVA,R0MOVDPTR,#1FFFHRLARLARLARLARLAMOVP0,AMOVP2,#0CLRP3.6SETBP3.6AD2:JNBP3.2,AD2MOVXA,@DPTRMOVR1,ARETVHD:;查表程序,对读入的二进制对应的电压查找MOVA,R1MOVDPTR,#ADTAB_1MOVCA,@A+DPTRMOVR2,AMOVA,R1MOVDPTR,#ADTAB_2MOVCA,@A+DPTRMOVR3,ARETLOOP:;对数码管写指令代码CLRRSCLRRWCLREACALLDELAYSETBERETDELAY:;检测数码管是否正忙MOVP0,#0FFHCLRRSSETBRWCLRENOPSETBEJBP0.7,DELAYRETXIAN:;写入数码管要显示的数据SETBRSCLRRWCLREACALLDELAYSETBERETADTAB_1:;查表程序DB0,2,1,3,0,3,1,4,0,2,1,4,0,3,2,4,0,2,1,3,0,3,2,4,0,3,1,4,1,3,2,4,0,2,1,3,0,3,2,4,0,2,1,4,1,3,2,4,0,2,1,4,0,3,2,4,0,3,1,4,1,3,2,4DB0,2,1,3,0,3,1,4,0,2,1,4,1,3,2,4,0,2,1,4,0,3,2,4,0,3,1,4,1,3,2,4,0,2,1,3,0,3,2,4,0,2,1,4,1,3,2,4,0,2,1,4,0,3,2,4,0,3,1,4,1,3,2,5DB0,2,1,3,0,3,1,4,0,2,1,4,1,3,2,4,0,2,1,3,0,3,2,4,0,3,1,4