1. DAC0832读写原理
D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟电压信号。产生锯齿波和三角波只需由A存放的数字量的增减来控制;要产生正弦波,较简单的手段是造一张正弦数字量表。取值范围为一个周期,采样点越多,精度就越高。
在实验板上,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口。两个寄存器均对数据独立进行锁存。因而要把一个数据通过0832输出,要经两次锁存。典型程序段如下:
主程序: - 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)
|