ADC0832数码管显示电压表汇编程序

发布时间:2023-01-04  

;***********************************************************

;* *

;* 数字电压表演示程序 *

;* *

;***********************************************************

;功能: 数码管显示ADC0832采样值

;适用于 MCS-51 开发板

;创作人: Jihao

;=====================================================

AD_CLK EQU P1.5

AD_DAT EQU P1.6

AD_CS EQU P1.4

DISSTART EQU 30H ;显示单元首地址

LED_DATA EQU P0 ;数码管数据定义

AD_TEMP EQU 2FH ;AD采样值存放单元

ORG 0000H

JMP START

ORG 0030H

;====================================================

START:

MOV SP,#60H

MOV A,#00H

MOV AD_TEMP,A

MOV P0,#0FFH

MOV P2,#0FFH

START1:

ACALL AD_CONV

MOV R4,#0AH

START2:

ACALL TUNBCD

ACALL ADPLAY

DJNZ R4,START2

JMP START1

;====================================================

;AD转换子程序

;AD转换值存放AD_TEMP中

;先ADC0832初始化,后采集数据。

;====================================================

AD_CONV:

SETB AD_CS ;一个转换周期开始

CLR AD_CLK

CLR AD_CS ;CS置0,片选有效

SETB AD_DAT ;DI置1,起始位

SETB AD_CLK ;第一个脉冲

CLR AD_DAT ;在负跳变之前加一个DI反转操作

CLR AD_CLK

SETB AD_DAT ;DI置1,设为单通道

SETB AD_CLK ;第二个脉冲

CLR AD_DAT

CLR AD_CLK

CLR AD_DAT ;DI置0,选择通道0

SETB AD_CLK ;第三个脉冲

SETB AD_DAT

CLR AD_CLK

NOP

NOP

SETB AD_CLK ; 第四个脉冲

MOV R1,#08H ;计数器初值,读取8位数据,

AD_READ: CLR AD_CLK ;下降沿

MOV C,AD_DAT ;读取DO端数据

RLC A ;C移入A,高位在前

SETB AD_CLK ;下一个脉冲

DJNZ R1,AD_READ ;没读完继续

SETB AD_CS

MOV AD_TEMP,A ;转换结果存入AD_TEMP

RET

;====================================================

;AD采集值转为三位BCD码子程序

;转换后的三位BCD码分别存入DISSTART+2、

;DISSTART+1、DISSTART 单元中。

;AD采集值在AD_TEMP单元中。

;255/51=5.00V 运算

;====================================================

TUNBCD:

MOV A,AD_TEMP

MOV B,#51

DIV AB

MOV DISSTART+2,A ;整数个位数放入DISSTART+2

MOV A,B ;余数大于1AH,F0为0,乘法溢出,结果加5

CLR F0

SUBB A,#1AH ;相减不够,C=1 表示余数小于1AH(26)

MOV F0,C

MOV A,#10 ;

MUL AB ;余数乘以10,相当于补0,继续除。

MOV B,#51

DIV AB ;再除以51

JB F0,T_BCD1

ADD A,#5

T_BCD1:

MOV DISSTART+1,A ;小数后第一位放入DISSTART+1

MOV A,B

CLR F0

SUBB A,#1AH

MOV F0,C

MOV A,#10

MUL AB

MOV B,#51

DIV AB

JB F0,T_BCD2

ADD A,#5

T_BCD2:

MOV DISSTART,A ;小数后第二位放入DISSTART

RET

;====================================================

;显示子程序

;使用三位数码管显示

;====================================================

ADPLAY:

PUSH PSW

CLR PSW.3

SETB PSW.4

MOV R0,#DISSTART ;开始填充显示单元

MOV R2,#03H ;共计填充 3 位

DISP1: MOV A,@R0 ;获得当前位地址

MOV DPTR,#TAB_NU ;获得表头

MOVC A,@A+DPTR ;获得编码数据

MOV @R0,A ;保存编码数据

INC R0 ;指向下一个带转换数据

DJNZ R2,DISP1 ;继续转换,直到完成

MOV R0,#DISSTART ;获得显示单元首地址

MOV R1,#0FEH ;从第一个数码管开始

MOV R2,#03H ;共显示3位数码管

DISP2: MOV LED_DATA,@R0 ;读取显示单元数据

MOV P2,R1 ;开始显示当前位

MOV A,R1 ;准备显示下一位

RL A ;

MOV R1,A ;下一位

INC R0 ;取下一个单元地址

JNB ACC.2,DISP3 ;第三位数码管加小数点

JMP DISP4

DISP3: MOV A,@R0

ANL A,#7FH

MOV @R0,A

DISP4: LCALL DELAY2MS ;延时 2 MS

LCALL DELAY2MS

LCALL DELAY2MS

DJNZ R2,DISP2 ;重复显示下一个

POP PSW

RET ;显示完成,返回

;====================================================

;延时子程序

;====================================================

DELAY2MS:

MOV R6,#10

DEL1: MOV R7,#100

DJNZ R7,$

DJNZ R6,DEL1

RET

;====================================================

TAB_NU:

DB 0c0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH

;====================================================

END


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    应的笔段也不发光,则说明被测笔段的发光二极管已经开路损坏。与干电池检测法一样,采用万用表检测法也可对不清楚结构类型和引脚排序的数码管进行快速检测。 图a 干电池检测法 图b 万用表检测法 ......
    如何用万用表测电压?万用表测电压原理;测电压原理 数字万用表的测量过程由转换电路将被测量转换成直流电压信号,再由模/数(a/d)转换器将电压模拟量转换成数字量,然后通过计数器计数,最后......
    如何用万用表去辨别电容的好坏;不知道怎么用万用表去辨别电容的好坏,特别是那些超出万用表量程的电容,今天就给大家讲述一下如何用万用表去辨别电容的好坏,特别是那些容量比较大的电容,废话......
    如何用万用表判别电动机好坏;用万用表判别单相或三相电机是不是烧掉了的方法只适用线圈绕组的直流电阻在1欧以上的小型电动机,一三相电机是不是烧掉了的判别方法比较简单,用万用表测......
    如何用万用表查是否短路;  短路就是不该通的两根线通了,短路是相与相之间,相与地之间,一个是相间短路,一个是接地短路;断路该通的一根线不通了。接地是相对地,接地分为死接地,相与地阻值越大越好,阻值......
    如何用万用表测试LED;Q A & 问:如何测试LED 本文将介绍一些关于LED的基础知识以及如何测试LED的相关知识。 LED的基础知识 LED(发光二极管)是一种半导体二极管(一种p......
    封装底部平面一侧的电线是阴极侧。LED侧视图和底视图如下: 如何用万用表测试LED 将黑色引线连接到万用表上的COM端。将红色引线连接到Ω端,除非您的仪表型号有所差异。 将表盘指针转到万用表上的二极管符号上。这样......
    如何用万用表测量220v线路漏电;测量220v漏电的问题不太合适,因为你要测量的是漏电电流,万用表测量微弱的交流电流是弱项,测不准也比较麻烦,如果你非要测,需要用电流,你还不如用钳形表来测量,但要......
    如何用数字万用表测量线路中的火线?首先将数字万用表拨至交流~750V档位上,用万用表的红表笔线或者黑表笔线均可,在自己的手上缠绕3~5圈,另外的一只表笔插入或接触导体的金属桩头或插座里去。请看......
    如何用万用表测电流;用万用表测电流有点麻烦,需要断开电路。比如吧火线断开,电源侧接红表笔,负载侧接黑表笔。其实测电流最好还是用钳形表。 万能表的两测棒按说明正确插入测量插孔。如果......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>