[HC89S001P demo试用] LED调光灯-锂电池供电
本帖最后由 芯圣电子官方QQ 于 2023-7-25 14:27 编辑功能说明:说明:初始化上电LED指示灯灭,驱动冷光和暖光LED灭;长按S1 开机或关机 LED指示灯亮或灭;开机后短按S1 分别1~12挡循环;冷光灯亮 (1~6挡),暖光灯灭,暖光灯亮 (7~12挡),冷光灯灭,第一次开机时默认冷光灯2挡,以后开关机记住档位,断电后默认状态2挡;
附件原理图 和 源代码(MCU HC89S001P)原理图说明:Gnd P01P02vcc_m程序下载口isp dowmUSB口提供充电IC TP4056给锂电池充电,同时可以给 调光灯提供电源 没有USB充电供电,锂电池给 调光灯提供电源. 指示灯 red led 接P00口,开机亮 关机灭;按键S1 (轻触按键)接P21口, 按键 长按开关机,开机后短按在1~12挡循环;冷光灯场效应管Q1(SI2300)驱动接接P03口,驱动冷光LED照明;暖光灯场效应管Q2(SI2300)驱动接接P04口,驱动暖光LED照明;
代码说明初始化: 关看门狗GPIO口,初始化定时器T0,初始化PWM0模块配置 PWM0PWM01高有效,单独模式,周期10ms并且PWM功能关闭且无输出.开看门狗 循环部分 清看门狗 按键任务,关机时短按不执行任务,开机时短按,开机后短按S1 分别1~12挡循环;冷光灯亮 (1~6挡),暖光灯灭,暖光灯亮(7~12挡),冷光灯灭,
定时器T0 中断按键的搜索,有按键按下并返回按键值。焊接的DEMO测试,见下图:
真是个好帖子!我要顶住啊! 好帖子啊!帮你顶住啊! 不错 试了下,003也可以实现 本帖最后由 yygdzjs 于 2019-4-10 21:07 编辑
优化了LED调光灯程序(原理图 LED增加限流电阻 R1 R2)有错误或不合理希望指出,和大家共同学习进步,谢谢!
//------------功能增加部分----------------------
生产出厂功能测试模式
:(关机短按6次出厂检测及还原出厂状态,指示灯 冷光 暖关 循环点亮1次)
BOR电源掉电复位 : (设置掉电电压 2.4V,加0.2V 二极管压降,实际2.6V左右)
PLVD低电压检测报警 延时关机功能
功能说明:说明:初始化上电LED指示灯灭,驱动冷光和暖光LED灭;长按S1 开机或关机 LED指示灯亮或灭;开机后短按S1 分别1~12挡循环;冷光灯亮 (1~6挡),暖光灯灭,暖光灯亮 (7~12挡),冷光灯灭,第一次开机时默认冷光灯1挡,以后开关机记住档位,断电后默认状态1挡;
附件原理图 和 源代码(MCU HC89S001P)原理图说明:Gnd P01P02vcc_m程序下载口isp dowmUSB口提供充电IC TP4056给锂电池充电,同时可以给 调光灯提供电源 没有USB充电供电,锂电池给 调光灯提供电源. 指示灯 red led 接P00口,开机亮 关机灭;按键S1 (轻触按键)接P21口, 按键 长按开关机,开机后短按在1~12挡循环;冷光灯场效应管Q1(SI2300)驱动接接P03口,驱动冷光LED照明;暖光灯场效应管Q2(SI2300)驱动接接P04口,驱动暖光LED照明;
/****************************************************程序自己测试后修改记录修改一内容说明:增加测试模式 和 待机省电(掉电模式(电流10uA左右))修改二内容说明: 2.1 增加电源电压测试功能,关机进入掉电模式 (低电压15分钟后关机,指示状态 5分钟内 8秒闪烁1次, 5~10分钟内 3秒闪烁1次, 10~15分钟内 2秒闪烁1次, 电压恢复设置电压则退出低电计数状态) 2.2 GPIO P03P04口状态 2.3修改长按开关机状态不稳定 2.4测试模式 冷光与暖光亮度调低. 工厂测试说明: S1连续短按6次 指示灯 冷光 暖光 以2HZ频率循环一次****************************************************/定时器T0 中断按键的搜索,有按键按下并返回按键值。测试延时计数短按按键延时计数低电压检测延时计数INT8~15 中断 中断唤醒处理
主函数//---主函数-----void main(){/************************************系统初始化****************************************/ WDTCCR = 0x00; //关闭看门狗 //本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程 CLKSWR = 0x51; //选择内部高频RC为系统时钟,内部高频RC 2分频,Fosc=16MHz CLKDIV = 0x01; //Fosc 1分频得到Fcpu,Fcpu=16MHz //-----VDD 掉电复位设置函数----- BORC = 0xC2; //BOR使能,BOR消抖使能,检测电压点2.4V BORDBC = 0xFF; ConfigGPIO(); //IO配置 ConfigTimer0(1);//定时器T0配置ConfigPwm0();//pwm配置 IP3 = IP3&0x3F|0x40; //设置PX8-15的优先级 1
LVD_VddDetectionSet();//低电压检测LVD 设置函数
WDTC = 0x57; //允许WDT复位,允许掉电/空闲模式下运行,1024分频 //WDT使用的是RC44K时钟,WDT_CLOCK_1024是1024分频,初值为0xFF //定时时间 = 1024 * 0xFF / 44000 // = 5.93s WDTCCR = 0xFF; //写入00时,将关闭WDT功能(但不关闭内部低频RC)
//---执行一次按键长按动作进入掉电模式 pwm0enflag=1; // 1为运行状态0关闭状态 vGu8KeySec=2; // 1 为短按2 为长按 while(1) { WDTC |= 0x10; //置寄存器 WDTC 的 第4位,清看门狗 if(0!=pwm0enflag)//判断是否在运行状态,启动低电压检测 { LVD_Detection();//低电压检测函数- } if(0==vGu8TestSwitchFlag) //--判断是否是出厂测试状态 { KeyTask1(); //按键任务 } else { TestTask(); //出厂功能检测 }
if(vGu8PDFlag == 1) //判断掉电标志位 { vGu8PDFlag = 0;// PD_Into(); //--进入掉电模式-- } }}
其它具体见附件:
占空比分别是多少呢? yzq13246068880 发表于 2019-4-15 19:24
占空比分别是多少呢?
code u16 Cu16PwmTable[]={ //PWM占空比
10,100,280,570,900,1248,
10,100,280,570,900,1248
// 1248,900,570,280,100,10,
// 1248,900,570,280,100,10,
};//
// //独立模式下,PWM0和PWM01共用一个周期寄存器
// //PWM0的占空比调节使用 PWM0组的占空比寄存器
// //PWM01的占空比调节使用 PWM0组的死区寄存器
// //周期计算 = 0x04E2 / (Fosc / PWM分频系数) (Fosc见系统时钟配置的部分)
// // = 0x04E2 / (16000000 / 128)
// // = 1250/125000
// // = 10ms 约100Hz
// //1250=0x04E2
频率100HZpwm周期数1250
占空比分别是10/1250 = 0.8%
占空比分别是100/1250 = 8%
占空比分别是280/1250 = 22.4%
占空比分别是570/1250 = 25.6%
占空比分别是900/1250 = 72%
占空比分别是1248/1250 = 99.8%
上面的是实际测试亮度调整的,当时没有计算占空比.
谢谢! 不错 003也是可以的,梅茂兵 没毛病
页:
[1]