|
0.png (602.62 KB, 下載次數: 97)
下載附件
2017-5-12 17:28 上傳
0.png (107.87 KB, 下載次數: 80)
下載附件
2017-5-12 17:27 上傳
0.png (137.56 KB, 下載次數: 90)
下載附件
2017-5-12 17:26 上傳
0.png (55.2 KB, 下載次數: 97)
下載附件
2017-5-12 17:26 上傳
單片機小工具:
0.png (37.87 KB, 下載次數: 89)
下載附件
2017-5-12 17:30 上傳
單片機源程序如下:
- ;************************;
- ; ;
- ; 八路電壓測量顯示電路 ;
- ; ;
- ;************************;
- ;測量電壓最大為5V,顯示最大值為5.00V
- ;70H—77H存放采樣值,78H—7BH存放顯示數據,依次為個位、十位、百位、通道標志
- ;P3.5作單路顯示-循環顯示轉換用,P3.6作單路顯示時選擇通道用。?
- ;
- ;*************************************
- ;* *
- ;* 主程序和中斷程序入口 *
- ;* *
- ;*************************************
- ORG 0000H
- LJMP START
- ORG 0003H
- RETI
- ORG 000BH
- RETI
- ORG 0013H
- RETI
- ORG 001BH
- RETI
- ORG 0023H
- RETI
- ORG 002BH
- RETI
- ;
- ;*************************************
- ;* *
- ;* 初始化程序中的各變量 *
- ;* *
- ;*************************************
- CLEARMEMIO:
- CLR A
- MOV P2,A
- MOV R0,#70H
- MOV R2,#0DH
- LOOPMEM: MOV @R0,A
- INC R0
- DJNZ R2,LOOPMEM
- MOV 20H,#00H
- MOV A,#0FFH
- MOV P0,A
- MOV P1,A
- MOV P3,A
- RET
- ;
- ;*************************************
- ;* *
- ;* 主 程 序 *
- ;* *
- ;*************************************
- START:
- clr p3.3
- mov p1,#01h
- mov p1,#02h
- mov p1,#04h
- mov p1,#08h
- mov p1,#10h
- mov p1,#20h
- mov p1,#40h
- mov p1,#80h
- LCALL CLEARMEMIO ;初始化
- MAIN: LCALL TEST ;測量一次
- LCALL DISPLAY ;顯示數據一次
- AJMP MAIN
- NOP ;PC值出錯處理
- NOP
- NOP
- LJMP START
- ;
- ;*************************************
- ;* 顯 示 控 制 程 序 *
- ;*************************************
- ;
- DISPLAY: JB 00H,DISP11 ;
- MOV R3,#08H ;8路信號循環顯示控制
- MOV R0,#70H ;顯示數據初址70H~77H
- MOV 7BH,#00H ;顯示通道路數初值
- DISLOOP1: LCALL TUNBCD ;顯示數據轉為三位BCD碼存入7AH、79H、78H(最大5.00v)
- MOV R2,#0FFH ;每路顯示時間控制 4MS*255
- DISLOOP2: LCALL DISP ;調四位顯示程序
- LCALL KEYWORK1 ;
- DJNZ R2,DISLOOP2 ;
- INC R0 ;顯示下一路
- INC 7BH ;通道顯示數加一
- DJNZ R3,DISLOOP1
- RET
- ;
- DISP11: MOV A,7BH ;
- SUBB A,#01H ;
- MOV 7BH,A ;
- ADD A,#70H ;
- MOV R0,A ;
- DISLOOP11: LCALL TUNBCD ;顯示數據轉為三位BCD碼存入7AH、79H、78H(最大5.00v)
- MOV R2,#0FFH ;每路顯示時間控制 4MS*25
- DISLOOP22: LCALL DISP ;調四位顯示程序
- LCALL KEYWORK2 ;
- DJNZ R2,DISLOOP22
- INC 7BH ;通道顯示數加一
- RET
- ;
- ;*************************************
- ;* 顯示數據轉為三位BCD碼程序 *
- ;*************************************
- ;顯示數據轉為三位BCD碼存入7AH、79H、78H(最大值5.00v)
- ;
- TUNBCD: MOV A,@R0 ;255/51=5.00V運算
- MOV B,#51 ;
- DIV AB ;
- MOV 7AH,A ;個位數放入7AH
- MOV A,B ;余數大于19H,F0為1,乘法溢出,結果加5
- CLR F0
- SUBB A,#1AH
- MOV F0,C
- MOV A,#10 ;
- MUL AB ;
- MOV B,#51 ;
- DIV AB
- JB F0,LOOP2 ;
- ADD A,#5
- LOOP2: MOV 79H,A ;小數后第一位放入79H
- MOV A,B
- CLR F0
- SUBB A,#1AH
- MOV F0,C
- MOV A,#10 ;
- MUL AB ;
- MOV B,#51 ;
- DIV AB
- JB F0,LOOP3 ;
- ADD A,#5
- LOOP3: MOV 78H,A ;小數后第二位放入78H
- RET
- ;
- ;*************************************
- ;* ? 顯?示 程 序 *
- ;*************************************
- ;共陽顯示子程序,顯示內容在78H—7BH
- ;
- DISP: MOV R1,#78H ;共陽顯示子程序,顯示內容在78H—7BH
- MOV R5,#0FEH ;數據在P1輸出,列掃描在P3.0-P3.3
- PLAY: MOV P1,#0FFH
- MOV A,R5
- ANL P3,A
- MOV A,@R1
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- MOV P1,A
- JB P3.2,PLAY1 ;小數點處理
- CLR P1.7 ;小數點顯示(顯示格式為XX.XX)
- PLAY1: LCALL DL1MS
- INC R1
- MOV A,P3
- JNB ACC.3,ENDOUT
- RL A
- MOV R5,A
- MOV P3,#0FFH
- AJMP PLAY
- ENDOUT: MOV P3,#0FFH
- MOV P1,#0FFH
- RET
- ;TAB: DB 030H,0F9H,052H,0d0H,99H,94H,14H,0F1H,10H,090H,0FFH
- TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
- ;
- ;*************************************
- ;* ? ? 延時程序 *
- ;*************************************
- ;
- DL10MS: MOV R6,#0D0H ;10MS延時子程序
- DL1: MOV R7,#19H
- DL2: DJNZ R7,DL2
- DJNZ R6,DL1
- RET
- ;
- DL1MS: MOV R4,#0FFH ;513+513=1MS
- LOOP11: DJNZ R4,LOOP11
- MOV R4,#0FFH
- LOOP22: DJNZ R4,LOOP22
- RET
- ;
- ;*************************************
- ;* ? 電壓測量(A/D)子程序 *
- ;*************************************
- ; 一次測量數據8個,依次放入70H-77H單元中
- ;
- TEST: CLR A ;模數轉換子程序
- MOV P2,A
- MOV R0,#70H ;轉換值存放首址
- MOV R7,#08H ;轉換8次控制
- LCALL TESTART ;啟動測試
- WAIT: JB P3.7,MOVD ;等A/D轉換結束信號
- AJMP WAIT
- ;
- TESTART: SETB P2.3 ;測試啟動
- NOP
- NOP
- CLR P2.3
- SETB P2.4
- NOP
- NOP
- CLR P2.4
- NOP
- NOP
- NOP
- NOP
- RET
- ;
- MOVD: SETB P2.5 ;取A/D轉換數據
- MOV A,P0
- MOV @R0,A
- CLR P2.5
- INC R0
- MOV A,P2 ;通道地址加1
- INC A
- MOV P2,A
- CJNE A,#08H,TESTEND ;等8路A/D轉換結束
- TESTEND: JC TESTCON
- CLR A ;結束恢復端口
- MOV P2,A
- MOV A,#0FFH
- MOV P0,A
- MOV P1,A
- MOV P3,A
- RET
- ;
- TESTCON: LCALL TESTART
- LJMP WAIT
- ;
- ;*************************************
- ;* ? 按鍵檢測子程序 *
- ;*************************************
- ;
- KEYWORK1: JNB P3.5,KEY1
- KEYOUT: RET
- ;
- KEY1: LCALL DISP ;延時消抖
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
8路模數轉換STC89C51、ADC0809.zip
(9.43 MB, 下載次數: 37)
2017-5-12 17:17 上傳
點擊文件名下載附件
資料很全 下載積分: 黑幣 -5
|
|