先進行範例程式測試
你覺得可以做甚麼樣的變化?
/*Define shift register pins used for seven segment display */
#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8
/* Segment byte maps for numbers 0 to 9 */
const byte SEGMENT_MAP[] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90} ;
/* Byte maps to select digit 1 to 4 */
const byte SEGMENT_SELECT[] ={0xF1,0XF2,0XF4,0XF8};
void setup ()
{
/* Set DIO pins to outputs */
pinMode (LATCH_DIO,OUTPUT);
pinMode (CLK_DIO,OUTPUT) ;
pinMode (DATA_DIO,OUTPUT) ;
}
/* Main program */
void loop()
{
/* Update the display with the current counter value */
WriteNumberToSegment(0,0);
WriteNumberToSegment(1,1);
WriteNumberToSegment(2,2);
WriteNumberToSegment(3,3);
}
/* Write a decimal number between O and 9 to one of the 4 digits of the display */
void WriteNumberToSegment(byte Segment, byte Value)
{
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);
}