找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2783|回复: 4
打印 上一主题 下一主题
收起左侧

求思路 应广单片机做呼吸灯

[复制链接]
跳转到指定楼层
楼主
ID:366959 发表于 2019-9-25 11:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
500黑币
单片机是PMS171B_datasheet_CN_v101_20190823,做一个呼吸灯,求个思路

PMS171B_datasheet_CN_v101_20190823.pdf

2.13 MB, 下载次数: 34, 下载积分: 黑币 -5

最佳答案

查看完整内容

//********************************************************************************// // 功能名称: TM2/TM3产生PWM渐变(呼吸灯功能) // 适应芯片: 只有TM2的芯片: // PMS系列:PMS130 PMS131 PMS232 PMS164 PMS154C PMS171B //--------------------------------------------------------------------------------// //程序说明: // 设置TM2或PB3从PB2脚产生3906.25Hz的频率 // 初始关闭TM2或TM3 ...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:249730 发表于 2019-9-25 11:39 | 只看该作者
//********************************************************************************//
//                功能名称:        TM2/TM3产生PWM渐变(呼吸灯功能)
//                适应芯片:        只有TM2的芯片:
//                                        PMS系列:PMS130   PMS131   PMS232   PMS164   PMS154C   PMS171B   
//--------------------------------------------------------------------------------//
//程序说明:
//        设置TM2或PB3从PB2脚产生3906.25Hz的频率
//        初始关闭TM2或TM3做到0%的占空比,
//        然后打开TM2或TM3开始调节占空比至100%
//        再调节占空比至最低,关掉TM2或TM3做到0%,然后重复做到渐变
//        通过增加TM2B或TM3B的值使占空比不断增加
//        通过减少TM2B或TM3B的值使占空比不断减少
//注意事项:
//        1.案例为PMS154C,其他芯片时钟源和输出IO脚可能存在不同,其他原理都相同
//********************************************************************************//
#include        "extern.h"

void        TM2_Init(void)//设置频率
{
//        $ TM2C SYSCLK,PB2,PWM;                //选择时钟源,输出脚,PWM模式,是否反极性输出(写Inverse为启用,不写则为停用)
                                                                //根据要求时钟可选择SYSCLK, EOSC, IHRC, ILRC等,输出脚可以选择Disable(不选择), PB2, PB4, PA3
                                                                //注:时钟源与输出脚位的选择请参考对应芯片的datasheet,个别芯片有些不同
        $ TM2S 8bit,/1,/1;                        //选择分辨率,预分频,分频
                                                                //分辨率可选择8bit,6bit,预分频可选择/1, /4, /16, /64,分频可选择/1 ~ /32(对应TM2S[4:0]的00000 ~ 11111)
        TM2B = 0;                                        //1/256的亮度

                //        PWM模式的频率和占空比计算
                        //频率=时钟源/(分辨率*预分频*分频)=1M / (2^8 * 1 * 1) = 3906.25Hz
                        //占空比=(TM2B+1)/分辨率*100%=(0 + 1) / 2^8 *100% = 1/256*100% = 0.38%

        $ TM2C Stop;                                //关闭PWM,即0%的亮度
}
//除脚位不同,其他原理和TM2一样
void        TM3_Init(void)
{
//        $ TM3C SYSCLK,PB5,PWM;                //输出脚可选择Disable(不选择),PB5, PB6, PB7
                                                                //注:时钟源与输出脚位的选择请参考对应芯片的datasheet,个别芯片有些不同
        $ TM3S 8bit,/1,/1;
        TM3B = 0;                                        //1/256的亮度
        $ TM3C Stop;                                //关闭PWM,0%的亮度
}
bit                Add_Sign;
byte        PWM_Num;
void        PWM_Grad(void)
{
        if(Add_Sign)//PWM递增
        {
                $ TM2C SYSCLK,PB2,PWM;//打开PWM
        //        $ TM3C SYSCLK,PB5,PWM;
                PWM_Num++;//每次增加1/256
                TM2B = PWM_Num;
        //        TM3B = PWM_Num;
                if(PWM_Num == 255)//如果亮度100%,开始递减
                {
                        Add_Sign = 0;
                }
                .delay 10000;//延时10ms,控制渐变时长
        }
        else//PWM递减
        {
                PWM_Num--;
                TM2B = PWM_Num;
        //        TM3B = PWM_Num;
                if(PWM_Num == 0)//亮度1/256,不是全灭
                {
                        $ TM2C Stop;//关闭PWM来实现0%亮度
                //        $ TM3C Stop;
                        Add_Sign = 1;
                }
                .delay 10000;
        }
}

void        FPPA0 (void)
{
        .ADJUST_IC        SYSCLK=IHRC/16, IHRC=16MHz, VDD=5V;

        PWM_Num = 0;
        Add_Sign = 1;
        TM2_Init();
//        TM3_Init();
        while (1)
        {
                PWM_Grad();
        }
}


void        Interrupt (void)
{
        pushaf;

        if (Intrq.T16)
        {        //        T16 Trig
                //        User can add code
                Intrq.T16        =        0;
                //...
        }

        popaf;
}

回复

使用道具 举报

板凳
ID:237423 发表于 2020-6-26 10:11 | 只看该作者
还在用应广吗?
回复

使用道具 举报

地板
ID:300743 发表于 2020-11-5 22:39 | 只看该作者
pwm或定时器
回复

使用道具 举报

5#
ID:960857 发表于 2022-12-22 14:14 | 只看该作者
老哥你这是深广例程,直接发上来了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表