switch&7-seg 元件控制

14
SWITCH&7-SEG 元元元元 嵌嵌嵌嵌嵌嵌嵌嵌嵌 11/17

Upload: cedric

Post on 16-Mar-2016

67 views

Category:

Documents


3 download

DESCRIPTION

SWITCH&7-SEG 元件控制. 嵌入式作業系統實作 11/17. 週邊 I/O map. Ox3F00C06. 2byte = 16bits. IO_REG2. Ox3F0 0C04. IO_REG1. 2byte = 16bits. Ox3F0 0C02. IO_REG0. 2byte = 16bits. Ox3F0 0C00. Ox3F00000. 各 I/O 之位元定義. bit. Reg. DIP Switch & 7 Segment. DIP SWITCH - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SWITCH&7-SEG 元件控制

SWITCH&7-SEG 元件控制嵌入式作業系統實作

11/17

Page 2: SWITCH&7-SEG 元件控制

週邊 I/O mapI/O offset 說明

IO_REG0 0X0C00 7 Segment( 七段顯示器 )IO_REG1 0X0C02 Switch 和 Keypad 讀入IO_REG2 0X0C04 LED 和 Keypad Scan 輸出

Ox3F00000

Ox3F00C00

Ox3F00C02

Ox3F00C04

Ox3F00C06

2byte = 16bits

2byte = 16bits

2byte = 16bits

IO_REG0

IO_REG1

IO_REG2

Page 3: SWITCH&7-SEG 元件控制

各 I/O 之位元定義7 6 5 4 3 2 1 0

15 14 13 12 11 10 9 8

IO_REG0SEG_H SEG_G SEG_F SEG_E SEG_D SEG_C SEG_B SEG_A

COM3 COM2 COM1 COM0

IO_REG1S1.7 S1.6 S1.5 S1.4 S1.3 S1.2 S1.1 S1.0

SCAN_I3

SCAN_I2

SCAN_I1

SCAN_I0

IO_REG2

SCAN_O3

SCAN_O2

SCAN_O1

SCAN_O0

D7 D6 D5 D4 D3 D2 D1 D0

bit

Reg

Page 4: SWITCH&7-SEG 元件控制

DIP Switch & 7 Segment DIP SWITCH

Creator 提供之 switch(S1.0~S1.7) ,邏輯 0 代表 ON ,邏輯 1 代表 OFF

7 Segment Creator 提供之 7 段顯示器的 7 個

LED(SEG_A~SEG_G) 以及 1 個小數點 (SEG_H) ,邏輯 0 代表亮,邏輯 1 代表滅

Page 5: SWITCH&7-SEG 元件控制

7 Segment

COM0 = 0 則 D5 會亮 若要顯示數字 5 ,則

SEG_A = SEG_F = SEG_G = SEG_C = SEG_D = 0 SEG_B = SEG_E = SEG_H = 1

IO_REG0 = 0xfe92 ( 在 COM0 顯示 5)

Page 6: SWITCH&7-SEG 元件控制

7 Segment數字 SEG_H SEG_G SEG_F SEG_E SEG_D SEG_C SEG_B SEG_A

0 0xc0 1 1 0 0 0 0 0 0

1 0xf9 1 1 1 1 1 0 0 1

2 0xa4 1 0 1 0 0 1 0 0

3 0xb0 1 0 1 1 0 0 0 0

4 0x99 1 0 0 1 1 0 0 1

5 0x92 1 0 0 1 0 0 1 0

6 0x82 1 0 0 0 0 0 1 0

7 0xd8 1 1 0 1 1 0 0 0

8 0x80 1 0 0 0 0 0 0 0

9 0x98 1 0 0 1 1 0 0 0

Page 7: SWITCH&7-SEG 元件控制

顯示多個七段顯示器一同顯示 由於 IO_REG0 只有一組顯示七段顯示器的輸出,而 4510的版子卻有 4 組七段顯示器,如何一起顯示出多個七段顯示器 ? 利用 RC 充放電非瞬間可完成 使 SEG_A~SEG_H 不亮並且關閉 COM0~COM3

重新輸入想要的 COM 以及七段顯器

Delay(10) 使其充電達到一定亮度

Page 8: SWITCH&7-SEG 元件控制

變數定義 (def.h)

/*** return flag ***/#define OK 1#define YES 1#define ON 1#define TRUE 1#define FALSE 0#define UM 0#define OFF 0#define NO 0#define STRMATCH 0

#define U32 unsigned int#define U16 unsigned short#define S32 int#define S16 short int#define U8 unsigned char#define S8 char

#define UL U32#define UI U16#define UC U8#define C S8#define I S16#define L S32

Page 9: SWITCH&7-SEG 元件控制

ExampleUC ch;ch = IO_REG1;

Ch 為 8 bits 變數, IO_REG1 為 16 bits故 ch = IO_REG1 取 IO_REG1 較低 8 位元為變數存放值

IO_REG1S1.7 S1.6 S1.5 S1.4 S1.3 S1.2 S1.1 S1.0

SCAN_I3

SCAN_I2

SCAN_I1

SCAN_I0

7 6 5 4 3 2 1 0

15 14 13 12 11 10 9 8

Page 10: SWITCH&7-SEG 元件控制

範例程式 //number array

int number[10] = {0x0fc0, 0x0ff9, 0x0fa4, 0x0fb0, 0x0f99,0x0f92, 0x0f82, 0x0fD8, 0x0f80, 0x0f98};

//segment arrayint seg[4] = {0x0eff, 0x0dff, 0x0bff, 0x07ff};

Page 11: SWITCH&7-SEG 元件控制

範例程式 void segment(int com, int value)

{//what segment will light

IO_REG0 = seg[com];//what number will light

IO_REG0 &= number[value];}

Page 12: SWITCH&7-SEG 元件控制

範例程式 (1) int main(void) {

unsigned char dip;while(1) {

segment(3,7); //display “7” in COM3

}return 0;

}

Page 13: SWITCH&7-SEG 元件控制

範例程式 (2) int main(void) {

unsigned char dip;while(1) {IO_REG0 = 0x0fff; //clear all seg & comsegment(3,7);Delay(10);

IO_REG0 = 0x0fff; //clear all seg & comsegment(2,6);Delay(10);// display “7” in COM3 and “6” in COM2}return 0;}

Page 14: SWITCH&7-SEG 元件控制

實習實習一 : 將範例上的七階顯示器的程式改成顯示為閃爍的〝 5684 〞

實習二 : 將範例上的七階顯示器的程式改成以 SWITCH的二進位來控制的七 段顯示器 ( 範圍 0~255,顯示為 10進位 )

EX: 00000111b “7” 0007

實習三 : 實作出一個可即時改變上數下數的記數器,每 0.4s跳動一次,並以 swtich0做開關控制 ( 範圍 0~9999)(swtch0 off = 上數 ) (swtch0 ON = 下

數 ) ( 當 9999往上數 0000) ( 當 0000往下數 9999)作完請找助教檢查