找回密码
 立即注册

QQ登录

只需一步,快速开始

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

0-30V电压表头 单片机汇编实例

[复制链接]
跳转到指定楼层
楼主
ID:1009425 发表于 2023-1-3 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
0-30V电压表头汇编程序,难点:1. 90K的电阻需要多个串并才能达到;2. 四位十六进制转换成四位BCD码

1672715579678.png (60.97 KB, 下载次数: 129)

电压表头接线图

电压表头接线图

1672715616391.png (74.72 KB, 下载次数: 114)

电压表头汇编程序

电压表头汇编程序

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1009425 发表于 2023-1-3 11:24 | 只看该作者
三位表头,汇编语言程序包含四位转换(没有编译)
  1.        ADC_CONTR   EQU 0BCH            ;ADC控制寄存器       ;;;IC:15L204EA,内部振荡6M,不分频,3.26V/256=0.0127V,0v-3.26v;;;;
  2.        ADC_RES     EQU 0BDH            ;ADC高8位结果
  3.        P1ASF       EQU 09DH            ;P1口第2功能控制寄存器
  4.                  JU1         DATA 32H
  5.                  JU2         DATA 33H
  6.                  JU3         DATA 34H
  7.                  JU4         DATA 35H
  8.                  JU5         DATA 36H
  9.        ORG   0000H
  10.        LJMP  MAIN1
  11.        ORG   0040H
  12. MAIN1:  MOV  SP,#7FH
  13.         LCALL INIT_ADC
  14. MAIN2:  LCALL GET_ADC_RESULT        ;读取高8位结果
  15.        MOV   A,ADC_RES
  16.        MOV   B,#07FH                ;电压比127,改变测量范围,修改电压比
  17.                  MUL   AB
  18.                  MOV   R0,A                  ;低8位结果
  19.                  MOV   R1,B                  ;高8位结果
  20.        ACALL BCD
  21. ;       MOV   A,JU2                 ;四位十进制数转四位BCD码显示
  22. ;       MOV DPTR,#TAB              ;千分位数,P3.4
  23. ;              MOVC A,@A+DPTR
  24. ;                 MOV   P2,A
  25. ;                 MOV   P3,#0EFH
  26. ;                 ACALL YS3
  27.                  MOV   A,JU4               ;百分位数,P3.5
  28.        MOV DPTR,#TAB              
  29.               MOVC A,@A+DPTR
  30.                  MOV   P2,A
  31.                  MOV   P3,#0DFH
  32.                  ACALL YS3
  33.                  MOV   A,JU3              ;十分位数,P3.6
  34.        MOV DPTR,#TAB1              
  35.               MOVC A,@A+DPTR
  36.                  MOV   P2,A
  37.                  MOV   P3,#0BFH
  38.                  ACALL YS3
  39.                  MOV   A,JU5               ;个位数,P3.7
  40.        MOV DPTR,#TAB            ;个位数带小数点显示         
  41.               MOVC A,@A+DPTR
  42.                  MOV   P2,A
  43.                  MOV   P3,#7FH
  44.        ACALL YS3
  45.                  LJMP  MAIN2

  46. GET_ADC_RESULT:                 ;读取ADC结果
  47.     PUSH  ACC
  48.     MOV   ADC_CONTR,#11101011B         ;ADC控制寄存器__开ADC电源1,最高转换速度11,ADC_FLAG软件标志位清0,
  49.                                      ;ADC_START启动1,转换通道001(P1.3)
  50.     NOP                         ;等待4个NOP
  51.     NOP
  52.     NOP
  53.     NOP
  54. WAIT:MOV   A,#00010000B           ;等待ADC转换完成,判断ADC_FLAG是否完成,等于1
  55.     ANL   A,ADC_CONTR
  56.     JZ    WAIT                   ;AD转换未完成,继续等待
  57.     ANL   ADC_CONTR,#11101011B  ;结束标志位ADC_FLAG清零,ADC_START位清零,停止A/D等待
  58.     POP   ACC
  59.     RET
  60. INIT_ADC:                       ;初始化ADC
  61.     MOV   P1ASF,#11B            ;设置P1.3口为AD口
  62.     MOV   ADC_RES,#0            ;清除结果寄存器
  63.     MOV   ADC_CONTR,#11101011B  ;ADC控制寄存器--开ADC电源,最高转换速度11
  64.     MOV   A,#2                  ;ADC上电并延时
  65.     LCALL DELAY
  66.     RET
  67. DELAY:MOV   R2,A                   ;软件延时
  68.     CLR   A
  69.     MOV   R0,A
  70.     MOV   R1,A
  71. DELAY1:
  72.     DJNZ  R0,DELAY1
  73.     DJNZ  R1,DELAY1
  74.     DJNZ  R2,DELAY1
  75.     RET
  76. YS3:     MOV R4,#40                ;延时程序2
  77. D2:      MOV R5,#250
  78.          DJNZ R5,$
  79.          DJNZ R4,D2
  80.          RET
  81. BCD:   MOV R2,#00h                 ;四位十六进制数转五位十进制数
  82.        MOV R3,#00h
  83.        MOV R4,#00h
  84.        MOV R5,#16
  85. LOOP:  CLR C
  86.        MOV A,R0
  87.        RLC A
  88.        MOV R0,A
  89.        MOV A,R1
  90.        RLC A
  91.        MOV R1,A
  92.        MOV A,R4
  93.        ADDC A,R4
  94.        DA A
  95.        MOV R4,A
  96.        MOV A,R3
  97.        ADDC A,R3
  98.        DA A
  99.        MOV R3,A
  100.        MOV A,R2
  101.        ADDC A,R2
  102.        MOV R2,A
  103.        DJNZ R5,LOOP
  104.        MOV  A,R4
  105.        MOV  B,#16
  106.        DIV  AB
  107.        MOV  JU1,A
  108.        MOV  JU2,B
  109.        MOV  A,R3
  110.        MOV  B,#16
  111.        DIV  AB
  112.        MOV  JU3,A
  113.        MOV  JU4,B
  114.        MOV  JU5,R2
  115.        RET
  116. TAB:   DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
  117. TAB1:  DB 040H,079H,024H,030H,019H,012H,02H,078H,00H,010H
  118.     END
复制代码

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:1048397 发表于 2023-1-13 08:22 | 只看该作者
汇编写的很专业,图没有看懂,MCU数码管,信号源在哪接呀?
回复

使用道具 举报

地板
ID:1009425 发表于 2023-2-1 09:15 | 只看该作者
MOV   ADC_CONTR,#11101011B         ;ADC控制寄存器__开ADC电源1,最高转换速度11,ADC_FLAG软件标
                                                         志位清0,
                                                        ;ADC_START启动1,转换通道001(P1.3)
回复

使用道具 举报

5#
ID:963310 发表于 2023-3-2 15:20 | 只看该作者
能做个5位的就厉害了
回复

使用道具 举报

6#
ID:404454 发表于 2023-4-8 11:59 | 只看该作者
还是用汇编的头大。
回复

使用道具 举报

7#
ID:1072518 发表于 2023-4-18 19:40 | 只看该作者
用汇编头大。
回复

使用道具 举报

8#
ID:1072518 发表于 2023-4-18 19:41 | 只看该作者
用汇编的高手,牛人呀。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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