- 註冊時間
- 2012-8-11
- 最後登錄
- 2020-11-29
- 主題
- 查看
- 積分
- 12
- 閱讀權限
- 20
- 文章
- 77
- 相冊
- 0
- 日誌
- 0

狀態︰
離線
|
請問一下有人可以幫我看一下嗎??
#include <reg51.h> //IC為AT89C51
#include <stdlib.h> //載入 8051 相關暫存器含括檔
sbit SEG_A = P2 ^ 6; // 七段 接腳 測試用接腳
sbit SEG_B = P2 ^ 5;
sbit SEG_C = P2 ^ 4;
sbit SEG_D = P2 ^ 3;
sbit SEG_E = P2 ^ 2;
sbit SEG_F = P2 ^ 1;
sbit SEG_G = P2 ^ 0;
// 定義共陽極與腳位對應關係
sbit SEG_0 = P0 ^ 5; // 個位 開關 測試用接腳
sbit SEG_1 = P0 ^ 6; // 十位 開關 測試用接腳
// 定義七個節段的腳位,將 A, B, C, D, E, F, G 依序放入陣列
byte segs[7] = { SEG_A, SEG_B, SEG_C, SEG_D, SEG_E, SEG_F, SEG_G };
// 定義共陽極七段顯示器的字型(digit pattern)
// define the LED digit patterns, from 0 - 9
// 0 = LED on, 1 = LED off, in this order:
// Mapping to a,b,c,d,e,f,g of Seven-Segment LED
byte seven_seg_digits[10][7] = { { 0,0,0,0,0,0,1 }, // = 0
{ 1,0,0,1,1,1,1 }, // = 1
{ 0,0,1,0,0,1,0 }, // = 2
{ 0,0,0,0,1,1,0 }, // = 3
{ 1,0,0,1,1,0,0 }, // = 4
{ 0,1,0,0,1,0,0 }, // = 5
{ 0,1,0,0,0,0,0 }, // = 6
{ 0,0,0,1,1,1,1 }, // = 7
{ 0,0,0,0,0,0,0 }, // = 8
{ 0,0,0,1,1,0,0 } // = 9
};
// 定義每個七段顯示器顯示的時間 (延遲時間), 預設 1ms
int delay_time = 1;
void setup() {
pinMode(SEG_A, OUTPUT);
pinMode(SEG_B, OUTPUT);
pinMode(SEG_C, OUTPUT);
pinMode(SEG_D, OUTPUT);
pinMode(SEG_E, OUTPUT);
pinMode(SEG_F, OUTPUT);
pinMode(SEG_G, OUTPUT);
pinMode(SEG_0, OUTPUT);
pinMode(SEG_1, OUTPUT);
}
void loop() {
// 從 00 計數到 99
for (unsigned int number = 0; number < 100; number++) {
// 每一秒鐘計數一次
unsigned long startTime = millis();
for (unsigned long elapsed=0; elapsed < 100; elapsed = millis() - startTime) {
// 多工掃瞄,輪流點亮個、十位數的七段顯示器
// 顯示個位數
lightDigit1(number%10);
delay(delay_time);
// 顯示十位數
lightDigit2((number/10)%10);
delay(delay_time);
}
}
}
// 選擇顯示的位數 (2:十、或 1:個位數)
void pickDigit(int x) {
digitalWrite(SEG_0, HIGH);
digitalWrite(SEG_1, HIGH);
switch(x) {
case 1: digitalWrite(SEG_0, LOW); break;
case 2: digitalWrite(SEG_1, LOW); break;
}
}
// 點亮個位數
void lightDigit1(byte number) {
pickDigit(1);
lightSegments(number);
}
// 點亮十位數
void lightDigit2(byte number) {
pickDigit(2);
lightSegments(number);
}
// 點亮七段顯示器
void lightSegments(byte number) {
for (int i = 0; i < 7; i++) {
digitalWrite(segs[i], seven_seg_digits[number][i]);
}
}
Line 16: error: missing ';' before 'segs' |
|