附录C PCB图
- 26 -
附录D 程序清单
KEY1 BIT P1.0 KEY2 BIT P1.1 KEY3 BIT P1.2 KEY4 BIT P1.3
;按键KEY1:锯齿波 按键KEY2:三角波 按键KEY3: 正弦波 ;按键KEY4: 方波;
ORG 0000H LJMP MAIN ORG 0030H
MAIN:MOV SP,#50H SCAN_KEY1:MOV A,P1 ANL A,#0FH
CJNE A,#0EH,SCAN_KEY2 LJMP B1
SCAN_KEY2:MOV A,P1 ANl A,#0FH
CJNE A,#0DH,SCAN_KEY3 LJMP B2
SCAN_KEY3:MOV A,P1 ANl A,#0FH
CJNE A,#0BH,SCAN_KEY4 LJMP B3
SCAN_KEY4:MOV A,P1 ANl A,#0FH
CJNE A,#07H,SCAN_KEY1 LJMP B4 ;利用dac0832产生锯齿波; B1:CLR P1.4 SETB P1.5 SETB P1.6 SETB P1.7
SANTOO:MOV A ,#00H
MOV DPTR,#7FFFH LLOOP:MOVX @DPTR,A
INC A ;
CJNE A,FFH,LLOOP LJMP SCAN_KEY1
- 27 -
;利用dac0832产生三角波; B2: CLR P1.5 SETB P1.4 SETB P1.6 SETB P1.7
TRIAN :MOV A ,#00H MOV DPTR,#7FFFH UP:
MOVX @DPTR,A INC A JNZ UP DOWN: DEC A
MOVX @DPTR,A JNZ DOWN
LJMP SCAN_KEY2
;利用dac0832产生正弦波; ;在表格里取数送到指定地址
B3: CLR P1.6 SETB P1.4 SETB P1.5 SETB P1.7
SINE: MOV DPTR1,#sinTab MOV DPTR,#7FFFH LOOP: CLR A
MOVC A,@A+DPTR1 CJNE A,#129,LOOP1 RET
LOOP1: MOVX @DPTR,A INC DPTR1 AJMP LOOP
sinTab:DB 128,132,137,141,146,150,154,159,163,167 DB 171,176,180,184,188,191,195,199,203,206 DB 210,213,216,219,222,225,228,231,233,236 DB 238,240,242,244,246,247,249,250,251,252 DB 253,254,254,255,255,255,255,255,254,254 DB 253,252,251,250,249,247,246,244,242,240 DB 238,236,233,231,228,225,222,219,216,213 DB 210,206,203,198,195,192,188,184,180,176 DB 172,167,163,159,155,150,146,141,137,133
- 28 -
DB 128,124,119,115,111,106,102,97,93,89,85 DB 81,77,73,69,65,61,57,54,50,47,43,40,37 DB 34,31,28,25,23,20,18,16,14,12,10,9,7 DB 6,5,4,3,2,2,1,1,1,1,1,2,2,3,4,5,6
DB 7,9,10,12,14,16,18,20,23,25,28,30,33,36 DB 40,43,46,50,53,57,60,64,68,72,76,80,84 DB 88,93,97,101,106,110,114,119,123,128,129 LJMP SCAN_KEY3 ;利用dac0832产生方波; B4: CLR P1.7
SETB P1.4
SETB P1.6 SETB P1.5
SQUN:MOV DPTR,#7FFFH MOV A ,#0FFH
MOVX @DPTR,A LCALL Delay MOV A ,#00H
MOVX @DPTR,A LCALL Delay LJMP SCAN_KEY4
Delay:MOV R7,#10H DLY0: MOV R6,#0EDH NOP
DLY1: DJNZ R6,DLY1 DJNZ R7,DLY0 RET END - 29 -