找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 5699|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

八路電壓測(cè)量顯示電路程序ADC0809+單片機(jī)小工具

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

單片機(jī)小工具:

單片機(jī)源程序如下:
  1. ;************************;
  2. ;                        ;
  3. ; 八路電壓測(cè)量顯示電路   ;
  4. ;                        ;
  5. ;************************;
  6. ;測(cè)量電壓最大為5V,顯示最大值為5.00V
  7. ;70H—77H存放采樣值,78H—7BH存放顯示數(shù)據(jù),依次為個(gè)位、十位、百位、通道標(biāo)志
  8. ;P3.5作單路顯示-循環(huán)顯示轉(zhuǎn)換用,P3.6作單路顯示時(shí)選擇通道用。?
  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            ;測(cè)量一次
  67.                 LCALL   DISPLAY         ;顯示數(shù)據(jù)一次
  68.                 AJMP        MAIN
  69.                 NOP                        ;PC值出錯(cuò)處理
  70.                 NOP
  71.                 NOP
  72.                 LJMP        START
  73. ;
  74. ;*************************************
  75. ;*           顯 示 控 制 程 序            *
  76. ;*************************************
  77. ;
  78. DISPLAY:        JB      00H,DISP11    ;
  79.                 MOV     R3,#08H       ;8路信號(hào)循環(huán)顯示控制
  80.                 MOV     R0,#70H       ;顯示數(shù)據(jù)初址70H~77H
  81.                 MOV     7BH,#00H      ;顯示通道路數(shù)初值
  82. DISLOOP1:       LCALL   TUNBCD        ;顯示數(shù)據(jù)轉(zhuǎn)為三位BCD碼存入7AH、79H、78H(最大5.00v)
  83.                 MOV     R2,#0FFH      ;每路顯示時(shí)間控制 4MS*255
  84. DISLOOP2:       LCALL   DISP          ;調(diào)四位顯示程序
  85.                 LCALL   KEYWORK1      ;
  86.                 DJNZ    R2,DISLOOP2   ;
  87.                 INC     R0            ;顯示下一路
  88.                 INC     7BH           ;通道顯示數(shù)加一
  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        ;顯示數(shù)據(jù)轉(zhuǎn)為三位BCD碼存入7AH、79H、78H(最大5.00v)
  98.                 MOV     R2,#0FFH       ;每路顯示時(shí)間控制 4MS*25
  99. DISLOOP22:      LCALL   DISP          ;調(diào)四位顯示程序
  100.                 LCALL   KEYWORK2      ;
  101.                 DJNZ    R2,DISLOOP22
  102.                 INC     7BH           ;通道顯示數(shù)加一
  103.                 RET
  104. ;
  105. ;*************************************
  106. ;*   顯示數(shù)據(jù)轉(zhuǎn)為三位BCD碼程序       *
  107. ;*************************************
  108. ;顯示數(shù)據(jù)轉(zhuǎn)為三位BCD碼存入7AH、79H、78H(最大值5.00v)
  109. ;
  110. TUNBCD:         MOV     A,@R0           ;255/51=5.00V運(yùn)算
  111.                 MOV     B,#51           ;
  112.                 DIV     AB              ;
  113.                 MOV     7AH,A           ;個(gè)位數(shù)放入7AH
  114.                 MOV     A,B             ;余數(shù)大于19H,F0為1,乘法溢出,結(jié)果加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           ;小數(shù)后第一位放入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           ;小數(shù)后第二位放入78H
  136.                 RET
  137. ;
  138. ;*************************************
  139. ;*    ?  顯?示 程 序               *
  140. ;*************************************
  141. ;共陽(yáng)顯示子程序,顯示內(nèi)容在78H—7BH
  142. ;
  143. DISP:           MOV     R1,#78H       ;共陽(yáng)顯示子程序,顯示內(nèi)容在78H—7BH
  144.                 MOV     R5,#0FEH      ;數(shù)據(jù)在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     ;小數(shù)點(diǎn)處理
  153.                 CLR    P1.7           ;小數(shù)點(diǎn)顯示(顯示格式為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. ;*    ? ?   延時(shí)程序               *
  170. ;*************************************
  171. ;
  172. DL10MS:         MOV R6,#0D0H      ;10MS延時(shí)子程序
  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. ;*    ?  電壓測(cè)量(A/D)子程序      *
  186. ;*************************************
  187. ; 一次測(cè)量數(shù)據(jù)8個(gè),依次放入70H-77H單元中
  188. ;
  189. TEST:           CLR     A          ;模數(shù)轉(zhuǎn)換子程序
  190.                 MOV     P2,A
  191.                 MOV     R0,#70H    ;轉(zhuǎn)換值存放首址
  192.                 MOV     R7,#08H    ;轉(zhuǎn)換8次控制
  193.                 LCALL  TESTART     ;啟動(dòng)測(cè)試
  194. WAIT:           JB     P3.7,MOVD   ;等A/D轉(zhuǎn)換結(jié)束信號(hào)
  195.                 AJMP   WAIT
  196. ;
  197. TESTART:        SETB    P2.3       ;測(cè)試啟動(dòng)
  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轉(zhuǎn)換數(shù)據(jù)
  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轉(zhuǎn)換結(jié)束
  220. TESTEND:        JC      TESTCON
  221.                 CLR     A                 ;結(jié)束恢復(fù)端口
  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. ;*    ?  按鍵檢測(cè)子程序             *
  234. ;*************************************
  235. ;
  236. KEYWORK1:       JNB     P3.5,KEY1
  237. KEYOUT:         RET
  238. ;
  239. KEY1:           LCALL   DISP          ;延時(shí)消抖
  240. ……………………

  241. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
8路模數(shù)轉(zhuǎn)換STC89C51、ADC0809.zip (9.43 MB, 下載次數(shù): 37)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:336076 發(fā)表于 2018-5-24 17:43 | 只看該作者
樓主 求教問(wèn)題啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表