久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2955|回復: 7
打印 上一主題 下一主題
收起左側

單片機LED點陣屏左移的程序16*32,用的138和595 多余5個字就沒顯示 求幫助

[復制鏈接]
跳轉到指定樓層
樓主
ID:493146 發(fā)表于 2019-6-11 20:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近學著寫了一個LED點陣屏左移的程序16*32,用的138和595,可是在定義字模數組的時候只能定義5個字,多于5個字就沒有顯示,五個字以內就正常,請
大神們給予指點,
以下是源程序
#include<STC12C5A60S2.h>            
#include <intrins.h>
typedef unsigned char         uchar;
typedef unsigned int          uint;
sbit SDA_G =P4^1; //                                      
sbit SDA_R =P4^5;//串行數據輸入
sbit SHCP =P0^6; //移位時鐘脈沖
sbit STCP =P4^6; //輸出鎖存器控制脈沖
sbit IA=P2^0;//
sbit IB=P2^1;  //  
sbit IC=P2^2; //
sbit ID=P2^3;//      
sbit OE=P4^4; //               
//uint   uiAllData;
uchar  Move,line,Speed;
uint   zimuo;                                 
uchar  BUFF[20];                                   //緩存
void   DelayMs(void);              // 延時
void   in_data();                                   // 調整移動數據
void   rxd_data();                                   // 發(fā)送移動數據

uchar code hanzi[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x01,0x00,0x01,0x3F,0x01,0x20,0x3F,0xA0,0x20,0x92,0x10,0x54,0x02,0x28,0x02,
0x08,0x02,0x14,0x05,0x24,0x05,0xA2,0x08,0x81,0x08,0x40,0x10,0x20,0x20,0x10,0x40,/*"歡",0*/
0x00,0x00,0x04,0x01,0xC8,0x3C,0x48,0x24,0x40,0x24,0x40,0x24,0x4F,0x24,0x48,0x24,
0x48,0x24,0x48,0x2D,0xC8,0x14,0x48,0x04,0x08,0x04,0x14,0x04,0xE2,0x7F,0x00,0x00,/*"迎",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",3*/

};
/******************************************************/
/*****不影響其他端口的掃描*************************/
void scan(uchar Value)
{
        switch(Value)
        {case  0: {IA=0;IB=0;IC=0;ID=0;};break;
                  case  1:{IA=1;IB=0;IC=0;ID=0;};break;
                   case  2:{IA=0;IB=1;IC=0;ID=0;};break;            
                    case  3: {IA=1;IB=1;IC=0;ID=0;};break;
             case  4: {IA=0;IB=0;IC=1;ID=0;};break;
                      case  5: {IA=1;IB=0;IC=1;ID=0;};break;
                       case  6: {IA=0;IB=1;IC=1;ID=0;};break;
                        case  7:{IA=1;IB=1;IC=1;ID=0;};break;
                 case  8: {IA=0;IB=0;IC=0;ID=1;};break;
                       case  9:  {IA=1;IB=0;IC=0;ID=1;};break;
                      case 10:{IA=0;IB=1;IC=0;ID=1;};break;
                     case 11: {IA=1;IB=1;IC=0;ID=1;};break;
            case 12: {IA=0;IB=0;IC=1;ID=1;};break;
                  case 13:{IA=1;IB=0;IC=1;ID=1;};break;
                 case 14:{IA=0;IB=1;IC=1;ID=1;};break;
            case 15:{IA=1;IB=1;IC=1;ID=1;};break;
           default:break;
        }
}
/**************************延時***********************/

void DelayMs(void)
{
unsigned char i, j;

        _nop_();
        i = 11;
        j = 190;
        do
        {
                while (--j);
        } while (--i);
         }
void Timer0Init(void)                //1毫秒@22.1184MHz
{
    AUXR &= 0x7F;                //定時器時鐘12T模式
        TMOD &= 0xF0;                //設置定時器模式
        TMOD |= 0x01;                //設置定時器模式
        TL0 = 0xCD;                //設置定時初值
        TH0 = 0xF8;                //設置定時初值
        TR0 = 1;                //定時器0開始計時
        EA=1;
        ET0=1;

}


/********************************************/

/*主函數*/
void main()
{   P4SW=0x70;
    P2M1=0x00;P2M0=0x0f;
        P4M1=0x00;P4M0=0xff;      
        P3M1=0x00;P3M0=0x80;
        zimuo=0;
    Move=0;
        SHCP=0;
        STCP=0;
        Timer0Init();
        line=0;      
   while(1)  
  {


         while(zimuo<128)
    {
           while(Move<16)      
     {
             for(Speed=0;Speed<15;Speed++)
             {      

                    for(line=0;line<16;line++)
                          {
                                in_data();        //
                                rxd_data(); //
                                scan(line); //   
                                OE=1;//
                                DelayMs();               
                                OE=0;

                  }
                 }
         Move++;                                             
             }
      Move=0;
         zimuo=zimuo+32;
    }      
     zimuo=0;
    }         
}      


/********************************************************         */

void in_data(void)                                      
{
uchar s;
        for(s=0;s<8;s++)                                            
        {
                 BUFF[2*s]=hanzi[zimuo+32*s+2*line];      
                 BUFF[2*s+1]=hanzi[zimuo+1+32*s+2*line];         
        }
}


/***********************發(fā)送移動的數據************************  */
void rxd_data(void)                           
{
uchar h;
uchar inc,tempyid,temp,k;

if(Move<8)
   inc=0;
  else
    inc=1;
  for(h=0+inc;h<4+inc;h++)                  
        {
         if(Move<8)
       tempyid=Move;
     else
     tempyid=Move-8;
         temp=(BUFF[h]>>tempyid)|(BUFF[h+1]<<(8-tempyid));
         temp=~temp;
             for(k=0;k<8;k++)
               {  
                                SHCP=0;      
                           if(temp&0x01==0x01)                          
                            {
                                  SDA_G=1;
                                }
                           else
                           {
                                    SDA_G=0;
                           }

                          // SDA_G=(bit)(temp&0x01);
                          temp=temp>>1;   
                          SHCP=1;         
                            _nop_();                                                                                 
                  _nop_();                     


    }
    STCP=1;
        STCP=0;   
   }
   }


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2019-6-12 08:29 | 只看該作者
顯示的方案不巧妙。
回復

使用道具 舉報

板凳
ID:560599 發(fā)表于 2019-6-12 09:32 | 只看該作者
代碼里面有點問題,具體可以問我
回復

使用道具 舉報

地板
ID:424598 發(fā)表于 2019-6-12 17:11 來自觸屏版 | 只看該作者
while(zimuo<128)    128/32=4,改大128,必須是32的倍數
回復

使用道具 舉報

5#
ID:493146 發(fā)表于 2019-6-12 22:22 | 只看該作者
zhd666 發(fā)表于 2019-6-12 09:32
代碼里面有點問題,具體可以問我

你好,請老師指點一下,感激不盡!初學者要學習的還很多
回復

使用道具 舉報

6#
ID:493146 發(fā)表于 2019-6-12 22:23 | 只看該作者
yzwzfyz 發(fā)表于 2019-6-12 08:29
顯示的方案不巧妙。

老師,能指點一二嗎?我是一個初學者,
回復

使用道具 舉報

7#
ID:493146 發(fā)表于 2019-6-12 22:54 | 只看該作者

六個字改成192也不行,沒有顯示,
回復

使用道具 舉報

8#
ID:424598 發(fā)表于 2019-6-13 09:14 來自觸屏版 | 只看該作者
zcwjzwd 發(fā)表于 2019-6-12 22:54
六個字改成192也不行,沒有顯示,

你可以參考我的貼,我有一個16x16擴展成16x32的教學貼。有仿真。代碼有備注
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕乱码视频32 | 亚洲精品一区中文字幕乱码 | 红色av社区 | 久久男人 | 久久久女女女女999久久 | 中文字幕一区二区三区四区五区 | www.黄色网| 中文字幕免费观看 | 午夜电影网站 | 国产日韩精品一区二区 | 欧美成ee人免费视频 | 午夜精品一区二区三区在线观看 | 亚洲欧美成人影院 | 精品欧美一区二区三区久久久 | 国产精品久久久久久吹潮 | 一区二区三区国产 | 高清黄色网址 | 在线中文av | 国产精品国产成人国产三级 | 亚洲成人三区 | 97伦理| 欧美精品一区在线 | 久久综合一区二区 | 免费观看黄网站 | 国产精品精品视频 | 一区二区三区视频在线观看 | 欧美亚洲第一区 | 91麻豆精品国产91久久久更新资源速度超快 | 午夜电影网 | 国产男女视频网站 | 精品综合久久久 | 日本午夜在线视频 | 91精品国产综合久久久亚洲 | 国产精品久久在线 | 狠狠的日 | 久久综合欧美 | 伊人精品一区二区三区 | 日韩在线电影 | 一级片在线免费播放 | 国产精品看片 | a视频在线|