1、数字电压表基于单片机控制的数字电压表摘要:介绍了采用单片机AT89S51和ADC0809相联,用ADC0809采集模拟电压,通过ADC0809内部处理转换成单片机所识别的数字信号,之后将处理过的信号送往驱动显示模块转变成控制数码管显示的二进制数据, ADC0809在进行A/D转换时需要的CLK信号用软件来产生。由此实现数字电压表的硬件电路与软件编程。且ADC0809具有8路模拟量输入端口,通过3位地址输入端能从8路中选择一路进行转换,实现8路输入电压值的测量。关键词:单片机AT89S51;ADC0809;74LS245数字电压表1 引言当今社会,单片机的应用相当广泛。其应用范围小到儿童智能玩具
2、,大到航空航天领域。根椐现实生活当中已经存在的电压表,为了增强其功能,所以设计出这个基于单片机控制的电压表。正是鉴于此,本文设计了一种使用单片机和数模转换芯片为核心的数字电压表。它可以精确(精确到0.02V)测量出欲测的直流电压值,并用数码管显示出测量结果。2 总体设计方案2.1 设计思路我们用ADC0809把表笔传来的模拟电压信号转变成数字信号,送住单片机AT89S51中进行处理,转变成控制数码管显示的二进制数据。由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使
3、用。因此产生CLK信号的方法就得用软件来产生了。由于ADC0809的参考电压VREFVCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。实际显示的电压值为(D/256*VREF)。 总体设计方框图包括八路数据采集、模数转换电路、单片机、数码显示。如图1所示八路数据采集模数转换电路单片机数码显示图1 总体设计方框图2.2 系统硬件电路的设计8路数字电压表应用系统硬件电路由单片机,A/D转换器数码管显示电路和按键处理电路等组成。ADC0809具有8路模拟量输入通道IN0IN7,通过3位地址输入端C,B,A。C引脚2325进行选择,引脚22为地址锁存控制端ALE当输入为高电平时,C,B
4、,A引脚输入的地址锁存于ADC0809内部的锁存器中。经内部译码选中相应的模拟通道,引脚6为启动转换控制端START,当输入一个2VS宽的高电平脉冲时,就启动ADC0809开始对输入通道的模拟量进行转换,引脚7为A/D转换结束信号EOC,ADC0809为逐次比较型A/D转换器当开始转换时,EOC信号为低电平,经过一定时间转换结束,转换结束信号EOC输出高电平,转换结束存放于ADC0809内部的输出数据锁存器中。引脚为A/D转换数据输出允许控制端OE,当OE为高电平时,存放于输出数据锁存器中的数据通过ADC0809的数据线D0D7输出,引脚为ADC0809的时钟信号输入端CLOCK。在连接时,A
5、DC0809的数据线D0D7与AT89C51的P0口相连,ADC0809的地址引脚,地址锁存端ALE,启动信号START,数据输出允许控制端OE分别与AT89C51的P2口相连,转换结束信号EOC与AT89C51的P3.7相连。时钟信号输入端CLOCK信号由单片机的地址锁存信号ALE得到,单片机的系统时钟为6MHZ,因而ADC0809时钟输入端CLOCK信号的频率为2MHZ。LED数码管采用动态扫描方式连接,通过AT89C51的P1口和P3.0P3.3口控制P1为LED数码管的字段码输出端。P3.0P3.3口为LED数码管的位选码输出端,通过三极管驱动并反相。X1和X2是两个按键开关,分别于单
6、片机的P3.5和P3.6相连,X1用于单路显示或多路循环显示转换控制。X2用于单路显示时的通道选择。图2 主程序流程图2.3 系统软件程序的设计多路数字电压表的系统软件程序由主程序,A/D转换子程序和显示子程序组成。2.3.1 主程序主程序包含初始化部分,调用A/D转换子程序和调用显示子程序。如图2所示。初始化部分包含存放通道数据缓冲区初始化和显示缓冲区初始化。另外,对于单路显示和循环显示系统设置了一个标志位00H控制,初始化时00H设置为0,默认为循环显示,当它为1时改变为单路显示00H位通过单路/循环按键控制。 否 否 是图3 A/D转换子程序流程图2.3.2 A/D转换子程序A/D转换子
7、程序用于对ADC0809的8路输入模拟电压进行A/D转换,并将转换的数值存为8个相应的存储单元中,如图3所示,A/D转换子程序每隔一定时间调用一次,即隔一段时间对输入电压采样一次。2.3.3 显示子程序LED数码管采用软件译码动态扫描方式,在显示子程序中包含多循环显示和单路显示程序。多路循环显示程序把8个存储单元的数值依次取出送到4位数码管上显示,每一路显示一秒。单路显示程序只对当前选中的一路数据进行显示,每路数据显示时需经过转换变成十进制BCD码放于4个数码管的显示缓冲区中。单路显示或多路循环显示通过标志位00H控制,在显示控制程序中加入了对单路或多路循环按键和通道选择按键的判断。3 设计原
8、理分析3.1 电路的最小系统最小系统电路包含复位电路、时钟振荡电路及单路多路循环控制电路上电自动复位是在加电瞬间通过充电来实现的,在通电瞬间,电容C通过电阻R充电,RST端出现正脉冲,用以复位。只要电源VCC的上升时间不超过1MS,就可以实现自动上电复位,即接通电源就完成了系统的复位初始化。而X1、X2是实现单路/多路循环转换按钮。图4 最小系统电路3.2 显示电路显示电路采用LED数码管显示采用软件译码动态显示,通过AT89C51的P1和P3.0P3.3口控制P1口为LED数码管的子段码输出端,P3.0P3.3口为LED数码管的位选码输出端,通过74LS245驱动,具体电路如图5所示3.3
9、ADC0809的内部逻辑结构3.3.1 ADC0809内部电路 8路数字电压表主要利用A/D转换器,处理过程是先用A/D转换器对各路电压值进行采样,得到相应的数字量,再按数字量与模拟量成正比关系运算得到对应的模拟电压值,然后把模拟值通过显示器显示出来。设计时假设待测的输入电压为8路,电压值的范围为05V,要求能在4位LED数码管上轮流显示或单路选择显示。测量的最小分辨率为0.0119V,c测量误差为0.02V。:图5 显示电路根据系统的功能要求,控制系统采用AT89C51单片机,A/D转换器采用ADC0809。ADC0809是8位精度的A/D转换器。当输入电压是5V时,输出的数据值为255(0
10、FFH),因此最大分辨率为0.0196V(5255)。ADC0809具有8路模拟量输入端口,通过3位地址输入端能从8路中选择一路进行转换。如每隔一段时间轮流改变3位地址输入端的地址,就能依次对8路输入电压值进行测量。LED数码管显示采用软件译码动态显示。通过按键选择可8路循环显示,也可单路显示。单路显示可通过按键选择所要显示的通道数。ADC0809是8路8位ADC芯片,片内有8路模拟开关、地址锁存与译码、256电阻梯形网络、电子开关树、逐次逼近寄存器、比较器和3态输出锁存器等,特别适合与微机接口。时钟频率=1.26MHz,转换时间=100s,转换误差1LSB,内含8路数据选择器以便进行8路AD
11、C。8路8位2进制码LSTTL电平输出,28脚封装。ADC0809多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。ADC0809的内部逻辑结构如图6所示。3.3.2 引脚结构ADC0809具有8路模拟量输入通道IN0IN7,通过3位地址输入端C、B、A(因脚23、24、25)进行选择。引脚22为地址锁存控制端ALE,当输入为高电平时,C、B、A引脚输入的地址锁存与ADC0809内部的锁存器中,经内部译码电路译码选中相应的模拟通道。引脚6为启动转换控制端START,
12、当输入一个2 us宽的高电平脉冲时,就启动ADC0809开始对输入通道的模拟量进行转换。引脚7为A/D转换的结束信号EOC。ADC0809为逐次比较型A/D转换器,当开始转换时,EOC信号为低电平,经过一定时间,转换结束,转换结束信号EOC输出高电平,转换结果存放与ADC0809内部的输出数据锁存器中。引脚9为A/D转换数据输出允许控制端OE,当OE为高电平时,存放与输出数据存储器中的数据通过ADC0809的数图6 ADC0809的内部逻辑结构据线D0D7输出。引脚10为ADC0809的时钟信号输入端CLOCK。在连接时,ADC0809的数据线D0D7与AT89S51的P0口相连,ADC080
13、9的地址引脚、地址锁存端ALE、启动信号START、数据输出允许控制端OE分别与AT89S51的P2口相连,转换结束信号EOC与AT89S51的P3.7口相连。时钟信号输入端CLOCK信号,由单片机的地址锁存控制端ALE提供。单片机的系统时钟为12MHZ。IN0IN7:8条模拟量输入通道 ADC0809对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。 地址输入和控制线:4条 ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进
14、行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入.数字量输出及控制线:11条 ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频
15、率为1MHZ,VREF(),VREF()为参考电压输入。 3.3.3 ADC0809工作原理8路模拟信号由ADC0809的IN0IN7端输入,AT89S51单片机的ALE端口输出的脉冲信号送ADC0809的10脚作为ADC的时钟信号(产生CLK信号的方法就得用软件来产生)。A/D转换完成之后,从EOC端返回AT89S51一个转换结束信号,单片机随即用信号将A/D转换的数字输出从D0D7端经P0口数据总线读入自己的存储器中。A/D转换过程全部结束。再经软件程序转换成ag 7段码输出,驱动LED数码管。各位数码管由位控信号P3.0、P3.1、P3.2、P3.3控制,由74LS245反相驱动将依次巡
16、回点亮数码管。3.4 74LS245工作原理74LS245是我们常用的芯片,用来驱动led或者其他的设备,他是8路同相三态双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)DIR=“1”,信号由 A 向 B 传输;(发送)当/CE为高电平时,A、B均为高阻态。具体电路有图7所示:图7 74LS245原理图4 结束语 通过这次实习,我受益匪浅,对初步设计电路有一个完整的思路。开始
17、是硬件的设计,整天忙于图书馆和电脑旁查找相关资料,整理材料初步形成大体模式,接着就开始画电路原理图,分析电路。还有软件设计,运用汇编语言编写程序,并在老师的引导下组装电路板,自己动手焊接元件。短短几天内,在各位老师的耐心指导和同学的帮助之下,开始在脑海里有了大致的模块,一点点,一块块的电路慢慢拼成完整的电路,于是又开始查找相关的资料,分析电路,根据自己的目的有效的编制程序,对比之下有进一步完善,在形成电路大致模块下又进一步尽可能的减小成本,直到最终电路以自己认为最理想的形式形成。参考文献1 张桂红;单片机原理及应用(第3版)科学技术出版社,2007.22 李朝青单片机原理及接接口技术M北京航空
18、航天大学出版社,19903 彭为,黄科,雷道中;单片机典型系统设计电子工业出版社,2006.5 4 周润景,袁伟亭,景晓松;Proteus在MCS-51ARM7系统中的应用百例.电子工业出版社.2006.10 5 丁元杰单片机原理及应用M北京;机械工业出版社,1996附录一:总体电路图附录二:程序清单 ORG 0000H LJMP START ORG 0030H ;主程序 START:CLR A MOV P2,A MOV R0,#70H MOV R2,#0DHLPMEM:MOV R0,A INC R0 DJNZ R2,LPMEM MOV 20H,#00H MOV A,#0FFH MOV P0,
19、A MOV P1,A MOV P3,A MAIN:LCALL TEST LCALL DISPLAY AJMP MAIN NOP NOP NOP LJMP START ;显示子程序DISPLAY:JB 00H,DISP11 MOV R3,#08H MOV R0,#70H MOV 7BH,#00HDISLP1:LCALL TUNBCD MOV R2,#0FFHDISLP2:LCALL DISP LCALL KEYWK1 DJNZ R2,DISLP2 INC R0 INC 7BH DJNZ R3,DISLP1 RET DISP11:MOV A,7BH SUBB A,#01H MOV 7BH,A AD
20、D A,#70H MOV R0,ADISLP11:LCALL TUNBCD MOV R2,#0FFHDISLP22:LCALL DISP LCALL KEYWK2 DJNZ R2,DISLP22 INC 7BH RET ;显示数据转换子程序 TUNBCD:MOV A,R0 MOV B,#51H DIV AB MOV 7AH,A MOV A,B CLR F0H SUBB A,#1AH MOV F0H,C MOV A,#10H MUL AB MOV B,#51H DIV AB JB F0H,LP2 ADD A,#05H LP2:MOV 79H,A MOV A,B CLR F0H SUBB A,#1
21、AH MOV F0H,C MOV A,#10H MUL AB MOV B,#51H DIV AB JB F0H,LP3 ADD A,#05H LP3:MOV 78H,A RET ;LED扫描显示子程序 DISP:MOV R1,#78H MOV R5,#0FEH PLAY:MOV P1,#0FFH MOV A,R5 ANL P3,A MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR MOV P1,A JB P3.2,PLAY1 CLR P1.7 PLAY1:LCALL DL1MS INC R1 MOV A,P3 JNB ACC.3,ENDOUT RL A MOV R5,A
22、 MOV P3,#0FFH AJMP PLAY ENDOUT:MOV P3,#0FFH MOV P1,#0FFH RET ;字段码表 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;延时10MS子程序 DL10MS:MOV R6,#0D0H DL1:MOV R7,#10H DL2:DJNZ R7,DL2 DJNZ R6,DL1 RET ;延时1ms子程序 DL1MS:MOV R4,#0FFH DL3:DJNZ R4,DL3 MOV R4,#0FFH DL4:DJNZ R4,DL4 RET ;A/D转换子程序 TEST:CLR
23、A MOV P2,A MOV R0,#70H MOV R7,#08H LCALL TESTART WAIT:JB P3.7,MOVD AJMP WAITTESTART:SETB P2.3 NOP NOP CLR P2.3 SETB P2.4 NOP NOP CLR P2.4 NOP NOP NOP NOP RET MOVD:SETB P2.5 MOV A,P0 MOV R0,A CLR P2.5 INC R0 MOV A,P2 INC A MOV P2,A CJNE A,#08H,TESTENDTESTEND:JC TESTCON CLR A MOV P2,A MOV A,#0FFH MOV
24、P0,A MOV P1,A MOV P2,A RETTESTCON:LCALL TESTART LJMP WAIT ;按键检测子程序KEYWK1:JNB P3.5,KEY1 KEYOUT:RET KEY1:LCALL DISP JB P3.5,KEYOUT WAIT11:JNB P3.5,WAIT12 CPL 00H MOV R2,#0AH MOV R3,#01H RET WAIT12:LCALL DISP AJMP WAIT11KEYWK2:JNB P3.5,KEY1 JNB P3.6,KEY2 RET KEY2:LCALL DISP JB P3.6,KEYOUT WAIT22:JNB P3.6,WAIT21 INC 7BH MOV A,7BH CJNE A,#08H,KEYOUT11KEYOUT11:JC KEYOUT1 MOV 7BH,#00H KEYOUT1:RET WAIT21:LCALL DISP AJMP WAIT22 END
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1