单片机实验七

来源:互联网 发布:数组java99乘法表 编辑:程序博客网 时间:2024/06/05 08:08

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

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

锯齿波程序:汇编代码

D_1 EQU 8140HD_2 EQU 81C0HORG 0000HJMP STARTSTART:MOV SP,#30HMOV A,#00HBB:MOV DPTR,#D_1MOVX @DPTR,AMOV DPTR,#D_2MOVX @DPTR,AINC ASJMP BBEND

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 8140HD_2 EQU 81C0HORG 0000HJMP STARTSTART:MOV SP,#30HMOV A,#00HBB:MOV DPTR,#D_1MOVX @DPTR,AMOV DPTR,#D_2MOVX @DPTR,ACPL ACALL D500SJMP BBD500:    ;延时500ms子程序    MOV R7,#17HDL1:    MOV R6,#98HDL0:    MOV R5,#46H    DJNZ R5,$    DJNZ R6,DL0    DJNZ R7,DL1    RETEND

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;    }}
原创粉丝点击