[PIC18F57Q43Curiosity Nano] 1.呼吸灯
本帖最后由 zhouminjie 于 2022-8-21 21:46 编辑本篇测试LED呼吸灯功能
打开MPLAB,点击新建工程New Project...
选择Microchip Embedded—>Standalone Projects—>Next
Family选择PIC18,Device选择PIC18F57Q43、Tool选择PIC18F57Q43 Curiosity Nano
编译工具选择XC8
设置工程名,存储路径,Encoding设置GB18030(中文注释就不会显示为乱码)
生成工程如下
点击MCC,打开代码配置器,存储配置文件
配置系统时钟频率:时钟源选择HFINTOSC,时钟频率选择64MHz,分频设置选择不分频,得到系统时钟频率为64MHz
配置引脚:板载LED连接至RF3引脚,在Package View中设置RF3引脚为GPIO output
配置定时器:添加TMR1,
使能定时器,时钟源选择HFINTOSC,设置8分频,定时周期设置8us,使能定时器中断
点击Generate生成配置代码
新建.c(.h)文件,添加led代码,呼吸频率250Hz,4ms(500*8us)
led.c代码如下
#include "mcc_generated_files/mcc.h"
static uint16_t PWMCount = 0;
static uint16_t PWMDutyCount = 1;
static uint8_t Direction = 0;
void LED_Breathing_cb(void)
{
PWMCount++;
if(PWMCount >= 500)
{
LED_SetLow();
PWMCount = 0;
if(Direction == 0)
{
PWMDutyCount++;
if(PWMDutyCount > 499)
{
Direction = 1;
}
}
else
{
PWMDutyCount--;
if(PWMDutyCount <= 1)
{
Direction = 0;
}
}
}
else if(PWMCount == PWMDutyCount)
{
LED_SetHigh();
}
}
编译调试运行
需注意在main.c中使能全局中断
测试效果如下
测试工程
PIC18单片机 外部中断INT0,中断触发只能是上升或者下降吗? pic18单片机复位脚可以直接接vcc吗 PIC18F使用多个中断程序跑飞 PIC18用什么伪指令编写配置位 PIC18怎么进入空闲模式 pic18f67j60单片机 能用网络远程升级自己的程序吗 脉冲计数,脉冲频率最大允许是多少? 单片机PIC18中,TMR0H和TMR0L设置成多少是100毫秒? pic18单片机串口接收多字节代码 在模拟电路中,呼吸灯的实现可以通过一个呈现正弦的电压控制,这个电压是连续变化的,所以肉眼看上去就是逐渐变暗 再循环更改pwm的阈值,就弄出了呼吸的效果。 利用pwm(脉冲宽度调节)技术,通过改变占空比来实现 PIC18单片机的AD采样频率是怎么计算的 pic18 ccpr1l的值怎么来的 采用一个比较简单的方法生成PWM波:设置定时器中断然后根据阈值判断置高和置低。 定时器产生PWM信号; 利用PWM信号实现呼吸灯。 外设工作靠电流,因此要改变电流大小,所以要动电阻或电压。
页:
[1]