历史上的今天
今天是:2024年12月07日(星期六)
2021年12月07日 | 基于51单片机及ADC0808的数字电压表数码管汇编语言设计
2021-12-07 来源:eefocus
前言
大家好,上一条博客写了关于基于51单片机以及ADC0808的数字电压表,但是采用的C语言,本章讲一下采用汇编语言来实现电压的测量,同样采用数码管显示。
硬件设计
该设计采用的MCU同样是51单片机,ADC也是采用的TI的ADC0808,显示部分采用4位数码管,最终的测试电压范围为0~5V,这次的精度提高到约为0.01V,仿真图如下:
右下方是模拟的输入电压

部分汇编代码如下: (代码详细备注,方便阅读)
LED_0 EQU 30H ;百分位
LED_1 EQU 31H ;十分位
LED_2 EQU 32H ;个位
LED_3 EQU 33H ;十位
ADC EQU 35H
CLOCK BIT P1.4 ;定义0808时钟位
ST BIT P1.5
EOC BIT P1.6
OE BIT P1.7
ORG 0000H
LJMP START
ORG 000BH
LJMP INT_T0
ORG 30H
START: MOV LED_0,#00H
MOV LED_1,#00H
MOV LED_2,#00H
MOV DPTR,#TABLE ;表格数值赋到DPTR
MOV TMOD,#02H ;定时器选择方式2
MOV TH0,#0F5H ;防止数码管数位闪动,可设定的置为小于等于245的数
MOV TL0,#00H
MOV IE,#82H ;开T0中断
SETB TR0 ;T0开始计数
WAIT: CLR ST
SETB ST ;上升沿清零SAR(SAR用来在A/D转化过程中存放暂态数字量)
CLR ST ;下降沿启动ADC工作
JNB EOC,$ ;等待转换结果
SETB OE ;ADC输出
MOV ADC,P2 ;读取AD转换结果
CLR OE
MOV A,ADC
MOV R7,A ;R7储存AD转换后的结果
MOV LED_3,#00H ;清空十位
MOV LED_2,#00H ;清空个位
MOV A,#00H
LOOP1: ADD A,#20H ;一位二进制码对应100mV
DA A ;结果转换成BCD码
JNC LOOP2 ;Cy为0跳转,Cy为1继续执行
MOV R4,A ;R4储存百分位、十分位
INC LED_2 ;个位加1
MOV A,LED_2
CJNE A,#0AH,LOOP4 ;个位不为10跳转,为10继续执行
MOV LED_2,#00H ;个位置0
INC LED_3 ;十位加1
LOOP4: MOV A,R4
LOOP2: DJNZ R7,LOOP1 ;R7减1不为0跳转,为0继续执行
ACALL BTOD1
LCALL DISP ;调用显示子程序
LJMP WAIT
ORG 0200H
BTOD1: MOV R6,A ;R6储存R7为0后的A的值
文件地址:
链接:https://pan.baidu.com/s/146k5nKjulFsZeTJUKEvQDQ
提取码:cukz
史海拾趣
|
在芯片的生产过程中,会经历许多次的掺杂、增层、光刻和热处理等工艺制程,每一步都必须达到极其苛刻的物理特性要求。但是,即使是最成熟的工艺制程也存在不同位置之间、不同晶圆之间、不同工艺运行之间以及不同时段之间的变异。有时,这种变异会使 ...… 查看全部问答> |
|
不同所有制的企业性质对薪酬福利的影响 根据2007年度中国电子行业薪酬和职业发展调查。 通过对不同所有制性质企业的薪酬调查分析发现,外资企业与合资企业的电子工程师的薪酬收入和奖金收入都明显高于非外资企业(包括:国有企业、民营企 ...… 查看全部问答> |
|
招聘 windows ce及windows下的软件开发工程师 现在公司还需要以下岗位的各一位开发人员,请有意的朋友与我联络。 一、招聘 windows下软件开发工程师 主要开发相应平台下的输入法软件。 要求如下: 1. 熟悉windows下的编程; 2. 精通C/C++语言(必须具备); 3. 对UI界面有相当经验 4. 要 ...… 查看全部问答> |
|
谁能提供一个vs2005下控制ARM2440的IO或AD的例子呀? 刚开始学WIN CE的菜鸟。想了解VS 2005下如何控制ARM2440的IO或AD。 哪位老大能给个例子,不胜感激。 只有这么多分啦。… 查看全部问答> |
|
本人的SD卡驱动现已经能加载Sdmemory.dll. 但是在加载完之后还会发CMD17这个命令, 是不是在加载完sdmemory.dll之后。 在wince的目录下面是不是就会显示出一个SD卡的目录来(和U盘一样的那种)? 不过我初始化结束之后。显示不了 ...… 查看全部问答> |
|
PIC单片机发送缓存向移位寄存器搬运数据的时间是怎么算的?因为停止位后会有不到半个位的高电平,考虑是因为这个时间导致的,现影响高速通讯的应用。请问这个时间怎么算?有破解吗? 谢谢!… 查看全部问答> |
|
【视频分享】电源设计小贴士32和33:注意SEPIC耦合电感回路电流 简介:在本《电源设计小贴士》中,我们将确定 SEPIC 拓扑中耦合电感的一些漏电感要求。在不要求主级电路和次级电路之间电气隔离且输入电压高于或者低于输出电压时,SEPIC 是一种非常有用的拓扑。在要求短路电路保护时,我们可以使用它来代替升压转 ...… 查看全部问答> |
|
在学开发板,seed-expmsp430f5529实验板,要用lcd显示,但MSPF5529没有LCD的相关寄存器,要采用SPI通信模式去实现,具体的就不会了,请大神指导!!… 查看全部问答> |




