打印

PWM调光的流水灯

[复制链接]
848|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dingy|  楼主 | 2015-8-11 20:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实物上P1口接了8个LED,现在已经实现通过两个按键调PWM的占空比来调LED亮度,在数码管上显示了亮度级,1-19级的亮度...现在想要LED实现流水灯功能,最好有两种流水灯效果,通过另外的两个按键切换,可通过复位键复位。大神可否解决一下
沙发
pengf| | 2015-8-11 20:50 | 只看该作者
程序和图看看

使用特权

评论回复
板凳
dingy|  楼主 | 2015-8-11 20:50 | 只看该作者
#include<reg52.h>
unsigned char a, b;
sbit K1 = P3^2;     //定义两个调整占空比的按键
sbit K2 = P3^3;
typedef unsigned char uchar ;
//------------------------------------------
void  delay(unsigned int i)
{
    unsigned char j;
    while(i--)  for(j = 0; j < 60; j++);
}
//------------------------------------------

void Display(uchar k)
{
    uchar code table[11] = {
      0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xff};
   P0 = table[(20 - k) / 10];   //显示十位  
    P2 = 253; delay(5);                //显示约5ms
    P2 = 255;
    P0 = table[(20 - k) % 10];   //显示个位
    P2 = 254; delay(5);
    P2 = 255;             //消隐
}
//------------------------------------------
void main()
{
    TMOD = 0x01;               //T0定时方式1
    TH0 = (65536 - 500) / 256; //500us@12MHz
    TL0 = (65536 - 500) % 256;
    TR0 = 1;
    ET0 = 1;
    EA = 1;

    a = 0;
    b = 10;
    while(1)  {
      if(!K1) {Display(b); if(!K1) {b++; if(b > 19) b = 19; while(!K1) Display(b);}}
      if(!K2) {Display(b); if(!K2) {b--; if(b < 1)  b = 1;  while(!K2) Display(b);}}
      //以上两行是检查按键、延时消抖、修改占空比、等待按键释放,b = 1~19

      Display(b); //显示占空比等级
    }
}

//------------------------------------------
void time0() interrupt 1
{
    TL0 = (65536 - 493) % 256; //补偿中断进入时间
    TH0 = (65536 - 493) / 256; //500us@12MHz
    a--;                       //a = 1~20
    if(a == 0)  {a = 20; P1 = 0;} //周期=20*500us
    if(a <= b)  P1 = 255;      //输出到示波器
  
}
//------------------------------------------
void X0_INT() interrupt 0
{
         b++;
         if(b > 19) b = 19;           //占空比等级最大为19
}
//------------------------------------------
void X1_INT() interrupt 2
{
         b--;
         if(b < 1) b = 1;             //占空比等级最小为1.
}




使用特权

评论回复
地板
renyaq| | 2015-8-11 20:51 | 只看该作者
。。。根本不明白你要做什么。程序也写的很超乎想象。路过,挽尊。还是自己想吧,这并不是很难。只是需要时间修改参数。

使用特权

评论回复
5
dingy|  楼主 | 2015-8-11 20:51 | 只看该作者
好吧,明天我自己先琢磨琢磨吧,多谢了

使用特权

评论回复
6
bbapple| | 2015-10-18 17:36 | 只看该作者
占空比设置19个等级是干什么作用啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

10920

帖子

6

粉丝