分享一個stc12c5a16s2單片機電壓電流表,含有原理圖和程序,有需要的自己下載參考。
單片機電壓電流表的實物圖:
stc12c5a16s2電壓電流表.jpg (206.51 KB, 下載次數: 193)
下載附件
2017-3-6 21:06 上傳
51AD4.jpg (48.55 KB, 下載次數: 187)
下載附件
表頭
2017-3-6 14:00 上傳
原理圖:
51AD2.jpg (68.98 KB, 下載次數: 197)
下載附件
原理圖
2017-3-6 14:00 上傳
電壓電流表的匯編語言源程序:
- ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
- ;字節地址分配
- ;0C\0D\0E\4位分別對應電流的3位由高位到底位
- ;10H,11H,12H對應電壓的3個數值
- ;13H,14H,15H,16H,17H對應功率的5個數值
- ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
- P1ASF EQU 9DH ;P1口設置寄存器
- ADC_CONTOR EQU BCH ;ADC控制寄存器
- ADC_RES EQU BDH ;ADC輸出高8位
- ADC_RESL EQU BEH ;ADC低8為輸出
- AUXR1 EQU A2H ;設置寄存器
- IJISHU EQU 30H ;電流比較次數計數
- UJISHU EQU 31H ;電壓比較次數計數
- IL EQU 32H ;電流低位
- IH EQU 33H ;電流高位
- UL EQU 34H ;電壓低位
- UH EQU 35H ;電壓高位
- RS BIT P2.5 ;定義RS為P2.5
- RW BIT P2.6 ;定義RW為P2.6
- E BIT P2.7 ;定義E為P2.7
- ORG 0000H
- LJMP START
- ORG 002BH
- START: MOV P1ASF,#00000011B ;開啟P1.0和P1.1作為AD的輸入端口
- MOV AUXR1,#04H ;設置AD輸出方式
- MOV SP,#5FH ;設置棧底
- MOV IJISHU,#00H
- MOV UJISHU,#00H
- ;×××××××××××××××××××××××××
- LCD: MOV P0,#38H ;設置功能
- LCALL XML
- MOV P0,#38H ;設置功能
- LCALL XML
- MOV P0,#01H ;清除屏幕
- LCALL XML
- MOV P0,#0CH ;設置顯示屏開,光標關
- LCALL XML
- MOV P0,#1CH ;設置
- LCALL XML
- ;×××××××××××××××××××××××××××
- ;主程序
- ;--------------------------------------------------------------------------------------------------
- MAIN: MOV ADC_CONTOR,#11001001B ;開啟P1.1的AD轉換,電流
- LCALL AD ;調用AD子程序
- MOV A,ADC_RES
- CJNE A,IH,MAINI
- MOV A,ADC_RESL
- CJNE A,IL,MAINI
- MOV IJISHU,#00H
- SJMP MAINI1
- MAINI: INC IJISHU
- MOV A,#20
- CJNE A,IJISHU,MAINI1
- MOV IJISHU,#00H
- MOV IH,ADC_RES ;保存電流數據
- MOV IL,ADC_RESL
- MAINI1: MOV 0AH,IH
- MOV 0BH,IL
- LCALL 2TO10
- MOV 0CH,18H
- MOV 0DH,19H
- MOV 0EH,1AH
- MOV A,0AH
- RRC A
- MOV 0AH,A
- MOV A,0BH
- RRC A
- MOV 0BH,A
- MOV A,0AH
- RRC A
- MOV A,0BH
- RRC A
- MOV 09H,A ;09H保存8位電流數據
- MOV ADC_CONTOR,#11001000B ;開啟P1.0的AD轉換 電壓
- LCALL AD ;調用AD子程序
- MOV A,ADC_RES
- CJNE A,UH,MAINU
- MOV A,ADC_RESL
- CJNE A,UL,MAINU
- MOV UJISHU,#00H
- SJMP MAINU1
- MAINU: INC UJISHU
- MOV A,#20
- CJNE A,UJISHU,MAINU1
- MOV UJISHU,#00H
- MOV UH,ADC_RES ;保存電壓數據
- MOV UL,ADC_RESL
- MAINU1: MOV 0AH,UH
- MOV 0BH,UL
- LCALL 2TO10
- MOV 10H,18H
- MOV 11H,19H
- MOV 12H,1AH
- MOV A,0AH
- RRC A
- MOV 0AH,A
- MOV A,0BH
- RRC A
- MOV 0BH,A
- MOV A,0AH
- RRC A
- MOV A,0BH
- RRC A
- MOV 08H,A ;08H保存8位電壓數據
- MOV B,09H
- MUL AB
- MOV R2,B
- MOV R3,A
- MOV R4,#61H ;/25000
- MOV R5,#A8H
- LCALL DIVD
- MOV A,R7
- ADD A,#30H
- MOV 13H,A
- MOV R4,#09H
- MOV R5,#C4H ;/2500
- LCALL DIVD
- MOV A,R7
- ADD A,#30H
- MOV 14H,A
- MOV R4,#00H
- MOV R5,#250 ;/250
- LCALL DIVD
- MOV A,R7
- ADD A,#30H
- MOV 15H,A
- MOV R4,#00H
- MOV R5,#25 ;/25
- LCALL DIVD
- MOV A,R7
- ADD A,#30H
- MOV 16H,A
- MOV A,R3
- CLR C
- RLC A
- CLR C
- RLC A
- MOV R3,A
- MOV R5,#10
- LCALL DIVD
- MOV A,R7
- ADD A,#30H
- MOV 17H,A
- LCALL XIANSHI
- LJMP MAIN
- ;×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
- ;AD轉換子程序
- ;×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
- AD: MOV A,ADC_CONTOR
- JNB E4H,AD
- CLR E4H
- MOV ADC_CONTOR,A
- ;×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
- ;二-十進制轉換子程序,同時加便宜量完成1602的0-9字模地址的轉換 輸出結果18H 19H 1AH
- ;×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
- 2TO10: MOV R2,0AH
- MOV R3,0BH
- MOV R4,#0
- MOV R5,#2
- LCALL DIVD
- MOV A,R6
- MOV R2,A
- MOV A,R7
- MOV R3,A
- MOV R4,#00H
- MOV R5,#100
- LCALL DIVD
- MOV 18H,R7
- MOV A,#30H
- ADD A,18H
- MOV 18H,A
- MOV R5,#10
- LCALL DIVD
- MOV 19H,R7
- MOV A,#30H
- ADD A,19H
- MOV 19H,A
- MOV 1AH,R3
- MOV A,#30H
- ADD A,1AH
- MOV 1AH,A
- RET
- ;×××××××××××××××××××××××××××××××××××××××××××××××××××
- ;雙字節除法運算子程序
- ;入口條件: 被除數在R2、R3、除數在R4、R5中,商在R6、R7中。R1用于計數位移量
- ;出口信息: 余數在R2、R3中,雙字節商在R4、R5中,OV=1 時溢出。
- ;影響資源: PSW、A、R1~R7
- ;××××××××××××××××××××××××××××××××××××××××××××××××××××××××
- DIVD: PUSH A
- PUSH PSW
- MOV R1,#00H ;計數器清零
- MOV R6,#00H
- MOV R7,#00H
- LCALL SUBBD ;判斷夠不夠減
- JC DIVDE
- DIVD1: MOV A,R4
- JB ACC.7,DIVD3 ;判斷最高位是不是1
- CLR C ;除數左移一位
- MOV A,R5
- RLC A
- MOV R5,A
- MOV A,R4
- RLC A
- MOV R4,A
- INC R1 ;左移計數器計數
- LCALL SUBBD ;比較左移后夠不夠減
- JNC DIVD1 ;夠減轉移,不夠減繼續
- LCALL DIVDR ;除數右移一位
- DEC R1 ;右移了,所以要-1
- DIVD3: CLR C
- MOV A,R3 ;開始減法
- SUBB A,R5
- MOV R3,A
- MOV A,R2
- SUBB A,R4
- MOV R2,A
- INC R7
- DIVD4: CJNE R1,#00H,DIVD5 ;判斷是不是到最后一位了
- SJMP DIVDE
- DIVD5: LCALL DIVDR ;除數右移一位
-
- …………余下代碼請下載附件…………
復制代碼
0.png (65.13 KB, 下載次數: 179)
下載附件
2017-3-6 21:07 上傳
所有資料下載:
108_1316154_e5898954f06cb7b.zip
(519.24 KB, 下載次數: 441)
2017-3-6 14:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|