# 雞巴微處理機2
[雞巴微處理機](https://hackmd.io/iT31nBwUSdOHDK9IqdN6CA)
## 第一次上機考
ShowSevenSegment有修改
```cpp=
void ShowSevenSegment(int p, int n){
if(n==10){
//亮負號
}
//其他不變
}
```
```cpp=
#include <stdio.h>
// 顯示整數在四個七段顯示器上
void Display_7seg(int value) {
int digit, highDigit, i;
if (value > 0) {
// 測試最高位是幾位數
if (value / 1000 != 0) {
highDigit = 3;
} else if (value / 100 != 0) {
highDigit = 2;
} else if (value / 10 != 0) {
highDigit = 1;
} else {
highDigit = 0;
}
}
// 顯示千位數
digit = value / 1000;
if (3 < highDigit + 1) {
CloseSevenSegment(); // 關閉顯示器
ShowSevenSegment(3, digit); // 顯示千位數
CLK_SysTickDelay(5000); // 延遲 5000 時鐘
}
// 顯示百位數
value = value - digit * 1000;
digit = value / 100;
if (2 < highDigit + 1) {
CloseSevenSegment();
ShowSevenSegment(2, digit); // 顯示百位數
CLK_SysTickDelay(5000);
}
// 顯示十位數
value = value - digit * 100;
digit = value / 10;
if (1 < highDigit + 1) {
CloseSevenSegment();
ShowSevenSegment(1, digit); // 顯示十位數
}
// 顯示個位數
value = value - digit * 10;
digit = value;
CloseSevenSegment();
ShowSevenSegment(0, digit); // 顯示個位數
後面有另外顯示負號的程式但沒截到
ShowSevenSegment( n, 10);顯示負號的方式
}
int main(void) {
int i, sum = 0, j;
SYS_Init(); // 系統初始化
OpenSevenSegment(); // 開啟七段顯示器
OpenKeyPad(); // 開啟鍵盤
while(1) {
i = ScanKey(); // 掃描鍵盤按鍵
if (i == 1) {
sum -= 10; // 如果按下按鍵 1,sum 減 10
} else if (i == 3) {
sum += 10; // 如果按下按鍵 3,sum 加 10
} else if (i == 4) {
sum--; // 如果按下按鍵 4,sum 減 1
} else if (i == 6) {
sum++; // 如果按下按鍵 6,sum 加 1
} else if (i == 8) {
sum = 0; // 如果按下按鍵 8,將 sum 重置為 0
}
if (sum < -128) { // 若 sum 小於 -128,進行調整
sum = 128 - (-sum % 128);
}
if (sum > 127) { // 若 sum 大於 127,進行調整
sum = -129 + (sum % 127);
}
for (j = 0; j < 15; j++) {
Display_7seg(sum); // 將 sum 顯示在七段顯示器上
}
}
}
```
## 第二次上機考




第三題
```cpp=
#include <stdio.h>
#include "NUC100Series.h"
#include "MCU_init.h"
#include "SYS_init.h"
#include "LCD.h"
int hold=0;
unsigned char map1[128*8] = { // TCFST Logo
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
, 0x00,0x00,0x04,0x0C,0x0C,0x18,0x30,0x30,0xE0,0xE0,0xC0,0xE0,0xE0,0x30,0x18,0x18,0x0C,0x0C,0x04,0x00,0x00,0xFC,0x7C,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x7C,0xFC,0x00,0x00,0x04,0x0C,0x0C,0x18,0x18,0x30,0xE0,0xE0,0xC0,0xE0,0xE0,0x30,0x30,0x18,0x0C,0x0C,0x04,0x00,0x00
, 0x00,0x00,0x88,0xCC,0xCC,0x66,0x33,0x13,0x19,0xFF,0x8F,0xFF,0x19,0x33,0x66,0x66,0xCC,0xCC,0x88,0x00,0x00,0xFF,0x78,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x78,0xFF,0x00,0x00,0x88,0xCC,0xCC,0x66,0x66,0x33,0x19,0xFF,0x8F,0xFF,0x19,0x13,0x33,0x66,0xCC,0xCC,0x88,0x00,0x00
, 0x00,0x00,0xC0,0x20,0x3C,0x24,0xC4,0x04,0x04,0xFF,0x87,0xFF,0x04,0x04,0xC4,0x24,0x3C,0x20,0xC0,0x00,0x00,0xFF,0x78,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x40,0x40,0xC0,0xC0,0x40,0x40,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x78,0xFF,0x00,0x00,0xC0,0x20,0x3C,0x24,0xC4,0x04,0x04,0xFF,0x87,0xFF,0x04,0x04,0xC4,0x24,0x3C,0x20,0xC0,0x00,0x00
, 0x20,0xE0,0x21,0xE2,0x22,0xE2,0x21,0xE0,0x20,0xFF,0x0F,0xFF,0x20,0xE0,0x21,0xE2,0x22,0xC2,0x81,0x00,0xF8,0xCF,0x98,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x36,0xEA,0x5B,0x6C,0xB9,0xF6,0xE9,0xD7,0xFA,0xFA,0xD7,0xE9,0xF6,0xB9,0x6C,0x5B,0xEA,0x36,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0x98,0xCF,0xF8,0x00,0x81,0xC2,0x22,0xE2,0x21,0xE0,0x20,0xFF,0x0F,0xFF,0x20,0xE0,0x21,0xE2,0x22,0xE2,0x21,0xE0,0x20
, 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x1F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xCC,0x99,0x33,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x11,0x09,0x08,0x09,0x0B,0x0F,0x0F,0x0F,0x0F,0x0B,0x09,0x08,0x09,0x11,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x33,0x99,0xCC,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x1F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
, 0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x7F,0xFC,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFF,0x7C,0xF9,0x73,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x73,0xF9,0x7C,0xFF,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x7F,0xFC,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0
, 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA
};
unsigned char map2[128*8] = { // TCFST Logo
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
, 0x00,0x00,0x04,0x0C,0x0C,0x18,0x30,0x30,0xE0,0xE0,0xC0,0xE0,0xE0,0x30,0x18,0x18,0x0C,0x0C,0x04,0x00,0x00,0xFC,0x7C,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x0C,0x18,0x18,0x30,0xE0,0xE0,0xC0,0xE0,0xE0,0x30,0x30,0x18,0x0C,0x0C,0x04,0x00,0x00
, 0x00,0x00,0x88,0xCC,0xCC,0x66,0x33,0x13,0x19,0xFF,0x8F,0xFF,0x19,0x33,0x66,0x66,0xCC,0xCC,0x88,0x00,0x00,0xFF,0x78,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x1E,0x3C,0x78,0xF0,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0xCC,0xCC,0x66,0x66,0x33,0x19,0xFF,0x8F,0xFF,0x19,0x13,0x33,0x66,0xCC,0xCC,0x88,0x00,0x00
, 0x00,0x00,0xC0,0x20,0x3C,0x24,0xC4,0x04,0x04,0xFF,0x87,0xFF,0x04,0x04,0xC4,0x24,0x3C,0x20,0xC0,0x00,0x60,0xFF,0x78,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x40,0x40,0xC0,0xC0,0x40,0x40,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x0F,0x1E,0x3C,0x48,0x90,0x20,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x3C,0x24,0xC4,0x04,0x04,0xFF,0x87,0xFF,0x04,0x04,0xC4,0x24,0x3C,0x20,0xC0,0x00,0x00
, 0x20,0xE0,0x21,0xE2,0x22,0xE2,0x21,0xE0,0x20,0xFF,0x0F,0xFF,0x20,0xE0,0x21,0xE2,0x22,0xC2,0x81,0x00,0xF8,0xCF,0x98,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x36,0xEA,0x5B,0x6C,0xB9,0xF6,0xE9,0xD7,0xFA,0xFA,0xD7,0xE9,0xF6,0xB9,0x6C,0x5B,0xEA,0x36,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x12,0x24,0xF8,0x38,0x98,0xC8,0xF8,0x80,0x81,0xC2,0x22,0xE2,0x21,0xE0,0x20,0xFF,0x0F,0xFF,0x20,0xE0,0x21,0xE2,0x22,0xE2,0x21,0xE0,0x20
, 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x1F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xCC,0x99,0x33,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x11,0x09,0x08,0x09,0x0B,0x0F,0x0F,0x0F,0x0F,0x0B,0x09,0x08,0x09,0x11,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x33,0x99,0xCC,0xFF,0xFE,0x01,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x1F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
, 0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x7F,0xFC,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFF,0x7C,0xF9,0x73,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x73,0xF9,0x7C,0xFF,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x7F,0xFC,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0
, 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA
};
unsigned char map3[128*8] = { // TCFST Logo
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
, 0x00,0x00,0x04,0x0C,0x0C,0x18,0x30,0x30,0xE0,0xE0,0xC0,0xE0,0xE0,0x30,0x18,0x18,0x0C,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x0C,0x18,0x18,0x30,0xE0,0xE0,0xC0,0xE0,0xE0,0x30,0x30,0x18,0x0C,0x0C,0x04,0x00,0x00
, 0x00,0x00,0x88,0xCC,0xCC,0x66,0x33,0x13,0x19,0xFF,0x8F,0xFF,0x19,0x33,0x66,0x66,0xCC,0xCC,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0xF0,0x78,0x3C,0x1E,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0xCC,0xCC,0x66,0x66,0x33,0x19,0xFF,0x8F,0xFF,0x19,0x13,0x33,0x66,0xCC,0xCC,0x88,0x00,0x00
, 0x00,0x00,0xC0,0x20,0x3C,0x24,0xC4,0x04,0x04,0xFF,0x87,0xFF,0x04,0x04,0xC4,0x24,0x3C,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x20,0x90,0x48,0x3C,0x1E,0x0F,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x40,0x40,0xC0,0xC0,0x40,0x40,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x3C,0x24,0xC4,0x04,0x04,0xFF,0x87,0xFF,0x04,0x04,0xC4,0x24,0x3C,0x20,0xC0,0x00,0x00
, 0x20,0xE0,0x21,0xE2,0x22,0xE2,0x21,0xE0,0x20,0xFF,0x0F,0xFF,0x20,0xE0,0x21,0xE2,0x22,0xC2,0x81,0x80,0xF8,0xC8,0x98,0x38,0xF8,0x24,0x12,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x36,0xEA,0x5B,0x6C,0xB9,0xF6,0xE9,0xD7,0xFA,0xFA,0xD7,0xE9,0xF6,0xB9,0x6C,0x5B,0xEA,0x36,0x18,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xA0,0xA0,0xA0,0xA0,0xE0,0xE0,0xE0,0xE0,0xA0,0xA0,0xA0,0xA0,0xE0,0xE0,0xE0,0xE0,0xA0,0xA0,0xA0,0xA0,0xE0,0xF8,0x38,0x98,0xC8,0xF8,0xA0,0xA1,0xE2,0x22,0xE2,0x21,0xE0,0x20,0xFF,0x0F,0xFF,0x20,0xE0,0x21,0xE2,0x22,0xE2,0x21,0xE0,0x20
, 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x1F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x01,0xFE,0xFF,0xCC,0x99,0x33,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x11,0x09,0x08,0x09,0x0B,0x0F,0x0F,0x0F,0x0F,0x0B,0x09,0x08,0x09,0x11,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x33,0x99,0xCC,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x1F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
, 0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x7F,0xFC,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFF,0x7C,0xF9,0x73,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x73,0xF9,0x7C,0xFF,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x7F,0xFC,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0
, 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA
};
unsigned char map4[128*8] = { // TCFST Logo
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
, 0x00,0x00,0x04,0x0C,0x0C,0x18,0x30,0x30,0xE0,0xE0,0xC0,0xE0,0xE0,0x30,0x18,0x18,0x0C,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x0C,0x18,0x18,0x30,0xE0,0xE0,0xC0,0xE0,0xE0,0x30,0x30,0x18,0x0C,0x0C,0x04,0x00,0x00
, 0x00,0x00,0x88,0xCC,0xCC,0x66,0x33,0x13,0x19,0xFF,0x8F,0xFF,0x19,0x33,0x66,0x66,0xCC,0xCC,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0xCC,0xCC,0x66,0x66,0x33,0x19,0xFF,0x8F,0xFF,0x19,0x13,0x33,0x66,0xCC,0xCC,0x88,0x00,0x00
, 0x00,0x00,0xC0,0x20,0x3C,0x24,0xC4,0x04,0x04,0xFF,0x87,0xFF,0x04,0x04,0xC4,0x24,0x3C,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x40,0x40,0xC0,0xC0,0x40,0x40,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x3C,0x24,0xC4,0x04,0x04,0xFF,0x87,0xFF,0x04,0x04,0xC4,0x24,0x3C,0x20,0xC0,0x00,0x00
, 0x20,0xE0,0x21,0xE2,0x22,0xE2,0x21,0xE0,0x20,0xFF,0x0F,0xFF,0x20,0xE0,0x21,0xE2,0x22,0xE2,0xA1,0xA0,0xF8,0xC8,0x98,0x38,0xF8,0xE0,0xA0,0xA0,0xA0,0xA0,0xE0,0xE0,0xE0,0xE0,0xA0,0xA0,0xA0,0xA0,0xE0,0xE0,0xE0,0xE0,0xA0,0xA0,0xA0,0xA0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0x00,0x00,0x18,0x36,0xEA,0x5B,0x6C,0xB9,0xF6,0xE9,0xD7,0xFA,0xFA,0xD7,0xE9,0xF6,0xB9,0x6C,0x5B,0xEA,0x36,0x18,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xA0,0xA0,0xA0,0xA0,0xE0,0xE0,0xE0,0xE0,0xA0,0xA0,0xA0,0xA0,0xE0,0xE0,0xE0,0xE0,0xA0,0xA0,0xA0,0xA0,0xE0,0xF8,0x38,0x98,0xC8,0xF8,0xA0,0xA1,0xE2,0x22,0xE2,0x21,0xE0,0x20,0xFF,0x0F,0xFF,0x20,0xE0,0x21,0xE2,0x22,0xE2,0x21,0xE0,0x20
, 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x1F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xCC,0x99,0x33,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x11,0x09,0x08,0x09,0x0B,0x0F,0x0F,0x0F,0x0F,0x0B,0x09,0x08,0x09,0x11,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x33,0x99,0xCC,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x1F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
, 0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x7F,0xFC,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFF,0x7C,0xF9,0x73,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x73,0xF9,0x7C,0xFF,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x7F,0xFC,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0
, 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA
};
unsigned char map5[128*8] = { // TCFST Logo
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
, 0x00,0x00,0x04,0x0C,0x0C,0x18,0x30,0x30,0xE0,0xE0,0xC0,0xE0,0xE0,0x30,0x18,0x18,0x0C,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x0C,0x18,0x18,0x30,0xE0,0xE0,0xC0,0xE0,0xE0,0x30,0x30,0x18,0x0C,0x0C,0x04,0x00,0x00
, 0x00,0x00,0x88,0xCC,0xCC,0x66,0x33,0x13,0x19,0xFF,0x8F,0xFF,0x19,0x33,0x66,0x66,0xCC,0xCC,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0xF0,0x78,0x3C,0x1E,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x1E,0x3C,0x78,0xF0,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0xCC,0xCC,0x66,0x66,0x33,0x19,0xFF,0x8F,0xFF,0x19,0x13,0x33,0x66,0xCC,0xCC,0x88,0x00,0x00
, 0x00,0x00,0xC0,0x20,0x3C,0x24,0xC4,0x04,0x04,0xFF,0x87,0xFF,0x04,0x04,0xC4,0x24,0x3C,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x20,0x90,0x48,0x3C,0x1E,0x0F,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x40,0x40,0xC0,0xC0,0x40,0x40,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x0F,0x1E,0x3C,0x48,0x90,0x20,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x3C,0x24,0xC4,0x04,0x04,0xFF,0x87,0xFF,0x04,0x04,0xC4,0x24,0x3C,0x20,0xC0,0x00,0x00
, 0x20,0xE0,0x21,0xE2,0x22,0xE2,0x21,0xE0,0x20,0xFF,0x0F,0xFF,0x20,0xE0,0x21,0xE2,0x22,0xC2,0x81,0x80,0xF8,0xC8,0x98,0x38,0xF8,0x24,0x12,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x36,0xEA,0x5B,0x6C,0xB9,0xF6,0xE9,0xD7,0xFA,0xFA,0xD7,0xE9,0xF6,0xB9,0x6C,0x5B,0xEA,0x36,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x12,0x24,0xF8,0x38,0x98,0xC8,0xF8,0x80,0x81,0xC2,0x22,0xE2,0x21,0xE0,0x20,0xFF,0x0F,0xFF,0x20,0xE0,0x21,0xE2,0x22,0xE2,0x21,0xE0,0x20
, 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x1F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x01,0xFE,0xFF,0xCC,0x99,0x33,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x11,0x09,0x08,0x09,0x0B,0x0F,0x0F,0x0F,0x0F,0x0B,0x09,0x08,0x09,0x11,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x33,0x99,0xCC,0xFF,0xFE,0x01,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x1F,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00
, 0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x7F,0xFC,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFF,0x7C,0xF9,0x73,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xF0,0x70,0xFF,0x73,0xF9,0x7C,0xFF,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xFC,0x7F,0xFE,0x7F,0xFC,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0,0x7F,0xF0
, 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA
};
void Display_7seg(uint16_t value)
{
uint8_t digit;
digit = value / 10;
CloseSevenSegment();
ShowSevenSegment(1,digit);
CLK_SysTickDelay(5000);
value = value - digit * 10;
digit = value;
CloseSevenSegment();
ShowSevenSegment(0,digit);
CLK_SysTickDelay(5000);
}
void EINT1_IRQHandler(void)
{
GPIO_CLR_INT_FLAG(PB, BIT15); // Clear GPIO interrupt flag
hold=1;
}
void Init_EXTINT(void)
{
// Configure EINT1 pin and enable interrupt by rising and falling edge trigger
GPIO_SetMode(PB, BIT15, GPIO_MODE_INPUT);
GPIO_EnableEINT1(PB, 15, GPIO_INT_RISING); // RISING, FALLING, BOTH_EDGE, HIGH, LOW
NVIC_EnableIRQ(EINT1_IRQn);
// Enable interrupt de-bounce function and select de-bounce sampling cycle time
GPIO_SET_DEBOUNCE_TIME(GPIO_DBCLKSRC_LIRC, GPIO_DBCLKSEL_64);
GPIO_ENABLE_DEBOUNCE(PB, BIT15);
}
int32_t main()
{
int i,j,leftsecond=0;
SYS_Init();
init_LCD();
clear_LCD();
OpenSevenSegment();
Init_EXTINT();
draw_LCD(map1);
while(1){
Display_7seg(leftsecond);
if(hold==1){
leftsecond=10;
draw_LCD(map2);
for(j=0;j<100;j++)Display_7seg(leftsecond);
draw_LCD(map3);
for(j=0;j<100;j++)Display_7seg(leftsecond);
draw_LCD(map4);
for(j=0;j<100;j++)Display_7seg(leftsecond);
//do
for(i=0;i<5;i++){
PC12=0;
PC15=1;
for(j=0;j<50;j++)Display_7seg(leftsecond);
PC12=1;
PC15=0;
for(j=0;j<50;j++)Display_7seg(leftsecond);
leftsecond--;
PC12=0;
PC15=1;
for(j=0;j<50;j++)Display_7seg(leftsecond);
PC12=1;
PC15=0;
for(j=0;j<50;j++)Display_7seg(leftsecond);
leftsecond--;
}
PC12=1;
PC15=1;
for(j=0;j<100;j++)Display_7seg(leftsecond);
draw_LCD(map5);
for(j=0;j<100;j++)Display_7seg(leftsecond);
draw_LCD(map1);
for(j=0;j<100;j++)Display_7seg(leftsecond);
hold=0;
leftsecond=0;
}
}
}
```
## PCB加分
主程式
```c
//
// GPIO_7seg_keypad4 : keypad input 4 digits and display on 7-segment LEDs
//
#include <stdio.h>
#include <math.h>
#include "NUC100Series.h"
#include "MCU_init.h"
#include "SYS_init.h"
#include "Seven_Segment.h"
#include "Scankey.h"
void init_GPIO(){
GPIO_SetMode(PA,BIT12,GPIO_MODE_OUTPUT);
GPIO_SetMode(PA,BIT13,GPIO_MODE_OUTPUT);
GPIO_SetMode(PA,BIT14,GPIO_MODE_OUTPUT);
PA12=1;
PA13=1;
PA14=1;
}
int main(void)
{
int i=3;
int j=0;
int k=0;
int s=0;
int code;
SYS_Init();
GPIO_SetMode(PE, BIT0, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT1, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT2, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT3, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT4, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT5, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT6, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT7, GPIO_PMD_OUTPUT);
//OpenSevenSegment();
OpenKeyPad();
while(1) {
PA12=1;
PA13=0;
PA14=0;
for(i=0;i<5;i++){
ShowSevenSegment(0, i+1);
CLK_SysTickDelay(1000000);
CLK_SysTickDelay(1000000);
CLK_SysTickDelay(1000000);
}
PA12=0;
PA13=1;
PA14=0;
PE0=0;
PE1=0;
PE2=0;
PE3=0;
PE4=0;
PE5=0;
PE6=0;
PE7=0;
CLK_SysTickDelay(1000000);
CLK_SysTickDelay(1000000);
CLK_SysTickDelay(1000000);
PA12=0;
PA13=0;
PA14=1;
for(i=0;i<5;i++){
ShowSevenSegment(0, i+1);
CLK_SysTickDelay(1000000);
CLK_SysTickDelay(1000000);
CLK_SysTickDelay(1000000);
}
PA12=0;
PA13=1;
PA14=0;
PE0=0;
PE1=0;
PE2=0;
PE3=0;
PE4=0;
PE5=0;
PE6=0;
PE7=0;
CLK_SysTickDelay(1000000);
CLK_SysTickDelay(1000000);
CLK_SysTickDelay(1000000);
}
}
```
七段
```c
#include <stdio.h>
#include "NUC100Series.h"
#include "GPIO.h"
#include "SYS.h"
#include "Seven_Segment.h"
#define SEG_N0 0x82
#define SEG_N1 0xEE
#define SEG_N2 0x07
#define SEG_N3 0x46
#define SEG_N4 0x6A
#define SEG_N5 0x52
#define SEG_N6 0x12
#define SEG_N7 0xE6
#define SEG_N8 0x02
#define SEG_N9 0x62
#define SEG_N10 0x22
#define SEG_N11 0x1A
#define SEG_N12 0x93
#define SEG_N13 0x0E
#define SEG_N14 0x13
#define SEG_N15 0x33
uint8_t SEG_BUF[16]={SEG_N0, SEG_N1, SEG_N2, SEG_N3, SEG_N4, SEG_N5, SEG_N6, SEG_N7, SEG_N8, SEG_N9, SEG_N10, SEG_N11, SEG_N12, SEG_N13, SEG_N14, SEG_N15};
void OpenSevenSegment(void)
{
GPIO_SetMode(PC, BIT4, GPIO_PMD_OUTPUT);
GPIO_SetMode(PC, BIT5, GPIO_PMD_OUTPUT);
GPIO_SetMode(PC, BIT6, GPIO_PMD_OUTPUT);
GPIO_SetMode(PC, BIT7, GPIO_PMD_OUTPUT);
PC4=1;
PC5=1;
PC6=1;
PC7=1;
GPIO_SetMode(PE, BIT0, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT1, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT2, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT3, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT4, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT5, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT6, GPIO_PMD_OUTPUT);
GPIO_SetMode(PE, BIT7, GPIO_PMD_OUTPUT);
PE0=0;
PE1=0;
PE2=0;
PE3=0;
PE4=0;
PE5=0;
PE6=0;
PE7=0;
}
void ShowSevenSegment(uint8_t no, uint8_t number)
{
uint8_t temp,i;
temp=SEG_BUF[number];
for(i=0;i<8;i++)
{
if((temp&0x01)==0x01)
switch(i) {
case 0: PE0=0; break;
case 1: PE1=0; break;
case 2: PE2=0; break;
case 3: PE3=0; break;
case 4: PE4=0; break;
case 5: PE5=0; break;
case 6: PE6=0; break;
case 7: PE7=0; break;
}
else
switch(i) {
case 0: PE0=1; break;
case 1: PE1=1; break;
case 2: PE2=1; break;
case 3: PE3=1; break;
case 4: PE4=1; break;
case 5: PE5=1; break;
case 6: PE6=1; break;
case 7: PE7=1; break;
}
temp=temp>>1;
}
switch(no) {
case 0: PC4=1; break;
case 1: PC5=1; break;
case 2: PC6=1; break;
case 3: PC7=1; break;
}
}
void CloseSevenSegment(void)
{
PC4=0;
PC5=0;
PC6=0;
PC7=0;
}
```
## 9/27
:::spoiler
# Lab 2 - GPIO (Buzzer)
## 題目 1 - 播放音樂
按下 P 鍵,播放 *Kirby Dance (Short)* (下面的旋律)一次。

| pitch | duration |
|-------|----------|
| F4 | 0.333333 |
| G4 | 0.333333 |
| A4 | 0.333333 |
| B4 | 0.333333 |
| A4 | 0.333333 |
| B4 | 0.333333 |
| C5 | 0.333333 |
| rest | 0.333333 |
| G4 | 0.333333 |
| E4 | 0.333333 |
| rest | 0.333333 |
| G5 | 0.333333 |
| F5 | 0.333333 |
| rest | 0.333333 |
| E5 | 0.333333 |
| D5 | 0.333333 |
| rest | 0.333333 |
| E5 | 0.333333 |
| C5 | 1 |
| C6 | 0.5 |
| rest | 0.5 |
###### p.s. It's normal that it sounds bad when playing on NUC-140.
### 音高頻率表

### 鍵位配置
```
┌───┬───┬───┐
│ │ │ │
├───┼───┼───┤
│ │ P │ │
├───┼───┼───┤
│ │ │ │
└───┴───┴───┘
```
---
## 題目 2 - 3~ 2~ 1~ BOOM
使用 Keypad、LED 與蜂鳴器搭配實作出引爆炸彈的效果。
- LED 預設狀態為 全部不亮。
- 蜂鳴器 預設狀態為 不發出聲響。
- 按下 D (Detonate) 來開始倒數計時。
- 按下 D 後 LED 全亮並依序由左至右一個一個暗掉。
- 最後一個(最右邊) LED 暗掉的同時蜂鳴器發出聲響以表示爆炸。
- 按下 C (Cancel) 直接取消引爆( LED 和蜂鳴器街回到預設狀態)。
- 蜂鳴器在引爆後會一直響直到按下 C 。
- 不需按照秒數(跟上禮拜的一樣)。
#### 範例
- □為暗。
- ■為亮。
| t | pattern | input|buzzer |
|-------------|---------|-------|-------|
| 0 | □□□□ | D | |
| 1 | ■■■■ | C | |
| 2 | □□□□ | D | |
| 3 | ■■■■ | | |
| 5 | □■■■ | | |
| 6 | □□■■ | | |
| 7 | □□□■ | | |
| 8 | □□□□ | |🔊🔊🔊|
| 9 | □□□□ | C | |
| ... | ... |... | |
| n | ... |... | |
### 鍵位配置
```
┌───┬───┬───┐
│ │ D │ │
├───┼───┼───┤
│ │ │ │
├───┼───┼───┤
│ │ C │ │
└───┴───┴───┘
```
---
## 題目 3 - 節拍器(一)
- P 鍵啟動/停止節拍器的運作,預設停止。在運作時以 BPM 120 (每 0.5 秒一拍)的速度執行。
- M 鍵開啟/關閉節拍器的聲音,預設開啟。若設定為開,在運作時跟著拍點短響一聲。
- L 鍵開啟/關閉節拍器燈光,預設開啟。若設定為開,在運作時 LED5 跟著拍點閃爍。
- 將 P、M、L 的狀態分別對應到 LED6~LED8 上(開啟時亮)。
### 鍵位配置
```
┌───┬───┬───┐
│ │ │ │
├───┼───┼───┤
│ P │ M │ L │
├───┼───┼───┤
│ │ │ │
└───┴───┴───┘
```
---
:::
### 第一題
```cpp=
#include <stdio.h>
#include "NUC100Series.h"
#include "MCU_init.h"
#include "SYS_init.h"
#define p333 333000
#define p1000 1000000
#define p500 5000000
#define F4 2864
#define G4 2551
#define A4 2273
#define B4 2025
#define C5 1907
#define E4 3032
#define G5 1278
#define F5 1430
#define D5 1701
#define E5 1515
#define C6 954
#define rest 0
#define t3 333333
#define t5 500000
#define t10 1000000
void Buzz()
{
int i,cnt,j;
int tone[100]={F4,G4,A4,B4,A4,B4,C5,rest,G4,E4,rest,G5,F5,rest,E5,D5,rest,E5,C5,C6,rest};
for (i=0; i<18; i++) {
if(tone[i]==rest){
CLK_SysTickDelay(t3); // Delay
continue;
}
cnt=t3/(tone[i]);
for(j=0;j<cnt;j++){
PB11=0; // PB11 = 0 to turn on Buzzer
CLK_SysTickDelay(tone[i]/2); // Delay
PB11=1; // PB11 = 1 to turn off Buzzer
CLK_SysTickDelay(tone[i]/2); // Delay
}
}
for(i=0;i<1;i++){
if(tone[i]==rest){
CLK_SysTickDelay(t3); // Delay
continue;
}
cnt=t10/(tone[i]);
for(j=0;j<cnt;j++){
PB11=0; // PB11 = 0 to turn on Buzzer
CLK_SysTickDelay(tone[i]/2); // Delay
PB11=1; // PB11 = 1 to turn off Buzzer
CLK_SysTickDelay(tone[i]/2); // Delay
}
}
for(i=0;i<2;i++){
if(tone[i]==rest){
CLK_SysTickDelay(t3); // Delay
continue;
}
cnt=t5/(tone[i]);
for(j=0;j<cnt;j++){
PB11=0; // PB11 = 0 to turn on Buzzer
CLK_SysTickDelay(tone[i]/2); // Delay
PB11=1; // PB11 = 1 to turn off Buzzer
CLK_SysTickDelay(tone[i]/2); // Delay
}
}
}
int32_t main (void){
int sk;
SYS_Init();
GPIO_SetMode(PB, BIT11, GPIO_MODE_OUTPUT);
while(1){
sk=ScanKey();
if(sk==5)Buzz();
}
}
```
### 第二題
```c=
int32_t main (void)
{
int sk,start=0,status=4;
SYS_Init();
GPIO_SetMode(PB, BIT11, GPIO_MODE_OUTPUT);
GPIO_SetMode(PC, BIT12, GPIO_MODE_OUTPUT);
while(1){
sk=ScanKey();
if(sk==2)start=1;
if(sk==8){
start=0;
PB11=1;
status=4;
PC12=1;
PC13=1;
PC14=1;
PC15=1;
}
if(start){
if(status==4){
PC12=0;
PC13=0;
PC14=0;
PC15=0;
CLK_SysTickDelay(1000000);
status--;
}else if(status==3){
PC12=1;
CLK_SysTickDelay(1000000);
status--;
}else if(status==2){
PC12=1;
PC13=1;
CLK_SysTickDelay(1000000);
status--;
}else if(status==1){
PC12=1;
PC13=1;
PC14=1;
CLK_SysTickDelay(500000);
status--;
}else if(status<=0){
PC12=1;
PC13=1;
PC14=1;
PC15=1;
PB11=0;
}
}
}
}
```
### 第三題
```c=
//
// GPIO_Buzzer: GPIO output to drive Buzzer
//
// EVB : Nu-LB-NUC140
// MCU : NUC140VE3CN
// PB11 : NUC140 LQFP100 pin48
#include <stdio.h>
#include "NUC100Series.h"
#include "MCU_init.h"
#include "SYS_init.h"
// 12 13 14 15
//led 5 6 7 8
int32_t main (void){
int sk,Pstart=0,Mstart=1,Lstart=1,status=4,tempsk=0;
SYS_Init();
GPIO_SetMode(PB, BIT11, GPIO_MODE_OUTPUT);
GPIO_SetMode(PC, BIT12, GPIO_MODE_OUTPUT);
while(1){
sk=ScanKey();
if(tempsk!=sk && sk!=0){
if(sk==4)Pstart=!Pstart;
if(sk==5)Mstart=!Mstart;
if(sk==6)Lstart=!Lstart;
}
if(Pstart)PC13=0;
else PC13=1;
if(Mstart)PC14=0;
else PC14=1;
if(Lstart)PC15=0;
else PC15=1;
if(Pstart!=0){
if(Mstart)PB11=0;
if(Lstart)PC12=0;
CLK_SysTickDelay(100000); // Delay
if(Mstart)PB11=1;
if(Lstart)PC12=1;
CLK_SysTickDelay(900000); // Delay
CLK_SysTickDelay(500000); // Delay
CLK_SysTickDelay(30000); // Delay
}
tempsk=sk;
}
}
```
## 第三次上機考

```c=
#include <stdio.h>
#include <math.h>
#include "NUC100Series.h"
#include "MCU_init.h"
#include "SYS_init.h"
#include "LCD.h"
#include "Draw2D.h"
#include "Seven_Segment.h"
#define PI 3.14159265359
int16_t ADCvalue;
int16_t hold=0;
void EINT1_IRQHandler(void)
{
GPIO_CLR_INT_FLAG(PB, BIT15); // Clear GPIO interrupt flag
hold=1;
}
void Init_EXTINT(void)
{
// Configure EINT1 pin and enable interrupt by rising and falling edge trigger
GPIO_SetMode(PB, BIT15, GPIO_MODE_INPUT);
GPIO_EnableEINT1(PB, 15, GPIO_INT_RISING); // RISING, FALLING, BOTH_EDGE, HIGH, LOW
NVIC_EnableIRQ(EINT1_IRQn);
// Enable interrupt de-bounce function and select de-bounce sampling cycle time
GPIO_SET_DEBOUNCE_TIME(GPIO_DBCLKSRC_LIRC, GPIO_DBCLKSEL_64);
GPIO_ENABLE_DEBOUNCE(PB, BIT15);
}
void Draw_Spiral(uint16_t control_value) { //??2 ?????
int centerX = 64; // LCD ??? X
int centerY = 32; // LCD ??? Y
int maxRadius = 30; // ?? VR1 ??????
float angleStep = 0.1; // ???????
float theta,radius;
int x,y;
float rotationOffset = (control_value / 4096.0) * 4 * 3.14159 ; // 0 ~ 2p ???
rotationOffset = (ADCvalue / 4096.0) * 4 * 3.14159; // 0 ~ 2p ???
radius = maxRadius * rotationOffset / (6.28 * 2);
x = centerX + radius * cos(rotationOffset);
y = centerY - radius * sin(rotationOffset);
draw_Pixel((int)x, (int)y,FG_COLOR,BG_COLOR); // ???
draw_Rectangle(x-1, y-1, x+1, y+1, FG_COLOR, BG_COLOR);
}
void ADC_IRQHandler(void)
{
uint32_t u32Flag;
u32Flag = ADC_GET_INT_FLAG(ADC, ADC_ADF_INT);
if(u32Flag & ADC_ADF_INT) {
ADCvalue = ADC_GET_CONVERSION_DATA(ADC, 7);
if(hold==1){
clear_LCD();
hold=0;
}
Draw_Spiral(ADCvalue);
}
ADC_CLR_INT_FLAG(ADC, u32Flag);
}
void Init_ADC(void)
{
ADC_Open(ADC, ADC_INPUT_MODE, ADC_OPERATION_MODE, ADC_CHANNEL_MASK);
ADC_POWER_ON(ADC);
ADC_EnableInt(ADC, ADC_ADF_INT);
NVIC_EnableIRQ(ADC_IRQn);
ADC_START_CONV(ADC);
}
int32_t main(void)
{
SYS_Init();
init_LCD();
clear_LCD();
Init_ADC();
OpenSevenSegment();
Init_EXTINT();
while(1) {
// ???????,?????ADC????
}
}
```
```c
#include <stdio.h>
#include <math.h>
#include "NUC100Series.h"
#include "MCU_init.h"
#include "SYS_init.h"
#include "LCD.h"
#include "Draw2D.h"
#include "Seven_Segment.h"
// ????
char Text[16];
int angleInt;
int16_t ADCvalue;
int16_t preADCvalue=0;
int16_t hold=0;
#define PI 3.14159265359
#define SEESAW_LENGTH 80 // ?????
#define CENTER_X 64 // LCD???X
#define CENTER_Y 32 // LCD???Y
void EINT1_IRQHandler(void)
{
GPIO_CLR_INT_FLAG(PB, BIT15); // Clear GPIO interrupt flag
hold=1;
}
void Init_EXTINT(void)
{
// Configure EINT1 pin and enable interrupt by rising and falling edge trigger
GPIO_SetMode(PB, BIT15, GPIO_MODE_INPUT);
GPIO_EnableEINT1(PB, 15, GPIO_INT_RISING); // RISING, FALLING, BOTH_EDGE, HIGH, LOW
NVIC_EnableIRQ(EINT1_IRQn);
// Enable interrupt de-bounce function and select de-bounce sampling cycle time
GPIO_SET_DEBOUNCE_TIME(GPIO_DBCLKSRC_LIRC, GPIO_DBCLKSEL_64);
GPIO_ENABLE_DEBOUNCE(PB, BIT15);
}
void Draw_Spiral(uint16_t control_value) { //??2 ?????
int centerX = 64; // LCD ??? X
int centerY = 32; // LCD ??? Y
int maxRadius = 30; // ?? VR1 ??????
float angleStep = 0.1; // ???????
float theta,radius;
int x,y;
float rotationOffset = (control_value / 4096.0) * 4 * 3.14159; // 0 ~ 2p ???
clear_LCD();
for ( theta = 0; theta < 6.28 * 2; theta += angleStep) { // ????
radius = maxRadius * theta / (6.28 * 2);
x = centerX + radius * cos(theta+rotationOffset);
y = centerY + radius * sin(theta+rotationOffset);
draw_Pixel((int)x, (int)y,FG_COLOR,BG_COLOR); // ???
draw_Rectangle(x-1, y-1, x+1, y+1, FG_COLOR, BG_COLOR);
}
}
void ADC_IRQHandler(void)
{
uint32_t u32Flag;
int centerX = 64; // LCD ??? X
int centerY = 32; // LCD ??? Y
int maxRadius = 30; // ?? VR1 ??????
//float angleStep = 0.1; // ???????
float theta,radius;
int x,y;
float rotationOffset; // 0 ~ 2p ???
u32Flag = ADC_GET_INT_FLAG(ADC, ADC_ADF_INT);
if(u32Flag & ADC_ADF_INT) {
ADCvalue = ADC_GET_CONVERSION_DATA(ADC, 7);
//AngleMeasurement(ADCvalue);
if(hold==1){
clear_LCD();
rotationOffset = (ADCvalue / 4096.0) * 4 * 3.14159; // 0 ~ 2p ???
radius = maxRadius * rotationOffset / (6.28 * 2);
x = centerX + radius * cos(rotationOffset*2);
y = centerY + radius * sin(rotationOffset*2);
draw_Pixel((int)x, (int)y,FG_COLOR,BG_COLOR); // ???
draw_Rectangle(x-1, y-1, x+1, y+1, FG_COLOR, BG_COLOR);
hold=0;
}
if(ADCvalue > preADCvalue+200 || ADCvalue < preADCvalue-200 ){
Draw_Spiral(ADCvalue);
preADCvalue=ADCvalue;
}
}
ADC_CLR_INT_FLAG(ADC, u32Flag);
}
void Init_ADC(void)
{
ADC_Open(ADC, ADC_INPUT_MODE, ADC_OPERATION_MODE, ADC_CHANNEL_MASK);
ADC_POWER_ON(ADC);
ADC_EnableInt(ADC, ADC_ADF_INT);
NVIC_EnableIRQ(ADC_IRQn);
ADC_START_CONV(ADC);
}
int32_t main(void)
{
SYS_Init();
init_LCD();
clear_LCD();
Init_ADC();
OpenSevenSegment();
Init_EXTINT();
while(1) {
// ???????,?????ADC????
}
}
```