您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 简易数字电压表单片机课程设计[1]
一、设计任务与要求1、设计任务:简易数字电压表的设计2、设计要求:1)0—5V电压2)8路输入电压3)4位LED或LCD显示4)结果按十进制显示,芯片自选。二、硬件硬件框图与说明(元件选择依据即功能说明)根据MUC-8088/8086H单片机的内部结构特点本文提出以MCS-51单片机为核心的电压测量系统。该系统以8088/8086和ADC0809核心内件,能够在单片机的控制下监测八路的输入电压值,用8位串行A/D转换器进行0-5V量程自动转换,并且测量的电压值可通过四位数码管。整个系统的设计过程中主要采用了模块化的设计方法,完成了硬件电路的设计及软件程序的编写,还详细的给出了相关的硬件框图和软件流程图,通过最终硬件电路的调试,使该系统能够在要求的条件下达到正常的测量及显示功能。单片机8088/8086是整个系统的核心,实现输入端的分路选择,模数转换后数据的处理及在数码管上数据的显示等功能。正文着重给出了软硬件系统的各部分电路,介绍了该系统的工作原理,MCS-51单片机特点,8088/8086的功能和应用,ADC0809的功能和应用等。芯片介绍1)8051芯片8051是在8031的基础上,片内集成有4KROM,作为程序存储器,是一个程序不超过4K字节的小系统。ROM内的程序是公司制作芯片时,代为用户烧制的,出厂的8051都是含有特殊用途的单片机。所以8051适合与应用在程序已定,且批量大的单片机产品中。8051单片机简介8051单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上[2]。如果按功能划分,它由如下功能部件组成,即中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口、中断系统和时种电路,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。8051单片机的硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。引脚及其功能MCS—51系列单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。下面按引脚功能分为4个部分叙述个引脚的功能。A.电源引脚Vcc和VssB.外接晶振引脚XTAL1和XTAL2C.控制信号或与其它电源复用引脚D.控制信号或与其它电源复用引脚有RST/VPD、ALE/P、PSEN和EA/VPP等4种形式。输入/输出(I/O)引脚P口P0(39脚~22脚),P0.0~P0.7统称为P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。提供8位双向数据总线。对于片内含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节。P1口(1脚~8脚),P1.0~P1.7统称为P1口,可作为准双向I/O接口使用。对于MCS—52子系列单片机,P1.0和P1.1还有第2功能:P1.0口用作定时器/计数器2的计数脉冲输入端T2;P1.1用作定时器/计数器2的外部控制端T2EX。对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。P2口(21脚~28脚),P2.0~P2.7统称为P2口,一般可作为准双向I/O接口。当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。P3口(10脚~17脚),P3.0~P3.7统称为P3口。它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。P3口的第2功能见下表表单片机P3.0管脚含义引脚第2功能P3.0RXD(串行口输入端0)P3.1TXD(串行口输出端)P3.2INT0(部中断0请求输入端,低电平有效)P3.3INT1(中断1请求输入端,低电平有效)P3.4T0(时器/计数器0计数脉冲端)P3.5T1(时器/计数器1数脉冲端)P3.6WR(部数据存储器写选通信号输出端,低电平有效)P3.7RD(部数据存储器读选通信号输出端,低电平有效)综上所述,MCS—51系列单片机的引脚作用可归纳为以下两点:1、单片机功能多,引脚数少,因而许多引脚具有第2功能;2、单片机对外呈3总线形式,由P2、P0口组成16位地址总线;由P0口分时复用作为数据总线。2)ADC0809芯片介绍ADC0809芯片简介ADC0809是一种8路模拟输入8路数字输出的逐次比较型A/D转换器。目前在8位单片机系统中有着广泛的使用。ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8个单断模拟输入信号中的一个进行A/D转换。ADC0809的主要特性A、8路8位A/D转换器,即分辨率8位。B、具有转换起停控制端。C、转换时间为100μs。D、单个+5V电源供电。E、模拟输入电压范围0~+5V,不需零点和满刻度校准。F、工作温度范围为-40~+85摄氏度。G、低功耗,约15mW。ADC0809的引脚功能ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能。A、IN0~IN7:8路模拟量输入端。B、2-1~2-8:8位数字量输出端。C、ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路D、ALE:地址锁存允许信号,输入,高电平有效。E、START:A/D转换启动信号,输入,高电平有效。F、EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。G、OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。H、CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。I、REF(+)、REF(-):基准电压。J、Vcc:电源,单一+5V,GND:地。ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。表1.2通道选择表CBA选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN73)8279芯片介绍8279芯片在电压表中的功能是驱动LED管显示经单片机数据处理后的十进制电压值。8279功能介绍8279是可编程的键盘、显示接口芯片。它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8*8=64BRAM,键盘控制部分可控制8*8=64个按键或8*8阵列方式的传感器。该芯片能自动消抖并具有双键锁定保护功能。显示RAM容量为16*8,即显示器最大配置可达16位LED数码显示。(1)数据线DB0→DB7是双向三态数据总线,在接口电路中与系统数据总线相连,用以传送CPU和8279之间的数据和命令。(2)地址线/CS=0选中8279,当A0=1时,为命令字及状态字地址;当A0=0时,为片内数据地址,故8279芯片占用2个端口地址。(3)控制线CLK:8279的时钟输入线。IRQ:中断请求输出线,高电平有效。/RD、/WR:读、写输入控制线。SL0---SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。RL0---RL7:回复输入线,它们是键盘或传感器矩阵的信号输入线。SHIFT:来自外部键盘或传感器矩阵的输入信号,它是8279键盘数据的次高位即D6位的状态,该位状态控制键盘上/下档功能。在传感器方式和选通方式中,该引脚无用。CNTL/S:控制/选通输入线,高电平有效。键盘方式时,键盘数据最高位(D7)的信号输入到该引脚,以扩充键功能;选通方式时,当该引脚信号上升沿到时,把RL0---RL7的数据存入FIFORAM中。OUTA0---OUTA3:通常作为显示信号的高4位输出线。OUTB0---OUTB3:通常作为显示信号的低4位输出线。/BD:显示熄灭输出线,低电平有效。当/BD=0时将显示全熄灭。三、电路原理与说明四、软件设计主要模块流程图,源程序清单与注释设计流程图源程序清单与解释A_DPORTEQU8000H;0809通道0地址Z8279EQU08701H;8279状态/命令口地址D8279EQU08700H;8279数据口地址LEDMODEQU00H;左边输入八位字符显示;外部译码键扫描方式,双键互锁LEDFEQEQU2FH;扫描速率LEDCLSEQU0C1H;清除显示RAMLEDWR0EQU80H;设定的将要写入的显示RAM地址READKBEQU40H;读FIFORAM地址0的命令字S1EQU78HS2EQU79HS3EQU7AHS4EQU7BHTDEQU7CHFLAGEQU7DHORG0000HLJMPMAINORG0003HLJMPINT_0ORG0013HLJMPINT_1ORG0040H;***************************************************************************************MAIN:MOVSP,#60HMOVR0,#70HCLRTDCLRFLAGSETBIT1SETBEX1SETBEALP0:MOVDPTR,#A_DPORTLCALLINIT8279LCALLTESTLCALLDISPLAYLJMPLP0NOPNOPNOPLJMPMAIN;****************************************************************************************INT_1:CLREACLREX1PUSHACCMOVA,FLAGCPLAMOVFLAG,ASETBEASETBEX1POPACCRETI;***********************数据采集***********要求R0=#70H****MOVA,R1********CPLA*********TEST:PUSH3MOVR3,#8MOVR7,#0FFH;初始化SETBIT0SETBEASETBEX0;INT0允许MOVDPTR,#A_DPORTA_D:MOVX@DPTR,A;启动A_DNOPNOPCJNER7,#00H,$;等待A_D转换结束MOV@R0,A;数据输出INCR0MOVR7,#0FFH;清读数标志DJNZR3,A_DMOVR0,#70HPOP3RET;******************************************************INT_0:CLREACLREX0MOVXA,@DPTR;读A_D数据NOPNOPMOVR7,#00H;置读数标志INCDPTRSETBEASETBEX0RETI;************************************************************************INIT8279:;8279初始化子程序PUSH
本文标题:简易数字电压表单片机课程设计[1]
链接地址:https://www.777doc.com/doc-3463643 .html