82 lines
1.9 KiB
C++
82 lines
1.9 KiB
C++
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[4]; //用于LED的4位显示缓存
|
|
int SCLK = 14;
|
|
int RCLK = 13;
|
|
int DIO = 15; //这里定义了那三个脚
|
|
void setup ()
|
|
{
|
|
pinMode(SCLK,OUTPUT);
|
|
pinMode(RCLK,OUTPUT);
|
|
pinMode(DIO,OUTPUT); //让三个脚都是输出状态
|
|
}
|
|
void loop()
|
|
{
|
|
LED[0]=random(9);
|
|
LED[1]=random(9);
|
|
LED[2]=random(9);
|
|
LED[3]=random(9);
|
|
|
|
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(i);
|
|
LED_OUT(0x01);
|
|
digitalWrite(RCLK,LOW);
|
|
digitalWrite(RCLK,HIGH);
|
|
delay(10);
|
|
//显示第2位
|
|
led_table = LED_0F + LED[1];
|
|
i = *led_table;
|
|
LED_OUT(i);
|
|
LED_OUT(0x02);
|
|
digitalWrite(RCLK,LOW);
|
|
digitalWrite(RCLK,HIGH);
|
|
delay(10);
|
|
//显示第3位
|
|
led_table = LED_0F + LED[2];
|
|
i = *led_table;
|
|
LED_OUT(i);
|
|
LED_OUT(0x04);
|
|
digitalWrite(RCLK,LOW);
|
|
digitalWrite(RCLK,HIGH);
|
|
delay(10);
|
|
//显示第4位
|
|
led_table = LED_0F + LED[3];
|
|
i = *led_table;
|
|
LED_OUT(i);
|
|
LED_OUT(0x08);
|
|
digitalWrite(RCLK,LOW);
|
|
digitalWrite(RCLK,HIGH);
|
|
delay(10);
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
|