基于51单片机的波形发生器(三相,调幅)原理图、流程图、物料清单、仿真图、源代码

基于51单片机的波形发生器(三相,调幅)原理图、流程图、物料清单、仿真图、源代码

三相信号发生器
1、产生三相正弦波,相位差120度
2、频率50HZ
3、振幅可调请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
在这里插入图片描述

#include<reg51.h>
#include"absacc.h"
#include"intrins.h"
#include "lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
#define XDAT XBYTE[0XFEFF]
#define YDAT XBYTE[0XFDFF]
#define ZDAT XBYTE[0XFBFF]
sbit k1=P3^0;//按钮
sbit k2=P3^1;

uint amp=50;//振幅
uchar time=0;//计时

//波形Triangle wave.sine wave.sine wave
uchar one[]="0000mV";
uchar code zhengx[256]={//正弦编码
128,131,134,137,141,144,147,150,153,156,159,162,165,168,171,174,177,180,183,186,188,191,194,
196,199,202,204,207,209,212,214,216,219,221,223,225,227,229,231,233,234,236,238,239,241,242,244,245,246,247,249,
250,250,251,252,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,252,251,250,250,249,247,
246,245,244,242,241,239,238,236,234,233,231,229,227,225,223,221,219,216,214,212,209,207,204,202,199,196,194,191,
188,186,183,180,177,174,171,168,165,162,159,156,153,150,147,144,141,137,134,131,128,125,122,119,115,112,109,106,
103,100,97,94,91,88,85,82,79,76,73,70,68,65,62,60,57,54,52,49,47,44,42,40,37,35,33,31,29,27,25,23,22,20,18,17,15,
14,12,11,10,9,7,6,6,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,6,6,7,9,10,11,12,14,15,17,18,20,22,23,25,27,29,
31,33,35,37,40,42,44,47,49,52,54,57,60,62,65,68,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,119,122,125};

void disp()//显示
{
	one[0]=amp/100+0x30;//振幅
	one[1]=amp%100/10+0x30;
	one[2]=amp%10+0x30;
	one[3]='0';
	write_string(1,5,one);
}

void main()
{
	TMOD=0X22;			//设置计数器工作方式2
	TH0=178;//给定时器赋初值
	TL0=178;	
	ET0=1;//打开定时器0中断允许
	TR0=0;//打开定时器
	EA=1;//打开总中断

	init_1602();//初始化LCD
	disp();
	while(1)
	{
		if(!k1)//振幅加
		{
			if(amp<100)
			amp+=5;
			disp();
			while(!k1);
		}
		if(!k2)//振幅减
		{
			if(amp>5)
			amp-=5;
			disp();
			while(!k2);
		}	
	}
}
void Timer0() interrupt 1//定时器中断
{
	uint i;
	uchar j=0;
	time++;	
	TR0=0;	
		i=zhengx[time]*amp;
		XDAT=i/500;//X相
		
		j=time+170;
		i=zhengx[j]*amp;
		YDAT=i/500;//X相

		j=time+85;
		i=zhengx[j]*amp;
		ZDAT=i/500;//X相
	TR0=1;
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cqtianxingkeji

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值