全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等
资料下载:
通过网盘分享的文件:资料分享
链接: 百度网盘 请输入提取码 提取码: tgnu
目录
项目功能:
两路输出PWM信号;
通过按钮调整频率、占空比和相位差
使用LCD1602显示频率、占空比和相位差
项目文件:
一、Proteus仿真源文件
二、AD原理图文件
二、报告说明书
三、系统流程图
四、器件清单
元件 | 型号 | 数量 |
单片机 | AT89C51 | 1 |
电容 | 10uf | 1 |
电容 | 30pf | 2 |
晶振 | 12MHZ | 1 |
电阻 | 10k | 1 |
按钮 | 7 | |
显示器 | LCD1602 | 1 |
排阻 | 10k | 1 |
五、Keil c语言程序源代码(部分)
#include "reg51.h"
#include "lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
sbit out1=P2^6;//输出
sbit out2=P2^7;
sbit k1=P1^0;//按钮
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
uint freq=10;//频率
uchar pwm=50,time=0;//占空比
uchar set0=0,set1=0;
uchar cha0=0,cha1=0;//相位差控制
uchar xiang=0;//相位差0-180
uchar disp1[]="f:0000Hz pwm:00%";
uchar disp2[]=" :000 "; //e0
//显示函数
void xian()
{
disp1[2]=freq/1000+0x30;
disp1[3]=freq%1000/100+0x30;
disp1[4]=freq%100/10+0x30;
disp1[5]=freq%10+0x30;
disp1[13]=pwm/10+0x30;
disp1[14]=pwm%10+0x30;
disp2[2]=xiang/100+0x30;
disp2[3]=xiang%100/10+0x30;
disp2[4]=xiang%10+0x30;
write_string(1,0,disp1);
write_string(2,0,disp2);
}
//计算
void zhou()
{
unsigned long i;
i=1000000;
i=i/freq;//计算周期
i=i/100;//周期分成100份
set0=(65536-i)/256;
set1=(65536-i)%256;
//计算相位差
i=xiang;
i=i*100/360;
cha0=i;
if(cha0+pwm>99)
{
cha1=cha0+pwm-99;
}
else
cha1=cha0+pwm;
}
//主函数
void main()
{
disp2[0]=0xe0;
disp2[5]=0xdf;
zhou();
init_1602();//初始化
xian();
TMOD|=0X11;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1)
{
if(!k1)//频率加
{
if(freq<9999)
freq++;
zhou();
xian();
while(!k1);
}
if(!k2)//频率减
{
if(freq>1)
freq--;
zhou();
xian();
while(!k2);
}
if(!k3)//占空比加
{
if(pwm<99)
pwm++;
zhou();
xian();
while(!k3);
}
if(!k4)//占空比减
{
if(pwm>0)
pwm--;
zhou();
xian();
while(!k4);
}
if(!k5)//相位差加
{
if(xiang<180)
xiang++;
zhou();
xian();
while(!k5);
}
if(!k6)//相位差减
{
if(xiang>0)
xiang--;
zhou();
xian();
while(!k6);
}
}
}
//定时器0中断
void Timer0() interrupt 1
{
if(time<99)
time++;
else
time=0;
if(time<pwm)//通道1输出
out1=1;
else
out1=0;
if(time==cha0)//通道2输出
out2=1;
if(time==cha1)
out2=0;
TH0=set0;
TL0=set1;
}
六、全套资料包含
七:项目资源获取
需要完整的资料可以点击下面的名片关注,回复“资料”!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓