AiCube 试用 -  PWM 呼吸灯
本文介绍了 Aiapp-ISP 仿真调试平台软件的 AiCube 工具通过定时器实现 PWM 呼吸灯的主要流程。
项目介绍
该项目通过定时器中断实现 PWM 呼吸灯,即通过控制 PWM 占空比实现 LED 亮度调节。
参考:51单片机利用PWM、定时器实现呼吸灯 .
硬件平台
硬件测试平台为基于 AI8051U-34K64 主控的 擎天柱 开发板

下载软件
下载 最新版 AIapp-ISP 软件;
解压并打开该软件,右侧操作界面选择并进入 Keil 仿真设置 标签项;
仿真设置
选择目标单片机型号 - 添加型号和头文件到 Keil - 选择 Keil 安装目录文件夹 - 确定,提示添加成功;
创建项目
菜单栏点击 AiCube 标签,进入 项目创建助手 ;
选择目标单片机型号 - 填写项目名称 - 设置保存路径 - 点击 下一步 ;
参数配置
进入参数配置界面
取消勾选 CLK 时钟 项;
勾选 外设 - USB 通用串行总线 项;
勾选 TIMER 定时器 - TIMER0,并进行相关配置,打开定时器0

注意 定时器周期 需根据实际情况设置合适的数值和单位。
生成工程
点击 创建项目 即可获得预先配置参数的 Keil 工程。
此时查看目标路径发现 AiCube 工具创建的工程文件,包括 Keil 文件、库文件夹等标准工程格式;
双击打开生成的 Keil 文件,进入 main.c 主函数文件
可见代码已根据 AiCube 工具的配置,提前配置完成定时器和中断初始化等函数。
编译一下直接生成的工程,确保无误。
代码添加
定义变量,以便调用
uint8 Tcount, dutyfactor, direct; // 定义 PWM周期计数、占空比、方向
sbit LED = P2^0; // 目标 PWM 输出 I/O 管脚
在主循环中调用 breathLED() 呼吸灯函数;
void breathLED(); // 调用呼吸灯函数
void main(void)
{
    SYS_Init();
    while (1)
    {
        breathLED(); // 呼吸灯函数
        USBLIB_OUT_Done();              //查询方式处理USB接收的数据
    }
}
添加和定义呼吸灯 void breathLED() 函数
/* ---------- breath LED -------------*/
void breathLED()
{
    if(Tcount >= 100) 
    {               //一个PWM周期(100次*200us)
        Tcount = 0;                 //下一个PWM周期内,重新计数
  
        //根据方向判断占空比增加或减少
        if(direct == 0) 
        {           //正方向,占空比增加
            dutyfactor++;           //下一个PWM周期,占空比增加1
        } 
        else if(direct == 1) 
        {   //负方向,占空比减少
            dutyfactor--;           //下一个PWM周期,占空比减少1
        }
    }
  
    //根据占空比值判断方向是否需要改变
    if(dutyfactor <= 0) 
    {           //占空比减少到0
        direct = 0;                 //正方向,占空比开始增加
    } 
    else if(dutyfactor >= 100) 
    {   //占空比增加到100
        direct = 1;                 //负方向,占空比开始减少
    }
  
    //占空比:通电时间相对于总时间所占的比例(此程序中:低电平时间相对于PWM周期所占的比例) 
    //一个PWM周期计数100次,占空比相当于低电平的计数周期次数。即:0~占空比:低电平,灯亮;占空比~100:高电平,灯灭 
    //在一个PWM周期内,根据周期计数是否小于占空比,判断LED灯的亮灭
    if(Tcount < dutyfactor) 
    {       //周期计数值<占空比
        LED = 0;                    //当前PWM周期的当前计数周期内灯亮
    } 
    else 
    {
        LED = 1;                    //当前PWM周期的当前计数周期内灯灭
    }
}
之后保存并重新编译工程。
完整工程见附件。
固件烧录
生成的 HEX 烧录固件位于 Objects 文件夹下,
使用 Type-C 数据线连接开发板和电脑,按住 P32 按键的同时,短按 POWER 按键,
此时 Aiapp-ISP 软件自动识别 HID 设备

点击 下载/编程 按钮,待烧录结束,程序自动运行。
效果演示
P20 引脚对应的 LED 呈现呼吸灯效果,从暗到亮再到暗完成 1 个周期,为 4 秒

总结
本文介绍了 Aiapp-ISP 仿真调试平台软件的 AiCube 工具实现 PWM 呼吸灯的主要流程,为 STC 系列单片机的快速开发和应用提供了参考。
 附件:PWM_breath_LED.zip
 附件:PWM_breath_LED.zip