极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22266|回复: 3

74hc595四位数码管arduino程序

[复制链接]
发表于 2016-2-28 13:28:31 | 显示全部楼层 |阅读模式
   
买的74hc595四位数码管模块送的arduino程序不对,现修改如下:
接线:

模块                       arduino
GND -----------------GND
VCC----------------------5V
SCLK -------------------10;
RCLK -------------------9;
DAT ---------------------8

重要的一点是,先串行输入地址,然后串行输入显示的数据,完整程序如下,复制便可以运行:

unsigned char LED_0F[] =
    {// 0         1          2           3        4         5          6           7        8         9          A           b        C    d          E    F    -
            0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8e,0xbf
    };
    unsigned char LED[4];        //用于LED的4位显示缓存
    int SCLK = 10;
    int RCLK = 9;
    int DIO = 8; //这里定义了那三个脚
    void setup ()
    {
      pinMode(SCLK,OUTPUT);
      pinMode(RCLK,OUTPUT);
      pinMode(DIO,OUTPUT); //让三个脚都是输出状态
      
       LED[0]=5;
            LED[1]=6;
            LED[2]=7;
            LED[3]=8;
  
   
    }
    void loop()
    {
         LED4_Display ();
           
      
    }
   
    void LED4_Display (void)
    {
           
      unsigned char *led_table;          // 查表指针
            unsigned char i;
            //显示第1位
            led_table = LED_0F + LED[0];
            i = *led_table;
   
            LED_OUT(0x01);                       
            LED_OUT(i);               
        digitalWrite(RCLK,LOW);
        digitalWrite(RCLK,HIGH);
        
            //显示第2位
            led_table = LED_0F + LED[1];
            i = *led_table;
    LED_OUT(0x02);
            LED_OUT(i);               
                           
        digitalWrite(RCLK,LOW);
        digitalWrite(RCLK,HIGH);
            //显示第3位
            led_table = LED_0F + LED[2];
            i = *led_table;
    LED_OUT(0x04);
            LED_OUT(i);                       
                   
        digitalWrite(RCLK,LOW);
        digitalWrite(RCLK,HIGH);
            //显示第4位
            led_table = LED_0F + LED[3];
            i = *led_table;
    LED_OUT(0x08);
            LED_OUT(i);                       
                           
        digitalWrite(RCLK,LOW);
        digitalWrite(RCLK,HIGH);
        
    }
   
    void LED_OUT(unsigned char X)
    {
            unsigned char i;
            for(i=8;i>=1;i--)
            {
                    if (X&0x80)
                {
                  digitalWrite(DIO,HIGH);
                 }  
                else
                {
                  digitalWrite(DIO,LOW);
                }
                    X<<=1;
                digitalWrite(SCLK,LOW);
                digitalWrite(SCLK,HIGH);
            }
    }
   
回复

使用道具 举报

发表于 2016-2-28 15:37:15 | 显示全部楼层
本帖最后由 xinhoujue 于 2016-2-28 15:40 编辑

注释写的很清晰,不用看电路图就知道怎么接线~~~~~收藏啦!
回复 支持 反对

使用道具 举报

发表于 2017-10-25 19:34:28 | 显示全部楼层
万分感谢啊!
回复 支持 反对

使用道具 举报

发表于 2018-7-13 15:39:54 | 显示全部楼层
很有用,但是不知道如何点亮小数点,可以写一下吗,万分感谢
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 16:43 , Processed in 0.041912 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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