定时 / 计数器的功能
- 计数:记录脉冲的个数,从而可以测量位移、速度、流量等物理量。
- 计时:通过已知频率的脉冲进行计数,可以实现精确计时。
- 产生PWM波:产生不同占空比的PWM波,实现数 / 模转换,从而可以对电机、开关电源等设备进行控制。
两种定时/计数器的脉冲信号源
- 外部脉冲信号源:从外部通过引脚进入单片机
- 内部脉冲信号源:由单片机内部脉冲振荡器产生
定时/计数器的四种工作模式与设定
模式 | T / C0 工作模式 | WGM01 | WGM00 |
① | 普通模式 | 0 | 0 |
② | PWM、相位可调模式 | 0 | 1 |
③ | CTC模式 | 1 | 0 |
④ | 快速PWM模式 | 1 | 1 |
三种工作模式的比较
- **普通模式:**用于计时。TCNT0需要在程序中赋值,顶是255
- **比较匹配清0模式:**用于计时和产生占空比为50%的方波,顶是OCR0
- **快速PWM模式:**用于产生不同占空比的方波,顶是255,OCR0是输出引脚的翻转点
T / C0 工作模式之普通模式
应用例子:
T / C0工作模式之比较匹配清0模式
WGM00 | WGM01 |
0 | 1 |
功能:
- 计时
- 产生占空比为50%的不同频率的方波(调频)
1. 计时功能
2. 产生占空比为50%的不同频率的方波(调频)
应用例子:
T / C0工作模式之快速PWM模式
应用例子:用PWM控制LED从暗到亮
- LED在可承受的范围内,电流越大亮度越高
- 在此电路中,PA0输出5V,LED最暗
- PA0输出0V,LED最亮
公式:PWM波的等效电压 = 占空比 * 高电平电压
(例如:高电平电压为5V,占空比为20%,等效电压等于5*20%=1V)
应用例子:基于PWM的可调节亮度的LED灯
硬件:
- led接OC0引脚
- 两个按键分别接INT0和INT1引脚
软件:
- C/T0 设置为快速PWM模式
- 定义wide 变量,用于调节占空比的系数
- 在INT0的中断服务程序中,wide = wide +1
- 在INT1的中断服务程序中,wide = wide -1