wjlht 发表于 2016-2-28 13:28:31

74hc595四位数码管arduino程序

   
买的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;        //用于LED的4位显示缓存
    int SCLK = 10;
    int RCLK = 9;
    int DIO = 8; //这里定义了那三个脚
    void setup ()
    {
      pinMode(SCLK,OUTPUT);
      pinMode(RCLK,OUTPUT);
      pinMode(DIO,OUTPUT); //让三个脚都是输出状态
      
       LED=5;
            LED=6;
            LED=7;
            LED=8;

   
    }
    void loop()
    {
         LED4_Display ();
           
      
    }
   
    void LED4_Display (void)
    {
           
      unsigned char *led_table;          // 查表指针
            unsigned char i;
            //显示第1位
            led_table = LED_0F + LED;
            i = *led_table;
   
            LED_OUT(0x01);                       
            LED_OUT(i);               
      digitalWrite(RCLK,LOW);
      digitalWrite(RCLK,HIGH);
      
            //显示第2位
            led_table = LED_0F + LED;
            i = *led_table;
    LED_OUT(0x02);
            LED_OUT(i);               
                           
      digitalWrite(RCLK,LOW);
      digitalWrite(RCLK,HIGH);
            //显示第3位
            led_table = LED_0F + LED;
            i = *led_table;
    LED_OUT(0x04);
            LED_OUT(i);                       
                   
      digitalWrite(RCLK,LOW);
      digitalWrite(RCLK,HIGH);
            //显示第4位
            led_table = LED_0F + LED;
            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);
            }
    }
   

xinhoujue 发表于 2016-2-28 15:37:15

本帖最后由 xinhoujue 于 2016-2-28 15:40 编辑

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

michoal 发表于 2017-10-25 19:34:28

万分感谢啊!

发烧的小学生 发表于 2018-7-13 15:39:54

很有用,但是不知道如何点亮小数点,可以写一下吗,万分感谢
页: [1]
查看完整版本: 74hc595四位数码管arduino程序