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

PIC18F16Q41单片机使用按键控制LED闪烁频率示例

[复制链接]
8695|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaoyang9992006|  楼主 | 2021-9-17 19:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
思路:
设置一个IO为带弱上拉的输入模式,用于实现按键功能
设置一个IO为输出模式,用于驱动LED开关状态;
在主循环函数进行LED闪烁操作,即翻转后执行一个带传入参数的延时函数;
然后执行按键扫描程序,当按键被按下,按键函数修改延时函数的参数。
通过MCC创建工程,按键和LED的端口配置如下所示:

点击Generate生产工程代码,然后完善main.c文件如下:

#include "mcc_generated_files/mcc.h"

void get_button(int *i)
{
    __delay_ms(5);
    if(BUTTON_GetValue()==0)
    {
        while(BUTTON_GetValue()==0);
        (*i)--;
        if(*i<=0) *i=10;
    }
}

void main(void)
{
    int t=10;
    int i=0;
    SYSTEM_Initialize();

    while (1)
    {
        LED_Toggle();
        get_button(&t);
        for(i=0;i<t;i++)
            __delay_ms(50);        
    }
}
编译,烧录,LED刚开始以1Hz闪烁,每按一下快一点,当最快到10Hz时候,再按下就回到了1Hz的频率。

使用特权

评论回复
沙发
gaoyang9992006|  楼主 | 2021-9-17 22:14 | 只看该作者
本帖最后由 gaoyang9992006 于 2021-9-17 22:27 编辑

https://www.bilibili.com/video/BV1zb4y1y7ZG/
视频地址工程文件
000_Blink.X.zip (38.18 KB)




使用特权

评论回复
板凳
小明的同学| | 2021-9-21 23:24 | 只看该作者
上拉电阻用外部的应该也是可以的吧。

使用特权

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

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1958

主题

15904

帖子

207

粉丝