标题: 单片机DAC0832波形发生器源程序及课程设计说明书下载(汇编语言) [打印本页]

作者: 矫情什么    时间: 2018-7-4 16:24
标题: 单片机DAC0832波形发生器源程序及课程设计说明书下载(汇编语言)
1. DAC0832读写原理
D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟电压信号。产生锯齿波和三角波只需由A存放的数字量的增减来控制;要产生正弦波,较简单的手段是造一张正弦数字量表。取值范围为一个周期,采样点越多,精度就越高。
在实验板上,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口。两个寄存器均对数据独立进行锁存。因而要把一个数据通过0832输出,要经两次锁存。典型程序段如下:


主程序:
  1. NAME T92               ;0832数模转换实验
  2. PORT EQU 0CFA0H        ;片选地址送给字符名称PORT
  3. ORG 00H
  4. START: MOV P1,#0FFH           ; P1口初地址赋值
  5.        MOV C,P1.0             ; Cy←P1.0
  6.        JNC JUCH1              ;若Cy=0,转移到JUCH1,否则继续执下一步
  7.        MOV C,P1.1             ; Cy←P1.1
  8.        JNC JUCH2              ;若Cy=0,转移到JUCH1,否则继续执下一步
  9. MOVC,P1.2              ;Cy←P1.2
  10.        JNC JUCH3              ;若Cy=0,转移到JUCH1,否则继续执下一步
  11. MOVC,P1.3              ;Cy←P1.3
  12.        JNC JUCH4              ;若Cy=0,转移到JUCH1,否则继续执下一步
  13.        SJMP START             ;转移
  14.   子程序
  15. 三角波子程序:
  16. JUCH1:MOV DPTR,#PORT+1        ;DAC寄存器端口地址送DPTR
  17.       MOV A,#00H              ;初值送给累加器A
  18.       MOV R4,#2               ;设定波形的频率
  19. UP0: MOV B,#0FFH             ;设定波形的周期
  20. UP1: MOV DPTR,#PORT          ;DAC输入寄存器端口地址
  21.       MOVX @DPTR,A            ;送出数据
  22.       INC DPTR                ;加一,为DAC寄存器端口地址
  23.       MOVX @DPTR,A            ;启动转换
  24.       INC A                   ;数据加一
  25.       CJNE A,#0FFH,UP1        ;波行达到下限值时,波形上升   
  26.   MOV R2,#0FEH            ;R2←0FEH
  27. UP22:MOV DPTR,#PORT          ;DAC输入寄存器端口地址
  28.       MOV A,R2                ;将波形上限值赋予A
  29.       MOVX @DPTR,A            ;送出数据
  30.       INC DPTR                ;加一,为DAC寄存器端口地址     
  31.   MOVX @DPTR              ;启动转换
  32.          DJNZ R2,UP22            ;波形一直达到上限
  33.          DJNZ B,UP1              ;达到波形周期值
  34.          DJNZ R4,UP0             ;达到波形频值
  35.       SJMP START              ;转移
  36. 方波子程序:
  37. JUCH2:MOV R4,#20              ;循环次数
  38. UP00:MOV B,#0FFH             ;下限值
  39. LOOP1:MOV A,#33H              ;值上限电平
  40.       MOV DPTR,#PORT          ;DAC输入寄存器端口地址
  41.       MOVX @DPTR,A            ;送出数据
  42.       INC DPTR                ;加一,为DAC寄存器端口地址
  43.          MOVX @DPTR,A            ;启动转换
  44.          LCALL DELAY             ;形成方波顶宽
  45.          MOV A,#0FFH             ;置下限电平
  46.          MOV DPTR,#PORT          ;DAC输入寄存器端口地址
  47.          MOVX @DPTR,A            ;送出数据
  48.          INC DPTR                ;加一,为DAC寄存器端口地址
  49.          MOVX @DPTR,A            ;启动转换
  50.          LCALL DELAY             ;形成方波底宽
  51.          DJNZ B,LOOP1            ;若未达到下限值,转到LOOP1,;否则下移
  52.          DJNZ R4,UP00            ;若未达到循环次数,转到UP00,否则下移
  53.          SJMP  START             ;转移
  54. DELAY:MOV R0,#40H             ;延时程序
  55. D1:NOP
  56.          NOP
  57.          DJNZ R0,D1
  58. RET                          
  59. 锯齿波子程序:
  60. JUCH3:MOV A,#00H              ;初值送给累加器A
  61. LOOP2:MOV B,#0FFH             ;下限值
  62. LOOP3:MOV DPTR,#PORT          ;DAC输入寄存器端口地址
  63.          MOVX @DPTR,A            ;送出数据
  64.          INC DPTR                ;加一,为DAC寄存器端口地址
  65.          MOVX @DPTR,A            ;启动转换
  66.          INC A                   ;数据加一
  67.          CJNE A,#0FFH,LOOP3      ;使锯齿波的下限达到下限值   
  68. DJNZ B,LOOP3            ;若A未达到下限值,转到LOOP3,否则下移
  69.          LJMP START              ;转移
  70.    正弦波子程序:
  71. JUCH4:MOV B,#00H              ;正弦波启示
  72. LP1:MOV DPTR,#DATRO         ;DPTR←表起始地址
  73.          MOV R4,#00H             ;波形终值
  74. LP2:CLR A               ;累加器清零
  75.          MOVC A,@A+DPTR          ;查表
  76.          MOV R3,DPH              ;高8位送给R3
  77.          MOV R5,DPL              ;低8位送给R5
  78.          MOV DPTR,#PORT          ;DAC输入寄存器端口地址
  79.          MOVX @DPTR,A            ;送出数据
  80.          INC DPTR                ;加一,为DAC寄存器端口地址
  81.          MOVX @DPTR,A            ;启动转换
  82.          MOV DPH,R3              ;R3送给数据指针高8位
  83.          MOV DPL,R5              ;R5送给数据指针低8位
  84.          INC DPTR                ;波形位移增量
  85.          DJNZ R4,LP2             ;达到波形设定周期
  86.          DJNZ B,LP1              ;达到波形设定频率
  87.          LJMP START              ;转移
  88. DATRO:DB 80H,83H,86H,89H,8DH,90H,93H,96H            ;正弦波数据
  89. DB 99H,9CH,9FH,0A2H,05AH,08AH,0ABH,0AEH
  90.       DB 0B1H,0B4H,0BFH,0BAH,0BCH,0BFH,0C2H,0C5H
  91.       DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
  92.       DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H
  93.       DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H
  94.       DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH
  95.       DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
  96.       DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
  97.       DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H
  98.       DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH
  99.       DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH
  100.       DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
  101.       DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
  102.       DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H
  103.       DB 96H,93H,90H,8DH,89H,86H,83H,80H
  104.       DB 80H,7CH,79H,76H,72H,6FH,6CH,69H
  105.       DB 66H,63H,60H,5DH,5AH,57H,55H,51H
  106.       DB 4EH,4CH,48H,45H,43H,40H,3DH,3AH
  107.       DB 38H,35H,33H,30H,2EH,2BH,29H,27H
  108.       DB 25H,22H,20H,1EH,1CH,1AH,18H,16H
  109.       DB 15H,13H,11H,10H,0EH,0DH,08H,0AH
  110.       DB 09H,8H,7H,6H,5H,4H,3H,2H
  111.       DB 02H,1H,0H,0H,0H,0H,0H,0H
  112.       DB 00H,0H,0H,0H,0H,0H,1H,2H
  113.       DB 02H,3H,4H,5H,6H,7H,8H,9H
  114.       DB 0AH,0BH,0DH,0EH,10H,11H,13H,15H
  115.       DB 16H,18H,1AH,1CH,1EH,20H,22H,25H
  116.       DB 27H,29H,2BH,2EH,30H,33H,35H,38H
  117.       DB 3AH,3DH,40H,43H,45H,47H,4CH,4EH
  118.       DB 51H,51H,55H,57H,5AH,5DH,60H,63H
  119.       DB 69H,6CH,6FH,72H,76H,79H,7CH,80H
  120.       END
复制代码

完整的Word格式文档51黑下载地址:
单片机原理发生器课程设计.doc (256 KB, 下载次数: 45)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1