简易 PWM 信号发生器的设计与制作

本文介绍了一个使用AT24C02芯片实现掉电存储功能的简易PWM信号发生器。通过两个按键调节占空比,并用液晶显示当前值,同时输出到示波器进行验证。在不同占空比下,观察到波形存在过冲和毛刺,误差可能源于环境干扰和硬件因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求:

       设计一个简易 PWM 信号发生器,利用两个按键来进行调节 PWM 信号 的占空比,同时使用液晶显示 PWM 信号的目前占空比,并且能够通过 AT24C02 芯片将 当前的 PWM 信号的占空比设置参数保存,以便在掉电之后,下次上电时能够进行读取上次的数据,进行掉电储存的功能。并且之后通过示波器进行 PWM 输出的显示以及占空比的测量。

仿真:

分析:仿真中通过 P1.6 和 P1.7 两个按键来作为调整 PWM 信号的占空比,P2.7 引脚输出 PWM 信号并且通过示波器来显示波形,频率计显示当前 PWM 信号的频率,电压探针来 计算模拟电压的数值。通过液晶来显示当前的占空比,D1 指示灯用来调试程序。

程序设计:

思路:检测按键按下,修改定时器中电平反转的时间,之后AT24C02保存当前翻转时间的参数,定时器移除之后触发中断,电平信号反转,输出PWM波---结果给液晶。

主函数:

#include "reg52.h" 
#include "key.h" 
#include "timer.h" 
#include "lcd.h" 
sbit led1=P1^4;
sbit led2=P1^3;
extern u8 t,step;
void main() 
{ 
 u8 num_1=0,num_2=0;
 InitLcd1602();
Timer1Init();
LcdShowStr(1,0,"KS OF SJF PWM:");
LcdShowStr(1,1,"DR: %");
LcdShowStr(8,1,"STEP: %");
t=At24c02Read(2);
step=At24c02Read(1);
PWM =0; 
led1 = 0;
led2 = 0;
 while(1) 
 { 
 key_scan(); 
 Lcd_numble(4,1,step,2);
- 18 - 
 Lcd_numble(13,1,t,2); 
 } 
} 

按键部分:用来调节占空比的

按键部分(调整占空比部分) 
#include "key.h" 
u8 t=10,step=1;
extern u16 k;
void delay(u16 x) 
{ 
 int i,j;
 for(i=0;i<x;i++)
 for(j=0;j<333;j++);
} 
 
void key_scan() 
{ 
 if(KEY_step==0) 
 { 
 delay(10);
 if(KEY_step==0) 
 { 
 step= step+1; 
 if(step==11) step=0;
 At24c02Write(1,step); 
 } 
 while(KEY_step==0);
 } 

 if(KEY_1 ==0) 
 { 
 delay(10);
 if(KEY_1 ==0) 
 { 
 t = t+step;
 if(t>=90) t=90;
 At24c02Write(2,t);
 } 
 while(KEY_1==0); 
 } 
 if(KEY_2 ==0) 
 { 
 delay(10);
 if(KEY_2 ==0) 
 { 
 t= t-step;
 if(t<=10) t=10;
 At24c02Write(2,t); 
 } 
 while(KEY_2==0);
 } 
} 

定时器部分:

#include "timer.h" 
#include "lcd.h" 
u16 k=0;
extern u8 t;
void Timer1Init() 
{ 
TMOD|=0X20;
TH1=156; 
TL1=156;
ET1=1;
EA=1;
TR1=1; 
} 

 void Timer1() interrupt 3 
{ 
k++;
if(k>100) k=0;
if(k<t) PWM =1; 
else PWM =0;
} 

仿真验证结果:

占空比为90%时: 

 

占空比为50%时

 

电路图的绘制:

实物和结果展示:

占空比为10%时

 

占空比为50%时:

 

 

占空比为90%时:

 

 误差分析:

        当输出为 PWM 信号的时候,通过示波器显示的波形,PWM 波形,上下出现了部分 的过冲和毛刺。占空比显示基本误差很小,但是波形出现了失真和毛刺。推测误差来源为,可能是环境干扰和 BNC 线的不稳定,以及板子制作时过孔之间的电流的影响。以及晶振电路间,12MHz 晶振和 30pf 电容的工艺的误差,以及其他元器件之间的误差,线路之间流向的问题。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

防空洞的仓鼠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值