学习提升
发表于 2025-5-9 14:25:52
学习板功能介绍
学习提升
发表于 2025-5-9 14:29:13
STC8A8K64S4单片机内置PWM控制直流电机 源程序
#include <stc8.h>
#include "hc595.h"
#include "pwm.h"
#define CYCLE 100 // 设置PWM周期为1000H个PWM时钟
unsigned char table[] = {90,70,50,30,10};// 定义5个档位的占空比
sbit keyContrl = P0^7;// 独立按键总开关
sbit key1 = P0^0; // 独立按键1
void Delay(unsigned int xms) // 毫秒级延时
{
unsigned int i, j;
for(i=xms;i>0;i--)
{
for(j=921;j>0;j--);
}
}
void main()
{
unsigned char i = 0;
P_SW2 = 0x80;
PWMCKS = 0x00; // PWM时钟为系统时钟
PWMC = CYCLE; // 设置PWM周期为CYCLE个PWM时钟
PWM5T1= 0; // 在计数值为0时,开始输出低电平
PWM5T2= 0; // 在计数值为0时,开始输出高电平
PWM5CR= 0x88; // 使能PWM5_2输出
P_SW2 = 0x00;
PWMCR = 0x80; // 启动PWM模块
keyContrl = 0;
while (1)
{
if(!key1) // 独立按键1,被按下
{
Delay(10); // 延时消抖
if(!key1)
{
i++; // 档位增加1
if(i>4) // 大于最大档位后,归零
{
i = 0;
}
}
while(!key1);// 等待按键抬起
}
PWM5T2= table;// 把i档位的占空比赋给PWM5T2
// 访问逻辑地址位于XDATA区域的特殊功能寄存器前需要
// 将 P_SW2(BAH)寄存器的最高位(EAXFR)置 1
P_SW2 |= 0x80;
display(0,i); // 显示档位(0~4,共5个档位)
}
}
学习提升
发表于 2025-5-27 11:30:12
单片机控制程序需要多实践才能掌握单片机的编程思路