下载此文档

基于stc15l104e单片机模拟pwm调光小夜灯.doc


文档分类:医学/心理学 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
基于STC15L104E单片机模拟PWM调光小夜灯
(2012-10-23 14:44:44)
转载
标签:
单片机
stc15
模拟pwm
led调光
杂谈▼分类: 硬件
鉴于宿舍晚上会被宿管灭灯,所以制作了一个小台灯在关灯后"窥探"用,但是舍友陈某反应光线太强影响其睡眠,所以决心做个可以调光的LED小夜灯,窥探自己的隐私,让别人睡觉去吧...
搜索自己的原件库,发现上半年买的STC15L104E一直没用,所以打算就用单片机来控制了,当然,如果用模拟电路,可能几个元件就可以完成了,但是,模拟对我来说更难设计,所以,,,好吧,废话多了下面贴电路:
其实也没什么,纯粹是IO操作,两个开光是调光用,AMS117是降压用,AMP4953就相当于开关,后面的电感电容电路是防止出现闪烁的,额,如果有问题的话可以贴出来.
下面介绍模拟PWM操作,毕竟不是硬件的PWM而且要顾及程序长度,所以模拟出来的PWM频率600HZ,不过用在LED上应该足够了.
设PWM基数为PWM_NUM,PWM比较输出值为PWM_CMP.
主要思路就是利用单片机内部计时器按一定周期中断,然后在中断服务程序里令
PWM_NUM加一,判断是否小于PWM_CMP比较值,如果小于,则IO输出高,否则输出低,这样,
我们就可以通过修改PWM_CMP的值来调节IO输出脉宽,=计时器中断时间/PWM_NUM;
好吧,我的文字表达能力不好,贴张图来说明可能比较好:
如图,假设PWM_CMP=6,PWM_NUM=16,也就是,,判断是否小于PWM_CMP,是则输出高电平,否则输出低电平,所以,如图所示,当PWM_NUM累加到6前,输出电平是一直是高的,知道PWM_NUM累加到6后,输出就拉低了,当PWM_NUM达到16后,清零,这时PWM_NUM又小于PWM_CMP,故PWM输出又为高了,周而复始,就达到模拟PWM的效果了,PWM周期就等于PWM_NUM重装周期.
当然值得注意的是,因为判断是在中断服务程序中执行,所以计时器周期不能太短.
好吧,贴整个完整的程序出来,它的功能我先说明一下.
按下key1变亮,按下key2变暗,长按则连续调节,两个键一起按下改变显示方式,分别有四个模式,单个分别亮,两个亮,,开机读取EEPROM,这样便能开机保持上次关机的状态,,这STC15系列A版外部中断呐,连掉电唤醒都实现不了,
原本打算使用掉电模式作为关机状态的,但是唤醒不了(除了复位键),所以只好用外部硬件开关关机了....
废话不多说,贴程序,程序有标注,看不明白或有问题指教的贴出来,虚心接受.
#include ""
#include ""
#define ON 0 //LED是低电平有效
#define OFF 1
#define PWM_TIME 200 //计时器计数值
#define MODEL_ADDR 0x0000 //EEPEOM地址#define PWM_CMP_ADDR 0x0200
sfr AUXR =0x8e;
sfr P3M1 =0xb1;
sfr P3M0 =0xb2;
sfr IAP_DATA =0xc2;
sfr IAP_ADDRH=0xc3;
sfr IAP_ADDRL=0xc4;
sfr IAP_CMD =0xc5;
sfr IAP_TRIG =0xc6;
sfr IAP_CONTR=0xc7;
sbit KEY1=P3^0;
sbit KEY2=P3^1;
sbit LED1=P3^2;
sbit LED2=P3^3;
unsigned char key_down,key_cont,key_up; //donw为上升沿,cont为长效,up为下降沿 unsigned char pwm_cmp=1; //PWM比较值 unsigned char pwm_num=0; //PWM计数值 unsigned char led_model=0; //LED模式 unsigned char pwm_delay=0; //延时暂存 unsigned char cmp_temp;
//led_cmp的暂存,用于运算是否写入EEPROM
//计时器0初始化
void timer_init()
{
TMOD=0x00; //模

基于stc15l104e单片机模拟pwm调光小夜灯 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198614
  • 文件大小20 KB
  • 时间2017-06-23
最近更新