【STC单片机】3路PWM波形输出并串口打印当前脉冲值

【STC单片机】3路PWM波形输出并串口打印当前脉冲值


  • 相关篇《【STC15】3路PWM波形输出示例演示》

本次实验结合上一篇的实验基础,将实际的脉冲时间值从串口打印输出。测试的芯片型号:STC15W408AS,自制的开发板,采用外部晶振16MHz。《【开源分享】自制STC15W408AS开发板》

  • 3路PWM脉冲值输出的时间
    【STC单片机】3路PWM波形输出并串口打印当前脉冲值_第1张图片
  • 3路脉冲输出时间串口输出的数据,结合同时间段,在逻辑分析仪上对P25P26P27引脚上采集波形数据的对比即可相互验证
    【STC单片机】3路PWM波形输出并串口打印当前脉冲值_第2张图片
  • pwm0
    【STC单片机】3路PWM波形输出并串口打印当前脉冲值_第3张图片
  • pwm1
    【STC单片机】3路PWM波形输出并串口打印当前脉冲值_第4张图片
  • pwm2
    【STC单片机】3路PWM波形输出并串口打印当前脉冲值_第5张图片
  • 最大脉冲占空比以及最小占空比值:PWM MAX:5919;PWM MIN:80
选择的时钟脉冲个数。
#define		PWM_HIGH_MIN	80			//限制PWM输出的最小占空比, 避免中断里重装参数时间不够。
#define		PWM_HIGH_MAX	(PWM_DUTY - PWM_HIGH_MIN)		//限制PWM输出的最大占空比。

【STC单片机】3路PWM波形输出并串口打印当前脉冲值_第6张图片

主程序




/*************	功能说明	**************

双串口全双工中断方式收发通讯程序。
注意:
通过PC向MCU发送数据, MCU收到后通过串口把收到的数据原样返回.

******************************************/


#include	"config.h"
#include "stdio.h"
#include "USART.h"
#include "PWM.h"

void  delay_ms(unsigned int ms)
{
     unsigned int i;
	 do{
	      i = MAIN_Fosc / 13000;
		  while(--i)	;   //14T per loop
     }while(--ms);
}



//========================================================================
// 函数: void main(void)
// 描述: 主函数。
// 参数: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注: 
//========================================================================
void main(void)
{
	
			PCA_Init();	//PCA初始化
//	P0M1 = 0;	P0M0 = 0;	//设置为准双向口
//	P1M1 = 0;	P1M0 = 0;	//设置为准双向口
//	P2M1 = 0;	P2M0 = 0;	//设置为准双向口
	P2M1 &= ~(0xe0);	//P2.7 P2.6 P2.5 设置为推挽输出
	P2M0 |=  (0xe0);
	P3M1 = 0;	P3M0 = 0;	//设置为准双向口
//	P4M1 = 0;	P4M0 = 0;	//设置为准双向口
//	P5M1 = 0;	P5M0 = 0;	//设置为准双向口
//	P6M1 = 0;	P6M0 = 0;	//设置为准双向口
//	P7M1 = 0;	P7M0 = 0;	//设置为准双向口
		//	S1_USE_P30P31();
 InitSerialPort(); 		//初始化串口,波特率9600,8bit数据位,1停止位,无校验
	EA = 1;	//允许总中断

//	PrintString1("STC15F2K60S2 UART1 Test Prgramme!\r\n");	//SUART1发送一个字符串

	while (1)
	{
		delay_ms(500);	
		P10 = !P10;
		if(++pwm0 >= PWM_HIGH_MAX)  pwm0 = PWM_HIGH_MIN;
		PWMn_Update(PCA0,pwm0);

		if(++pwm1 >= PWM_HIGH_MAX)	pwm1 = PWM_HIGH_MIN;
		PWMn_Update(PCA1,pwm1);

		if(++pwm2 >= PWM_HIGH_MAX)	pwm2 = PWM_HIGH_MIN;
		PWMn_Update(PCA2,pwm2);
		
		printf("pwm0:%u \t pwm1:%u \t pwm2:%u\r\n",pwm0,pwm1,pwm2);	//SUART1发送一个字符串
	}
}




程序工程架构

【STC单片机】3路PWM波形输出并串口打印当前脉冲值_第7张图片

程序资源

链接:https://pan.baidu.com/s/1N8SjaS6-zahovju0rCUQ3w 
提取码:sa77

你可能感兴趣的:(STC单片机,STC单片机,PWM输出,pwm测试)