打印

求解双色LED

[复制链接]
1975|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qujianp|  楼主 | 2008-12-29 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#include<reg51.h> 
#define uchar unsigned char 
#define uint unsigned int 
uchar code TAB[]={0X81,0XBF,0XBF,0X81,0XFD,0XFD,0XFD,0X81, 
        0X81,0XBF,0XBF,0X81,0XBF,0XBF,0XBF,0X81, 
        0XDD,0XDD,0XDD,0X81,0XDF,0XDF,0XDF,0XDF, 
        0X81,0xFD,0xFD,0x81,0xBF,0xBF,0xBD,0xC3}; 
uchar i,t; 
delay(uchar t) 

 while(t--) 
 {;}      

void main(void) 
{uchar N,T; 
  while(1) 
  { 
   for(N=0;N<4;N++) 
   for(T=0;T<200;T++) 
   { 
    P2=0XFE; 
    for(i=0;i<8;i++) 
    {      
     P1=TAB[i+8*N]|P0;        
     delay(100); 
     P2=(P2<<1)|(P2>>7); 
  
    } 
   } 
 } 

上面的程序当LED亮的时候是红色,下面的是绿色 
#include<reg51.h> 
#define uchar unsigned char 
#define uint unsigned int 
uchar code TAB[]={0X81,0XBF,0XBF,0X81,0XFD,0XFD,0XFD,0X81, 
        0X81,0XBF,0XBF,0X81,0XBF,0XBF,0XBF,0X81, 
        0XDD,0XDD,0XDD,0X81,0XDF,0XDF,0XDF,0XDF, 
        0X81,0xFD,0xFD,0x81,0xBF,0xBF,0xBD,0xC3}; 
uchar i,t; 
delay(uchar t) 

 while(t--) 
 {;}      

void main(void) 
{uchar N,T; 
  while(1) 
  { 
   for(N=0;N<4;N++) 
   for(T=0;T<200;T++) 
   { 
    P2=0XFE; 
    for(i=0;i<8;i++) 
    {      
     P0=TAB[i+8*N]|P0;        
     delay(100); 
     P2=(P2<<1)|(P2>>7); 
  
    } 
   } 
 } 

请问如何能这个程序合并在一起呢,呈现黄色呢?
如何要出现三种情况这个程序该如何写的?

相关帖子

沙发
耕在此行| | 2008-12-29 18:50 | 只看该作者

楼主的提问估计要会读甲古文的人才会答.

使用特权

评论回复
板凳
huangqi412| | 2008-12-29 19:51 | 只看该作者

lz是一个8*8点点阵对吧

每点是2个灯 
对应位组合决定颜色
P2  P0  P1
1    0    0  红
0    1   0  绿
1    1   0  黄
0   0    0  灭
x   x   1   灭

单色时候 p2和p1送一个就可以,  黄色时候p2和p1都要送数就可以啦.

使用特权

评论回复
地板
qujianp|  楼主 | 2008-12-30 16:07 | 只看该作者

求解双色LED

楼上看来没看懂电路图啊,我用的是P0、P2、P3。
如果我要想这个程序依次出现红、绿、黄,三种颜色这个程序该如何写呢,请高手帮帮忙,我才学写C,不是很会

使用特权

评论回复
5
isbit| | 2008-12-30 18:22 | 只看该作者

电路图明明是p0 p1 p2

  
LZ是大学生吗?

使用特权

评论回复
6
huangqi412| | 2008-12-30 19:05 | 只看该作者

偶崩溃了,...半天没发现p3

不是c的问题,是思维的问题,
都说的很清楚啦,4种状态怎么组合出来...

使用特权

评论回复
7
qujianp|  楼主 | 2008-12-31 09:27 | 只看该作者

求解双色LED

我是大学生,就p0、p1、p2那要出现三种状态什么写这个程序呢

使用特权

评论回复
8
huangqi412| | 2008-12-31 09:37 | 只看该作者

俺晕,,,

lz去类比下数字逻辑电路吧... 输入组合决定输出状态 想要什么输出状态就根据表格去做输入状态吧.

#define led_show(a,b,c) P2=a;p0=b;p1=c;
#define stop()  while(1)

void main()
{
uchar red,green,ground;

red=xx;
green=yy;
ground=zz;

led_show(red,green,groud);
stop();
}
 lz自己找几个数给xx,yy,zz幅值,多试几次不要说你还没看明白啊.

使用特权

评论回复
9
stycx| | 2008-12-31 17:40 | 只看该作者

来个黄色的

注意倒数第三个语句
红色   P1=TAB[i+8*N]|P0;  应该是  P1=TAB[i+8*N]|P1; 吧    
绿色   P0=TAB[i+8*N]|P0; 

所以黄色的就是       
    
include<reg51.h> 
#define uchar unsigned char 
#define uint unsigned int 
uchar code TAB[]={0X81,0XBF,0XBF,0X81,0XFD,0XFD,0XFD,0X81, 
        0X81,0XBF,0XBF,0X81,0XBF,0XBF,0XBF,0X81, 
        0XDD,0XDD,0XDD,0X81,0XDF,0XDF,0XDF,0XDF, 
        0X81,0xFD,0xFD,0x81,0xBF,0xBF,0xBD,0xC3}; 
uchar i,t; 
delay(uchar t) 

while(t--) 
{;}      

void main(void) 
{uchar N,T; 
  while(1) 
  { 
   for(N=0;N<4;N++) 
   for(T=0;T<200;T++) 
   { 
    P2=0XFE; 
    for(i=0;i<8;i++) 
    {      
     P1=TAB[i+8*N]|P1; 
     P0=TAB[i+8*N]|P0;       
     delay(100); 
     P2=(P2<<1)|(P2>>7); 
  
    } 
   } 

}

使用特权

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

本版积分规则

8

主题

17

帖子

0

粉丝