单片机实验七

实验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<reg51.h>
#include<absacc.h>
#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<reg51.h>
#include<absacc.h>
#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<reg51.h>
#include<absacc.h>
#include<math.h>
#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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值