环境说明
该内容仅针对我自己学习的开发板做的笔记,在实际开发中需要针对目标电路板的原理图进行针对性研究。
- 芯片:STC8H8K64U
- 烧录软件:stc-isp-v6.92G
- 编码工具:天问
引脚说明
P0_0:蜂鸣器,按频率发音,1:高,0:低P0_1:电动马达,0:停,1:动P5_3:小蓝灯,0:灭,1:亮P2_7:1 号 LED 灯,0:亮,1:灭P2_6:2 号 LED 灯,0:亮,1:灭P1_5:3 号 LED 灯,0:亮,1:灭P1_4:4 号 LED 灯,0:亮,1:灭P2_3:5 号 LED 灯,0:亮,1:灭P2_2:6 号 LED 灯,0:亮,1:灭P2_1:7 号 LED 灯,0:亮,1:灭P2_0:8 号 LED 灯,0:亮,1:灭P5_1:1 号按键,0:按下,1:弹起P5_2:2 号按键,0:按下,1:弹起P5_3:3 号按键,0:按下,1:弹起P5_4:4 号按键,0:按下,1:弹起P3_4:矩阵键盘第 1 行引脚P3_5:矩阵键盘第 2 行引脚P4_0:矩阵键盘第 3 行引脚P4_1:矩阵键盘第 4 行引脚P0_3:矩阵键盘第 1 列引脚P0_6:矩阵键盘第 2 列引脚P0_7:矩阵键盘第 3 列引脚P1_7:矩阵键盘第 4 列引脚
PWM
- 频率和周期的关系
- 频率(Frequency): 表示单位时间内发生事件的次数。常用单位是赫兹(Hz),1赫兹等于每秒一个周期。
- 周期(Period): 表示一个完整事件发生所需的时间。周期是频率的倒数。
- 举例:
- 24MHz(兆赫兹),每秒计算24M次,1M = 1k * 1k = 1 000 000
- 那么周期的时间就是
1/24MHz=41.67ns,那么计算1次需要41.67ns,就是说执行1次所需的时间
- 那么周期的时间就是
- 24MHz(兆赫兹),每秒计算24M次,1M = 1k * 1k = 1 000 000
- PWM全称是脉宽调制(Pulse Width Modulation),是一种通过改变信号的脉冲宽度来控制电路输出的技术。
- PWM与引脚对应关系(引脚来源:《stc8h.pdf》的 997 页)

呼吸灯
通过 PWM 设置 LED 灯的亮度
#define PWM_DUTY_MAX 1000//PWM最大占空比值
#include <STC8HX.h>
uint32 sys_clk = 24000000;//设置PWM、定时器、串口、EEPROM频率参数
#include "lib/twen_board.h"
#include "lib/PWM.h"
#include "lib/delay.h"
uint16 index = 0;
int16 inc = 5;
uint16 frequency = 1000;
void setup() {
twen_board_init();//天问51初始化
pwm_init(PWM4N_P27, frequency, 0);
pwm_init(PWM4P_P26, frequency, 0);
// pwm_init(PWM3N_P15, frequency, 0);
// pwm_init(PWM3P_P14, frequency, 0);
// pwm_init(PWM2N_P23, frequency, 0);
// pwm_init(PWM2P_P22, frequency, 0);
// pwm_init(PWM1N_P21, frequency, 0);
// pwm_init(PWM1P_P20, frequency, 0);
}
void loop() {
pwm_duty(PWM4N_P27, index);
pwm_duty(PWM4P_P26, index);
// pwm_duty(PWM3N_P15, index);
// pwm_duty(PWM3P_P14, index);
// pwm_duty(PWM2N_P23, index);
// pwm_duty(PWM2P_P22, index);
// pwm_duty(PWM1N_P21, index);
// pwm_duty(PWM1P_P20, index);
delay(1);
if(index >= 1000) {
inc = -5;
}
if(index <= 0) {
inc = 5;
}
index+= inc;
}
void main(void) {
setup(

最低0.47元/天 解锁文章
3101

被折叠的 条评论
为什么被折叠?



