找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

调光LED灯STC15F104单片机源码

查看数: 5735 | 评论数: 7 | 收藏 5
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-8-22 00:09

正文摘要:

调光LED灯软件STC15F104 ,用的是STC宏晶8脚单片机 ,将一个旧的LED灯加了调光功能. 和大家学习探讨. 电路原理图如下:

回复

ID:140183 发表于 2020-1-31 21:02
很好。太谢谢啦!
ID:591640 发表于 2019-8-5 11:51
谢谢楼主分享
ID:63317 发表于 2019-8-5 09:11
谢谢复习资料
ID:59830 发表于 2018-12-23 00:24
没有汇编
ID:35873 发表于 2018-8-23 03:25
不错  有空也搞个玩玩
ID:359281 发表于 2018-8-22 12:04
你好,有汇编的程序吗?
ID:359281 发表于 2018-8-22 12:01
调光LED灯软件STC15F104 ,用的是STC宏晶8脚单片机 ,将一个旧的LED灯加了调光功能. 和大家学习探讨.  电路原理图如下:     单片机源程序如下 --------------------------------------------------------  Name File KEY,C  Versions number 1.0  Date      2016.01.01  Remarks   STC15F104E MCU - 文件名   :KEY.C  - 版本     :1.0 - 日期     :2016.01.01 - 备注     :STC15F104E MCU -------------------------------------------------------- #includeconfig.h      unsigned char T1RH,T1RL;   unsigned char code         KeyCodeMap[6]={ 按键值数组0-2是S1-S3短按 0x01,0x02,0x03,0x10,0x20,0x30         按键值数组3-5是S1-S3长按 }; unsigned char KeySta[3]={ 1,1,1 }; unsigned int idata KeyDownTime[3]={0,0,0};  按键按下持续时间 void configtime1(unsigned int ms); 定时器1配置 bit led1flag =1;   LED1状态标志位 bit led2flag =1;   LED2状态标志位 bit led3flag =1;   LED3状态标志位 bit led4flag =0; bit KeyLFlag = 0; 长按标志位 void KeyScan();     按键的扫描 void KeyDriver();   按键驱动 void LEDOUT();           void KeyAction(unsigned char KeyCode);   按键执行 -------------------------------- void KeyAction(unsigned char KeyCode) {           if(KeyCode==0x01)led1flag = ~led1flag;     if(KeyCode==0x02)led2flag = ~led2flag;     if(KeyCode==0x03)led3flag = ~led3flag;         if(KeyCode==0x10)led1flag = ~led1flag;     if(KeyCode==0x20)led2flag = ~led2flag;     if(KeyCode==0x30)led3flag = ~led3flag; } void LEDOUT() {      LED_R=led3flag;       LED_G=led1flag;       LED_B=led2flag;  } ---------------------------- void KeyDriver() {    unsigned char i;        static unsigned char idata backup[3]={1,1,1};      static unsigned int idata TimeThr[3]={600,600,600};      for(i=0;i3;i++)         循环检测3个按键    {    ---------------------------------       if(KeyDownTime[i]  0)   检测执行快速输入           {                                          if(KeyDownTime[i] = TimeThr[i])                  {                     if(KeyLFlag != 1)                         {                        KeyAction(KeyCodeMap[i+3]);                       TimeThr[i+3] += 200;                  KeyLFlag = 1;             }                  }           }       if(backup[i] != KeySta[i])           {              if(backup[i] != 1)                  {                     if(KeyLFlag)                         {                            KeyLFlag = 0;                         }                         else                         {                       KeyAction(KeyCodeMap[i]);                           }                  }              backup[i] = KeySta[i];               }    } } ---------定时器1的配置------------ void configtime1(unsigned int ms) {    unsigned long tmp;    tmp = 1105920012;      tmp =(tmpms)1000;      tmp = 65536 - tmp;       tmp = tmp + 18;          T1RH = (unsigned char)(tmp8);      T1RL = (unsigned char)tmp;      TMOD &= 0x0f;     TMOD = 0x10;     TH1 = T1RH;      TL1 = T1RL;       ET1 = 1;         TR1 = 1;         EA = 1;    } ---------按键的扫描函数---------- void KeyScan() {    bit RLED=0;      bit GLED=0;      bit BLED=0;      unsigned char i;      static unsigned char KeyBuf[]={    0xff,0xff,0xff    };     RLED=LED_R;     GLED=LED_G;     BLED=LED_B;      S1 = 1;     S2 = 1;     S3 = 1;      _nop_();     _nop_();     _nop_();          KeyBuf[0] = (KeyBuf[0]1)S1;      KeyBuf[1] = (KeyBuf[1]1)S2;      KeyBuf[2] = (KeyBuf[2]1)S3;      for(i=0;i3;i++)    {       if(KeyBuf[i]== 0x00)           {              KeySta[i] = 0;                  按键为零                  KeyDownTime[i] += 1;  按键持续按下           }           else if(KeyBuf[i]== 0xff)           {              KeySta[i] = 1;                 按键弹起状态                  KeyDownTime[i]=0;   按键清零           }    }    _nop_();     _nop_();      LED_R=RLED;     LED_G=GLED;     LED_B=BLED;     _nop_();  ……………………  …………限于本文篇幅 余下代码请从51黑下载附件………… 复制代码  所有资料51hei提供下载   调光LED灯软件STC15F104.zip (78.79 KB, 下载次数 2)

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

Powered by 单片机教程网

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