【文章內(nèi)容簡介】
圖 按鍵過程 獨立式鍵盤的接口電路 獨立式鍵盤的接口電路:在單片機應(yīng)用系統(tǒng)中,有時只需要幾個簡單的按鍵向系統(tǒng)輸入信息。這時,可將每個按鍵直接接在一根 I/O 接口線上,這種連接方式的鍵盤稱為獨立式鍵盤。如圖 所示,每個獨立按鍵單獨占有一根 I/O 接口線,每根 I/O 接口線的工作狀態(tài)不會影響到其他 I/O 接口線。這種按鍵接口電路配置靈活,硬件結(jié)構(gòu)簡單,但每個按鍵必須占用一根 I/O 線, I/O 接口線浪費較大。故只在按鍵數(shù)量不多時采用這種按鍵電路。 在此電路中, 按鍵輸入都采用低電平有效。上拉電阻保證了按鍵斷開時, I/O 接口線有確定的高電平。當 I/O 接口內(nèi)部有上拉電阻時,外電路可以不配置上拉電阻。 沈陽大學(xué) 10 圖 獨立式鍵盤電路 七段 LED顯示工作原理 LED 顯示器是由發(fā)光二極管顯示字段的 MCS51 單片機輸出設(shè)備。單片機應(yīng)用系統(tǒng)常采用七段 LED 數(shù)碼管作為顯示器,這重顯示器具有耗電低、配置靈活、線路簡單、安裝方便、耐轉(zhuǎn)動、價格低廉且壽命長等優(yōu)點。因此應(yīng)用比較廣泛。 LED 數(shù)碼管顯示器可以分為共陰極和共陽極兩種結(jié)構(gòu)。 (1)共陰極結(jié)構(gòu):如果所有 的發(fā)光二極管的陰極接在一起,稱為共陰極結(jié)構(gòu),則數(shù)碼顯示段輸入高電平有效,當某段輸入高電平該段便發(fā)光,如圖 所示。 (2)共陽極結(jié)構(gòu):如果所有的發(fā)光二極管的陽極接在一起,稱為共陽極結(jié)構(gòu),則數(shù)碼顯示段輸入低平有效,當某段輸入低電平該段便發(fā)光,如圖 所示。 a .共陰極 b .共陽極 圖 七段 LED 顯示器 ( 3) LED 動態(tài)顯示接口: LED 動態(tài)顯示就是利用單片機依次輸出每一位數(shù)碼管K1K2K3K4K5K6K7K8+5V89S51沈陽大學(xué) 11 的段選碼和對應(yīng)于該位 數(shù)碼管的位選控制信號,一位一位輪流點亮各七段數(shù)碼管。對每位數(shù)碼管來說,每隔一段時間點亮一次,如此循環(huán)。利用人眼的“視覺暫留”效應(yīng),只要每位顯示間隔足夠短就可以給人以同時顯示的感覺。在動態(tài)顯示方式中,同一時刻,只有一位 LED 數(shù)碼管在顯示,其他各位是關(guān)閉的。在段選碼和位選碼每送出一次后,應(yīng)保持 1ms 左右,這個時間應(yīng)根據(jù)實際情況而定。不能太小,因而發(fā)光二極管從導(dǎo)通到發(fā)光有一定的延時,導(dǎo)通時間太小,發(fā)光太弱人眼無法看清。但也不能太大,因為畢竟要受限于臨界閃爍頻率,而且此時間越長,占用 CPU 時間也越多。 采用動態(tài)顯示 方式比較節(jié)省 I/O 接口,硬件電路也較靜態(tài)顯示方式簡單,但其亮度不如靜態(tài)顯示方式,而且在顯示位數(shù)較多時, CPU 要依次掃描,占用 CPU 較多的時間。 用 MCS51 單片機構(gòu)建七段數(shù)碼管動態(tài)顯示系統(tǒng)時, 4 位數(shù)碼管均采用共陰極LED, p0 接口作為段選碼輸出口, 8 路驅(qū)動采用 74LS244 總線驅(qū)動器作為字形驅(qū)動芯片,經(jīng)過 8路驅(qū)動電路后接至數(shù)碼管的各段,字形驅(qū)動輸出 0時發(fā)光。 P2 接口作為位選碼輸出口, 4 路驅(qū)動采用 74LS07( OC 門驅(qū)動器),當 C 接口線輸出 1 時,選通相應(yīng)位的數(shù)碼管工作。 電路原理 電路的核心是 89S51 單片機,其內(nèi)部帶有 4KB 的 FlashROM,無須擴展程序存儲器;電腦沒有大量的運算和暫存數(shù)據(jù),現(xiàn)有的 128B 片內(nèi) RAM 已能滿足要求,也不必擴展片外 RAM,系統(tǒng)配備 4位 LED 顯示和 2個單接口鍵盤,采用 P0 接口外接 8 路反相三態(tài)緩沖器 74LS244 作 LED 動態(tài)掃描的段碼控制驅(qū)動信號 ,用 P1 接口的 74LS07做為 4位 LED的位選信號驅(qū)動口, LED 共陰極端與 74LS07 的輸出端相連;按鍵接口,由 , 來完成。 P3 口接交通指示燈,整個系統(tǒng)采用查表的方發(fā),將 交通燈的顯示情況和數(shù)碼管的計時情況,分別以代碼的形式送到指示燈和 LED 數(shù)碼管,啟動定時器,同時調(diào)用顯示程序,和查詢按鍵。利用軟件計數(shù)器的方法計時一秒,利用中斷的方法使計時時間循環(huán),當按下應(yīng)急按鍵時停止定時器,送一個代碼使兩個方向都亮紅燈,按下一個按鍵時啟動定時器,恢復(fù)循環(huán)。如圖 所示 沈陽大學(xué) 12 E A /V P31X119X218R E S E T9RD17WR16IN T 012IN T 113T014T115P 1 01P 1 12P 1 23P 1 34P 1 45P 1 56P 1 67P 1 78P 0 039P 0 138P 0 237P 0 336P 0 435P 0 534P 0 633P 0 732P 2 021P 2 122P 2 223P 2 324P 2 425P 2 526P 2 627P 2 728P S E N29A L E /P30T X D11R X D10VCC40GND20U18 9 S 5 11G1A121 Y 118A241 Y 216A361 Y 314A481 Y 412VCC20GND102G19B1112 Y 19B2132 Y 27B3152 Y 35B4172 Y 43U27 4 L S 2 4 4R1R E S 2R2R E S 2R3R E S 2R4R E S 2R5R E S 2R6R E S 2R7R E S 2R8R E S 2R9R E S 2R 1 0R E S 2R 1 1R E S 2R 1 2R E S 2R 1 3R E S 2R 1 4R E S 2R 1 5R E S 2R 1 6R E S 2R 1 7R E S 2R 1 9R E S 2R 2 0R E S 2S3 S W P BS1S W P BS2S W P BD1LEDD2LEDD3LEDD4LEDD5LEDD6LEDD7LEDD8LEDC1C A P1A11Y22A32Y43A53Y6GND74Y84A95Y105A116Y126A13V C C14U3LEDe1d2 3c4dp5b6a78f9g10abcdefgD 1 2LEDe1d2 3c4dp5b6a78f9g10abcdefgD 1 3LEDe1d2 3c4dp5b6a78f9g10abcdefgD 1 4LEDe1d2 3c4dp5b6a78f9g10abcdefgD 1 5LEDV C CV C CV C CV C C 圖 電路原理圖 沈陽大學(xué) 13 4 軟件設(shè)計 定時1秒的方法 定時方法我們采用軟硬件結(jié)合的方法,在主程序中設(shè)定一個初值為 20 的軟件計數(shù)器使定時器 0 工作于方式 1 定時 50 毫秒,這樣每當 T0 到 50 毫秒時 CPU 就響應(yīng)它的溢出中斷請求,進入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中, CPU 先使軟件計數(shù)器減 1,然后判斷它是否為零。為零表示 1秒已到。 定時器初值計算 定時器工作時必須給計數(shù)器送初值,將這個值送到 TH 和 TL 中。他是以加法記數(shù)的,并能從全 1 到全 0 時自動產(chǎn)生溢出中斷請求。因此工作于方式 1,定時器為16 位計數(shù)器其定時時間由下式計算: 定時時間 =( 216- X)振蕩周期 12(或) X=216-定時時間/振蕩周期 12 式中 x 為 T0 的初始值,該值和計數(shù)器工作方式有關(guān)。 如單片機的主脈沖頻率為12MHZ ,經(jīng)過12分頻 方式 0 定時時間= 213 1微秒= 毫秒 方式 1 定時時間= 216 1微秒= 毫秒 秒鐘已經(jīng)超過了計數(shù)器的最大定時間,所以我們只有采用定時器和軟件相結(jié)合的辦法才能解決這個問題,定時器需定時 50 毫秒,故T 0 工作于方式 1,定時 20次,就可定時一秒。 主程序模塊 主程序初始化和按鍵控制,首先將時間、中斷、次數(shù)、和顯示分別進行 初始化,然后啟動定時器對時間進行判斷,將時間送數(shù)據(jù)緩沖區(qū),調(diào)用顯示程序,同時掃描按鍵程序,用無條件跳轉(zhuǎn)指令返回 , 再調(diào)用顯示程序,如此周而復(fù)始的循環(huán),如圖 所示 沈陽大學(xué) 14 保存表地址查時間表查燈狀態(tài)表掃描按鍵調(diào)用顯示啟動T0顯示初始化次數(shù)初始化中斷初始化T0初始化開始 圖 主程序流程圖 主程序: 初值: X=216 -定時時間/振蕩周期 12= 216 - 50ms/1us=15536=3CB0H,TH0=3CH , TL0=0B0H。 ORG 0000H AJMP START ORG 0030H START: MOV TMOD, 01H。 令T 0