用51汇编 显示 BCD码 数码管

最高输入280V经衰减100得到ad采样读取数
(ad采样读取数/255)*5V+0.4V
结果转换为BCD码,数码管显示280V。用51汇编如何写?
这个不大需要原理图,只要转换子程序,这个子程序是用来将已从AD0809中读到的二进制数转换为BCD码存在三个缓存中,只要查表在数码管上显示,如果小于10V后要跟一两位小数。程序最好有标注释或说明入口出口参数。I/O口随便设。
如输入280V衰减100倍为2.8V经AD被单片机读取,后面的就要用到这个
转换程序{利用(ad采样读取数/255)*5V+0.4V 这上公式算得采样电压,乘于衰减倍数得到显示值 主要是公式写法与小数点}
我的邮箱linqiaoli@126.com

最高输入280V经衰减100得到ad采样读取数
(ad采样读取数/255)*5V+0.4V
结果转换为BCD码,数码管显示280V。
--------------------
这里就是说,ad采样读取数最大是122。
按照楼主给出的公式,就可以得出 2.80V。
(ad采样读取数122 / 255)* 5V + 0.4V = 2.80V
推导:
= ad采样读取数122 × 5 / 255 + 04
= ad采样读取数122 / 51 + 04 = 280
程序如下:
MOV A, P1
MOV B, #51
DIV AB ;采样数据除以51
MOV B, #10
DIV AB ;除以10,余数是个位数
MOV R7, B ;保存余数,即个位数
ADD A, #4 ;加上0.4V
MOV B, #10
DIV AB ;除以10,余数是十位数
MOV R6, B ;保存余数,即十位数
MOV R5, A ;保存百位数

转换结果在R5 R6 R7中。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-01
:
ORG 0000H
LJMP START

START:
MOV B, #0
MOV DPTR, #D_table
M_LOOP:
MOV P0, #0
MOV P2, B
MOV A, B
MOVC A, @A+DPTR
MOV P0, A
INC B
ANL B, #7
CALL Delay
SJMP M_LOOP
Delay:
MOV R7, #0
DJNZ R7, $
DJNZ R7, $
RET

D_table:
DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
END

用PROTEUS软件仿真运行效果如下图所示。本回答被网友采纳

用51汇编 显示 BCD码 数码管
结果转换为BCD码,数码管显示280V。--- 这里就是说,ad采样读取数最大是122。按照楼主给出的公式,就可以得出 2.80V。(ad采样读取数122 \/ 255)* 5V + 0.4V = 2.80V 推导:= ad采样读取数122 × 5 \/ 255 + 04 = ad采样读取数122 \/ 51 + 04 = 280 程序如下:MOV A, ...

转bcd码 51汇编
ds1302时钟芯片,在计时时是以BCD码(就是十进制数了)的形式计数的,用汇编写程序一个是读出时间显示,一个是设置初始时间。一、显示时间、日期,要是数码管还简单些,如30H单元放的是分,显示分十位,则取(30H)的高4位,MOV A,30H,ANL A,#0F0H,SWAP A,A中即为十位。取低4位就...

怎样用单片机控制数码管的显示?
如果你使用的是多位数码管,你可能需要使用动态扫描技术来依次点亮每个数码管,并快速切换,以便人眼看到的是连续的显示。这通常涉及到额外的I\/O口来控制每个数码管的公共端,并且需要在软件中实现动态扫描逻辑。

在51单片机中,使用汇编语言,如何将十六进制数转换成十进制。
MOV R1, A MOV A, R4 ;送到BCD码的低端 ADDC A, R4 ;带进位加。自身相加,相当于左移一位 DA A ;十进制调整,变成BCD码 MOV R4, A MOV A, R3 ADDC A, R3 DA A MOV R3, A MOV A, R2 ADDC A, R2 MOV R2, A DJNZ R5, ...

C51单片机数码管动态显示工作原理是什么?
静态驱动是指每个数码管的每一个段码都由一个单片机的I\/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I\/O端口多,如驱动5个数码管静态显示则需要5×8=40根I\/O端口来驱动,要知道一个89S51单片机可用的I\/O端口才32个呢:),实际...

汇编语言BCD码是什么?
才能保存在计算机中。但是10进制跟2进制之间转换很麻烦。而BCD吗就是解决这个问题的。BCD码就是把10进制数的每1位都用4位的二进制表示,如:28的BCD码是0010 1000,由于转换的时候只要计算0~9之间转换,因此非常的方便,口算就可以算出来了。这就是BCD码了!!

bcd码是什么?BCD码用在哪方面?
答:BCD码用于操作硬件这个说法不准确,准确一点说,BCD码用于输入(例如拨码开关)、输出设备(例如数码管),它们是和人打交道的,输入的和显示的都是十进制数。但是通过这些设备不能直接输入和显示十进制数,所以要用BCD码。BCD码就是每一位用4位二进制数表示的十进制数,例如要输入十进制数123,...

求一个好使的 ch451 控制程序 自己在网上找了几个 都不怎么好用 求高手...
不译码指的是不转成BCD码,也就是说如果连接是按顺序连接数码管的八个管脚,在对CH451初始化后,可发送设置,让它用译码方式,(默认不译码),译码后,有个表,发送数据是多少显多少。不译码,需要在程序中写个表,手工译码,也就是数码管的a、b、c...对应的灯亮,总体显一个数。4线串行接口,是和单片机的通信采用...

4位二进制码(0~15)至BCD码转换电路:BCD码用数码管显示
四位二进制码,它就是四位二进制数。可以代表十进制0~15。BCD码,它也是四位二进制数。但是,只用它代表十进制0~9。四位二进制码,十进制0~15,是两位十进制数字,所以,就需要用两组 BCD 码,分别代表十位、个位,共八位。

求助:关于80C51单片机简易计算器设计的程序,要求是汇编语言。谢谢...
MOV 7AH,A ;百位数送显示缓存RETURN:LJMP LOOP;动态显示子程序DIR:MOV DPTR,#TAB ; 数码管译码表首址 MOV R0,#78H ;待显缓冲区个位地址 MOV A,#0FEH ; 个位位选信号 MOV R1,ALD1:MOV A,@R0 MOVC A,@A+DPTR ;查表 MOV P2,R1 ;共阳极管字位选择送到P2口 MOV P0,A ;字段码送P0口 LCALL ...

相似回答