找回密码
 立即注册

QQ登录

只需一步,快速开始

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

八路电压测量显示电路程序ADC0809+单片机小工具

[复制链接]
跳转到指定楼层
楼主

单片机小工具:

单片机源程序如下:
  1. ;************************;
  2. ;                        ;
  3. ; 八路电压测量显示电路   ;
  4. ;                        ;
  5. ;************************;
  6. ;测量电压最大为5V,显示最大值为5.00V
  7. ;70H—77H存放采样值,78H—7BH存放显示数据,依次为个位、十位、百位、通道标志
  8. ;P3.5作单路显示-循环显示转换用,P3.6作单路显示时选择通道用。?
  9. ;
  10. ;*************************************
  11. ;*                                   *
  12. ;*      主程序和中断程序入口         *
  13. ;*                                   *
  14. ;*************************************
  15.                 ORG     0000H
  16.                 LJMP    START
  17.                 ORG     0003H
  18.                 RETI
  19.                 ORG     000BH
  20.                 RETI
  21.                 ORG     0013H
  22.                 RETI
  23.                 ORG     001BH
  24.                 RETI
  25.                 ORG     0023H
  26.                 RETI
  27.                 ORG     002BH
  28.                 RETI
  29. ;
  30. ;*************************************
  31. ;*                                   *
  32. ;*       初始化程序中的各变量        *
  33. ;*                                   *
  34. ;*************************************
  35. CLEARMEMIO:   
  36.                 CLR     A
  37.                 MOV     P2,A
  38.                 MOV     R0,#70H
  39.                 MOV     R2,#0DH
  40. LOOPMEM:        MOV     @R0,A
  41.                 INC     R0
  42.                 DJNZ    R2,LOOPMEM
  43.                 MOV     20H,#00H
  44.                 MOV     A,#0FFH
  45.                 MOV     P0,A
  46.                 MOV     P1,A
  47.                 MOV     P3,A
  48.                 RET
  49. ;
  50. ;*************************************
  51. ;*                                   *
  52. ;*            主 程 序                 *
  53. ;*                                   *
  54. ;*************************************
  55. START:         
  56.                 clr        p3.3
  57.                 mov        p1,#01h
  58.                 mov        p1,#02h
  59.                 mov        p1,#04h
  60.                 mov        p1,#08h
  61.                 mov        p1,#10h
  62.                 mov        p1,#20h
  63.                 mov        p1,#40h
  64.                 mov        p1,#80h


  65. LCALL   CLEARMEMIO      ;初始化
  66. MAIN:           LCALL   TEST            ;测量一次
  67.                 LCALL   DISPLAY         ;显示数据一次
  68.                 AJMP        MAIN
  69.                 NOP                        ;PC值出错处理
  70.                 NOP
  71.                 NOP
  72.                 LJMP        START
  73. ;
  74. ;*************************************
  75. ;*           显 示 控 制 程 序            *
  76. ;*************************************
  77. ;
  78. DISPLAY:        JB      00H,DISP11    ;
  79.                 MOV     R3,#08H       ;8路信号循环显示控制
  80.                 MOV     R0,#70H       ;显示数据初址70H~77H
  81.                 MOV     7BH,#00H      ;显示通道路数初值
  82. DISLOOP1:       LCALL   TUNBCD        ;显示数据转为三位BCD码存入7AH、79H、78H(最大5.00v)
  83.                 MOV     R2,#0FFH      ;每路显示时间控制 4MS*255
  84. DISLOOP2:       LCALL   DISP          ;调四位显示程序
  85.                 LCALL   KEYWORK1      ;
  86.                 DJNZ    R2,DISLOOP2   ;
  87.                 INC     R0            ;显示下一路
  88.                 INC     7BH           ;通道显示数加一
  89.                 DJNZ    R3,DISLOOP1
  90.                 RET
  91. ;
  92. DISP11:         MOV     A,7BH         ;
  93.                 SUBB    A,#01H        ;
  94.                 MOV     7BH,A         ;
  95.                 ADD     A,#70H        ;
  96.                 MOV     R0,A          ;
  97. DISLOOP11:      LCALL   TUNBCD        ;显示数据转为三位BCD码存入7AH、79H、78H(最大5.00v)
  98.                 MOV     R2,#0FFH       ;每路显示时间控制 4MS*25
  99. DISLOOP22:      LCALL   DISP          ;调四位显示程序
  100.                 LCALL   KEYWORK2      ;
  101.                 DJNZ    R2,DISLOOP22
  102.                 INC     7BH           ;通道显示数加一
  103.                 RET
  104. ;
  105. ;*************************************
  106. ;*   显示数据转为三位BCD码程序       *
  107. ;*************************************
  108. ;显示数据转为三位BCD码存入7AH、79H、78H(最大值5.00v)
  109. ;
  110. TUNBCD:         MOV     A,@R0           ;255/51=5.00V运算
  111.                 MOV     B,#51           ;
  112.                 DIV     AB              ;
  113.                 MOV     7AH,A           ;个位数放入7AH
  114.                 MOV     A,B             ;余数大于19H,F0为1,乘法溢出,结果加5
  115.                 CLR     F0
  116.                 SUBB    A,#1AH
  117.                 MOV     F0,C
  118.                 MOV     A,#10           ;
  119.                 MUL     AB              ;
  120.                 MOV     B,#51           ;
  121.                 DIV     AB
  122.                 JB     F0,LOOP2         ;
  123.                 ADD     A,#5
  124. LOOP2:          MOV     79H,A           ;小数后第一位放入79H
  125.                 MOV     A,B
  126.                 CLR     F0
  127.                 SUBB    A,#1AH
  128.                 MOV     F0,C
  129.                 MOV     A,#10           ;
  130.                 MUL     AB              ;
  131.                 MOV     B,#51           ;
  132.                 DIV     AB
  133.                 JB     F0,LOOP3         ;
  134.                 ADD     A,#5
  135. LOOP3:          MOV     78H,A           ;小数后第二位放入78H
  136.                 RET
  137. ;
  138. ;*************************************
  139. ;*    ?  显?示 程 序               *
  140. ;*************************************
  141. ;共阳显示子程序,显示内容在78H—7BH
  142. ;
  143. DISP:           MOV     R1,#78H       ;共阳显示子程序,显示内容在78H—7BH
  144.                 MOV     R5,#0FEH      ;数据在P1输出,列扫描在P3.0-P3.3
  145. PLAY:           MOV     P1,#0FFH
  146.                 MOV     A,R5
  147.                 ANL     P3,A
  148.                 MOV    A,@R1
  149.                 MOV    DPTR,#TAB
  150.                 MOVC   A,@A+DPTR
  151.                 MOV    P1,A
  152.                 JB     P3.2,PLAY1     ;小数点处理
  153.                 CLR    P1.7           ;小数点显示(显示格式为XX.XX)
  154. PLAY1:          LCALL  DL1MS
  155.                 INC    R1
  156.                 MOV    A,P3
  157.                 JNB    ACC.3,ENDOUT
  158.                 RL     A
  159.                 MOV    R5,A
  160.                 MOV    P3,#0FFH
  161.                 AJMP   PLAY
  162. ENDOUT:         MOV    P3,#0FFH
  163.                 MOV    P1,#0FFH
  164.                 RET
  165. ;TAB:            DB 030H,0F9H,052H,0d0H,99H,94H,14H,0F1H,10H,090H,0FFH
  166. TAB:            DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
  167. ;
  168. ;*************************************
  169. ;*    ? ?   延时程序               *
  170. ;*************************************
  171. ;
  172. DL10MS:         MOV R6,#0D0H      ;10MS延时子程序
  173. DL1:            MOV R7,#19H
  174. DL2:            DJNZ R7,DL2
  175.                 DJNZ R6,DL1
  176.                 RET
  177. ;
  178. DL1MS:          MOV     R4,#0FFH   ;513+513=1MS
  179. LOOP11:         DJNZ    R4,LOOP11
  180.                 MOV     R4,#0FFH
  181. LOOP22:         DJNZ    R4,LOOP22
  182.                 RET
  183. ;
  184. ;*************************************
  185. ;*    ?  电压测量(A/D)子程序      *
  186. ;*************************************
  187. ; 一次测量数据8个,依次放入70H-77H单元中
  188. ;
  189. TEST:           CLR     A          ;模数转换子程序
  190.                 MOV     P2,A
  191.                 MOV     R0,#70H    ;转换值存放首址
  192.                 MOV     R7,#08H    ;转换8次控制
  193.                 LCALL  TESTART     ;启动测试
  194. WAIT:           JB     P3.7,MOVD   ;等A/D转换结束信号
  195.                 AJMP   WAIT
  196. ;
  197. TESTART:        SETB    P2.3       ;测试启动
  198.                 NOP
  199.                 NOP
  200.                 CLR     P2.3
  201.                 SETB    P2.4
  202.                 NOP
  203.                 NOP
  204.                 CLR     P2.4
  205.                 NOP
  206.                 NOP
  207.                 NOP
  208.                 NOP
  209.                 RET
  210. ;
  211. MOVD:           SETB    P2.5       ;取A/D转换数据
  212.                 MOV     A,P0
  213.                 MOV     @R0,A
  214.                 CLR     P2.5
  215.                 INC     R0
  216.                 MOV     A,P2       ;通道地址加1
  217.                 INC     A
  218.                 MOV     P2,A
  219.                 CJNE    A,#08H,TESTEND    ;等8路A/D转换结束
  220. TESTEND:        JC      TESTCON
  221.                 CLR     A                 ;结束恢复端口
  222.                 MOV     P2,A
  223.                 MOV     A,#0FFH
  224.                 MOV     P0,A
  225.                 MOV     P1,A
  226.                 MOV     P3,A
  227.                 RET
  228. ;
  229. TESTCON:        LCALL   TESTART
  230.                 LJMP    WAIT
  231. ;
  232. ;*************************************
  233. ;*    ?  按键检测子程序             *
  234. ;*************************************
  235. ;
  236. KEYWORK1:       JNB     P3.5,KEY1
  237. KEYOUT:         RET
  238. ;
  239. KEY1:           LCALL   DISP          ;延时消抖
  240. ……………………

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

所有资料51hei提供下载:
8路模数转换STC89C51、ADC0809.zip (9.43 MB, 下载次数: 36)

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

使用道具 举报

沙发
ID:336076 发表于 2018-5-24 17:43 | 只看该作者
楼主 求教问题啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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