打印
[51单片机]

想弄一个PWM调光的流水灯,给点难度大神,大神能解决?

[复制链接]
1833|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
azgg001|  楼主 | 2014-4-10 19:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 azgg001 于 2014-4-10 20:29 编辑

实物上P1口接了8个LED,现在已经实现通过两个按键调PWM的占空比来调LED亮度,在数码管上显示了亮度级,1-19级的亮度...现在想要LED实现流水灯功能,最好有两种流水灯效果,通过另外的两个按键切换,可通过复位键复位。大神可否解决一下
#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.
}

电路图如下

333333.png (25.3 KB )

333333.png

相关帖子

沙发
azgg001|  楼主 | 2014-4-14 22:40 | 只看该作者
没人懂啊,难度太大了吗?

使用特权

评论回复
板凳
叶伤| | 2014-4-15 13:18 | 只看该作者
。。。根本不明白你要做什么。程序也写的很超乎想象。路过,挽尊。还是自己想吧,这并不是很难。只是需要时间修改参数。

使用特权

评论回复
地板
lanchong1980| | 2014-4-15 14:55 | 只看该作者

使用特权

评论回复
5
戒→掉| | 2014-7-17 10:37 | 只看该作者
你写出来了吗?

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝