ASM9_ADC0808:    ADC0808采集ADC参数,数码管显示

(注意代码显示不全,最下面有Keil源码和Proteus工程)

/**
******************************************************************************
*   @file      ADC0809/ADC0808.asm
*   @author    Alex——小白
*   @version   V1.0
*   @date      2019.9.1
*   @brief     ADC0808/0809采集,数码管显示
*   @store     Proteus仿真店子
*   @Link      https://shop484534014.taobao.com/
*   @Email     844545015@qq.com
******************************************************************************
*   @attention  All Rights Reserved
**/;例如采集ADC=127,则Num_2=1,Num_1=2,Num_0=7,只需要低3位数码管Num_0   EQU   30H   ;数字0Num_1   EQU   31H   ;数字1Num_2   EQU   32H    ;数字2ADC    EQU   33H    ;ADC值Duan    BIT   P2.0  ;引脚变量名Wei      BIT   P2.1OE      BIT   P2.2ST       BIT   P2.3 EOC     BIT   P2.4 ORG     0000H      ;程序执行的起始地址        LJMP    Main      ;跳转到main函数ORG     0100H      ;程序跳转到0100H开始执行Main:  CLR    Wei        ;573的位片选引脚CLR    Duan      ;573的段片选引脚MOV   Num_0,#00H MOV   Num_1,#00H MOV   Num_2,#00HWhile:            LCALL  ADC0808      ;调用ADC0808采集代码SJMP  While      ;While循环    ADC0808:          ;ADC采集代码CLR   ST        ;ST启动  SETB   STCLR   STJNB   EOC,$      ;等待采集完成SETB   OE        ;开启数据传输MOV   ADC,P1      ;采集数据赋给ADC变量LCALL  CAL        ;调用计算显示代码CLR   OE        ;关闭数据传输RETCAL:            ;计算电压值MOV   A,ADC      ;0-255映射为0-5    循环取整MOV   B,#51    DIV   AB    MOV   Num_2,A      ;整数MOV   A,B        ;余数放入ACLR   F0SUBB   A,#1AH      ;余数和51的一半1AH比较,以便四舍五入MOV   F0,CMOV   A,#10MUL   AB        ;余数乘以10,再除以51MOV   B,#51DIV   ABJB     F0,Next1ADD   A,#5Next1:MOV   Num_1,AMOV   A,BSUBB   A,#1AHMOV   F0,CMOV   A,#10MOV   B,#51DIV   ABJB     F0,Next2ADD   A,#5Next2:MOV   Num_0,ALCALL   DISPRETDISP:            ;数码管5,6,7共3位显示,总是先位选,后段选。MOV   DPTR,#Wei_Tab  ;DPTR指向数组Wei_Tab首位SETB  Wei        ;打开控制位数码管的使能端-位选MOV   A,#7      ;第7位赋给AMOVC   A,@A+DPTR    ;读取数组数Duan_TabMOV   P0,A      ;数码管赋值位CLR    Wei        ;关闭控制位数码管的使能端MOV   P0,#0FFH     ;消影MOV   DPTR,#Duan_Tab  ;DPTR指向数组Duan_Tab首位SETB  Duan      ;打开控制段数码管的使能端-段选    MOV   A,Num_0      ;段号赋给AMOVC   A,@A+DPTR    ;读取数组数Duan_TabMOV   P0,A       ;数码管赋值段CLR    Duan      ;关闭段选MOV   P0,#0FFH     ;消影LCALL   Delay      ;延时5msMOV   DPTR,#Wei_Tab  ;DPTR指向数组Wei_Tab首位SETB  Wei        ;打开控制位数码管的使能端-位选MOV   A,#6      ;第6位赋给AMOVC   A,@A+DPTR    ;读取数组数Duan_TabMOV   P0,A      ;数码管赋值位CLR    Wei        ;关闭控制位数码管的使能端MOV   P0,#0FFH     ;消影MOV   DPTR,#Duan_Tab  ;DPTR指向数组Duan_Tab首位SETB  Duan      ;打开控制段数码管的使能端-段选    MOV   A,Num_1      ;段号赋给AMOVC   A,@A+DPTR    ;读取数组数Duan_TabMOV   P0,A       ;数码管赋值段CLR    Duan      ;关闭段选MOV   P0,#0FFH     ;消影LCALL   Delay      ;延时5msMOV   DPTR,#Wei_Tab  ;DPTR指向数组Wei_Tab首位SETB  Wei        ;打开控制位数码管的使能端-位选MOV   A,#5      ;第5位赋给AMOVC   A,@A+DPTR    ;读取数组数Duan_TabMOV   P0,A      ;数码管赋值位CLR    Wei        ;关闭控制位数码管的使能端MOV   P0,#0FFH     ;消影MOV   DPTR,#Duan_Tab  ;DPTR指向数组Duan_Tab首位SETB  Duan      ;打开控制段数码管的使能端-段选    MOV   P0,#080H    ;数码管小数点CLR    Duan      ;关闭段选MOV   P0,#0FFH     ;消影LCALL   Delay      ;延时5msMOV   DPTR,#Wei_Tab  ;DPTR指向数组Wei_Tab首位SETB  Wei        ;打开控制位数码管的使能端-位选MOV   A,#5      ;第5位赋给AMOVC   A,@A+DPTR    ;读取数组数Duan_TabMOV   P0,A      ;数码管赋值位CLR    Wei        ;关闭控制位数码管的使能端MOV   P0,#0FFH     ;消影MOV   DPTR,#Duan_Tab  ;DPTR指向数组Duan_Tab首位SETB  Duan      ;打开控制段数码管的使能端-段选    MOV   A,Num_2      ;段号赋给AMOVC   A,@A+DPTR    ;读取数组数Duan_TabMOV   P0,A       ;数码管赋值段CLR    Duan      ;关闭段选MOV   P0,#0FFH     ;消影LCALL   Delay      ;延时5msRET     Delay:            ;t=t1*10=5ms,修改R6的值即可更改时间(不精准)MOV    R6, #00AH    ;00AH=10D1:            MOV    R7, #0FAH    ;t1=250*2=500D2:    DJNZ  R7, D2      ;R7=250自减,直到为0跳出循环,双周期DJNZ  R6, D1      ;R6=020自减,直到为0跳出循环,双周期RETDuan_Tab:DB 03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH    Wei_Tab:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FHEND  

1、学习目的

通过对ADC0808芯片采集模拟值,然后数码管显示电压数值。

2、学习内容

ADC作为模数转换的核心,是必须要掌握的教程,51单片机没有自带的ADC引脚,只能使用常见的ADC0808/ADC0809(基本读写命令一致)来完成。ADC0808是8 位A/D 转换器,有8个模拟输入通道,主要控制引脚有Start、EOC、OE、CLK,具体时序如下图:

如需下载Proteus仿真文件和Keil工程,请关注公众号:

Proteus仿真店子

(若需Proteus和keil安装包,后台回复:安装包;若需Proteus教学视频,后台回复:Proteus视频;若需其它设计,后台回复:51汇编设计

51单片机汇编学习例程(9)——ADC0809篇相关推荐

  1. 51单片机汇编学习例程(7)——74HC595数码管篇

    7.ASM7_Seg_595:    74HC595控制数码管静态显示 (注意代码显示不全,最下面有Keil源码和Proteus工程) /** **************************** ...

  2. 51单片机汇编学习例程(16)——AT24C02篇

    ​ASM16_AT24C02:EEPROM数据读写,LED显示 (注意代码显示不全,最下面有Keil源码和Proteus工程) /*********************************** ...

  3. 51单片机汇编学习例程(17)——KeyPad4X4篇

    ​ASM17_KeyPad4X4:矩阵键盘,LCD1602显示按键值. (注意代码显示不全,最下面有Keil源码和Proteus工程) 仿真视频 /** *********************** ...

  4. 51单片机汇编学习例程(10)——DAC0832篇

    ​ ASM10_DAC0832:    DAC0832输出各种波形 (注意代码显示不全,最下面有Keil源码和Proteus工程) /** ****************************** ...

  5. 51单片机汇编学习例程(13)——DC-Motor篇

    ​ ASM13_DCMotor:    DC-Motor电机控制 (注意代码显示不全,最下面有Keil源码和Proteus工程) /********************************** ...

  6. 51单片机汇编学习(一)点亮你的LED灯

    本帖为使用汇编编写51单片机的学习笔记,本帖使用软件为keil5,因为没有实际硬件,所以选择porteus仿真软件,因为是第一篇,所以内容多有赘述,详细说明了工程建立等,因为文章太长所以编程和仿真分开 ...

  7. 51单片机汇编学习笔记9——定时计数器

    这一小节介绍一下51单片机的一个重要外设定时计数器. 顾名思义定时计数器主要是两种功能:定时.计数. 定时:就是当你开启定时器后到了设定的时间他会触发中断,然后去执行中断服务函数里面的程序. 计数:主 ...

  8. 51单片机汇编学习11——扩展原理与接口技术

    终于到这一小节了.这一节讲扩展原理与接口技术. 那么什么是扩展原理&接口技术呢?其实主要是3种. 1.扩展一个程序存储器 2.扩展一个数据存储器 3.扩展IO口 1.扩展程序存储器 其实这个扩 ...

  9. 51单片机汇编学习10——串口通讯

    这一小节写一下串口通讯. 建议先去了解一下什么串行通讯. 推荐一个视频3分钟理解通信协议之串口UART到底是个啥?_哔哩哔哩_bilibili 因为串口通讯涉及的寄存器相对较多.所以尽量要自己去看看S ...

最新文章

  1. 指针 是否相同_c专题之指针---野指针和空指针解析
  2. MSChart使用导航之开发
  3. NYOJ 36 最长公共子序列 dp
  4. 全球唯一:MySQL社区2018年度公司贡献奖颁给阿里云
  5. php foreach 为什么在if条件下多条数据只取出一条数据_微信大牛教你深入了解数据库索引...
  6. 2道编程题:1.给定一个字符串,计算字符串中数值的个数并求和。
  7. iOS 11.3 显示:Apple ID 或将实现微信式扫码登陆
  8. typedef与define的区别
  9. multiprocessing.queue取数据要加锁么_秒杀抢购思路以及高并发下数据安全
  10. linux malloc 内存不足,linux中 对malloc/free分配及释放内存空间时发生的泄漏问题
  11. 【C 语言】文件操作 ( fread 函数 )
  12. 什么是私有ip 、A类地址、B类地址和C类地址?
  13. TeamTalk 配置模块详解
  14. 关闭445端口bat脚本
  15. 硬件工程师的真实前途我说出来可能你们不信
  16. 有关XLS文件的读取
  17. 数据库简介、及常用数据库介绍
  18. 架构师推荐书籍 一
  19. 传智播客创始人张孝祥因病去世(转)
  20. Win11笔记本耗电大怎么解决?Win11耗电快怎么办?

热门文章

  1. 中值滤波,均值滤波,高斯滤波,双边滤波,联合双边滤波介绍
  2. [Samba] Linux(Centos)samba服务安装,Samba文件共享及Samba配置详解
  3. Java毕业设计-商城管理系统
  4. python获取根目录位置
  5. html+css+js仿写星巴克网页
  6. 软件产品质量要求和测试细则-信息安全性
  7. 如何实现1-100的阶乘?
  8. linux 性能测试 antutu,安兔兔“不诚实”?这三款跑分软件绝对值得一试!
  9. IBM Rational Functional Tester用户手册(一)
  10. 另一种MTK特效制作的方法,层复制