极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17493|回复: 6

arduino 驱动LED屏的问题

[复制链接]
发表于 2014-11-24 18:49:16 | 显示全部楼层 |阅读模式
参考的http://www.geek-workshop.com/for ... uino%C7%FD%B6%AFled的代码。

连线图

j





代码

  1. #define RowA 2   
  2. #define RowB 3
  3. #define RowC 4
  4. #define RowD 5
  5. //业界所采用的ABCD 08驱动模式
  6. int hc138en=6; //EN口

  7. //使用了硬件SPI,以下脚不能更改
  8. #define R1 11          //数据出    MOSI
  9. #define CLK 13         //时钟    SCK
  10. #define STB 10         //595 刷新显示  SS
  11. #define DATAIN  12     //数据入,读FLASH时有用  MISO

  12. byte row=0;
  13. byte zzz[] =

  14. {
  15. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF1,0xFF,0xE3,0xFF,0xC0,0x00,0x00,
  16. 0xFF,0xF1,0xFF,0xE3,0xFF,0xC0,0x00,0x00,0x00,0x70,0x00,0xE0,0x01,0xC0,0x00,0x00,
  17. 0x00,0xE0,0x01,0xC0,0x03,0x80,0x00,0x00,0x01,0xC0,0x03,0x80,0x07,0x00,0x00,0x00,
  18. 0x03,0x80,0x07,0x00,0x0E,0x00,0x00,0x00,0x07,0x00,0x0E,0x00,0x1C,0x00,0x00,0x00,
  19. 0x0E,0x00,0x1C,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0x00,0x00,
  20. 0x38,0x00,0x70,0x00,0xE0,0x00,0x00,0x00,0x70,0x00,0xE0,0x01,0xC0,0x00,0x00,0x00,
  21. 0xE0,0x01,0xC0,0x03,0x80,0x00,0x00,0x00,0xFF,0xF1,0xFF,0xE3,0xFF,0xC0,0x00,0x00,
  22. 0xFF,0xF1,0xFF,0xE3,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  23. };



  24. void spi_transfer(volatile char data)
  25. {
  26.   SPDR = data;                    // Start the transmission
  27.   while (!(SPSR & (1<<SPIF)))     // Wait the end of the transmission
  28.   {
  29.   };
  30.   //return SPDR;                    // return the received byte
  31. }


  32. void hc138sacn(byte r){  //输出行线状态ABCD (A低,D高)
  33.     digitalWrite(RowA,(r & 0x01));
  34.     digitalWrite(RowB,(r & 0x02));
  35.     digitalWrite(RowC,(r & 0x04));
  36.     digitalWrite(RowD,(r & 0x08));
  37. }

  38. void hc595senddata(byte data){// 高位在前  反相(1亮0灭)
  39. for (byte i=0; i<8;i++) {
  40.      digitalWrite(CLK,0);
  41.      if (data & 0x80) {
  42.          digitalWrite(R1, 0);     
  43.      } else {
  44.          digitalWrite(R1, 1);
  45.      }
  46.      data=data<<1;
  47.      digitalWrite(CLK,1);
  48. }

  49. }


  50. void setup () {

  51.     pinMode(RowA, OUTPUT);
  52.     pinMode(RowB, OUTPUT);
  53.     pinMode(RowC, OUTPUT);
  54.     pinMode(RowD, OUTPUT); //138片选
  55.     pinMode(hc138en, OUTPUT); //138 使能

  56.     pinMode(R1, OUTPUT);//595 数据
  57.     pinMode(CLK, OUTPUT); //595 时钟
  58.     pinMode(STB, OUTPUT); //595 使能
  59.     pinMode(DATAIN, INPUT); //595 使能


  60.      //digitalWrite(hc138d, HIGH);
  61.     Serial.begin(19200);

  62.     //SPI硬件设置
  63.     // SPCR = 01010000
  64.     //interrupt disabled,spi enabled,msb 1st,master,clk low when idle,
  65.     //sample on leading edge of clk,system clock/4 rate (fastest)
  66.     SPCR = (1<<SPE)|(1<<MSTR);
  67.     delay(10);
  68. }

  69. void loop () {
  70. if (Serial.available() > 0) {
  71. // read the incoming byte:
  72. row = Serial.read();

  73. // say what you got:
  74. Serial.print("I received: ");
  75. Serial.println(row, DEC);
  76. }

  77.   for(row=0;row<16;row++){

  78.       for (int i=0;i<8;i++){   
  79.          spi_transfer(~(zzz[i+row*8]));
  80.       }


  81.       digitalWrite(hc138en, 1);  //关闭显示
  82.       hc138sacn(row);            //换行
  83.       digitalWrite(STB, 0);      //595刷新      
  84.       digitalWrite(STB, 1);
  85.       delayMicroseconds(500) ;   //节电用,
  86.       digitalWrite(hc138en, 0);  //开启显示

  87.       delayMicroseconds(500) ;  //刷新频率调,差不多60HZ,1/16间隔

  88.   }  

  89. }
复制代码


我按上述步骤做完以后,led显示屏没有任何反应?想问我的接线对吗?不对怎么接线

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2014-11-24 18:49:53 | 显示全部楼层
红线接板子5V 黑线接的GND
回复 支持 反对

使用道具 举报

发表于 2014-11-25 14:43:59 | 显示全部楼层
坐等真相帝
回复 支持 反对

使用道具 举报

发表于 2014-11-25 16:48:18 | 显示全部楼层
我有51单片机的汇编程序,可以供你参考
                                 
        //BIT 位定义命令
    //EQU 赋值命令                         
                  
        BU BIT P3.1 //蜂鸣器          
        TR BIT P3.2 //传感器  外部中断1
  INR1 BIT P3.4 //列1数据输入(需测试列级联)  
   CLK BIT P3.5        //数据存入 RCLK                         
   LAT BIT P3.6        //时钟信号 SRCLK                 
     E BIT P3.7        //屏显使能 (行138使能) 低电平开启

                     //F BIT P2.0 //A端口


    YM EQU P2   //ABCD译码器 占低四位

                    // ABCD对应 P2.3 P2.2 P2.1 P2.0//


   YMC EQU 30H  //30H译码器初始值#00H
    SJ EQU 31H  //31H待发送数据
   FCS EQU 32H  //32H串行发送次数 默认值08H
                                //33译码器初始值
                                //34H列初始值
                                //35H字体数量
                                //36H
                                //37H
                                //38H
                                //39H
                                //3AH
                                //3BH


                               

             ORG 0000H


          //程序初始化//

   CSH: MOV P0,#0FFH
        MOV        P1,#0FFH
                MOV P2,#0FFH
                MOV P3,#0FFH //E高电平屏幕关闭
                               
             //行显//                                                         
          HX:MOV DPTR ,#TAB//字库初始值       
             MOV 30H,#10H                  
      JH:MOV 33H,#00H //译码器初始值#00H

             ACALL LQ          //调用列驱动

    JH1: MOV YM,33H          //行扫装入
               
                 CLR E                  //开启屏幕
                 ACALL DELAY
                 SETB E       //关闭显示器
                 ACALL LQ

                 INC 33H
                 DJNZ YMC,JH1 //YM初始值#07H  
             AJMP CSH



            //列驱动//
               
   LQ: CLR CLK            //数据存入上升沿有效
       MOV 39H,#08H
      
   HSM:MOV 34H,#00H         //列驱动初始值

       MOV 35H,#08H         //列发送初始值

       MOV A,34H  

  HSM1:MOVC A,@A+DPTR
           MOV  SJ ,A

   LQD:CLR    C            // C寄存器清零
       ACALL CS
           CLR LAT
           NOP
           NOP
           SETB LAT         
           NOP
           NOP
           CLR LAT
           INC 34H                                        
           MOV A,34H             
           DJNZ 35H, HSM1       
             
    L6:INC DPTR
           INC DPTR
           INC DPTR
           INC DPTR
           INC DPTR
           INC DPTR
           INC DPTR
           INC DPTR         
                        
           RET



        //数据串行发送程序//
    CS:MOV A ,SJ                   
           MOV FCS,#08H       
    L5:RLC A              //数据左移动  
       MOV INR1 ,C
           SETB CLK    //移位寄存器上升沿有效
           NOP
           NOP
           CLR CLK
       DJNZ FCS,L5   //每次发送8位数据
           RET       
            

     //长延时程序//

DELAY:MOV  R6,#01H
   DL1:MOV  R5,#01H
   DL2:MOV  R7,#01h
   DL3JNZ R7 ,DL3       
   DL4JNZ R5 ,DL2
       DJNZ R6 ,DL1          
       RET


         //短延时程序//
DDELAY:MOV  R5,#02H
   DDL1:MOV  R7,#02h
   DDL2JNZ R7,DDL2       
        DJNZ R5,DDL1        
        RET
          
          

TAB:  
DB 0FFH,0BFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;
DB 0FEH,1FH,0FFH,0FFH,0FCH,1FH,0FFH,0FFH;
DB 0FCH,0DFH,0FFH,0FFH,0E0H,1FH,0FFH,0FFH;
DB 0F3H,0DFH,0FFH,0FFH,0E7H,9FH,0FFH,0FFH;
DB 0F7H,0DFH,0C0H,07H,0CFH,9FH,81H,81H;
DB 0EFH,0C0H,3FH,0F0H,00FH,0DFH,0B7H,0F7H;
DB 0EFH,0CFH,0FFH,0FFH,0FFH,0DFH,0F7H,0F7H;
DB 0EFH,0CFH,0FFH,0FFH,0FFH,0DFH,0F7H,0F7H;
DB 0EFH,0EFH,0FFH,0FFH,0FFH,0DFH,0F7H,0F7H;
DB 0EFH,0EFH,0FFH,0FFH,0FFH,9FH,0F7H,0E7H;
DB 0EFH,8FH, 0FFH,0FFH,0FFH,1FH,0F7H,0EFH;
DB 0EFH,0C0H,3FH,0FEH,0FCH,3FH,37H,0AFH;
DB 0EFH,9FH, 80H,00H,00H,0FFH,87H,8FH;
DB 0E0H,3FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;"未命名文件",0

END

DB  3FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FCH;
DB  3FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FCH;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FFH,0FFH, 1FH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FFH,0FFH, 5FH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FFH,0FFH, 5FH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FFH,0FFH, 1FH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FEH, 3FH,0FFH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FEH,0BFH,0FFH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FEH,0BFH,0FFH,0FFH,0FFH,0FFH;
DB 0FFH,0FFH,0FEH, 3FH,0FFH,0FFH,0FFH,0FFH;
DB  3FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FCH;
DB  3FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FCH;"未命名文件",0


END

32
回复 支持 反对

使用道具 举报

发表于 2014-11-25 23:27:16 | 显示全部楼层
关注中。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2014-11-26 13:49:19 | 显示全部楼层
留个脚印
回复 支持 反对

使用道具 举报

发表于 2014-11-27 13:46:38 | 显示全部楼层
同楼主做等答案。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 01:31 , Processed in 0.037373 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表