基于單片機(jī)的鍵盤(pán)和LED數(shù)碼管工作原理_第1頁(yè)
基于單片機(jī)的鍵盤(pán)和LED數(shù)碼管工作原理_第2頁(yè)
基于單片機(jī)的鍵盤(pán)和LED數(shù)碼管工作原理_第3頁(yè)
基于單片機(jī)的鍵盤(pán)和LED數(shù)碼管工作原理_第4頁(yè)
基于單片機(jī)的鍵盤(pán)和LED數(shù)碼管工作原理_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于單片機(jī)的鍵盤(pán)和LED數(shù)碼管工作原理摘要:鍵盤(pán)和顯示器是微機(jī)最常見(jiàn)的輸入輸出設(shè)備。本文介紹鍵盤(pán)和LED顯示器的基本工作原理,并給出在8051基礎(chǔ)上的電路結(jié)構(gòu)及C語(yǔ)言代碼。關(guān)鍵字:鍵盤(pán),LED,單片機(jī) 鍵盤(pán)是微型計(jì)算機(jī)系統(tǒng)中最基本、最常見(jiàn)的輸入設(shè)備。在各種工業(yè)過(guò)程的計(jì)算機(jī)控制和監(jiān)視系統(tǒng)中,廣泛應(yīng)用發(fā)光二極管向用戶提供提示。由發(fā)光二極管可以構(gòu)成7段/8段LED顯示器,用于顯示工作狀態(tài)、參數(shù)數(shù)值和故障位置。一.鍵盤(pán)的工作原理 鍵盤(pán)實(shí)際上是一組按鍵開(kāi)關(guān)的集合,平時(shí)按鍵開(kāi)關(guān)總是處于斷開(kāi)狀態(tài),當(dāng)按下鍵時(shí)它才閉合。(一)鍵盤(pán)的基本介紹1.鍵盤(pán)的功能 鍵盤(pán)接口必須具有4個(gè)基本功能:1. 去抖動(dòng)2. 防串鍵3

2、. 識(shí)別被按鍵并產(chǎn)生與之對(duì)應(yīng)的鍵碼4. 釋放鍵 而鍵碼產(chǎn)生后如何去實(shí)現(xiàn)按鍵的特定功能,是操作系統(tǒng)和應(yīng)用程序的任務(wù)2.鍵盤(pán)的分類 根據(jù)按鍵開(kāi)關(guān)的排列方式,鍵盤(pán)可分為線性鍵盤(pán)和矩陣鍵盤(pán)。 線性鍵盤(pán):硬件連接和接口程序都很簡(jiǎn)單,只適用于按鍵少的場(chǎng)合,因?yàn)榫€性鍵盤(pán)有多少按鍵,就需要有多少根連線與微機(jī)輸入端口相連。 矩陣鍵盤(pán):將按鍵排成n行m列,每個(gè)按鍵占據(jù)行列的一個(gè)交點(diǎn),需要的外連接線數(shù)目是m+n,而容許的最大按鍵數(shù)是m*n,顯然可以減少微機(jī)接口的連線,是一般微機(jī)常采用的鍵盤(pán)結(jié)構(gòu)。3.鍵盤(pán)與單片機(jī)的連接方式 矩陣鍵盤(pán)的連接方法有多種??芍苯舆B接于單片機(jī)的I/O口線;可利用擴(kuò)展的并行I/O口連接;也可利

3、用可編程的鍵盤(pán)、顯示接口芯片(如8297)進(jìn)行連接等等。其中,利用擴(kuò)展的并行I/O口連接方便靈活,在單片機(jī)應(yīng)用系統(tǒng)中比較常用。下圖就是通過(guò)8255A芯片擴(kuò)展的并行I/O口連接的矩陣鍵盤(pán)。圖 1 微處理器和鍵盤(pán)接口接線示意(二)鍵盤(pán)的工作過(guò)程 被按鍵的識(shí)別和鍵碼的產(chǎn)生是鍵盤(pán)接口要解決的主要問(wèn)題,可以通過(guò)軟硬結(jié)合的方法來(lái)解決。通常識(shí)別被按鍵有兩種方法:行掃描法和線反轉(zhuǎn)法。 實(shí)際微型計(jì)算機(jī)系統(tǒng)中以行掃描法應(yīng)用最廣,其基本思想是:由程序?qū)︽I盤(pán)進(jìn)行逐行掃描,通過(guò)檢測(cè)到的列狀態(tài)來(lái)確定閉合鍵,需要輸出端口、輸入端口各1個(gè)。 下面由以并行接口芯片8255A組成的微機(jī)與鍵盤(pán)接口來(lái)說(shuō)明非編碼鍵盤(pán)采用行掃描法進(jìn)行按

4、鍵識(shí)別并產(chǎn)生編碼的原理。 設(shè)8255的端口地址為:4043H,鍵盤(pán)的行線接在PA0PA3上,列線接在PB0PB3上,接口示意如圖1,PA端口定義為輸出端口,PB端口定義為輸入端口。掃描的步驟如下:(1)快速檢查是否有鍵按下。使PA0PA3輸出全為0,讀取PB0PB3上數(shù)據(jù),只要有一位為0,必定有某鍵被按下。(2)去抖動(dòng)。延時(shí)20ms左右,等待按鍵通、斷引起的抖動(dòng)消失,然后再判斷具體按下的到底是哪個(gè)鍵。(3)確定被按下的鍵。從0行開(kāi)始,順序逐行掃描,即該行輸出0。每掃描一行,讀入列線數(shù)據(jù),從0列開(kāi)始,逐列檢查,判斷是否有輸入為0的列,若無(wú),則順序掃描下一行,并檢查各列;若檢查到某列線為0,則該行

5、、列交點(diǎn)上的按鍵為被按下的鍵。 具體控制程序請(qǐng)見(jiàn)附錄1。二.LED數(shù)碼管顯示器的工作原理(一)LED顯示器的基本介紹 一般8段LED顯示器的內(nèi)部結(jié)構(gòu)和外部引腳如圖2所示。每段都是一個(gè)發(fā)光二極管,通過(guò)點(diǎn)亮不同的字段,可顯示09和AF等不同字符。其內(nèi)部各發(fā)光二極管之間的連接方法有共陰極和共陽(yáng)極兩種。如圖2所示。圖2 LED顯示器內(nèi)部結(jié)構(gòu)(二)LED顯示器工作過(guò)程 為了達(dá)到顯示某一波形的目的,需要從接口中輸出不同的數(shù)碼,這些數(shù)碼稱為字形碼或段碼。采用共陽(yáng)極接法時(shí),得到低電平信號(hào)的引腳對(duì)應(yīng)的段被點(diǎn)亮;采用共陰極接法時(shí),得到高電平信號(hào)的引腳對(duì)應(yīng)的段被點(diǎn)亮。所以對(duì)于共陰極和共陽(yáng)極兩種不同的接法,為了顯示同

6、一個(gè)字符,對(duì)應(yīng)的顯示段碼是不同的。在8段和8位字節(jié)數(shù)有如下對(duì)應(yīng)關(guān)系時(shí),ag分別接數(shù)據(jù)線D0D5,dp接D7,圖3給出了這兩種接法的8段LED顯示器字符段碼表。圖3 8段LED顯示器字符段碼表 比如,為了顯示5,采用共陰極接法(1是亮),應(yīng)該使D7D0=01101101B;采用共陽(yáng)極接法,D7D0=10010010B。 實(shí)際使用的LED數(shù)碼管LED數(shù)碼顯示器位數(shù)較多,為了簡(jiǎn)化線路,降低成本,對(duì)于多位LED數(shù)碼顯示器,通常采用動(dòng)態(tài)掃描顯示方法,即逐個(gè)地循環(huán)點(diǎn)亮各位顯示器。這樣雖然在任意時(shí)刻只有一位顯示器被點(diǎn)亮,但是由于人眼具有視覺(jué)殘留效應(yīng),看起來(lái)與全部顯示器持續(xù)點(diǎn)亮的效果基本一樣(在亮度上有差別)

7、。圖4 8段動(dòng)態(tài)LED顯示器接口原理三.鍵盤(pán)和顯示器與單片機(jī)8051 的連接圖5 矩陣鍵盤(pán)與8051芯片連接原理圖6 LED顯示器與8051連接原理附錄1:矩陣鍵盤(pán)與數(shù)碼管顯示控制程序排線連接方法:JP8(P1)與JP4(矩陣鍵盤(pán)接口)連接;P0與JP3(靜態(tài)數(shù)碼管)連接。矩陣鍵盤(pán)定義:P1.1-P1.4為列線;P1.4-P1.7為行線;程序:#include #include #define uchar unsigned char#define uint unsigned intuchar dis_buf; /顯示緩存uchar temp;uchar key; /鍵順序嗎void delay

8、0(uchar x); /x*0.14MS#define delayNOP(); _nop_();_nop_();_nop_();_nop_();/ 此表為 LED 的字模 0 12 3 4 56 78 9 a b cd e funsigned char code LED7Code = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71;/*/* */* 延時(shí)子程序 */* */*/void delay(uchar x) uchar j; while(x-)!=0) for(j=0;j4

9、)|0xF0); if(temp=1) / p1.4 被拉低 key=0; else if(temp=2) / p1.5 被拉低 key=1; else if(temp=4) / p1.6 被拉低 key=2; else if(temp=8) / p1.7 被拉低 key=3; else key=16; P1=0x0F; /低四位輸入 列為高電平 行為低電平 delay(1);temp=P1; /讀P1口 temp=temp&0x0F; temp=(temp|0xF0); if(temp=2) / p1.1 被拉低 key=key+0; else if(temp=4) / p1.2 被拉低 k

10、ey=key+4; else if(temp=8)/ p1.3 被拉低 key=key+8; else key=16; dis_buf = key; /鍵值入顯示緩存 dis_buf = dis_buf & 0x0f; /*/* */*判斷鍵是否按下 */* */*/ void keydown(void) P1=0xF0;if(P1!=0xF0) /判斷按鍵是否按下 如果按鈕按下 會(huì)拉低P1其中的一個(gè)端口 keyscan(); /調(diào)用按鍵掃描程序 /*/* */* 主程序 */* */*/ main() P0=0xFF; /置P0口 P1=0xFF; /置P1口 delay(10); /延時(shí)

11、while(1) keydown(); /調(diào)用按鍵判斷檢測(cè)程序 P0 = LED7Codedis_buf%16&0x7f; /LED7 0x7f為小數(shù)點(diǎn) 共陰和共陽(yáng)此處也是不一樣; %16表示輸出16進(jìn)制 /*/ 附錄2:8051單片機(jī)引腳功能介紹 8051芯片管腳圖單片機(jī)的40個(gè)引腳大致可分為4類:電源、時(shí)鐘、控制和I/O引腳。 電源: VCC - 芯片電源,接+5V; VSS - 接地端; 時(shí)鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 控制線:控制線共有4根, ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖 ALE功能:用來(lái)鎖存P0口送出的低8位地址 PROG

12、功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 PSEN:外ROM讀選通信號(hào)。 RST/VPD:復(fù)位/備用電源。 RST(Reset)功能:復(fù)位信號(hào)輸入端。 VPD功能:在Vcc掉電情況下,接備用電源。 EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。 EA功能:內(nèi)外ROM選擇端。 Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。 I/O線 80C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。P3口還具有第二功能,用于特殊信號(hào)輸入輸出和控制信號(hào)(屬控制總線)。 P0口有三個(gè)功能:1、外部擴(kuò)展存儲(chǔ)器時(shí),當(dāng)做數(shù)據(jù)總線(如圖1中的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論