Arduino 驱动8位数码管模块
之前我们使用数码管都是直接使用【参考1】,缺点是电路复杂,占用引脚太多,稍微有点问题就会出现缺笔画的问题(测试的时候务必完整测试,否则很可能遇到你想显示8,结果出现6的状况)。最近入手了下面这个模块,上面通过74HC595芯片驱动LCD,接线很简单。我做了简单的实验,感觉挺方便的。
示例代码
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,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf }; unsigned char LED[8]; //用于LED的8位显示缓存 int SCLK = 10; int RCLK = 9; int DIO = 8; //这里定义了那三个脚 void setup () { pinMode(SCLK,OUTPUT); pinMode(RCLK,OUTPUT); pinMode(DIO,OUTPUT); //让三个脚都是输出状态 } void loop() { LED[0]=1; LED[1]=2; LED[2]=3; LED[3]=4; LED[4]=5; LED[5]=6; LED[6]=7; LED[7]=8; while(1) { LED8_Display (); } } void LED8_Display (void) { unsigned char *led_table; // 查表指针 unsigned char i; //显示第1位 led_table = LED_0F + LED[0]; i = *led_table; LED_OUT(i); LED_OUT(0x01); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); //显示第2位 led_table = LED_0F + LED[1]; i = *led_table; LED_OUT(i); LED_OUT(0x02); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); //显示第3位 led_table = LED_0F + LED[2]; i = *led_table; LED_OUT(i); LED_OUT(0x04); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); //显示第4位 led_table = LED_0F + LED[3]; i = *led_table; LED_OUT(i); LED_OUT(0x08); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); //显示第5位 led_table = LED_0F + LED[4]; i = *led_table; LED_OUT(i); LED_OUT(0x10); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); //显示第6位 led_table = LED_0F + LED[5]; i = *led_table; LED_OUT(i); LED_OUT(0x20); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); //显示第7位 led_table = LED_0F + LED[6]; i = *led_table; LED_OUT(i); LED_OUT(0x40); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); //显示第8位 led_table = LED_0F + LED[7]; i = *led_table; LED_OUT(i); LED_OUT(0x80); 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); } }
卖家没有提供相应的代码,上述代码是我根据从其他地方找到的4位LED的代码基础上修改出来的。
工作照片:
附件是卖家提供的8 LED的资料和其他地方找到的 4 LED 的资料。
参考:
1. http://www.lab-z.com/4digitial/ Arduino 四位数码管实验
2. http://www.lab-z.com/usb7seg/ USB 控制七段数码管
3. http://www.lab-z.com/usb-%E6%8E%A7%E5%88%B6%E4%B8%83%E6%AE%B5%E6%95%B0%E7%A0%81%E7%AE%A1ii/ USB 控制七段数码管(II)