找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2614|回复: 6
打印 上一主题 下一主题
收起左侧

把ADC0809 8位分辨率提高到11位,做一个51单片机的数字电压表,有段程序看不懂

[复制链接]
跳转到指定楼层
楼主
ID:584265 发表于 2020-1-3 19:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
源程序:LED_0 EQU  30H      ;千分位
LED_1  EQU  31H
LED_2  EQU  32H
LED_3  EQU  33H        ;存放段码
ADC  EQU  35H
CLOCK BIT  P2.4   ;定义ADC0808时钟位
ST   BIT  P2.5
EOC  BIT  P2.6
OE   BIT  P2.7
  ORG  00H
  SJMP START
  ORG  0BH
  LJMP INT_T0
START: MOV  LED_0,#00H
  MOV  LED_1,#00H
  MOV  LED_2,#00H
  MOV  DPTR,#TABLE  ;段码表首地址
  MOV  TMOD,#02H     ;TO定时器方式2
  MOV  TH0,#245     ;脉冲信号1us
  MOV  TL0,#00H
  MOV  IE,#82H      ;允许TO中断
  SETB TR0       ;开启定时
WAIT:  CLR  ST      
  SETB  ST    ;看时序图
  CLR  ST    ;启动AD转换
   JNB  EOC,$   ;等待转换结束,扫描
  SETB  OE
  MOV  ADC,P1   ;读取AD转换结果
  CLR  OE  
  MOV  A,ADC       ;存到A存储器
     MOV     B,#51    ;开始做运算
  DIV     AB
  MOV     LED_3,A       ;整数值
        MOV     A,B     
MOV     B,#10      
  MUL     AB
  MOV     R1,B
  JNB     PSW.2 , TAB1
  INC     A      
  TAB1: MOV     B,#51
        DIV     AB
  CJNE    R1,#1, TAB2
  ADD     A,#5

TAB2:  MOV     LED_2,A   ;十分位
        CLR  PSW.2                       
  MOV     A,B
  MOV     B,#10
  MUL     AB
  MOV     R1,B
  JNB     PSW.2 , TAB3
  INC     A
  TAB3: MOV     B,#51
        DIV     AB
  CJNE    R1,#1, TAB4
  ADD     A,#5
TAB4:  MOV     LED_1,A    ;百分位
        CLR  PSW.2
  MOV     A,B
  MOV     B,#10
  MUL     AB
  MOV     R1,B
  JNB     PSW.2 , TAB5
  INC     A
  TAB5: MOV     B,#51
        DIV     AB
  CJNE    R1,#1, TAB6
  ADD     A,#5
TAB6:  MOV     LED_0,A     ;千分位
        CLR  PSW.2
  LCALL DISP
  SJMP  WAIT
INT_T0: CPL  CLOCK    ;提供ADC0808时钟信号
  RETI
DISP: MOV  A,LED_0   ;显示子程序
  MOVC A,@A+DPTR
  CLR  P2.3
  MOV  P0,A
  LCALL DELAY
  SETB P2.3
  
        MOV  A,LED_1
  MOVC A,@A+DPTR
  CLR  P2.2
  MOV  P0,A
  LCALL DELAY
  SETB P2.2
  MOV  A,LED_2
  MOVC A,@A+DPTR
  CLR  P2.1
  MOV  P0,A
  LCALL DELAY
  SETB P2.1
  MOV  A,LED_3
  MOVC A,@A+DPTR
  ADD     A,#80H
  CLR  P2.0
  MOV  P0,A
  LCALL DELAY
  SETB P2.0
  RET
DELAY: MOV  R6,#10   ;延时5毫秒
D1:  MOV  R7,#250
  DJNZ R7,$
  DJNZ R6,D1
  RET
TABLE:  DB   3FH,06H,5BH,4FH,66H
  DB   6DH,7DH,07H,7FH,6FH
  END

标黄的地方看不懂,为什么要用#51去除
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2020-1-4 10:52 | 只看该作者
兄弟,把你手上的电路和ADC0809扔了吧,这玩意跟不上时代了,在一个能用机器犁田的时代,你把用牛犁田的技术练得那么好,说真的,这没有什么用。
这个ADC可能是太多教材上用了,所以,马云家都把这个8位的ADC卖得比16位的ADC还要贵了
一个STC8A系列的单片机,自带12位ADC,可以外接参考电压,它不香吗?电路复杂程度和电路成本减少了很多呀
回复

使用道具 举报

板凳
ID:336367 发表于 2020-1-4 11:10 | 只看该作者
图啥呢?还用汇编,c语言它不香吗?
回复

使用道具 举报

地板
ID:532541 发表于 2020-1-4 12:18 | 只看该作者
除51和基准电压有关估计用5V做基准电压和AD的分辨率有关,这个采用值只有2位,最大255,255/51=5
月就是最大测量值是5伏
回复

使用道具 举报

5#
ID:237354 发表于 2020-1-4 14:08 | 只看该作者
四舍五入取整
回复

使用道具 举报

6#
ID:235200 发表于 2020-1-4 15:05 | 只看该作者
读出的转换值最小为0,最大为255,但测量出的电压值最小为0,最大为5V,因此1V所代表的值是51,除以51取整所得到的是测出电压的整数位而已
回复

使用道具 举报

7#
ID:235200 发表于 2020-1-4 15:08 | 只看该作者
Y_G_G 发表于 2020-1-4 10:52
兄弟,把你手上的电路和ADC0809扔了吧,这玩意跟不上时代了,在一个能用机器犁田的时代,你把用牛犁田的技 ...

教材是学习方法,8位的51单片机处理8位的ADC转换结果很自然
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表