找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3062|回復: 0
打印 上一主題 下一主題
收起左側(cè)

求牛人幫我看看這個程序,為什么一個燈都不亮

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:52168 發(fā)表于 2013-7-23 15:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//用AVR點亮32*32LED點陣 點陣里集成74hc595 和74hc138芯片
#include<avr/io.h>
#include<util/delay.h>
#include<avr/interrupt.h>
#include<avr/pgmspace.h>
#define SI1       PORTC|=(1<<PC0)                     
#define SI0       PORTC&=~(1<<PC0)         
#define G1()      PORTC|=(1<<PC1)                      // HC_595輸出使能控制端置1
#define G0()      PORTC&=~(1<<PC1)                     // HC_595輸出使能控制端置0
#define RCK1()    PORTC|=(1<<PC2)                      // HC_595存儲寄存器時鐘輸入置1
#define RCK0()    PORTC&=~(1<<PC2)                     // HC_595存儲寄存器時鐘輸入置0
#define SCK1()    PORTC|=(1<<PC3)                      // HC_595移位寄存器時鐘輸入置1
#define SCK0()    PORTC&=~(1<<PC3)                     // HC_595移位寄存器時鐘輸入置0
#define SCLR1()   PORTC|=(1<<PC4)                      // HC_595移位寄存器清零輸入置1
#define SCLR0()   PORTC&=~(1<<PC4)                     // HC_595移位寄存器清零輸入置0
#define OE1()     PORTA|=(1<<PA5)                      // HC_138使能置1
#define OE0()     PORTA&=~(1<<PA5)                     // HC_138使能置0
long  scan_date0[128]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
unsigned char scan_date1[32]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
                              0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f}; //行
void delay(unsigned int ms )
{
     while(ms--)
  _delay_ms(1);
}

//初始化函數(shù)
void init()
{  
                                         //HC_595初始化
    DDRC=0x1F;
PORTC=0xFF;
    G0() ;                               //使能HC_595輸出使能控制端                  
    SCK0();                              // HC_595移位寄存器時鐘輸入端口置低電平
    RCK0();
    SCLR0();
    SCLR1();
                                      // HC_595存儲寄存器時鐘輸入
                                         //HC_138初始化
    DDRA=0x3F;
PORTA=0xFF;
}

//HC_595列掃描
void HC_595( unsigned int date)
{   
    unsigned char i;

    for(i=0;i<8;i++)
    {     G0();
      SCK0();
         if(date&0x80)
        PORTC|=(1<<PC0);                //串行數(shù)據(jù)輸入
      else
              PORTC&=~(1<<PC0);
           
         date<<=1;
   SCK1();
     }
         
    RCK0();                             //上升沿鎖存數(shù)據(jù)輸出
          RCK1();                           
           G1();                               //關(guān)閉輸出使能控制端
                           
  
                           
}     


int main()
{   init();  
    unsigned int i=0;
    unsigned int m=3;
unsigned int n=0;
    for(i=0;i<=31;i++)
{  
     OE0();                                //打開HC_138使能
        PORTA=scan_date1[i];
  for(n=m-3;n<=m;n++)
   {   if(n<=127)
             {
     HC_595(scan_date0[n]);
           m=m+4;      
       }
  
       delay(4);
   }
       // OE1();                                    //關(guān)閉HC_138使能
      
      
}  
  
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表