int seg7[] = {2,3,4,5,6,7,8,9};
int scan[] = { 13, 12, 11, 10 };
int delaytime=5;
int table_7seg[]=
{
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90 };
int i,j; // 迴圈用的變數
int ScanLine=0;
void setup()
{
for (i=0; i<8; i++) {
pinMode(seg7[i], OUTPUT);
}
for (i=0; i<4; i++) {
pinMode(scan[i], OUTPUT);
digitalWrite(scan[i], LOW); // 掃描端電晶體 OFF
}
Serial.begin(9600);
}
void loop()
{
OutPort(table_7seg[2]);
digitalWrite(scan[0], HIGH); delay(delaytime); digitalWrite(scan[0], LOW);
OutPort(table_7seg[0]);
digitalWrite(scan[1], HIGH); delay(delaytime); digitalWrite(scan[1], LOW);
OutPort(table_7seg[2]);
digitalWrite(scan[2], HIGH); delay(delaytime); digitalWrite(scan[2], LOW);
OutPort(table_7seg[1]);
digitalWrite(scan[3], HIGH); delay(delaytime); digitalWrite(scan[3], LOW);
}
void OutPort(byte dat)
{
for (j=0; j<8; j++) {
if (dat % 2==1) // 取出 dat 的最低位元
digitalWrite(seg7[j], LOW); // 若為 1 代表該段要亮, 輸出高準位
else
digitalWrite(seg7[j], HIGH); // 若為 0 代表該段要滅, 輸出低準位
dat=dat/2; // 除2,進行下一位元的處理
}
}
沒有留言:
張貼留言