您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 51汇编之ADC0809数字电压表
51汇编之ADC0809数字电压表2009年10月13日星期二23:29这两天,一个网友用ADC0832采样并PC机处理,一个网友用ADC0809采样显示,都遇到点问题,我给过参考例程也解释过,但是他们在调试上还有问题。这里把网友沙漠狂风的ADC0809采样显示部分调试好了。关于ADC0809的资料,这里就不给出了,网上很多。由于仿真软件里的ADC0809元件有问题,这里用ADC0808代替,它和ADC0809区别很小。;########################################################;********************************************************;程序名称:ADC0808电压表;主控芯片:89c51,12MHZ,(ADC0808,共阴极数码管);程序编写者:buyixin(不亦心);编写时间:2009年10月13日22:24;不亦心的博客:不亦心/;********************************************************;########################################################OEBITP3.0;ADC0808的OE端EOCBITP3.1;ADC0808的EOC端STBITP3.2;ADC0808的START和ALE端ADD0BITP3.4;ADC0808的模拟输入选择端ADD1BITP3.5ADD2BITP3.6LED_0DATA30H;显示缓冲区LED_1DATA31HLED_2DATA32HLED_3DATA33HADCDATA34H;存放转换后的数据;//////主程序开始////////////////////////////////////////ORG0000HAJMPSTARTORG0030H;------初始化-----------------------------------START:MOVSP,#60H;设置堆栈MOVLED_0,#00H;清空显示缓冲区MOVLED_1,#00HMOVLED_2,#00HMOVLED_3,#00HMOVDPTR,#TABLE;送字型码表首地址SETBADD0SETBADD1CLRADD2;选择ADC0808的通道3;------ADC0808转换------------------------------WAIT:CLRSTSETBSTCLRST;启动转换JNBEOC,$;等待转换结束SETBOE;允许输出MOVADC,P1;暂存转换结果CLROE;关闭输出;------数据处理,已备显示------------------------MOVA,ADC;将AD转换结果转换成BCD码MOVB,#0C3H;乘以19.5MVMULABMOVR7,AMOVR6,BHB2:CLRA;BCD码初始化CLRCMOVR3,AMOVR4,AMOVR5,AMOVR2,#10H;转换双字节十六进制整数HB3:MOVA,R7;从高端移出待转换数的一位到CY中RLCAMOVR7,AMOVA,R6RLCAMOVR6,AMOVA,R5;BCD码带进位自身相加,相当于乘2ADDCA,R5DAA;十进制调整MOVR5,AMOVA,R4ADDCA,R4DAAMOVR4,AMOVA,R3ADDCA,R3MOVR3,A;双字节十六进制数的万位数不超过6,不用调整DJNZR2,HB3MOVA,R5SWAPAANLA,#0FHMOVLED_0,AMOVA,R4ANLA,#0FHMOVLED_1,AMOVA,R4SWAPAANLA,#0FHMOVLED_2,AMOVA,R3ANLA,#0FHMOVLED_3,ALCALLDISP;调用显示子程序AJMPWAIT;//////数码管显示子程序///////////////////////////////////////////////DISP:MOVA,LED_0;数码显示子程序MOVCA,@A+DPTRCLRP2.3MOVP0,ALCALLDELAYSETBP2.3MOVA,LED_1MOVCA,@A+DPTRCLRP2.2MOVP0,ALCALLDELAYSETBP2.2MOVA,LED_2MOVCA,@A+DPTRCLRP2.1MOVP0,ALCALLDELAYSETBP2.1MOVA,LED_3MOVCA,@A+DPTRCLRP2.0MOVP0,ASETBP0.7LCALLDELAYSETBP2.0RET;//////延时子程序////////////////////////////////////DELAY:MOVR6,#0AH;延时5毫秒D1:MOVR7,#0FAHDJNZR7,$DJNZR6,D1RET;//////数码管字形码表/////////////////////////////////TABLE:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FH;/////程序结束////////////////////////////////////////END硬件部分:仿真的时候,ADC0808时钟端,我直接加的500KHZ的方波,实际中一般有单片机的ALE端取时钟信号。仿真原理图直接在网友的原理图上改的。
本文标题:51汇编之ADC0809数字电压表
链接地址:https://www.777doc.com/doc-4191622 .html