1. DAC0832讀寫原理
D/A轉換是把數字量轉換成模擬量的變換,從D/A輸出的是模擬電壓信號。產生鋸齒波和三角波只需由A存放的數字量的增減來控制;要產生正弦波,較簡單的手段是造一張正弦數字量表。取值范圍為一個周期,采樣點越多,精度就越高。
在實驗板上,輸入寄存器占偶地址端口,DAC寄存器占較高的奇地址端口。兩個寄存器均對數據獨立進行鎖存。因而要把一個數據通過0832輸出,要經兩次鎖存。典型程序段如下:
0.png (52.69 KB, 下載次數: 14)
下載附件
2018-7-5 02:50 上傳
0.png (26.14 KB, 下載次數: 22)
下載附件
2018-7-5 02:50 上傳
主程序: - NAME T92 ;0832數模轉換實驗
- PORT EQU 0CFA0H ;片選地址送給字符名稱PORT
- ORG 00H
- START: MOV P1,#0FFH ; P1口初地址賦值
- MOV C,P1.0 ; Cy←P1.0
- JNC JUCH1 ;若Cy=0,轉移到JUCH1,否則繼續執下一步
- MOV C,P1.1 ; Cy←P1.1
- JNC JUCH2 ;若Cy=0,轉移到JUCH1,否則繼續執下一步
- MOVC,P1.2 ;Cy←P1.2
- JNC JUCH3 ;若Cy=0,轉移到JUCH1,否則繼續執下一步
- MOVC,P1.3 ;Cy←P1.3
- JNC JUCH4 ;若Cy=0,轉移到JUCH1,否則繼續執下一步
- SJMP START ;轉移
- 子程序
- 三角波子程序:
- JUCH1:MOV DPTR,#PORT+1 ;DAC寄存器端口地址送DPTR
- MOV A,#00H ;初值送給累加器A
- MOV R4,#2 ;設定波形的頻率
- UP0: MOV B,#0FFH ;設定波形的周期
- UP1: MOV DPTR,#PORT ;DAC輸入寄存器端口地址
- MOVX @DPTR,A ;送出數據
- INC DPTR ;加一,為DAC寄存器端口地址
- MOVX @DPTR,A ;啟動轉換
- INC A ;數據加一
- CJNE A,#0FFH,UP1 ;波行達到下限值時,波形上升
- MOV R2,#0FEH ;R2←0FEH
- UP22:MOV DPTR,#PORT ;DAC輸入寄存器端口地址
- MOV A,R2 ;將波形上限值賦予A
- MOVX @DPTR,A ;送出數據
- INC DPTR ;加一,為DAC寄存器端口地址
- MOVX @DPTR ;啟動轉換
- DJNZ R2,UP22 ;波形一直達到上限
- DJNZ B,UP1 ;達到波形周期值
- DJNZ R4,UP0 ;達到波形頻值
- SJMP START ;轉移
- 方波子程序:
- JUCH2:MOV R4,#20 ;循環次數
- UP00:MOV B,#0FFH ;下限值
- LOOP1:MOV A,#33H ;值上限電平
- MOV DPTR,#PORT ;DAC輸入寄存器端口地址
- MOVX @DPTR,A ;送出數據
- INC DPTR ;加一,為DAC寄存器端口地址
- MOVX @DPTR,A ;啟動轉換
- LCALL DELAY ;形成方波頂寬
- MOV A,#0FFH ;置下限電平
- MOV DPTR,#PORT ;DAC輸入寄存器端口地址
- MOVX @DPTR,A ;送出數據
- INC DPTR ;加一,為DAC寄存器端口地址
- MOVX @DPTR,A ;啟動轉換
- LCALL DELAY ;形成方波底寬
- DJNZ B,LOOP1 ;若未達到下限值,轉到LOOP1,;否則下移
- DJNZ R4,UP00 ;若未達到循環次數,轉到UP00,否則下移
- SJMP START ;轉移
- DELAY:MOV R0,#40H ;延時程序
- D1:NOP
- NOP
- DJNZ R0,D1
- RET
- 鋸齒波子程序:
- JUCH3:MOV A,#00H ;初值送給累加器A
- LOOP2:MOV B,#0FFH ;下限值
- LOOP3:MOV DPTR,#PORT ;DAC輸入寄存器端口地址
- MOVX @DPTR,A ;送出數據
- INC DPTR ;加一,為DAC寄存器端口地址
- MOVX @DPTR,A ;啟動轉換
- INC A ;數據加一
- CJNE A,#0FFH,LOOP3 ;使鋸齒波的下限達到下限值
- DJNZ B,LOOP3 ;若A未達到下限值,轉到LOOP3,否則下移
- LJMP START ;轉移
- 正弦波子程序:
- JUCH4:MOV B,#00H ;正弦波啟示
- LP1:MOV DPTR,#DATRO ;DPTR←表起始地址
- MOV R4,#00H ;波形終值
- LP2:CLR A ;累加器清零
- MOVC A,@A+DPTR ;查表
- MOV R3,DPH ;高8位送給R3
- MOV R5,DPL ;低8位送給R5
- MOV DPTR,#PORT ;DAC輸入寄存器端口地址
- MOVX @DPTR,A ;送出數據
- INC DPTR ;加一,為DAC寄存器端口地址
- MOVX @DPTR,A ;啟動轉換
- MOV DPH,R3 ;R3送給數據指針高8位
- MOV DPL,R5 ;R5送給數據指針低8位
- INC DPTR ;波形位移增量
- DJNZ R4,LP2 ;達到波形設定周期
- DJNZ B,LP1 ;達到波形設定頻率
- LJMP START ;轉移
- DATRO:DB 80H,83H,86H,89H,8DH,90H,93H,96H ;正弦波數據
- DB 99H,9CH,9FH,0A2H,05AH,08AH,0ABH,0AEH
- DB 0B1H,0B4H,0BFH,0BAH,0BCH,0BFH,0C2H,0C5H
- DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
- DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H
- DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H
- DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH
- DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
- DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
- DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H
- DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH
- DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH
- DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
- DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
- DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H
- DB 96H,93H,90H,8DH,89H,86H,83H,80H
- DB 80H,7CH,79H,76H,72H,6FH,6CH,69H
- DB 66H,63H,60H,5DH,5AH,57H,55H,51H
- DB 4EH,4CH,48H,45H,43H,40H,3DH,3AH
- DB 38H,35H,33H,30H,2EH,2BH,29H,27H
- DB 25H,22H,20H,1EH,1CH,1AH,18H,16H
- DB 15H,13H,11H,10H,0EH,0DH,08H,0AH
- DB 09H,8H,7H,6H,5H,4H,3H,2H
- DB 02H,1H,0H,0H,0H,0H,0H,0H
- DB 00H,0H,0H,0H,0H,0H,1H,2H
- DB 02H,3H,4H,5H,6H,7H,8H,9H
- DB 0AH,0BH,0DH,0EH,10H,11H,13H,15H
- DB 16H,18H,1AH,1CH,1EH,20H,22H,25H
- DB 27H,29H,2BH,2EH,30H,33H,35H,38H
- DB 3AH,3DH,40H,43H,45H,47H,4CH,4EH
- DB 51H,51H,55H,57H,5AH,5DH,60H,63H
- DB 69H,6CH,6FH,72H,76H,79H,7CH,80H
- END
復制代碼
完整的Word格式文檔51黑下載地址:
單片機原理發生器課程設計.doc
(256 KB, 下載次數: 45)
2018-7-4 16:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|