基于单片机的AD转换电路与程序设计文档格式.docx
《基于单片机的AD转换电路与程序设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的AD转换电路与程序设计文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
人机通道的接口电路
数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端单片机(或PC机)组成。
系统框图如图1所示
图1一般系统框图
Fig.1generalsystemdiagram
1.2单片机的系统分析
1.复位电路
单片机在开机时都需要复位,以便中央处理器CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。
51的RST引脚是复位信号的输入端。
复位电平是高电平有效持续时间要有24个时钟周期以上。
本系统中单片机时钟频率为6MHz则复位脉冲至少应为4us。
方案一:
上电复位电路
图2上电复位图3外部复位
Fig.2TheresetFig.3Externalreset
上电瞬间,RST端的的电位与Vcc相同,随着电容的逐步充电,充电电流减小,RST电位逐渐下降。
上电复位所需的最短时间是振荡器建立时间加上二个机器周期,在这段时间里,振荡建立时间不超过10ms。
复位电路的典型参数为:
C取10uF,R取8.2k,故时间常数
=RC=10
10
8.2
=82ms
以满足要求。
方案二.外部复位电路
按下开关时,电源通过电阻对外接电容进行充电,使RES端为高电平,复位按钮松开后,电容通过下拉电阻放电,逐渐使RET端恢复低电平。
图4外部上电复位
Fig.4Theexternalelectricreset
方案三:
上电外部复位电路
典型的上电外部复位电路是既具有上电复位又具有外部复位电路,上电瞬间,C与Rx构成充电电路,RST引脚出现正脉冲,只要RST保持足够的高电平,就能使单片机复位。
一般取C=22uF,R=200,Rx=1k,此时
=22
1
=22ms
当按下按钮,RST出现
5=4.2V时,使单片机复位。
2.振荡源
在MCS-51内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1(19)、XTAL2(18)分别是此放大器的输入端和输出端。
内部方式
与作为反馈元件的片外晶体或陶瓷谐振器一起组成一个自激振荡器。
方案二:
外部方式
外部振荡器信号的接法与芯片类型有关。
CMOS工艺的MCU其XTAL1端接外部时钟信号,XTAL2端可悬空。
HMOS工艺的MCU则XTAL2端接外部时钟信号,XTAL1端须接地。
在MCS-51单片机系列芯片中,用8051或8751芯片可以构成最小系统。
因为8051和8751是片内有ROM/EPROM的单片机,用这种芯片构成的单片及最小系统简单、可靠。
8051构成的最小系统特点:
受集成度所限,只能用于小型控制单元。
有可供用户使用的大量的I/O口线。
仅有芯片内部的存储器,故存储器的容量有限。
8051的应用软件要依靠半导体掩膜技术植入,适于在大批量生产的应用系统中使用。
1.3A/D转换器的选取
1.转换时间的选择
转换速度是指完成一次A/D转换所需时间的倒数,是一个很重要的指标。
A/D转换器型号不同,转换速度差别很大。
通常,8位逐次比较式ADC的转换时间为100us左右。
由于本系统的控制时间允许,可选8位逐次比较式A/D转换器。
2.ADC位数的选择
A/D转换器的位数决定着信号采集的精度和分辨率。
要求精度为0.5%。
对于该8个通道的输入信号,8位A/D转换器,其精度为
输入为0~5V时,分辨率为
—A/D转换器的满量程值
—ADC的二进制位数
量化误差为
ADC0809是TI公司生产的8位逐次逼近式模数转换器,包括一个8位的逼近型的ADC部分,并提供一个8通道的模拟多路开关和联合寻址逻辑,为模拟通道的设计提供了很大的方便。
用它可直接将8个单端模拟信号输入,分时进行A/D转换,在多点巡回监测、过程控制等领域中使用非常广泛,所以本设计中选用该芯片作为A/D转换电路的核心。
1.4传感器的数据采集
数据采集方式有顺序控制数据采集和程序控制数据采集。
顺序控制数据采集,顾名思义,它是对各路被采集参数,按时间顺序依次轮流采样。
原理如下图5所示,系统的性能完全由硬件设备决定。
在每次的采集过程中,所采集参数的数目、采样点数、采样速率、采样精度都固定不变。
若要改变这些指标,需改变接线或更换设备方能实现。
数据采集时,控制多路传输门开启和关闭的信号来自脉冲分配器,在时钟脉冲的推动下,这些控制信号不断循环,使传输门以先后顺序循环启闭。
图5顺序数据采集原理
Fig.5Sequentialdatacollectionprinciple
程序控制数据采集,由硬件和软件两部分组成。
,据不同的采集需要,在程序存储器中,存放若干种信号采集程序,选择相应的采集程序进行采集工作,还可通过编新的程序,以满足不同采样任务的要求。
如图6所示。
图6程序控制数据采集原理
Fig.6Programcontroldatacollectionprinciple
程序控制数据采集的采样通道地址可随意选择,控制多路传输门开启的通道地址码由存储器中读出的指令确定。
即改变存储器中的指令内容便可改变通道地址。
由于顺序控制数据采集方式
缺乏通用性和灵活性,所以本设计中选用程序控制数据采集方式。
采集多路模拟信号时,一般用多路模拟开关巡回检测的方式,即一种数据采集的方式。
利用多路开关(MUX)让多个被测对象共用同一个采集通道,这就是多通道数据采集系统的实质。
当采集高速信号时,A/D转换器前端还需加采样/保持(S/H)电路。
待测量一般不能直接被转换成数字量,通常要进行放大、特性补偿、滤波等环节的预处理。
被测信号往往因为幅值较小,而且可能还含有多余的高频分量等原因,不能直接送给A/D转换器,需对其进行必要的处理,即信号调理。
如对信号进行放大、衰减、滤波等。
通常希望输入到A/D转换器的信号能接近A/D转换器的满量程以保证转换精度,因此在直流电流电源输出端与A/D转换器之间应接入放大器以满足要求。
本题要求中的被测量为0~5V直流信号,由于输出电压比较大,满足A/D转换输入的要求,故可省去放大器,而将电源输出直接连接至A/D转换器输入端。
多路数据采集输入通道的结构图7所示。
图7多路数据采集输入通道结构
Fig.7datacollectioninputchannelstructure
注:
缓慢变化信号和直流信号,采样保持电路可以省略。
1.5显示与键盘分析
对系统发出命令和输出显示测量结果,主要是由键盘和LED数码显示器组成。
缓慢变化信号和直流信号,要求用数码管适时地进行十进制显示,由于精度要达到0.5%,所以这里用5只LED数码显示器来表示该十进制数,用两只七段数码显示器表示通道号。
为实现通道的选取,用键盘实现控制功能。
1.译码方法
用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。
硬件译码
硬件译码就是显示的段码完全由硬件完成,CPU只要送出标准的BCD码即可,硬件接线有一定标准。
软件译码
软件译码是用软件来完成硬件的功能,接线灵活,显示段码完全由软件来处理,是目前常用的显示驱动方式。
2.显示方法
在该单片机系统中,使用7段LED显示器构成8位显示器,段选线控制显示的字符,位选线控制显示位的亮或暗。
静态显示
静态显示,显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不用再管,直到下一次显示数据需要更新时再传送一次数据。
编程容易,管理简单,显示亮度高,显示数据稳定,占用很少的CPU时间。
但引线多,线路复杂,硬件成本高。
动态显示
动态显示需要CPU时刻对显示器件进行数据刷新,显示数据会有闪烁感,占用的CPU时间多。
这两种显示方式各有利弊;
静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;
动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。
当显示装置中有多个多段LED时,通常采用动态扫描驱动电路,节省开销。
3.显示接口芯片的选择
8279接口芯片
8279是Intel公司的通用可编程键盘和显示器接口电路芯片,内部有显示RAM。
8279可以实现对键盘和显示器的自动扫描,识别闭合键的键号,完成显示器的动态显示。
从而大大节省了CPU处理键盘和显示器的时间,提高了CPU的工作效率。
另外,8279与单片机的接口简单,显示稳定,工作可靠。
但8279所需外围元件多(显示驱动、译码等)、命令字多,调试困难,占用电路板面积大、综合成本高,在中小系统中常常大材小用。
8155接口芯片
采用并行口扩展芯片扩展并行口的方法来设计显示系统。
用做显示系统的传统的芯片有8155、8255、8279等。
这种方式的优点是速度快,显示数据简单。
缺点是,占用单片机口线多。
如用8155,其内部集成有:
256个字节的SRAM、一个14位二进制减法计数器和3个并行端口PA、PB和PC。
但此方案同样需要驱动显示,同时显示扫描还需占用CPU大量时间。
但为设计的简单化带来方便,所以采用该芯片作为显示接口芯片,A口为位选线,B口为段选线。
4.键盘电路的确定
为了在控制系统中完成采集通道的选择,还需要为该系统设置键盘。
由于功能要求简单,仅用两个按键即可完成选择功能,降低了系统的硬件开销,软件处理简单。
2系统硬件设计
2.1A/D转换的一般步骤
1.采样-保持
为了能不失真的恢复原模拟信号,采样频率应不小于输入模拟信号的频谱中最高频率的两倍,这就是采样定理,即
由于A/D转换需要一定的时间,所以在每次采样结束后,应保持采样电压在一段时间内不变,直到下一次采样的开始。
实际中采样-保持是做成一个电路。
2.量化与编码
模拟信号经采样-保持电路后,得到了连续模拟信号的样值脉冲,他们是连续模拟信号在给定时刻上的瞬时值,并不是数字信号。
还要把每个样值脉冲转换成与它幅值成正比的数字量。
以上为A/D转换的一般步骤,在本电路中由ADC0809芯片完成。
2.2ADC0809内部功能与引脚介绍
ADC0809八位逐次逼近式A/D转换器是一种单片CMOS器件,包括8位模拟转换器、8通道转换开关和与微处理器兼容的控制逻辑。
8路转换开关能直接连通8个单端模拟信号中的任何一个。
其内部结构如图8所示。
图8ADC0809内部结构
Fig.8ADC0809internalstructure
1.ADC0809主要性能
逐次比较型
CMOS工艺制造
单电源供电
无需零点和满刻度调整
具有三态锁存输出缓冲器,输出与TTL兼容
易与各种微控制器接口
具有锁存控制的8路模拟开关
分辨率:
8位
功耗:
15mW
最大不可调误差小于±
1LSB(最低有效位)
转换时间(
)128us
转换精度:
ADC0809没有内部时钟,必须由外部提供,其范围为10~1280kHz。
典型时钟频率为640kHz
2.引脚排列及各引脚的功能,引脚排列如图9所示。
图9A/DC0809引脚
Fig.9A/DC0809pin
各引脚的功能如下:
IN0~IN7:
8个通道的模拟量输入端。
可输入0~5V待转换的模拟电压。
D0~D7:
8位转换结果输出端。
三态输出,D7是最高位,D0是最低位。
A、B、C:
通道选择端。
当CBA=000时,IN0输入;
当CBA=111时,IN7输入。
ALE:
地址锁存信号输入端。
该信号在上升沿处把A、B、C的状态锁存到内部的多路开关的地址锁存器中,从而选通8路模拟信号中的某一路。
START:
启动转换信号输入端。
从START端输入一个正脉冲,其下降沿启动ADC0809开始转换。
脉冲宽度应不小于100~200ns。
EOC:
转换结束信号输出端。
启动A/D转换时它自动变为低电平。
OE:
输出允许端。
CLK:
时钟输入端。
ADC0809的典型时钟频率为640kHz,转换时间约为100μs。
REF(-)、REF(+):
参考电压输入端。
ADC0809的参考电压为+5V。
VCC、GND:
供电电源端。
ADC0809使用+5V单一电源供电。
当ALE为高电平时,通道地址输入到地址锁存器中,下降沿将地址锁存,并译码。
在START上升沿时,所有的内部寄存器清零,在下降沿时,开始进行A/D转换,此期间START应保持低电平。
在START下降沿后10us左右,转换结束信号变为低电平,EOC为低电平时,表示正在转换,为高电平时,表示转换结束。
OE为低电平时,D0~D7为高阻状态,OE为高电平时,允许转换结果输出。
2.3ADC0809与MCS-51系列单片机的接口方法
ADC0809与8051单片机的硬件接口有3种形式,分别是查询方式、中断方式和延时等待方式,本题中选用中断接口方式。
由于ADC0809无片内时钟,时钟信号可由单片机的ALE信号经D触发器二分频后获得。
ALE引脚得脉冲频率是8051时钟频率的1/6。
该题目中单片机时钟频率采用6MHz,则ALE输出的频率是1MHz,二分频后为500Hz,符合ADC0809对频率的要求。
由于ADC0809内部设有地址锁存器,所以通道地址由P0口的低3位直接与ADC0809的A、B、C相连。
通道基本地址为0000H~0007H。
控制信号:
将P2.7作为片选信号,在启动A/D转换时,由单片机的写信号和P2.7控制ADC的地址锁存和启动转换。
由于ALE和START连在一起,因此ADC0809在锁存通道地址的同时也启动转换。
在读取转换结果时,用单片机的读信号
和P2.7引脚经或非门后,产生正脉冲作为OE信号,用一打开三态输出锁存器。
其接口电路如图10所示。
图10ADC0809与MCS-51的接口电路
Fig.10ADC0809withMCS-51interfacecircuit
START信号和OE信号的逻辑表达式为
图11ADC0809时序图
Fig.11ADC0809timingdiagram
当8051通过对0000H~0007H(基本地址)中的某个口地址进行一次写操作,即可启动相应通道的A/D转换;
当转换结束后,ADC0809的EOC端向8051发出中断申请信号;
8051通过对0000H~0007H中的某个口地址进行一次读操作,即可得到转换结果。
ADC0809的基准电压可通过基准电压芯片供给,如MAX875,可供给5V基准电压。
2.4控制器、振荡源和复位电路
复位即回到初始状态,是单片机经常进入的工作状态。
单片机振荡电路的振
荡周期和时钟电路的时钟周期决定了CPU的时序。
1.复位电路
单片机的复位是靠外部电路实现的。
无论是HMOS还是CHMOS型,在振荡器正运行的情况下,RST引脚保持二个机器周期以上时间的高电平,系统复位。
在RST端出现高电平的第二个周期,执行内部复位,以后每个周期复位一次,直至RST端变低。
本文采用上电外部复位电路,如图12所示,相关参数为典型值。
图12上电外部复位电路
Fig.12Theexternalresetcircuit
内部方式时钟电路如图13所示。
外接晶体以及电容
、
构成并联谐振电路,接在放大器的反馈回路中,内部振荡器产生自激振荡,一般晶振可在2~12MHz之间任选。
对外接电容值虽然没有严格的要求,但电容的大小多少会影响振荡频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。
外接晶体时,
和
通常选30pF左右;
外接陶瓷谐振器时,
的典型值为47pF。
图13内部振荡器方式
Fig.13Internaloscillator
2.5键盘与显示电路
1.键盘
键盘由一组常开按键开关组成。
键盘系统的主要工作包括及时发现有键闭合,并作相应的处理。
图14键盘硬件逻辑
Fig.14Keyboardhardwarelogic
本系统中采用中断方式的开关代替键盘,完成采集通道的选择。
硬件逻辑如图14所示。
2.显示
显示部分为8个共阴极的七段LED显示器,8个七段LED的a~dp字段的引脚分别由8个OC门同相驱动器驱动。
OC门驱动器用7407,当7407输出低电平时,没有电流流过LED,当7407输出为开路状态时,电流经100
限流电阻流入LED显示器,每个七段LED的公共端都接一个反相驱动器,反相驱动器使用75452,当某一字段需要亮时,该LED公共端的反相驱动器必须是低电平输出,并且这一字段的同相驱动器必须是高电平输出。
单片机通过8155接口芯片的A口位选,经B口确定那些字段LED发光。
LED发光时,驱动电流计算如下,每一字段脉冲电流
—LED正向压降
—晶体管的饱和压降
公共端最大电流
原理图如图15所示
图15显示电路原理
Fig.15Displaycircuitprinciple
3软件设计
3.1A/D转换
中断方式使用EOC信号作为向8051的中断申请。
在主程序中,向ADC发出首次启动转换信号后,并计数管理转换通道数。
当检测到EOC的请求后,转去执行中断服务程序,读取转换结果,并启动下一次转换,后继续执行。
图16为A/D转换程序流程图。
17为中断流程图。
Fig.16Datacollectionprocessflow
源程序:
1.由电路图可以知道:
ADC0809的地址是70FFh
2.ADC0809的8个模拟通道所对应的口地址是78FFh~7FFFh
3.采样的开始,只要对模拟通道对应的地址写入一个数即启动转换。
4.由P1.0查询ADC0809的EOC信号,即可确定转换是否完成
5.8个通道的转换结果依次放入20h~27h存储单元中
以下是8路数据采集程序
org0000h
movr1,#20h
movr2,#8h;
channelnumber!
movtl0,#0h
movth0,#0b8h
;
movtmod,#1h
clret0
setbtr0
movscon,#40h
movdptr,#78ffh
loop:
mova,r2
subba,r1
jnzloop2
movr1,#0h
movdptr,#78ffh
loop1:
jnbtf0,loop1
clrtf0
loop2:
movx@dptr,a;
startA/D
loop3:
jbp1.0,loop3
loop4:
jnbp1.0,loop4;
checkflag
movxa,@dptr;
readresultFig.17Dataacquisitioninterrupt
mov@r1,a;
saveresultrogramflowchart
incdph;
nextchannel
incr1
ljmploop
end
3.2标度变换
该单片机系统中,被测量经过A/D转换,均统一为0~255二进制码,因此要把A/D转换的数码X变换成被测量的实际数值。
Fig.18Scaletransformprogramflowchart
3.3数制转换
由于标度变换后得到两个字节的实际数值,不能直接送显示端显示,须经过适当的处理(此处将其转换为5位非压缩BCD码),才能送显示端输出显示。
Fig.19DoublebytebinaryintegerconvertBCDprogramflow
3.4键盘程序
键盘部分软件主要功能是实现对通道号指示缓冲区的数值进行增或减,从而控制通道的选择。
图20键盘中断程序流程图
Fig.20Keyboardprogramflowinterruption
3.5LED显示程序