• 沒有找到結果。

堃喬USB介面電路實習簡易說明書

N/A
N/A
Protected

Academic year: 2021

Share "堃喬USB介面電路實習簡易說明書"

Copied!
24
0
0

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

全文

(1)

堃喬 USB 介面電路實習簡易說明書

介面電路實習從早期透過 8255,到利用印表機 port,再到目前是透過 USB 控制 I/O 周邊裝置,配合 107 年新課綱介面電路實習,利用目前電腦硬

體裝修乙級第一站試題再擴充控制其他周邊 I/O,讓學生可在二年級就提前熟悉透過 VB 程式直接控制 I/O,但由於

乙級公告試題的 ATMEGA8 韌體與

USBIO.dll 內容僅支援『輸出』控制,所以無法另外作輸入控制練習,除 AD0~AD7,僅 PC4、PC5 腳位可以利用

從 102 年開始的工科技藝競賽電腦修護第二題開始所使用的 ATMEGA8 內容是需由選手自行撰寫,搭配的『

USBHIO.dll

才具有輸入函數可運用

呼叫方式和乙級的 USBIO.dll 也不同,由於 ATMEGA8 韌體程式撰寫已經超過高職課綱範圍,故在此重點是利用乙級 ATMEGA8 與 USBIO.dll 控制 I/O 為主。

當然若有參加工科技藝競賽學校,選手也可利用這介面電路實驗板練習 102~105 年歷屆試題,光碟僅內附相關韌體的 HEX 檔案與 VB 執行檔參考解答。

介面實驗器各區塊功能介紹如下:

七段顯示電路

105 年試題電路

硬乙試題電路

104 年試題電路

ATMEGA8 主電路

103 與 105 年試題電路

102 年試題電路

16 位元擴充接腳

實驗板電源開關

(2)

『電腦硬體裝修乙級』區塊功能介紹:

1. 左上電路同電腦硬體裝修乙級術科第一站試題要求,請配合使用『

硬乙試場版本 IC

,利用 VB 控制 16 顆 LED,更詳細介紹可參閱台科大圖書的『電

腦硬體裝修乙級術科(乾龍工作室)』著作說明。

P10 與 P11

需套上短路套,其餘不接(僅套上單排,避免短路套遺失),並僅開啟

SW10

電源開關。

2. 若沒有連接電腦可利用『

硬乙自動測試 IC

』直接進行硬體測試,一開始 LED 全亮,接著從 1~10 題依序進行測試,此 IC 不提供 USB 電腦連線。

3. 實驗板『電源電路』與『ATMEGA8 核心電路』

『電腦硬體裝修乙級』相關電路圖如下所示:

透過 P12、P13 可自行控制 16 位元裝

置,如 8*8 點矩陣、七段顯示器、LCD

(3)

『102 年度工科技藝競賽電腦修護第二題試題』區塊功能介紹:

1. 主要是控制

8x32 單色 LED 廣告燈陣列與 2 個按鈕輸入按鈕開關 B0 與 B1

,由於電腦硬體裝修乙級 ATMEGA8 原始內容與 USBIO.DLL 都沒有做輸入控

制設計,所以須搭配使用『

102 電腦修護 IC

』與

USBHIO.dll

檔案進行測試。使用時

P21 與 P22 與 P23

需套上短路套,其餘不接(僅套上單排,避免短

路套遺失),並僅開啟

SW20

電源開關。

2. 四顆 74138 解碼器是用來進行 8x32 廣告燈矩陣

掃描

,再透過 U22 的 74244

傳送資料

,而 U21 的 74273 僅單獨用 VB 來控制 8 顆紅色 LED 亮滅,和

8x32 廣告燈完全

無關

3.

當沒接上電腦

,8 顆紅色 LED

全亮

,點矩陣 LED 顯示『23:59』,

分別按下

B0 與 B1 點矩陣會顯示不同內容,

同時按下

B0 與 B1 點矩陣會顯示試題指

定的 LOGO 動畫。

4.

當接上電腦

,8 顆紅色 LED 全滅,點矩陣 LED 顯示系統時間,分別按下 B0 與 B1 點矩陣會顯示不同內容,但和之前內容不同,同時按下 B0 與 B1,

點矩陣會顯示試題指定的 LOGO 動畫,只要按下任意按鈕,電腦亦要同步顯示對應的文字訊息。

5. 按下表單視窗的『Red LED』按鈕,8 顆紅色 LED 與表單○○○○○○○○須同步顯示試題指定的 LED 動態效果。

6. 更詳細功能說明請參閱光碟『102 年度電腦修護-術科 2 公告試題.pdf』

7. 在電腦硬體裝修乙級的 VB 透過 USB 介面傳輸控制,透過示波器量測約

mS

為單位,掃描速度太慢,所以僅能控制 8*8 點矩陣,否則

閃爍太嚴重

那為何電腦修護技藝競賽試題可以,那是因為掃描與傳送資料均利用 ATMEGA8 撰寫韌體程式

直接控制

,VB 僅是傳送欲顯示的相關訊息而已。

(4)
(5)
(6)

『103 年度工科技藝競賽電腦修護第二題試題』區塊功能介紹:

1. 103 年度工科技藝競賽第二站試題主要是控制

LCD 與 3*4 鍵盤掃描

,由於電腦硬體裝修乙級 ATMEGA8 原始內容與 USBIO.DLL 都沒有做輸入控制設計,

所以須搭配使用『

103 電腦修護 IC

』與

USBHIO.dll

檔案進行測試。使用時

P32 與 P33 與 P34

需套上短路套,其餘不接(僅套上單排,避免短路套遺失),

並僅開啟

SW30

電源開關。

2.

當沒接上電腦

,LCD 模組顯示『歡迎畫面』,左側圖形(需自行設定產生)每秒亮 0.5 秒,再滅 0.5 秒。右側上面顯示『WELCOME』字型,下面顯示

3 位數字由『001』至『105』向上計數,每 0.5 秒增加數字 1,到達『105』後,再由『001』開

始向上計數,循環顯示。按下介面卡『0』

『1』

『2』

『3』

『4』

『5』

『6』

『7』

『8』

『9』

『*』、

『#』鍵,對應 LCD 模組顯示該按鍵內容。同時按住介面卡『*』與『#』鍵 ,再放開雙鍵,LCD

顯示『Time HH:MM:SS』。

3.

當接上電腦

,LCD 顯示系統時間,按下介面卡『1』

『2』

『3』

『4』

『5』

『6』

『7』

『8』

『9』

『0』

『#』鍵,電腦畫面顯示『Output 250 Hz Signal』、

『Output 500 Hz Signal』

『Output 1000 Hz Signal』,並同時於介面卡『OUT』紅色輸出端點,產生

『250 Hz』、『500 Hz』、『1000 Hz』方波,頻率誤差正負 10%以內,按下介面卡『1』、『2』、『3』、

『4』、『5』、『6』、『7』、『8』、『9』、『0』、『#』鍵,電腦畫面『Key』欄位及 LCD 右下角分別對應

顯示『1』、『2』、『3』、『4』、『5』、『6』、『7』、『8』、『9』、『0』、『#』字元。

(7)

5. 部分電腦若無法偵測到此 USB 裝置,請先利用光碟安裝『

Intel(R)_USB_3.0_eXtensible_Host_Controller_Driver

』方可正常使用。

6. 『103 年電腦修護』公告試題電路圖如下:

(8)
(9)

『104 年度工科技藝競賽電腦修護第二題試題』區塊功能介紹:

1. 104 年度工科技藝競賽第二站試題主要是控制

8 顆串列式全彩 RGB LED 與 8 個按鈕輸入開關

(未用鍵盤掃描技巧),以及可變電阻 VR,由於電腦硬體

裝修乙級 ATMEGA8 原始內容與 USBIO.DLL 都沒有做輸入控制設計,所以須搭配使用『

104 電腦修護 IC

』與

USBHIO.dll

檔案進行測試。使用時

P40 與

P41

需套上短路套,其餘不接(僅套上單排,避免短路套遺失),並僅開啟

SW40

電源開關。

2.

當沒接上電腦

,8 顆 RGB LED 全亮,顯示『指定顏色畫面』,色階亮度最大。按下 USB 介面卡『S1』、『S2』、『S3』、『S4』、『S5』、『S6』、『S7』、『S8』

鍵,對應 RGB LED 顯示變為

黑色

,再按同一鍵,則恢復原指定顏色,而可變電阻 VR 暫時

無法測試使用

註:

實驗板 8 顆 RGB LED 與 8 顆按鈕配置順序和實際公告試題的電路圖順序左右相反

,要特別留意。

3.

當接上電腦

,USB 介面卡應立即改變 SA_LED1 至 SA_LED8 皆為黑色,按下『Red』按鈕,電腦畫面顯示 D1 為紅色,於 USB 介面卡 SA_LED1 立即

反應改變,每 0.5 秒移動向左一格至 D8,最後 D1 至 D8 皆為黑色。按下『Color DEMO』按鈕,顯示『變化彩色畫面』,USB 介面卡由全黑色,每

一彩色階亮 0.05 秒,再增加亮度數值,色階亮度由 0 至 255,循環顯示。按下『ALL OFF』按鈕,於 USB 介面卡 D1 至 D8 皆為黑色。

4.

當接上電腦

,按下 USB 介面卡『S1』、『S2』、『S3』、『S4』、『S5』、『S6』、『S7』、『S8』鍵,對應 RGB LED 顯示變為黑色,再按同一鍵,則由黑色重新

由 0 開始每一彩色階亮 0.05 秒,再增加亮度數值,色階亮度由 0 至 255,循環顯示。

5.

當接上電腦

,按下『ADC ON』按鈕,逆時針方向調整可變電阻,讀取 ADC in 最小值,將該數值輸入『Lx』欄位,順時針方向調整可變電阻,讀取

ADC in 最大值,將該數值輸入『Ux』欄位。逆時針方向調整可變電阻到底,則 ADC out 對應修正後之輸出最小值,本例為 0;再順時針方向調整可

變電阻到底,ADC out 對應修正後之輸出最大值,本例為 1023。另外,ADC Code 對應輸出值為 0 至 255,並將此值傳送至 USB 介面卡,控制亮度。

(10)

6. 更詳細功能說明請參閱光碟『104 年度電腦修護-術科 2 公告試題.pdf』

7. 『104 年電腦修護』公告試題電路圖如下:

(11)

8. 『104 年電腦修護』實驗板相關實際電路圖如下:

註:

實驗板 8 顆 RGB LED 與 8 顆按鈕順序和實際公告試題的電路圖順序相反

9. 串列式全彩 RGB LED 傳輸方式有兩種,如上方右圖所示,第一種是分別送出 GRB 順序(本電路採用),另一種順序是 RGB,拿到材料應先確認,由於

每位元傳送時間都有規定,且單位時間是 µS,若要用 VB 透過 USB 介面控制,因為單位僅 mS,故無法直接使用,因此,一定要在 ATMEGA8 撰寫韌

體程式直接控制 RGB LED 方可。

(12)

『105 年度工科技藝競賽電腦修護第二題試題』區塊功能介紹:

1. 105 年度工科技藝競賽第二站試題主要是控制

LCD 與 3*3 鍵盤

掃描(橫式)、全彩 RGB LED、蜂鳴器

,其中 LCD 與 3*3 鍵盤是

共用 103 年試題 3*4 鍵盤,但今年試題鍵盤僅剩 9 個按鍵,所

以是使用下半部鍵盤代替 K1~K7 與*、#,如右下角圖所示,因

此,原標示按鍵 4 相當於 K1 鍵、按鍵 0 相當於 K7 鍵,注意

P33 短路套的 PC0 不可以接上,而是自行利用跳線將 PC0 改接

到右上 P50 的蜂鳴器

P34 短路套的 PD0 不可以接上,而是自

行利用跳線接到右上角 P50 單顆的全彩 RGB LED

2. 由於電腦硬體裝修乙級 ATMEGA8 原始內容與 USBIO.DLL 都沒有

做輸入控制設計,所以須搭配使用『

105 電腦修護 IC

』與

USBHIO.dll

檔案進行測試。使用時

P32 與 P33(PC0 不接)與

P34(PD0 不接)

需套上短路套,其餘不接(僅套上單排,避免短

路套遺失),同時須開啟

SW30 與 SW50

電源開關,若 SW50 電

源開關沒有打開,則單顆全彩 LED 不亮。

3.

當沒接上電腦

,LCD 模組顯示『歡迎畫面』,中央圖形需自行

設定產生。右側上面顯示『ST:XX』字型,XX 表示崗位號碼 (此

例為 98)。按下 USB 介面卡『1』

『2』

『3』

『4』

『5』

『6』、

『7』、『*』、『#』鍵,對應蜂鳴器發出指定頻率聲音,以示波

器連接 Test Point『指定焊接點』測量波形(頻率容許正負誤差

10%)、SA_LED 顯示『指定顏色』、LCD 顯示『指定畫面』,如

下所示。同時按下 USB 介面卡『*』與『#』雙鍵,蜂鳴器發出 440Hz『指定頻率』聲音,以示波器連接 Test Point『指定焊接點』測量波形(頻率容

許正負誤差 10%)。

4.

當接上電腦

,LCD 模組顯示『歡迎畫面』程式執行後,USB 介面卡蜂鳴器不發出聲音,SA_LED 不亮,LCD 顯示『指定畫面』

。依序按下 『K1』

『K2』、

『K3』、『 K4』、『K5』、『K6』、『K7』按鈕,對應 USB 介面卡立即改變 SA_LED 顯示顏色,LCD 顯示『指定畫面』,蜂鳴器發出『指定頻率』聲音,持

續 0.5 秒自動停止發出聲音,並將 LCD 返回上一顯示畫面。將 USB 介面卡連接線拔除,電腦畫顯示『中空』,再插回 USB 連接線,不需按鍵盤任何

或滑鼠動作,電腦畫面應自回復拔除前狀態。

(13)

6. 『105 年電腦修護』公告試題電路圖如下:

(14)

『七段顯示器(共陽)』區塊功能介紹:

1. 七段顯示器雖然目前並沒出現電腦修護職種,但對於初學者仍是必學元件之一,從單一顆七段顯示器,到四顆七段顯示器,學習利用掃描同時顯示。

2. 使用時,在

P52 需套上短路套,用來連接 a~g

,其餘不接(僅套上單排,避免短路套遺失),各 COM 共用腳連接需自行使用跳線,連接方式是

DD 接

P22 的 PC4、dig3 接 PC3、dig2 接 PC2、dig1 接 PC1、dig0 接 PC0

,並僅開啟

SW50

電源開關。搭配使用『

七段顯示器 IC

,不用連接電腦直接進行測

試,當打開電源會直接動態顯示目前開機的持續時間,為方便觀察,時間會稍微加速顯示。 (註:單顆全彩 LED 因並接電源,所以會持續點亮)

(15)

『利用電腦硬體修乙級試場提供的 IC 練習』區塊擴充功能介紹:

上述資料均以歷年『工科技藝競賽電腦修護』職種試題為主,由於 ATMEGA8 韌體程式撰寫已經超過高職課綱範圍,也並非每位同學都要參加,所

以接下來是利用電腦硬體裝修乙級第一站試題『

硬乙試場版本 IC

,搭配『

USBIO.dll

,透過 VB 來進行相關輸出 I/O 控制,但在這練習之前,務必先徹

底了解電腦硬體裝修乙級第一站試題程式碼,保留原 Form1 表單,然後在右上專案視窗再新增 Form2 新表單,如左下圖,利用『

專案→Project1 屬性

→一般頁籤→啟動物件選擇 Form2

,如右下圖,讓程式一開始執行變成是先從 Form2 主表單開始,此範例原始檔案均蒐錄於光碟內,提供同學參考。

其實光這 16 顆 LED 就可以讓學生練習許久,透過 P13 的 74244 三態閘與 P12 的 74273 D 型正反器控制 16 位元的輸出,需融會貫通而非死背程式

碼而已,請參閱第 1~3 題範例,透過表單切換進行控制,簡易程式說明已加註於程式碼的註解中。

(16)

緊接著介紹是七段顯示器,實驗板為『

共陽

』連接方式,a~g 接 0 會亮,而共用腳是透過 AO4801(30V P-Channel MOSFET IC)驅動,當 V

GS

為負才會

導通,因為 Vs 已經接到 5V,所以 dig0~3 也是接 0(V

GS

<0) LED 才會亮,這要特別留意。因為 P12 的 74273 為 D 型正反器,可以鎖定資料,所以

P12 的

pin1~8 須使用跳線對應連接七段顯示器 P52 的 A~G 與 DP

(註:留意 P12 的 pin1 是在右邊,而 P52 的 A 靠左邊),而 P13 的 74244 是三態閘,無法鎖定資

料,僅適於當作掃描信號,須使用跳線將

P13 的 pin9~12 分別對應連接 P51 的 dig0~3 共用腳

。使用時

P10 與 P11

需套上短路套,而 P52 不可套上短路

套,上排需接到 P12,並僅開啟

SW10 與 SW50(所以全彩 LED 也會點亮)

電源開關,P12 與 P13 共可以控制 16 位元輸出裝置。

理論 AO4801 當 V

GS

為負才會導通,而 Vs 已經接到 5V,所以 dig0~3 也是接 1(V

GS

=0) LED 應該不會亮,但在實際測試中,會變成『微暗』現象,造

成在掃描時一直看到 8888,如右下圖所示,解決方式是將 RP10 排阻的共用腳增加開關(左下圖右側開關),當在掃描七段時,應將原本硬乙 16 顆 LED

關閉方可正常使用,但其他控制直接開啟即可,因為沒使用 AO4801 的 MOSFET,由於七段顯示器和單顆全彩 LED 共用電源,所以 WS2812B 會保持恆亮。

(17)

使用 8*32 在電腦硬體裝修乙級的 VB 透過 USB 介面傳輸

控制,透過示波器量測約 mS 為單位,掃描速度太慢,所以

僅能控制 8*8 點矩陣,否則閃爍太嚴重,那為何電腦修護技

藝競賽試題可以,那是因為掃描與傳送資料均利用 ATMEGA8

撰寫韌體程式直接控制,VB 僅是傳送欲顯示的相關訊息而

已。由於 P12 的 74273 為 D 型正反器,可以鎖定資料,所以

連接方式是使用跳線將

P22 上排的 S0~S6 對應連接到 P12 的

pin1~7 當作掃描

(註:留意 P12 的 pin1 是在右邊,而 P22 的

S0 靠左邊),而 P13 的 74244 是三態閘,無法鎖定資料,當

作資料須後送,並使用跳線將

P13 的 pin9~12 分別對應連接

P21 上排的 yD0~YD7 傳送資料

(註:留意 P13 的 pin1 是在右

邊,而 P21 的 yD0 靠左邊)。使用時

P23

需套上短路套,讓

U22 的 74244 致能腳 OE2 動作,而 P21 與 P22 不可套上短路

套,接到 P12 與 P13,並僅開啟

SW10 與 SW20

電源開關,

相關電路圖請參閱 102 年歷屆試題。

註:廣告燈字型碼可利用光碟內的『

點矩陣字型程式碼複製專用.xlsx

,填入 1 代表亮,且變為紅色背景,然後直接複製整列程式碼於 VB 即可。

(18)

接著介紹 Buzzer

蜂鳴器,透過不同脈波寬度與頻率產生不同聲響,連接方式是將

P50 的 Buzzer 接到 P52 的 AD0~AD7 任意一隻腳,並僅開啟

SW50(所

以全彩 LED 也會點亮)

電源開關,否則無法發出聲音,連接方式請參閱左下圖。

最後介紹 LCD 模組,初始設定操作請自行參閱相關書籍,由於 74244 無法鎖定資料,所以在此建議僅使用 74273(P12)即可,

DB7~DB4 利用跳線接

到 P12 的 pin8~pin5,而 RS、R/W、EN 三個控制信號分別接到 P12 的 pin3~pin1

,並僅開啟

SW10 與 SW30

電源開關,連接方式請參閱右上圖。由於僅

透過 4 位元傳輸,所以當要傳送資料時,要先送出最高 4 位元,然後再送出最低 4 位元方可,而 RS、R/W、EN 三個控制信號的設定方式也需了解才能

控制 LCD。

(19)

Form2 程式碼如下:

Dim c, no, b(99), n(4) As Integer

Dim d7(99, 1), scan7(3) As Integer '七段顯示器使用

Dim scan(32), e(32), d(10, 4) As Integer '8*8 廣告燈使用

Dim code, data As Integer 'LCD 使用

Private Sub Command1_Click(Index As Integer) '第 1~3 題

ex.Caption = Index '技巧,隱藏的標籤,讓另一表單也可以知道是按哪一個按鈕

Timer5.Interval = 0: Timer6.Interval = 0: Timer7.Interval = 0: Timer8.Interval = 0 If Index = 0 Then Form1.Timer1.Interval = 1000: Form1.Show

If Index = 1 Then Form1.Timer1.Interval = 200: Form1.Show If Index = 2 Then Form1.Timer2.Interval = 200: Form1.Show End Sub

Private Sub Command4_Click() '第 4 題:七段顯示器同時顯示 8888 數字

Timer5.Interval = 0: Timer6.Interval = 0: Timer7.Interval = 0: Timer8.Interval = 0 If OpenUsbDevice(&H1234, &H6789) Then

OutDataCtrl 0, 32 OutDataCtrl 0, 48 OutDataCtrl 0, 0 End If

End Sub

Private Sub Command5_Click() '第 5 題:七段顯示器同時每隔 1 秒依序顯示 0-9

c = 0

Timer5.Interval = 1000: Timer6.Interval = 0: Timer7.Interval = 0: Timer8.Interval = 0 End Sub

Private Sub Timer5_Timer() '第 5 題:七段顯示器同時每隔 1 秒依序顯示 0-9 數

If OpenUsbDevice(&H1234, &H6789) Then OutDataCtrl b(c), 32 OutDataCtrl b(c), 48 OutDataCtrl 0, 0 c = (c + 1) Mod 10 End If End Sub

Private Sub Command6_Click() '第 6 題:七段顯示器固定顯示『2468』數字,需

利用掃描

c = 0

Timer5.Interval = 0: Timer6.Interval = 10: Timer7.Interval = 0: Timer8.Interval = 0 End Sub

Private Sub Timer6_Timer() '第 6 題:七段顯示器固定顯示『2468』數字,需利用

掃描

display = "8642" '要相反,程式較易撰寫

If OpenUsbDevice(&H1234, &H6789) Then

OutDataCtrl b(Mid(display, c + 1, 1)), 32 '74273D 型正反器資料先送,因為可 LATCH OutDataCtrl b(Mid(display, c + 1, 1)), 48 OutDataCtrl scan7(c), 0 '再送出掃描信號 c = c + 1 If c = 4 Then c = 0 End If End Sub

Private Sub Command7_Click() '第 7 題:七段顯示器顯示 0000~9999,隨時可跳出

c = 0

Timer5.Interval = 0: Timer6.Interval = 0: Timer7.Interval = 10: Timer8.Interval = 0 End Sub

Private Sub Timer7_Timer() '第 7 題:七段顯示器顯示 0000~9999

If OpenUsbDevice(&H1234, &H6789) Then c = c + 1 no = c n(0) = b(no Mod 10) '個位數 no = no \ 10 n(1) = b(no Mod 10) '十位數 no = no \ 10 n(2) = b(no Mod 10) '百位數 no = no \ 10 n(3) = b(no Mod 10) '千位數 For j = 1 To 10 For k = 0 To 3

(20)

OutDataCtrl n(k), 32 '可省略 OutDataCtrl n(k), 48 '74273D 型正反器資料先送,因為可 LATCH OutDataCtrl scan7(k), 0 '再送出掃描信號 delay (10) Next k Next j OutDataCtrl 0, 32 OutDataCtrl 0, 48 OutDataCtrl 0, 0 End If End Sub

Private Sub Command8_Click() '第 8 題:七段顯示器每隔 0.2 秒顯示口字動畫

c = 0

Timer5.Interval = 0: Timer6.Interval = 0: Timer7.Interval = 0: Timer8.Interval = 200 End Sub

Private Sub Timer8_Timer() '七段顯示器每隔 0.2 秒顯示口字動畫

If OpenUsbDevice(&H1234, &H6789) Then

OutDataCtrl d7(c, 0) + 128, 48 '74273D 型正反器資料先送,因為可 LATCH

OutDataCtrl d7(c, 1), 0 '再送出掃描信號

c = (c + 1) Mod 12 '因為 口 有 12 個狀態

End If End Sub

Private Sub Command9_Click() '第 9 題:8*8 點矩陣顯示 8*8 自訂圖案

If OpenUsbDevice(&H1234, &H6789) Then

For kk = 0 To 60 '決定停留時間長度

For i = 9 To 17 'i = 0 To 31 顯示全部圖形,但因為掃描太慢,無法造成視覺暫

留,若改 i = 9 To 18 可看到第二個圖形,會有閃爍是正常

OutDataCtrl 0, 32 '由於 scan 是透過 74138 解碼電路,所以必須先送,並透

過 74273 鎖住資料

OutDataCtrl scan(i), 48 '先送接點矩陣 scan

OutDataCtrl e(i), 0 '再送接點矩陣資料,兩者若相反,雜訊較大

Next i Next End If End Sub

Private Sub Command10_Click() '第 10 題:8*8 廣告燈每隔約 1 秒依序顯示 0~9 數

字,會有閃爍是正常

If OpenUsbDevice(&H1234, &H6789) Then For kk = 0 To 9

For i = 0 To 15 For h = 0 To 4

OutDataCtrl 0, 32 '由於 scan 是透過 74138 解碼電路,所以必須先送,並透

過 74273 鎖住資料

OutDataCtrl scan(h), 48 '先送接點矩陣 scan

OutDataCtrl d(kk, h), 0 '再送接點矩陣資料,兩者若相反,雜訊較大 Next h Next i Next kk End If End Sub

Private Sub Command11_Click() '第 11 題:Buzzer 蜂鳴器發出三種聲音,Buzzer

接 AD0~AD7 任意一隻

If OpenUsbDevice(&H1234, &H6789) Then

R1 = 25 '發出第一種方波音調 R2 = 1 For i = 0 To R1 For j = 0 To R2 OutDataCtrl 0, 0 '送出低準位信號 Next j For j = 0 To R2 OutDataCtrl 255, 0 '送出高準位信號 Next j Next i R1 = 25 '發出第二種方波音調 R2 = 10 For i = 0 To R1 For j = 0 To R2 OutDataCtrl 0, 0 '送出低準位信號 Next j For j = 0 To R2 OutDataCtrl 255, 0 '送出高準位信號

(21)

Next j Next i R1 = 25 '發出第三種方波音調 R2 = 25 For i = 0 To R1 For j = 0 To R2 OutDataCtrl 0, 0 '送出低準位信號 Next j For j = 0 To R2 OutDataCtrl 255, 0 '送出高準位信號 Next j Next i End If End Sub

Private Sub Command12_Click() '第 12 題:LCD 顯示"Hello LCD"+今天日期

'四位元 LCD 初始狀態

wrins (&H30): delay (50) wrins (&H30): delay (10) wrins (&H30): delay (10) wrins (&H20): delay (10) wrins (&H20): delay (10) wrins (&H80): delay (10)

wrins (&H0): wrins (&H80) '令顯示器 OFF

wrins (&H0): wrins (&H10) '清除顯示

wrins (&H0): wrins (&H60) '令顯示器 ON,但游標不顯示

wrins (&H0): wrins (&HC0) '令 LCD 每收到 1BYTE 後,AC 值自動加 1

wrins (&H80) '游標移動到第 1 行,第 1 個字

wrins (&H0) '因為是四位元傳輸,所以游標位置要分兩次傳送

dd = "Hello LCD Module" For i = 1 To Len(dd)

wrdata (Val(Asc(Mid(dd, i, 1)))) '顯示 Hello LCD 字串內容

Next i

wrins (&HC0) '游標移動到第 2 行,第 1 個字

wrins (&H0) '因為是四位元傳輸,所以游標位置要分兩次傳送

dd = "DATE:" & Str(Date) For i = 1 To Len(dd)

wrdata (Val(Asc(Mid(dd, i, 1)))) '顯示今天日期

Next i End Sub

Private Sub wrins(code As Integer) 'LCD 使用,把『指令碼』送入 LCD

If OpenUsbDevice(&H1234, &H6789) Then OutDataCtrl 0, 32 'RS=0、RW=0、EN=0

OutDataCtrl 0, 48 'RS=0、RW=0、EN=0

OutDataCtrl 1, 32 'RS=0、RW=0、EN=1

OutDataCtrl 1, 48 'RS=0、RW=0、EN=1

OutDataCtrl code + 1, 32

OutDataCtrl code + 1, 48 '加 1 是因為 RS=0、RW=0、EN=1

OutDataCtrl 0, 32 'RS=0、RW=0、EN=0

OutDataCtrl 0, 48 'RS=0、RW=0、EN=0

End If End Sub

Private Sub wrdata(data As Integer) 'LCD 使用,把『資料』送入 LCD

If OpenUsbDevice(&H1234, &H6789) Then OutDataCtrl 4, 32 'RS=1、RW=0、EN=0 OutDataCtrl 4, 48 'RS=1、RW=0、EN=0 OutDataCtrl 5, 32 'RS=1、RW=0、EN=1 OutDataCtrl 5, 48 'RS=1、RW=0、EN=1 OutDataCtrl (data \ 16) * 16 + 5, 32

OutDataCtrl (data \ 16) * 16 + 5, 48 'RS=0、RW=0、EN=0,先送高 4 位元資料

OutDataCtrl 4, 32 'RS=1、RW=0、EN=0 OutDataCtrl 4, 48 'RS=1、RW=0、EN=0 OutDataCtrl 4, 32 'RS=1、RW=0、EN=0 OutDataCtrl 4, 48 'RS=1、RW=0、EN=0 OutDataCtrl 5, 32 'RS=1、RW=0、EN=1 OutDataCtrl 5, 48 'RS=1、RW=0、EN=1

OutDataCtrl (data Mod 16) * 16 + 5, 32 '加 5 是因為 RS=1、RW=0、EN=1

OutDataCtrl (data Mod 16) * 16 + 5, 48 'RS=0、RW=0、EN=0,後送低 4 位元資料

OutDataCtrl 4, 32 'RS=1、RW=0、EN=0

OutDataCtrl 4, 48 'RS=1、RW=0、EN=0

End If End Sub

(22)

For i = 0 To R For j = 0 To R Next j Next i End Sub

Private Sub Command0_Click() '離開

End End Sub

Private Sub Form_Load() scan7(0) = &HE scan7(1) = &HD scan7(2) = &HB scan7(3) = &H7 b(0) = 192 b(1) = 249 b(2) = 164 b(3) = 176 b(4) = 153 b(5) = 146 b(6) = 130 b(7) = 216 b(8) = 128 b(9) = 144 '七段顯示器顯示口字動畫 d7(0, 0) = 28 '上口 d7(0, 1) = scan7(0) d7(1, 0) = 28 '上口 d7(1, 1) = scan7(1) d7(2, 0) = 28 '上口 d7(2, 1) = scan7(2) d7(3, 0) = 28 '上口 d7(3, 1) = scan7(3) d7(4, 0) = 35 '下口 d7(4, 1) = scan7(3) d7(5, 0) = 35 '下口 d7(5, 1) = scan7(2) d7(6, 0) = 35 '下口 d7(6, 1) = scan7(1) d7(7, 0) = 35 '下口 d7(7, 1) = scan7(0) d7(8, 0) = 28 '上口 d7(8, 1) = 0 d7(9, 0) = 35 '下口 d7(9, 1) = 0 d7(10, 0) = 28 '上口 d7(10, 1) = 0 d7(11, 0) = 35 '下口 d7(11, 1) = 0 '8*8 廣告燈使用的字型,請配合光碟『點矩陣字型程式碼複製專用.xlsx』檔案 d(0, 0) = 126: d(0, 1) = 129: d(0, 2) = 129: d(0, 3) = 129: d(0, 4) = 126: d(1, 0) = 0: d(1, 1) = 130: d(1, 2) = 255: d(1, 3) = 128: d(1, 4) = 0: d(2, 0) = 194: d(2, 1) = 161: d(2, 2) = 145: d(2, 3) = 137: d(2, 4) = 134: d(3, 0) = 65: d(3, 1) = 129: d(3, 2) = 137: d(3, 3) = 149: d(3, 4) = 99: d(4, 0) = 56: d(4, 1) = 36: d(4, 2) = 34: d(4, 3) = 255: d(4, 4) = 32: d(5, 0) = 79: d(5, 1) = 137: d(5, 2) = 137: d(5, 3) = 137: d(5, 4) = 113: d(6, 0) = 124: d(6, 1) = 146: d(6, 2) = 145: d(6, 3) = 145: d(6, 4) = 96: d(7, 0) = 1: d(7, 1) = 1: d(7, 2) = 249: d(7, 3) = 5: d(7, 4) = 3: d(8, 0) = 102: d(8, 1) = 153: d(8, 2) = 145: d(8, 3) = 153: d(8, 4) = 102: d(9, 0) = 6: d(9, 1) = 137: d(9, 2) = 137: d(9, 3) = 73: d(9, 4) = 62: d(10, 0) = 0: d(10, 1) = 102: d(10, 2) = 102: d(10, 3) = 0: d(10, 4) = 0

e(0) = 63: e(1) = 161: e(2) = 225: e(3) = 225: e(4) = 225: e(5) = 225: e(6) = 161: e(7) = 63: e(8) = 0: e(9) = 6: e(10) = 5: e(11) = 9: e(12) = 145: e(13) = 225: e(14) = 225: e(15) = 145: e(16) = 9: e(17) = 5: e(18) = 6: e(19) = 0: e(20) = 192: e(21) = 192: e(22) = 248: e(23) = 136: e(24) = 143: e(25) = 129: e(26) = 143: e(27) = 136: e(28) = 248: e(29) = 192: e(30) = 192: e(31) = 0

scan(0) = 8: scan(1) = 9: scan(2) = 10: scan(3) = 11: scan(4) = 12: scan(5) = 13: scan(6) = 14: scan(7) = 15: scan(8) = 16: scan(9) = 17: scan(10) = 18: scan(11) = 19: scan(12) = 20: scan(13) = 21: scan(14) = 22: scan(15) = 23: scan(16) = 32: scan(17) = 33: scan(18) = 34: scan(19) = 35: scan(20) = 36: scan(21) = 37: scan(22) = 38: scan(23) = 39: scan(24) = 64: scan(25) = 65: scan(26) = 66: scan(27) = 67: scan(28) = 68: scan(29) = 69: scan(30) = 70: scan(31) = 71

c = 0 End Sub

(23)

Form1 程式碼如下:

Dim a, b(99), c As Integer

Private Sub Command1_Click(Index As Integer) a = Index

c = 0 End Sub

Private Sub display(no) For i = 0 To 7

If no Mod 2 = 1 And a = 1 Then G(i).FillColor = RGB(0, 255, 0) If no Mod 2 = 1 And a = 2 Then R(i).FillColor = RGB(255, 0, 0) no = no \ 2

Next i End Sub

Private Sub Timer1_Timer() b(0) = &H18

b(1) = &H24 b(2) = &H42 b(3) = &H81

Label1.Caption = vbCrLf & "Current Time:" & Time$ For i = 0 To 7

G(i).FillStyle = 1 R(i).FillStyle = 1 Next i

If OpenUsbDevice(&H1234, &H6789) Then

For i = 0 To 7 G(i).FillColor = RGB(0, 128, 0) R(i).FillColor = RGB(128, 0, 0) G(i).FillStyle = 0 R(i).FillStyle = 0 Next i OutDataCtrl 0, 0 OutDataCtrl 0, 16

If Form2.ex.Caption = 0 And a = 1 Then OutDataCtrl b(c), 0: display (b(c)) '第 1 題

If Form2.ex.Caption = 0 And a = 2 And c <= 7 Then '第 1 題

OutDataCtrl 2 ^ c, 32 OutDataCtrl 2 ^ c, 48 display (2 ^ c) End If

If Form2.ex.Caption = 1 Then '第 2 題,由於 74273 可以鎖定資料,紅色 LED 一

定要先亮,方可同時亮

OutDataCtrl 2 ^ (7 - c), 32 OutDataCtrl 2 ^ (7 - c), 48 no = 2 ^ (7 - c)

For i = 0 To 7

If no Mod 2 = 1 Then R(i).FillColor = RGB(255, 0, 0) no = no \ 2

Next i

OutDataCtrl 2 ^ c, 0 no = 2 ^ c

For i = 0 To 7

If no Mod 2 = 1 Then G(i).FillColor = RGB(0, 255, 0) no = no \ 2

Next i End If End If

If a = 3 Then CloseUsbDevice: a = 99: Timer1.Interval = 0: Unload Me If Form2.ex.Caption = 0 Then If c > 15 Then c = 15 Else c = c + 1 End If

(24)

End If

If Form2.ex.Caption = 1 Then c = (c + 1) Mod 8 End Sub

Private Sub Timer2_Timer() If Form2.ex.Caption = 2 Then

Label1.Caption = vbCrLf & "Current Time:" & Time$ For i = 0 To 7

G(i).FillStyle = 1 R(i).FillStyle = 1 Next i

If OpenUsbDevice(&H1234, &H6789) Then For i = 0 To 7 G(i).FillColor = RGB(0, 128, 0) R(i).FillColor = RGB(128, 0, 0) G(i).FillStyle = 0 R(i).FillStyle = 0 Next i OutDataCtrl 0, 0 OutDataCtrl 0, 16 If c <= 7 Then OutDataCtrl 2 ^ (7 - c), 0 no = (2 ^ (7 - c)) For i = 0 To 7

If no Mod 2 = 1 Then G(i).FillColor = RGB(0, 255, 0) no = no \ 2 Next i End If If c > 7 Then OutDataCtrl 2 ^ (15 - c), 32 OutDataCtrl 2 ^ (15 - c), 48 no = 2 ^ (15 - c) For i = 0 To 7

If no Mod 2 = 1 Then R(i).FillColor = RGB(255, 0, 0) no = no \ 2

Next i End If End If

If a = 3 Then CloseUsbDevice: a = 99: Timer2.Interval = 0: Unload Me

c = (c + 1) Mod 16 End If

參考文獻

相關文件

由三位選手共同集體創作一套事先公開且具創新功能之機械(電)作品,工

課程利用雲端學習平台 OpenEdu 從最基礎開始說明 Python 的語 法與應用,配合 Quiz in Video

阿吉老師將簡介 micro:bit 開發程式環境,並分享 micro:bit 內建感測器程式編寫、數位/類比信號讀取及寫入,並了解 如何用 micro:bit 連接電子模組編寫程式進行機電整合。.

教育部資通訊科技人才培育先導型計畫 實習零 實習零 實習零 實習零 MATLAB/Simulink使用說明 使用說明 使用說明 使用說明 25 圖示.

5.電視表現的形式與風格 從電視螢光幕談起,介紹電視如何傳送畫 面,以及電視的節目內容有哪些風格 6.電視科技發展

• 承接視覺藝術科作為高中課程的 選修科,並繼續推動本科課程的 發展,教育局於2020/21學年開

東京將於明年 2020 年舉辦東京奧運,根據日本新聞報導,奧運主場館「國立競技 場」已在 11 月 30

進而能自行分析、設計與裝配各 種控制電路,並能應用本班已符 合機電整合術科技能檢定的實習 設備進行實務上的實習。本課程 可習得習得氣壓-機構連結控制