找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4685|回复: 5
收起左侧

基于单片机电压表仿真 含汇编语言和C51源程序

[复制链接]
ID:203868 发表于 2017-5-23 13:55 | 显示全部楼层 |阅读模式
基于51单片机数字电压表仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 51hei.png

压缩包里面有汇编语言和c语言编写的2个程序

单片机汇编语言源程序:
  1.         OE BIT   P3.0    ;ADC0808的OE端
  2.         EOC    BIT   P3.1    ;ADC0808的EOC端
  3.         CLOCK BIT P2.6
  4.         ST     BIT   P3.2    ;ADC0808的START和ALE端
  5.         LED_0 DATA 30H     ;显示缓冲区
  6.         LED_1 DATA 31H
  7.         LED_2 DATA 32H
  8.         LED_3 DATA 33H
  9.         ADC    DATA 34H     ;存放转换后的数据

  10. ;//////主程序开始////////////////////////////////////////

  11.         ORG    0000H
  12.         AJMP   START
  13.         ORG    000BH
  14.         LJMP TT0
  15.         ORG 0030H
  16. ;------初始化-----------------------------------

  17. START:
  18.         MOV SP,#60H         ;设置堆栈
  19.         MOV    LED_0,#00H          ;清空显示缓冲区
  20.         MOV    LED_1,#00H
  21.         MOV    LED_2,#00H
  22.         MOV    LED_3,#00H
  23.         MOV    DPTR,#TABLE         ;送字型码表首地
  24.         
  25.         MOV TMOD,#02H
  26.         MOV TH0,#01H
  27.         MOV TL0,#01H
  28.         MOV IE,#82H
  29.         SETB TR0

  30. ;------ADC0808转换------------------------------

  31. WAIT:   CLR ST
  32.         SETB   ST
  33.         CLR    ST              ;启动转换
  34.         JNB    EOC,[        DISCUZ_CODE_2        ]nbsp;             ;等待转换结束
  35.         SETB   OE                  ;允许输出
  36.         MOV    ADC,P1              ;暂存转换结果

  37. ;------数据处理,已备显示------------------------

  38.         MOV    A,ADC               ;将AD转换结果转换成BCD码
  39.         MOV    B,#0C5H             ;乘以19.5MV
  40.         MUL    AB
  41.         MOV    R7,A
  42.         MOV    R6,B
  43. HB2:    CLR A              ;BCD码初始化
  44.         CLR    C
  45.         MOV    R3,A
  46.         MOV    R4,A
  47.         MOV    R5,A
  48.         MOV    R2,#10H             ;转换双字节十六进制整数
  49. HB3:    MOV A,R7           ;从高端移出待转换数的一位到CY中
  50.         RLC    A
  51.         MOV    R7,A
  52.         MOV    A,R6
  53.         RLC    A
  54.         MOV    R6,A
  55.         MOV    A,R5                 ;BCD码带进位自身相加,相当于乘2
  56.         ADDC   A,R5
  57.         DA     A                    ;十进制调整
  58.         MOV    R5,A
  59.         MOV    A,R4
  60.         ADDC   A,R4
  61.         DA A
  62.         MOV    R4,A
  63.         MOV    A,R3
  64.         ADDC   A,R3
  65.         MOV    R3,A                 ;双字节十六进制数的万位数不超过6,不用调整
  66.         DJNZ   R2,HB3
  67.         MOV    A,R5
  68.         SWAP   A
  69.         ANL    A,#0FH
  70.         MOV    LED_0,A
  71.         MOV    A,R4
  72.         ANL    A,#0FH
  73.         MOV    LED_1,A
  74.         MOV    A,R4
  75.         SWAP   A
  76.         ANL    A,#0FH
  77.         MOV    LED_2,A
  78.         MOV    A,R3
  79.         ANL    A,#0FH
  80.         MOV    LED_3,A
  81.         LCALL DISP                ;调用显示子程序
  82.         AJMP   WAIT

  83. ;//////数码管显示子程序///////////////////////////////////////////////

  84. DISP:   MOV A,LED_0          ;数码显示子程序
  85.         MOVC   A,@A+DPTR
  86.         CLR    P2.3
  87.         MOV    P0,A
  88.         LCALL DELAY
  89.         SETB   P2.3
  90.         MOV    A,LED_1
  91.         MOVC   A,@A+DPTR
  92.         CLR    P2.2
  93.         MOV    P0,A
  94.         LCALL DELAY
  95.         SETB   P2.2
  96.         MOV    A,LED_2
  97.         MOVC   A,@A+DPTR
  98.         CLR    P2.1
  99.         MOV    P0,A
  100.         LCALL DELAY
  101.         SETB   P2.1
  102.         MOV    A,LED_3
  103.         MOVC   A,@A+DPTR
  104.         CLR    P2.0
  105.         MOV    P0,A
  106.         SETB   P0.7
  107.         LCALL DELAY
  108.         SETB   P2.0
  109.         RET

  110. ;//////延时子程序////////////////////////////////////

  111. DELAY:   MOV R6,#0AH ;延时5毫秒
  112. D1:      MOV R7,#0FAH
  113.         DJNZ   R7,$
  114. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


单片机源程序如下(c语言):
  1. ADC0809数字电压表
  2. ;########################################################
  3. ;********************************************************
  4. ;程序名称: ADC0808电压表
  5. ;主控芯片: 89c51 ,12MHZ,(ADC0808,共阴极数码管)
  6. ;程序编写者:buyixin (不亦心)
  7. ;********************************************************
  8. ;########################################################
  9. OE BIT   P3.0    ;ADC0808的OE端
  10. EOC    BIT   P3.1    ;ADC0808的EOC端
  11. ST     BIT   P3.2    ;ADC0808的START和ALE端
  12. ADD0   BIT   P3.4    ;ADC0808的模拟输入选择端
  13. ADD1   BIT   P3.5
  14. ADD2   BIT   P3.6
  15. LED_0 DATA 30H     ;显示缓冲区
  16. LED_1 DATA 31H
  17. LED_2 DATA 32H
  18. LED_3 DATA 33H
  19. ADC    DATA 34H     ;存放转换后的数据
  20. ;//////主程序开始////////////////////////////////////////
  21. ORG    0000H
  22. AJMP   START
  23. ORG    0030H
  24. ;------初始化-----------------------------------
  25. START: MOV SP,#60H         ;设置堆栈
  26. MOV    LED_0,#00H          ;清空显示缓冲区
  27. MOV    LED_1,#00H
  28. MOV    LED_2,#00H
  29. MOV    LED_3,#00H
  30. MOV    DPTR,#TABLE         ;送字型码表首地址
  31. SETB   ADD0
  32. SETB   ADD1
  33. CLR    ADD2              ;选择ADC0808的通道3
  34. ;------ADC0808转换------------------------------
  35. WAIT:    CLR ST
  36. SETB   ST
  37. CLR    ST              ;启动转换
  38. JNB    EOC,[        DISCUZ_CODE_3        ]nbsp;             ;等待转换结束
  39. SETB   OE                  ;允许输出
  40. MOV    ADC,P1              ;暂存转换结果
  41. CLR    OE                  ;关闭输出
  42. ;------数据处理,已备显示------------------------
  43. MOV    A,ADC               ;将AD转换结果转换成BCD码
  44. MOV    B,#0C3H             ;乘以19.5MV
  45. MUL    AB
  46. MOV    R7,A
  47. MOV    R6,B
  48. HB2:     CLR A              ;BCD码初始化
  49. CLR    C
  50. MOV    R3,A
  51. MOV    R4,A
  52. MOV    R5,A
  53. MOV    R2,#10H             ;转换双字节十六进制整数
  54. HB3:     MOV A,R7           ;从高端移出待转换数的一位到CY中
  55. RLC    A
  56. MOV    R7,A
  57. MOV    A,R6
  58. RLC    A
  59. MOV    R6,A
  60. MOV    A,R5                 ;BCD码带进位自身相加,相当于乘2
  61. ADDC   A,R5
  62. DA     A                    ;十进制调整
  63. MOV    R5,A
  64. MOV    A,R4
  65. ADDC   A,R4
  66. DA A
  67. MOV    R4,A
  68. MOV    A,R3
  69. ADDC   A,R3
  70. MOV    R3,A                 ;双字节十六进制数的万位数不超过6,不用调整
  71. DJNZ   R2,HB3
  72. MOV    A,R5
  73. SWAP   A
  74. ANL    A,#0FH
  75. MOV    LED_0,A
  76. MOV    A,R4
  77. ANL    A,#0FH
  78. MOV    LED_1,A
  79. MOV    A,R4
  80. SWAP   A
  81. ANL    A,#0FH
  82. MOV    LED_2,A
  83. MOV    A,R3
  84. ANL    A,#0FH
  85. MOV    LED_3,A
  86. LCALL DISP                ;调用显示子程序
  87. AJMP   WAIT
  88. ;//////数码管显示子程序///////////////////////////////////////////////
  89. DISP:    MOV A,LED_0          ;数码显示子程序
  90. MOVC   A,@A+DPTR
  91. CLR    P2.3
  92. MOV    P0,A
  93. LCALL DELAY
  94. SETB   P2.3
  95. MOV    A,LED_1
  96. MOVC   A,@A+DPTR
  97. CLR    P2.2
  98. MOV    P0,A
  99. LCALL DELAY
  100. SETB   P2.2
  101. MOV    A,LED_2
  102. MOVC   A,@A+DPTR
  103. CLR    P2.1
  104. MOV    P0,A
  105. LCALL DELAY
  106. SETB   P2.1
  107. MOV    A,LED_3
  108. MOVC   A,@A+DPTR
  109. CLR    P2.0
  110. MOV    P0,A
  111. SETB   P0.7
  112. LCALL DELAY
  113. ……………………

  114. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
数字电压表.rar (152.41 KB, 下载次数: 150)
回复

使用道具 举报

ID:328014 发表于 2020-12-22 16:24 | 显示全部楼层

dsn文件就是仿真,这个帖子还是2017年的,那个时候应该还只有Proteus7.8版本,你安装这个版本就可以了
回复

使用道具 举报

ID:191612 发表于 2017-5-23 16:08 | 显示全部楼层
非常好 学习学习
回复

使用道具 举报

ID:215319 发表于 2017-6-28 08:21 | 显示全部楼层
请问仿真软件在哪
回复

使用道具 举报

ID:268445 发表于 2017-12-28 16:36 | 显示全部楼层
重点是,从哪里
回复

使用道具 举报

ID:641619 发表于 2019-11-14 10:21 | 显示全部楼层
厉害!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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