• 沒有找到結果。

第8章 七段顯示器8章 七段顯示器

N/A
N/A
Protected

Academic year: 2023

Share "第8章 七段顯示器8章 七段顯示器"

Copied!
43
0
0

加載中.... (立即查看全文)

全文

(1)

第 8 章 七段顯示

(2)

8-1 功能簡介

• 七段顯示器是由七顆 LED 組合七段而成的數字型顯示器,只要 組合讓不同段的 LED 亮,即可顯示出不同的數字,甚至一些簡 單的文字

• 本章實驗的功能為使用 Arduino 控制板的 I/O 來驅動七段 顯示器,使七段顯示器每隔 0.5 秒依序顯示出 0 ~ 9 的數 字,並不斷重複變化

• 本實驗的系統方塊圖如圖 8-1 所示。

(3)

8-2 電路說明

• 七段顯示器( seven-segment display )為常用的數字顯示元件,

其外觀如圖 8-2(b) 所示;

• 七段顯示器內部結構是由 8 個 LED (發光二極體)所組成,有 七段筆畫與一個小數點,依順時針方向排列為

a 、 b 、 c 、 d 、 e 、 f 、 g 與 dp 等 8 個 LED ,如圖 8-2(a) 所 示

• 圖 8-2(a) 標示了七段顯示器的各段名稱與腳位,可用來顯示數 字 0 ~ 9 及英文字 A 、 b 、 C 、 d 、 E 、 F 。

(4)

8-2 電路說明

七段顯示器依結構可分為共陽七段與共陰七段兩種:內部所有 LED 陽極接在共同端腳位( com )者,為共陽七段顯示器,如圖 8- 3(a) 所示;內部所有 LED 陰極接在 com 者,則為共陰七段顯 示器,如圖 8-3(b) 所示。

(5)

8-2 電路說明

• 本章實驗採用共陰七段顯示器,只要共同端點( com )上接地

,對應的腳位上送高準位,即可使對應的各段 LED 亮

• 圖 8-4 為七段顯示器上要呈現的數字,則其對應的共陰七段 顯示器控制碼如表 8-1 所示,以顯示數字 為例,只有 g 段 不亮,其餘要亮,故 g ~ a 段的顯示控制碼為 0111111 , 換成 16 進制為 0x3F 。( C 語言中 0x 代表 16 進制, 0b 代表 2 進制)

(6)

8-2 電路說明

(7)

8-2 電路說明

(8)

8-2 電路說明

(9)

8-2 電路說明

實驗時請確認圖 8-2(a) 上七段顯示器的腳位,接錯會出現亂碼

;另外本實驗採用共陰七段顯示器, com 端請接地。

在此提供麵包板及 Arminno 多功能實驗板兩種接線圖供選擇,請 依手邊有的設備狀況進行實驗。

1. 使用麵包板

圖 8-6 所示為使用麵包板進行七段顯示器的參考接線電路,可 將 ArduinoLeonardo 板固定在一般的麵包板上方便接線,由於 七段顯示器的腳位非 a ~ g 的順序,接線會有些交錯,請注意 不要接錯;另外限流電阻 330Ω 不可省略,請按圖配線:

(10)

8-2 電路說明

(1)Arduino 的 GND 腳接 至麵包板上橫向導通的藍 色線,並接至七段顯示器 的 com 端。

(2) 本實驗使用 USB 提供 的

5V ,電源不需外加。

(11)

8-2 電路說明

2. 使用 Arminno 多功能實驗板

圖 8-7 所示為使用 Arminno 多功能實驗板的接線情況,

其中:

① 實驗板與 Arduino 板的連接均採用杜邦排線。

② 使用 2pins 的排線連接 Arduino 板上的 5V 及 GND 接至實驗板 3V3 及 GND 的電源端。

③ 使用 1pin 的排線連接 JP8 的 com4 至 5V 端,指定使 用七段顯示器的個位數。

④ 連接 Arduino 板上的 D11 ~ D5 至實驗板 7- SEGMENT ×4 區塊的 JP7 (對應 a ~ g )。

(12)

8-3 程式設計

接下來要進行程式的撰寫,由於表 8-1 已明確標示了共陰七段 顯示器控制碼,電路也接妥 Arduino 板的 D11 ~ D5 對應至 七段的 a ~ g ,故本次的實驗非常適合使用查表法,也就是使用 陣列取值的方式,再呼叫自訂的 OutPort() 副程式,逐一將值 送至指定的輸出即可。

1. setup() 、 loop()

1) setup() :主要設定 seg[] 陣列中的數位腳之電氣特性 為輸出,包含 D11 ~ D5 。

2) loop() :依序取出 0 ~ 9 七段顯示器編碼陣列 TAB[]

的資料,然後呼叫 OutPort() 副程式進行顯示的工作。

(13)

8-3 程式設計

(14)

8-3 程式設計

2. OutPort() 副程式

此副程式的主要目的是將傳入值 dat 送至指定的腳位輸出,

腳位由程式中的 seg7[]={11, 10, 9, 8, 7, 6, 5} 定 義,其中 seg7[0]=11 對應七段顯示器的 a

段, seg7[1]=10 對應 b 段,其餘類推;要將傳入值 dat 送至指定的腳位輸出,可使用十進制轉二進制的方式,從最低 位元逐一將值送出,流程如下:

(1) 取出 dat 除 2 的餘數。

(2) 若餘數為 1 ,則輸出高準位,否則輸出低準位。

(3) 接著處理下一位元,故取 dat=dat/2 。 (4) 重複動作 (1) ,共做 7 次。

圖 8-9 為 dat=94 處理後對應 seg7[] 的操作範例,此範例 顯示 d 。

(15)

8-3 程式設計

(16)

8-3 程式設計

(17)

8-3 程式設計

(18)

8-3 程式設計

1. 陣列宣告:陣列宣告的指令格式如下

其中資料型態應以不超過值域範圍的最小型態來宣告,例如觀 察 seg7 的元素值均不超過 255 ,故宣告成 byte 會比 int 節省記憶空間。另外,有預設值的宣告可省略陣列元素個數的 宣告,編譯器會幫忙計算,例如:

(19)

8-4 實驗成果

• 確定好本實驗的電路及程式後,即可開始進行編譯程式,以及下 載、燒錄、測試的工作;首先請使用 USB 傳輸線連接好個人電 腦與 Arduino Leonardo 板,再按 圖示進行程式的燒 錄。

• 燒錄成功後,應可立即看到七段顯示器開始數數,從 0 到 9 , 每隔 0.5 秒變化一次,若無法正常顯示,請檢查接線是否正確

(20)

8-5 延伸應用與練習

有了顯示一位數 0 ~ 9 的七段顯示器輸出能力後,還有哪些可 以延伸應用並練習的呢?以下讓我們來思考一下。

8-5.1 讀入指撥開關數值並顯示的實驗(顯示 0 ~ F )

1. 本小節希望完成一個讀入 4 位元指撥開關的數值,並將對應的 16 進制數值顯示在七段顯示器上的實驗,數值包含 0 ~ 9

,以及 A ~ F 。

• 圖 8-10 所示為本小節實驗的電路圖,其中指撥開關的 4 個 數位腳分別接至 D13 、 D12 、 D3 、 D2 ,最高位元 MSB 為 D13 。

(21)

8-5 延伸應用與練習

(22)

8-5 延伸應用與練習

2. 4 位元指撥開關數值除了 0 ~ 9 以外,還包含撥 1010 以上應

顯示的字母,其字碼及對應的顯示控制碼條列如表 8-3 所 示。

(23)

8-5 延伸應用與練習

1. 指撥開關的設定:

由於指撥開關用到 4 個數位腳,且未連接提升電阻,因此本小節 需用到使用內建提升電阻的設定,同樣是用設定 pin 腳電氣模式 的指令 pinMode ,不過模式要使用 INPUT_PULLUP 。

(24)

8-5 延伸應用與練習

2. 讀入 4 位元指撥開關狀態,轉成十進制數值:轉換的方法其 實就是進行二進制轉十進制,首先宣告轉換後的十進制數值 number=0 ,並宣告加權值陣列 Weight={ 8,4,2,1 } ,以 及指撥開關輸入腳位的陣列 DIP ={13,12,3,2 } ,然後進 行底下的流程即可,例如指撥開關撥上上下下,代表邏輯 1100

, number=1×23+1×22+0×21+0×20=8+4=12 。

1) 從最高位元 DIP[0] ,也就是 D13 開始判斷,若為 LOW

(往上撥)代表指撥開關為邏輯 1 ,所以

number=number+8 ;若為 HIGH (往下撥)

2) 代表指撥開關為邏輯 0 ,不需進行任何處理。接著判斷 DIP[1] ( D12 ),若為 LOW ,則 number= number+4

3) 接著判斷 DIP[2] ( D3 ),若為 LOW ,則 number=

number+2 。

4) 接著判斷 DIP[3] ( D2 ),若為 LOW ,則 number=

number+1 。 5) 程式碼如下:

(25)

8-5 延伸應用與練習

3. 呼叫 OutPort(number) 副程式,即可顯示指撥開關的 數值。

4. 接著周而復始進行步驟 2. 到 3. 即可。

(26)

8-5 延伸應用與練習

(27)

8-5 延伸應用與練習

2. Arminno 多功能實驗板的接線情況

圖 8-12 所示為使用 Arminno 多功能實驗板的接線情況

(28)

8-5 延伸應用與練習

(29)

8-5 延伸應用與練習

(30)

8-5 延伸應用與練習

(31)

8-5 延伸應用與練習

將程式燒錄後,可調整指撥開關,看看七段顯示器是否有對應 到指撥開關的數值內容顯示。

(32)

8-5 延伸應用與練習

Arminno 多功能實驗板上的七段顯示器為四位元的多工顯示 器,因其電路結構與單一顆七段顯示器有點不同,需要特別說 明一下。實驗板上的顯示器由四顆七段顯示器組成,由左而右

,分別為千位數、百位數、十位數及個位數,為簡化接線,每 顆七段顯示器的 a 端接一起、 b 端接一起…以此類推,最後拉 出 a 、 b 、 c 、 d 、 e 、 f 、 g 端至 JP7 ,此為資料端,

如圖 8-13 所示;小數點 dp 及要讓哪一位數亮的控制端 com1 、 com2 、 com3 、 com4 則接至 JP8 ,其中 com1 ~ com4 為掃描端,分別接一個 NPN 電晶體,控制千位數、百 位數、十位數、個位數七段顯示器的亮或滅,掃描端在同一個 時間,只有一個接高準位,亦即每個時間只有一位數會亮。

(33)

8-5 延伸應用與練習

(34)

8-5 延伸應用與練習

(35)

8-5 延伸應用與練習

• Arminno 多功能實驗板上的七段顯示器為四位元的多工顯 示器,因其電路結構與單一顆七段顯示器有點不同,需要特 別說明一下。

• 實驗板上的顯示器由四顆七段顯示器組成,由左而右,分別 為千位數、百位數、十位數及個位數,為簡化接線,每顆七 段顯示器的 a 端接一起、 b 端接一起…以此類推,最後拉 出 a 、 b 、 c 、 d 、 e 、 f 、 g 端至 JP7 ,此為資料端

,如圖 8-13 所示

• 小數點 dp 及要讓哪一位數亮的控制端

com1 、 com2 、 com3 、 com4 則接至 JP8 ,其中 com1

~ com4 為掃描端,分別接一個 NPN 電晶體,控制千位數

、百位數、十位數、個位數七段顯示器的亮或滅

• 掃描端在同一個時間,只有一個接高準位,亦即每個時間只 有一位數會亮。

(36)

8-5 延伸應用與練習

• 所謂的多工顯示是指利用分時多工的掃描技巧,讓四位元同 時顯示不同數字。

• 一般稱 com1 ~ com4 為掃描端, JP7 的 dp 、 g 、 f

、 e 、 d 、 c 、 b 、 a 為資料端;假設顯示器上要顯示 ,其動作流程如下:

1.首先讓掃描端 com1 ~ com4 送出 0000 的控制訊號,所 有電晶體 OFF ,七段顯示器不顯示。

2.資料端 JP7 送出 0x5B (請對應表 8-1 的控制碼),掃描 端 com1 送出 1 的控制訊號(即 Q1 導通),此時顯示數字 ,並停留一段時間。

3.為避免掃描端掃至下一位時造成的顯示殘影現象,掃描端 com1 送出 0 的控制訊號,讓七段顯示器不顯示。

(37)

8-5 延伸應用與練習

4. 資料端送出 0x3F ,掃描端 com2 送出 1 的控制訊號, Q2 導通,此時顯示數字 ,並停留一段時間。

5. 掃描端 com2 送出 0 的控制訊號,讓七段顯示器不顯示。

6. 資料端送出 0x06 ,掃描端 com3 送出 1 的控制訊 號, Q3 導通,此時顯示數字 ,並停留一段時間。

7. 掃描端 com3 送出 0 的控制訊號,讓七段顯示器不顯示。

8. 資料端送出 0x4F ,掃描端 com4 送出 1 的控制訊號, Q4 導通,此時顯示數字 ,並停留一段時間。

9. 掃描端 com4 送出 0 的控制訊號,讓七段顯示器不顯示。

10.跳至步驟 2 重複執行。

• 以上的動作流程,只要掃描的速度夠快,超過人一秒鐘至 少需要 24 個畫面的視覺暫留,就可看到非常穩定的畫面,

若掃描速度不夠,會看到閃爍的 畫面。

(38)

8-5 延伸應用與練習

根據上述的動作流程,可寫出底下的程式,請對應參考;本程 式也加入利用 Serial Monitor 改變延遲時間 delaytime 的設計,透過不同的 delaytime 了解多工顯示器的原理,以 及延遲時間的影響。

(39)

8-5 延伸應用與練習

(40)

8-5 延伸應用與練習

(41)

8-5 延伸應用與練習

(42)

8-5 延伸應用與練習

(43)

8-5 延伸應用與練習

1. 將程式燒錄後,因變數 delaytime 預設為 5 ( ms ),

可看到一個很穩定的 顯示畫面。

2. 點選 Tools → Serial Monitor ,開啟 Serial

Monitor ,接著請在命令列依序輸入要測試的延遲時間數 據(單位為 ms ),並記錄顯示狀態:

(1) 10ms 顯示狀態描述:

___________________________

(2) 100ms 顯示狀態描述:

__________________________

(3) 1000ms 顯示狀態描述:

_________________________

經測試後應可發現延遲時間增加後,多工顯示的數字閃爍 明顯。

3. 請試著修改顯示其它數值,例如「 5214 」,其顯示的數 字是否符合預期。

參考文獻

相關文件

IOB2 為反相輸出方式 與 IOB4 組成一個 RC.

第四章 直角座標與二元一次方程式.

第四章 直角座標與二元一次方程式.

在現行的 99

本計劃的目的是透過 發展具校本特 色的語文課程,以加強學生在文學 和中華文化的學習。學校可善用課 程提供的「建議篇章」

根據加州環保組織「最後淨灘」(Last Beach Cleanup)的數據顯示,在 2020 年 1 月至 8 月 間有超過 75%的塑膠垃圾輸入墨西哥,總重量高達 32,650

第四章: 中學報稅的設計 第五章: 初中諒程主建議 第六章: 高中諒我建議,..

土地利用樣條圖 Landuse transect顯示現時 利東街尚存在的婚嫁經濟活動,兩位同學採用了