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

要求:

       设计一个简易 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 电容的工艺的误差,以及其他元器件之间的误差,线路之间流向的问题。

 

  • 7
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: PWM(Pulse Width Modulation)信号发生器是一种电子器件,用于产生可调节的脉冲宽度的信号。CSDN是一个中文IT技术社区,在该平台上也可以找到关于PWM信号发生器设计的教程和文章。 设计PWM信号发生器需要以下几个步骤: 1. 确定需要的PWM信号参数,包括频率和占空比。根据具体需求选择合适的频率范围和占空比范围。 2. 选择合适的控制器或微控制器作为PWM信号发生器的核心。控制器要具备计时器和IO口输出功能,能够精确控制输出脉冲的频率和占空比。 3. 编写控制器的程序,通过编程设置计时器的计数周期和占空比,实现PWM信号的生成。可以利用CSDN上的教程和示例代码来学习和借鉴。 4. 连接电路和元件。根据PWM信号发生器的需求,连接合适的电路元件,如滤波电容、电阻等,以提供稳定的电源和输出信号。 5. 调试和优化。完成硬件连接和程序编写后,进行调试和测试,确保PWM信号发生器的输出符合预期,并根据需要进行优化和调整。 在CSDN上,可以找到大量关于PWM信号发生器设计的教程、项目和论文。这些资源涵盖了从基础知识到高级应用的各个方面,包括原理解析、电路设计、控制器编程等内容。通过借鉴这些资源,可以更好地理解和掌握PWM信号发生器设计原理和方法,从而进行自己的设计和实践。 总之,通过合适的控制器和编程,结合电路连接和调试,可以设计出满足需求的PWM信号发生器。CSDN上的相关资源能够帮助学习者更好地理解和掌握PWM信号发生器设计过程。 ### 回答2: PWM信号发生器是一种电子设备,用于生成脉冲宽度调制(PWM)信号。它通常由微控制器或专用集成电路实现。PWM信号是一种周期性变化的脉冲信号,其占空比可以调节。PWM信号发生器设计主要包括以下几个方面: 首先,需要选择合适的微控制器或专用集成电路作为控制核心。常见的微控制器有8051单片机或STM32系列芯片,专用集成电路有NE555等。这些控制核心具有高性能、低功耗的特点。 其次,需要设计PWM信号的频率和占空比调节电路。频率调节电路主要通过改变时钟信号频率来实现,可以利用计数器或PLL(锁相环)电路完成。占空比调节电路一般采用比较器和运算放大器等电路,通过改变比较阈值或输入电压实现占空比的调节。 然后,需要设计输出电路,将调节好的PWM信号输出。输出电路通常包括电平转换电路,将控制核心的数字信号转换为合适的模拟信号输出。可以使用晶体管、运算放大器等元件来实现。 最后,需要编写控制程序或固件,实现对PWM信号发生器的控制。控制程序可以使用汇编语言或高级语言如C语言编写,通过设置相关寄存器或调用相应的库函数来实现频率和占空比的调节。 总之,PWM信号发生器设计需要选择合适的控制核心,设计频率和占空比调节电路,设计输出电路,并编写相应的控制程序。通过合理的设计和实现,可以得到稳定、灵活的PWM信号发生器

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

防空洞的仓鼠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值