欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 新手求救,51單片機+08接口點陣屏顯示不正常 [打印本頁]

作者: inhq    時間: 2021-5-12 04:50
標題: 新手求救,51單片機+08接口點陣屏顯示不正常

想用8個0x11點亮上半個屏幕(16行)每行應該是0001000100010001001....即3個燈滅1個燈亮重復16次
但實際卻是1111111111111111111....整個屏幕都在發光

請大神看下代碼,出出主意



#include<STC12C5A60S2.H>

#define  uchar         unsigned char  
#define  uint  unsigned int


sbit IA  =P2^0;
sbit IB  =P2^1;
sbit IC  =P2^2;
sbit ID  =P2^3;

#define  scan0    {IA=0;IB=0;IC=0;ID=0;}
#define  scan1    {IA=1;IB=0;IC=0;ID=0;}
#define  scan2    {IA=0;IB=1;IC=0;ID=0;}
#define  scan3    {IA=1;IB=1;IC=0;ID=0;}
#define  scan4    {IA=0;IB=0;IC=1;ID=0;}
#define  scan5    {IA=1;IB=0;IC=1;ID=0;}
#define  scan6    {IA=0;IB=1;IC=1;ID=0;}
#define  scan7    {IA=1;IB=1;IC=1;ID=0;}
#define  scan8    {IA=0;IB=0;IC=0;ID=1;}
#define  scan9    {IA=1;IB=0;IC=0;ID=1;}
#define scan10    {IA=0;IB=1;IC=0;ID=1;}
#define scan11    {IA=1;IB=1;IC=0;ID=1;}
#define scan12    {IA=0;IB=0;IC=1;ID=1;}
#define scan13    {IA=1;IB=0;IC=1;ID=1;}
#define scan14    {IA=0;IB=1;IC=1;ID=1;}
#define scan15    {IA=1;IB=1;IC=1;ID=1;}

sbit SH=P2^7;
sbit ST=P2^6;
sbit R1=P1^0;
sbit R2=P1^1;
sbit G1=P1^2;
sbit G2=P1^3;
sbit OE=P2^5;

void scan(unsigned char Value)  
{switch(Value)
        {case  0: scan0;break;
                  case  1: scan1;break;
                   case  2: scan2;break;
                    case  3: scan3;break;
             case  4: scan4;break;
                      case  5: scan5;break;
                       case  6: scan6;break;
                        case  7: scan7;break;
                 case  8: scan8;break;
                       case  9: scan9;break;
                      case 10:scan10;break;
                     case 11:scan11;break;
            case 12:scan12;break;
                  case 13:scan13;break;
                 case 14:scan14;break;
            case 15:scan15;break;
           default:break;
        }
}

void WriteR1(unsigned char byte)   
{
        unsigned int i;
        for(i=0;i<8;i++)
        {
                SH=1;
                R1=byte&(0x80>>i);
                SH=0;
        }
}
void WriteR2(unsigned char byte)
{
        unsigned int i;
        for(i=0;i<8;i++)
        {
                SH=1;
                R2=byte&(0x80>>i);
                SH=0;
        }
}
void WriteG1(unsigned char byte)
{
        unsigned int i;
        for(i=0;i<8;i++)
        {
                SH=0;
                G1=byte&(0x80>>i);
                SH=1;
        }
}

void WriteG2(unsigned char byte)
{
        unsigned int i;
        for(i=0;i<8;i++)
        {
                SH=0;
                G2=byte&(0x80>>i);
                SH=1;
        }
}



void main()
{

        while(1)
        {
        unsigned int i,j;
                        for(i=0;i<16;i++)  //16DDé¨Ãè
                {
                        OE=0;
                        for(j=0;j<8;j++){
                                WriteR1(0x11);
                                WriteR2(0x00);
                                WriteG1(0x00);
                                WriteG2(0x00);
                        }
                        ST=0;
                        scan(i);
                        ST=1;
                        OE=1;
                       
                }
        }
        }



作者: 人人學會單片機    時間: 2021-5-12 08:00

這種就是08接口的,ABCD控制0~16行。

作者: wpppmlah    時間: 2021-5-12 14:36
至少有電原理圖啥的參考,才能明白你要干嘛,都是代碼,難道你以為別人都 是神仙嗎
作者: glinfei    時間: 2021-5-12 15:10
好幾個函數中有類似: = byte&(0x80>>i); 的,建議 改為 =(byte<<i)&0x80;
作者: inhq    時間: 2021-5-12 16:27
glinfei 發表于 2021-5-12 15:10
好幾個函數中有類似: = byte&(0x80>>i); 的,建議 改為 =(byte

多謝,今天回家試試
作者: inhq    時間: 2021-5-12 16:28
wpppmlah 發表于 2021-5-12 14:36
至少有電原理圖啥的參考,才能明白你要干嘛,都是代碼,難道你以為別人都 是神仙嗎

回家畫完Proteus上傳




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1