proteus仿真電路圖附在結尾
QQ圖片20190109162739.png (15.77 KB, 下載次數: 34)
下載附件
2019-1-9 16:28 上傳
程序
- ORG 0000H
- SJMP MAIN
- ORG 0003H
- LJMP PINT0
- MAIN:MOV 50H,#19H
- MOV 54H,#78H
- MOV DPTR,#7FF8H
- MOV 51H,DPH
- MOV 52H,DPL
- MOV R0,#04H
- MOV 53H,#00H
- MOV R7,#00H
- SETB EA
- SETB IT0
- SETB EX0
- L4: MOV R1,#00H ;R1 存放十六進制轉換成十進制后的低兩位
- MOV R2,#00H ;R2 存放十六進制轉換成十進制后的高兩位
- MOV R3,#0FFH ;循環顯示十進制數
- MOV R4,#00H ;存放 A/D 轉換后的十六進制數
- MOV R5,#00H ;存放 0.5 相加后的數
- MOVX @DPTR,A ;開始 A/D 轉換
- LCALL DELAY ;調用延時大于 A/D 轉換的時間
- MOVX A,@DPTR ;取 A/D 轉換后的十六進制數
- INC DPTR ;A/D 轉換芯片的地址加一
- PUSH DPL ;壓入堆棧
- PUSH DPH
- DEC R0 ;4 路轉換的次數減一
- JZ SB2 ;判斷是否是 0V
- MOV R4,A
- L1:MOV A,R1 ;進行十六進制到十進制的調整
- ADD A,50H ;每次加 19
- DA A
- MOV R1,A
- JC L2 ;如果溢出則跳轉到 L2
- MOV A,R5 ;進行 0.5V 相加
- ADD A,54H
- DA A
- MOV R5,A
- JC L3 ;如果溢出則跳轉到 L3
- SB1:DJNZ R4,L1 ;判斷十六進制數是否轉換完成,如果沒有則循環
- MOV A,R5
- SWAP A
- ANL A,#0FH
- MOV B,R1
- ADD A,B
- DA A
- MOV R1,A
- SB2:LCALL DISP
- LCALL DJW
- DJNZ R3,SB2
- POP DPH
- POP DPL
- MOV A,53H
- INC A
- MOV 53H,A
- CJNE R0,#00H,L4
- LJMP MAIN
- L2: CLR C
- MOV A,R2
- ADD A,#01H
- DA A
- MOV R2,A
- LJMP SB1
- L3: CLR C ;0.5V 相加溢出后進位
- MOV A,R1
- ADD A,#01H
- DA A
- MOV R1,A
- LJMP SB1
- DISP:MOV A,R1 ;顯示電壓子程序
- SWAP A
- ANL A,#0FH
- MOV DPTR,#TAB1
- MOVC A,@A+DPTR
- CLR P3.0
- MOV P1,A
- LCALL DELAY
- SETB P3.0
- MOV A,R2
- ANL A,#0FH
- MOV DPTR,#TAB1
- MOVC A,@A+DPTR
- CLR P3.1
- MOV P1,A
- LCALL DELAY
- SETB P3.1
- MOV A,R2
- SWAP A
- ANL A,#0FH
- MOV DPTR,#TAB2
- MOVC A,@A+DPTR
- CLR P3.4
- MOV P1,A
- LCALL DELAY
- SETB P3.4
- RET
- DJW:MOV A,53H ;顯示第幾路轉換電壓子程序
- MOV DPTR,#TAB1
- MOVC A,@A+DPTR
- CLR P3.5
- MOV P1,A
- LCALL DELAY
- SETB P3.5
- RET
- INTV: PUSH ACC ;只顯示其中一路中斷
- PUSH 53H
- MOV 53H,#00H
- CX2: MOV R1,#00H
- MOV R2,#00H
- MOV R3,#0FFH
- MOV R4,#00H
- MOV DPH,51H
- MOV DPL,52H
- MOVX @DPTR,A
- LCALL DELAY
- MOVX A,@DPTR
- MOV R4,A
- JZ SB22
- L11: MOV A,R1
- ADD A,50H
- DA A
- MOV R1,A
- JC L22
- MOV A,R5 ;進行 0.5V 相加
- ADD A,54H
- DA A
- MOV R5,A
- JC L33
- SB11:DJNZ R4,L11
- MOV A,R5
- SWAP A
- ANL A,#0FH
- MOV B,R1
- ADD A,B
- DA A
- MOV R1,A
- SB22:LCALL DISP
- LCALL DJW
- JNB P3.3,EXIT
- DJNZ R3,SB22
- JNB P3.2,CX1
- LJMP CX2
- L22:CLR C
- MOV A,R2
- ADD A,#01H
- DA A
- MOV R2,A
- LJMP SB11
- L33:CLR C
- MOV A,R1
- ADD A,#01H
- DA A
- MOV R1,A
- LJMP SB11
- CX1:INC R7
- MOV A,53H
- INC A
- MOV 53H,A
- MOV DPH,51H
- MOV DPL,52H
- INC DPTR
- MOV 51H,DPH
- MOV 52H,DPL
- CJNE R7,#04H,CX2
- MOV R7,#00H
- MOV 53H,#01H
- MOV DPTR,#7FF8H
- MOV 51H,DPH
- MOV 52H,DPL
- LJMP CX2
- EXIT:POP 53H
- POP ACC
- RETI
- DELAY:MOV R6,#1H ; 延時子程序
- D1:MOV R5,#50H
- D2:NOP
- NOP
- DJNZ R5,D2
- DJNZ R6,D1
- RET
- TAB1:DB 3FH,06H,5BH,4FH,66H ;碼表
- DB 6DH,7DH,07H,7FH,6FH
- TAB2:DB 0BFH,86H,0DBH,0CFH,0E6H ;小數點的段碼表
- DB 0EDH,0FDH,87H,0FFH,0EFH
- END
復制代碼 全部資料51hei下載地址:
基于單片機的數字電壓表.zip
(29.46 KB, 下載次數: 32)
2019-1-9 16:29 上傳
點擊文件名下載附件
|