[PIC®/AVR®/dsPIC®产品]

[PIC18F57Q43Curiosity Nano] 1.呼吸灯

[复制链接]
638|17
手机看帖
扫描二维码
随时随地手机跟帖
zhouminjie|  楼主 | 2022-8-21 21:40 | 显示全部楼层 |阅读模式
本帖最后由 zhouminjie 于 2022-8-21 21:46 编辑

本篇测试LED呼吸灯功能
打开MPLAB,点击新建工程New Project...
截图00.png

选择Microchip Embedded—>Standalone Projects—>Next
截图01.png

Family选择PIC18,Device选择PIC18F57Q43、Tool选择PIC18F57Q43 Curiosity Nano
截图02.png

编译工具选择XC8
截图03.png

设置工程名,存储路径,Encoding设置GB18030(中文注释就不会显示为乱码)
截图04.png

生成工程如下
截图05.png

点击MCC,打开代码配置器,存储配置文件
截图06.png

配置系统时钟频率:时钟源选择HFINTOSC,时钟频率选择64MHz,分频设置选择不分频,得到系统时钟频率为64MHz
截图08.png

配置引脚:板载LED连接至RF3引脚,在Package View中设置RF3引脚为GPIO output
截图07.png

截图09.png

配置定时器:添加TMR1,
截图09_.png

使能定时器,时钟源选择HFINTOSC,设置8分频,定时周期设置8us,使能定时器中断
截图10.png

点击Generate生成配置代码
截图11.png

新建.c(.h)文件,添加led代码,呼吸频率250Hz,4ms(500*8us)
截图12.png

截图13.png

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();
    }
}


编译调试运行
截图14.png

需注意在main.c中使能全局中断
截图15.png

测试效果如下
WeChat_20220821193702_.gif

测试工程
PIC18F57_LED.X.rar (516.39 KB)

使用特权

评论回复
jtracy3| | 2023-2-2 09:39 | 显示全部楼层
PIC18单片机 外部中断INT0,中断触发只能是上升或者下降吗?

使用特权

评论回复
geraldbetty| | 2023-2-2 12:59 | 显示全部楼层
pic18单片机复位脚可以直接接vcc吗

使用特权

评论回复
uytyu| | 2023-2-2 13:36 | 显示全部楼层
PIC18F使用多个中断程序跑飞

使用特权

评论回复
belindagraham| | 2023-2-2 15:57 | 显示全部楼层
PIC18用什么伪指令编写配置位

使用特权

评论回复
phoenixwhite| | 2023-2-4 20:40 | 显示全部楼层
PIC18怎么进入空闲模式   

使用特权

评论回复
1988020566| | 2023-2-6 14:02 | 显示全部楼层
pic18f67j60单片机 能用网络远程升级自己的程序吗

使用特权

评论回复
yeates333| | 2023-2-6 14:41 | 显示全部楼层
脉冲计数,脉冲频率最大允许是多少?

使用特权

评论回复
zerorobert| | 2023-2-8 11:59 | 显示全部楼层
单片机PIC18中,TMR0H和TMR0L设置成多少是100毫秒?

使用特权

评论回复
qiufengsd| | 2023-2-8 12:50 | 显示全部楼层
pic18单片机串口接收多字节代码

使用特权

评论回复
backlugin| | 2023-2-8 13:30 | 显示全部楼层
在模拟电路中,呼吸灯的实现可以通过一个呈现正弦的电压控制,这个电压是连续变化的,所以肉眼看上去就是逐渐变暗

使用特权

评论回复
bartonalfred| | 2023-2-8 18:37 | 显示全部楼层
再循环更改pwm的阈值,就弄出了呼吸的效果。

使用特权

评论回复
wangdezhi| | 2023-2-11 18:55 | 显示全部楼层
利用pwm(脉冲宽度调节)技术,通过改变占空比来实现

使用特权

评论回复
iyoum| | 2023-2-11 20:16 | 显示全部楼层
PIC18单片机的AD采样频率是怎么计算的

使用特权

评论回复
yeates333| | 2023-2-14 11:11 | 显示全部楼层
pic18 ccpr1l的值怎么来的

使用特权

评论回复
cemaj| | 2023-2-14 11:41 | 显示全部楼层
采用一个比较简单的方法生成PWM波:设置定时器中断然后根据阈值判断置高和置低。

使用特权

评论回复
chenci2013| | 2023-2-14 12:09 | 显示全部楼层
定时器产生PWM信号; 利用PWM信号实现呼吸灯。

使用特权

评论回复
10299823| | 2023-2-16 12:25 | 显示全部楼层
外设工作靠电流,因此要改变电流大小,所以要动电阻或电压。  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

134

帖子

3

粉丝