电力电子课设|数控产生PWM波|使用51单片机输出占空比可调PWM波(按钮控制、数码管显示)速成教程

这篇具有很好参考价值的文章主要介绍了电力电子课设|数控产生PWM波|使用51单片机输出占空比可调PWM波(按钮控制、数码管显示)速成教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们学校电气专业开始做电力电子的课设了,小组选了一项制作硬件电路的任务,里面有要求采用数控方式实现DC-DC电压变换的输出电压调节,数控在电路中的体现就是用单片机输出可调占空比的PWM波作用于IRF520模块,实现电压的变化,作用于SG3525芯片的2引脚。考虑到可能有同学没接触过51单片机的C语言编程,特写下此篇文章,希望能够给大家带来帮助。

选用51开发板

51单片机pwm输出,一个电气学子的编程觉悟史,51单片机,单片机,物联网,电力电子,嵌入式硬件

本人买了《51单片机项目教程》这本书,配套了一个开发板。

目标分析

我们的目标:数码管显示当前输出PWM波占空比,使用按键可以调节占空比。

所以,我们需要:

1.一个引脚输出PWM波;

2.一个定时器控制PWM波的占空比;

3.若干按钮对占空比进行操作;

4.数码管显示占空比。

以下对这四个任务逐一进行拆解。

数码管

数码管有共阴极和共阳极两种,它们可通过向端子输入不同的字形码,就可在数码管显示对应的数字。

大家DIY的时候选扩展数码管最好用共阳极的数码管,因为共阳极数码管通过低电平驱动发光,要求驱动功率小。不过本教程配套的开发板上配了共阴极数码管,我们就用共阴极数码管了。

以下是详细解释为什么要使用共阳极数码管的文章:

单片机驱动共阳数码管和共阴数码管的比较-昌晖仪表网 (yunrun.com.cn)

选择数码管上的2个位,对应占空比0~99。

按钮

使用按钮需消抖。原因如下:

什么是按键消抖?为什么要消抖?_百度知道 (baidu.com)

这里选用四个按钮,详细作用见代码注释。

定时器

定时器配置内容可看看此文章:

51单片机定时器/计数器_单片机计数器_KeLin&的博客-CSDN博客

定时时间=振荡周期*12*(65536-初值)。

PWM波输出

选择一个引脚,当定时器达到初始装载时间A,引脚从高电平跳转到低电平;当定时器达到初始装载时间B,引脚从低电平跳转到高电平。文章来源地址https://www.toymoban.com/news/detail-586793.html

完整代码

#include<reg52.h> 
#define uchar unsigned char
//PWM周期选择:1毫秒
#define PWMZHOUQI 1000
#define JISHIMAX 65536-PWMZHOUQI
#define CHUZHI	30

#define duan P0	 
sbit wei1=P2^4; //LED显示器的位
sbit wei2=P2^5;
sbit wei3=P2^6; 
sbit wei4=P2^7;
sbit k1=P3^4;	 //+1、-1
sbit k2=P3^5; //可长按
sbit k3=P3^6;	//改变变化方向
sbit k4=P3^7;	 //重置占空比
sbit output=P2^0; //PWM输出端口

int is_gd=0;
int GD=	JISHIMAX*CHUZHI;//高电平时间
int zhankongbi=CHUZHI;

uchar code num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f};//对应数字0~9



void delay(unsigned int xms)   //按键消抖用延时,单位毫秒
{
	unsigned int i,j;
	for(i=xms;i>0;i--)
		for(j=112;j>0;j--);

}

void timer0_init() 
{
	TMOD=0x01;//16位定时器
	TH0=(GD>>8)&0xFF;//初始值
	TL0=GD&0xFF;
	EA=1; //打开总中断
	ET0=1; //打开定时器T0中断
	TR0=1; //启动定时器T0

}
void main()
{
	int dir=1;
	int shi;
	int ge;
	int had_press=0;
	output=1;
	is_gd=1;
	timer0_init();
	while(1)
	{
	   if(k4==0)
		{
			delay(10);
			if(k4==0)
			{
				while(k4==0);
				zhankongbi=CHUZHI;
				had_press=1;
			}
		}

		if(k3==0)
		{
			delay(10);
			if(k3==0)
			{
				while(k3==0);
				dir=-dir;
				had_press=1;	
			}
		}

		if(k1==0)
		{
			delay(10);
			if(k1==0)
			{
				while(k1==0);
				if ((zhankongbi+dir)>=0&& (zhankongbi+dir)<=99)
					zhankongbi+=dir;
				had_press=1;	
			}
		}

		if(k2==0)
		{
			delay(10);
			while(k2==0)
			{
				delay(10);
				if ((zhankongbi+dir)>=0&& (zhankongbi+dir)<=99)
					zhankongbi+=dir;
				had_press=1;	
			}
		}
		shi=zhankongbi/10;
		ge=zhankongbi%10;

		if (had_press)
		{
			GD=JISHIMAX*zhankongbi;
			TH0=(GD>>8)&0xFF;//初始值
			TL0=GD&0xFF;
			is_gd=1;	
		}
		
		duan=num[shi];
		wei1=0;
		wei2=0;
		wei3=1;
		wei4=0;
		delay(5);
		duan=num[ge];
		wei1=0;
		wei2=0;
		wei3=0;
		wei4=1;
		delay(5);

	}
}

void timer0()interrupt 1
{	
	if(is_gd)
	{
		TH0=((JISHIMAX*(1-zhankongbi))>>8)&0xFF;//初始值
		TL0=(JISHIMAX*(1-zhankongbi))&0xFF;	
	}	
	if(!is_gd)
	{
		TH0=(GD>>8)&0xFF;//初始值
		TL0=GD&0xFF;
	}
	is_gd=-is_gd;
	output=~output;
}

到了这里,关于电力电子课设|数控产生PWM波|使用51单片机输出占空比可调PWM波(按钮控制、数码管显示)速成教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用51单片机和DS1302时钟芯片做一个简易的电子时钟

    今天给大家推荐一个51单片机小实验,带你使用51单片机做一款简易的电子时钟,其中计时模块采用DS1302硬件模块,显示采用LCD显示屏,具体怎么实现开来一起看看吧! DS1302 是 DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟和31字节静态 RAM,通过简单的串行接口与

    2024年02月11日
    浏览(49)
  • 【​电力电子在电力系统中的应用​】6 滞环电流控制的PWM整流器 + STATCOM整流器 + APF仿真

    【仅供参考 】 【2023.06西南交大电力电子在电力系统中的应用】 目录 步骤一:基于滞环电流控制的PWM整流器仿真 1.1 仿真要求 1.2 仿真电路原理及设计 1.2.1 主电路的搭建 1.2.2 控制电路的搭建 1.3 波形分析 步骤二:从PWM整流器到STATCOM仿真 2.1 仿真要求 2.2 仿真电路设计 2.2.1 主

    2024年01月19日
    浏览(65)
  • 单片机课设———基于51单片机的智能风扇控制器(汇编语言)

    说明:单片机芯片为AT89C52,使用普中开发板,用汇编语言编程。 系统实现了对风扇的控制: (1)控制器面板包括:启/停键、模式选择键、风速键和类型选择键。 (2)模式分为:手动模式和自动温控模式。在温控模式下,风速键和类型选择键无效。 (3)风速分为:强、中

    2024年02月11日
    浏览(53)
  • C语言课设项目-51单片机-定时器和计数器

     (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、定时器的原理 1、CPU时序的有关知识 2、在学习定时器之前需要明白的  3、定时/计数器的工作原理 4、51单片机定时器结构  二、定时/计数器的控制  1、工作方式

    2023年04月18日
    浏览(67)
  • 【51单片机学习】PWM电机调速

    中断允许寄存器,详情可以看STC51单片机芯片手册第160页 TMOD、TCON详情可以看STC51单片机芯片手册第187页 51单片机中的定时器有三个,(C52比C51多了一个定时器3,但这些都统称为51单片机) 本次以 Timer0 为例进行介绍 定时器的作用: 1:用于计时系统,可实现软件计时,或者使程

    2023年04月18日
    浏览(83)
  • 51单片机PWM(定时器)

    目录 前言 一、PWM的介绍 二、在定时器中配置PWM 三、代码  总结         PWM普遍应用于惯性系统,我们知道单片机几乎只能输出“1”和“0”两种状态,即开和关,想要输出模拟量是不太容易实现的,那么怎样才能使单片机输出平滑的线性信号呢?没接触过PWM的小伙伴可能第

    2024年02月09日
    浏览(55)
  • 基于51单片机的舵机控制(PWM)

    舵机是一种位置伺服的驱动器,常被用于遥控汽车、机器人等领域,结构主要包括小型直流电机、变速齿轮组、可调电位器和控制电路板四个部分,如下图,舵机的外部一般接有三根线,分别是黑(接地线)、红(电源线)、棕(白或者黄,信号线)三种颜色进行区分。 2.

    2024年02月16日
    浏览(43)
  • 【51单片机】直流电机驱动(PWM)(江科大)

    · 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 · 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成 · 除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等 电机的驱动无法

    2024年02月20日
    浏览(49)
  • 【51单片机】直流电机的驱动和PWM调速

    51单片机驱动直流电机与 PWM 调速是通过使用 51 单片机来控制直流电机的转速和方向。51 单片机通过控制电机的电流来实现驱动,并通过生成 PWM 信号来调节电机的转速。使用 PWM 调速可以使得直流电机的转速精确可控,并且减少了电机的功率损耗。在 51 单片机的控制系统中,

    2023年04月09日
    浏览(41)
  • 【Proteus仿真】【51单片机】PWM电机调速系统设计

    本项目使用Proteus8仿真51单片机控制器,使用L298N电机模块、数码管模块、按键模块、LED指示灯模块等。 系统运行后,数码管显示电机当前运行档位和速度。 可通过按键K4启动与停止,按键K1加速、按键K2减速,按键K3换向; 档位可在1-5挡。 最终可实现: 按键功能:具有加速、

    2023年04月17日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包