单片机实验七

实验7.1 实现D/A接口设计,编写程序输出方波、锯齿波、正弦波,使用示波器观察波形。

该试验必须要配合示波器才能验证,所以我在寝室的话并不能验证正确性,而且这个实验做的也是云里雾里的,因为理论的时候明明学了很多可以接的接口呀,但是实验时却什么都不用接,因为实验箱内部已经接好了。

锯齿波程序:汇编代码

D_1 EQU 8140H
D_2 EQU 81C0H
ORG 0000H
JMP START

START:
MOV SP,#30H
MOV A,#00H
BB:
MOV DPTR,#D_1
MOVX @DPTR,A
MOV DPTR,#D_2
MOVX @DPTR,A
INC A
SJMP BB
END

C语言代码:

#include
#include
#define D_1 XBYTE[0x8140]
#define D_2 XBYTE[0x81c0]
uchar a=0;
main(){
    while(1){
        D_1=a;
        D_2=a;
        a++;
    }
}

方波:汇编代码:

D_1 EQU 8140H
D_2 EQU 81C0H
ORG 0000H
JMP START

START:
MOV SP,#30H
MOV A,#00H
BB:
MOV DPTR,#D_1
MOVX @DPTR,A
MOV DPTR,#D_2
MOVX @DPTR,A
CPL A
CALL D500
SJMP BB

D500:    ;延时500ms子程序
    MOV R7,#17H
DL1:
    MOV R6,#98H
DL0:
    MOV R5,#46H
    DJNZ R5,$
    DJNZ R6,DL0
    DJNZ R7,DL1
    RET
END

C语言代码:

#include
#include
#define D_1 XBYTE[0x8140]
#define D_2 XBYTE[0x81c0]
uchar a=0;

void delay500ms(void)
{
    unsigned char a,b,c;
    for(c=23;c>0;c--)
        for(b=152;b>0;b--)
            for(a=70;a>0;a--);
}

main(){
    while(1){
        D_1=a;
        D_2=a;
        a=~a;
        delay500ms();
    }
}

正弦波:汇编代码 利用查表法 太麻烦啦,我日后加上

C语言代码:

#include
#include
#include
#define D1 XBYTE[0x8140]
#define D2 XBYTE[0x81C0]
#define pi acos(-1)

main(){
    unsigned int a=0;
    unsigned char f=0;
    SP=0x30;
    while(1){
        f=sin(a*pi/180)*100;
        D1=f+100;
        D2=f+100;
        a++;
        if(a==360)
            a=0;
    }
}

你可能感兴趣的:(个人学习记录)