單片機人機交互系統(tǒng)的語言編程_第1頁
單片機人機交互系統(tǒng)的語言編程_第2頁
單片機人機交互系統(tǒng)的語言編程_第3頁
單片機人機交互系統(tǒng)的語言編程_第4頁
單片機人機交互系統(tǒng)的語言編程_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機人機交互系統(tǒng)的語言編程第一頁,共八十一頁,2022年,8月28日教學提示

在單片機應(yīng)用系統(tǒng)中,經(jīng)常會涉及顯示器、鍵盤等人機交互設(shè)備。如何將它們與單片機的輸入/輸出端口相連并編程實現(xiàn)特定的功能是單片機應(yīng)用開發(fā)人員必須掌握的基本技術(shù)。常用的顯示器有LED數(shù)碼管顯示器、LED點陣顯示器、LCD顯示器;常用的鍵盤有非編碼鍵盤、編碼鍵盤。本章將重點介紹上述元器件與單片機的連接方式以及C51語言的編程方法。第二頁,共八十一頁,2022年,8月28日教學要求

了解單片機輸入/輸出端口的特點及使用注意事項;熟練掌握LED數(shù)碼管顯示器的使用方法;掌握LED點陣顯示器、LCD顯示器的使用方法;熟練掌握非編碼鍵盤的使用方法;掌握外部擴展存儲器的使用方法。第三頁,共八十一頁,2022年,8月28日5.1單片機的輸入/輸出端口1.P0口2.P1口3.P2口4.P3口51系列單片機有4個8位的雙向并行輸入/輸出(I/O)端口,稱為P0口、P1口、P2口和P3口。各個端口既可以按字節(jié)輸入、輸出,也可以按位進行輸入、輸出。利用這4個I/O端口可以方便地實現(xiàn)單片機與外部數(shù)字設(shè)備或芯片的信息交換。下面簡要介紹單片機輸入/輸出端口的特點及使用注意事項。第四頁,共八十一頁,2022年,8月28日5.2LED數(shù)碼管顯示器

5.2.1LED數(shù)碼管顯示器簡介5.2.2靜態(tài)顯示編碼5.2.3動態(tài)顯示編碼靜態(tài)顯示編程

第五頁,共八十一頁,2022年,8月28日5.2.1LED數(shù)碼管顯示器簡介圖5.1通用7段LED數(shù)碼管圖5.2專用LED數(shù)碼管LED顯示器按用途可分為通用7段LED顯示器和專用LED顯示器,分別如圖5.1和圖5.2所示。本節(jié)重點介紹通用7段LED顯示器(以下簡稱為數(shù)碼管)。

第六頁,共八十一頁,2022年,8月28日圖5.3共陰極數(shù)碼管圖5.4共陽極數(shù)碼管數(shù)碼管由8個LED(a、b、c、d、e、f、g、h)構(gòu)成,按結(jié)構(gòu)分為共陰極和共陽極兩種,如圖5.3和5.4所示。要使LED數(shù)碼管顯示出相應(yīng)的數(shù)字或字符,必須向其數(shù)據(jù)口輸入相應(yīng)的字形編碼。LED數(shù)碼管的常用字形編碼見表5-2。第七頁,共八十一頁,2022年,8月28日表5-2LED數(shù)碼管的常用字型編碼表第八頁,共八十一頁,2022年,8月28日續(xù)表5-2第九頁,共八十一頁,2022年,8月28日LED數(shù)碼管顯示器的外型結(jié)構(gòu)如圖5.5所示。LED數(shù)碼管有靜態(tài)顯示和動態(tài)顯示兩種方式,在具體使用時,要求LED驅(qū)動電路能提供額定的LED導通電流,還要根據(jù)外接電源及額定LED導通電流來確定相應(yīng)的限流電阻。圖5.5數(shù)碼管的外型結(jié)構(gòu)第十頁,共八十一頁,2022年,8月28日5.2.2靜態(tài)顯示編程

靜態(tài)顯示是指數(shù)碼管顯示某一字符時,相應(yīng)的LED恒定導通或恒定截止。靜態(tài)顯示時,各位數(shù)碼管是相互獨立的,每個數(shù)碼管的8個LED分別與一個8位I/O口地址相連,只要I/O口有字型碼輸出,相應(yīng)字符即顯示出來,并保持不變,直到I/O口輸出新的字型碼。采用靜態(tài)顯示方式,較小的電流即可獲得較高的亮度,且占用CPU時間少,編程簡單,顯示便于監(jiān)測和控制,但其占用的口線多,硬件電路復雜,成本高,只適合于顯示位數(shù)較少的場合。第十一頁,共八十一頁,2022年,8月28日【例5.1】電路如圖5.6所示,單片機采用AT89C51,振蕩器頻率fOSC為12MHz,數(shù)碼管LED1、LED2采用7SEG-COM-CAT-GRN(共陰極,綠色),兩位數(shù)碼管分別連接在AT89C51的P0口、P1口,按鍵K1接在引腳P2.3上,RP1為排阻。試編程實現(xiàn)下列功能。(1)開機顯示00。(2)按一次K1鍵,數(shù)字加1。(3)當計數(shù)到99時,再按一次K1鍵,又從00開始計數(shù)。第十二頁,共八十一頁,2022年,8月28日圖5.6例5.1電路圖第十三頁,共八十一頁,2022年,8月28日5.2.3動態(tài)顯示編程

動態(tài)顯示是逐位地輪流點亮各位數(shù)碼管,這種逐位點亮顯示器的方式稱為位掃描。通常,各位數(shù)碼管的相應(yīng)LED選線并聯(lián)在一起,由一個8位的I/O口控制;各位的位選線(公共陰極或陽極)由另外的I/O口線控制。動態(tài)方式顯示時,各數(shù)碼管分時輪流選通,要使其穩(wěn)定顯示必須采用掃描方式,即在某一時刻只選通一位數(shù)碼管,并送出相應(yīng)的字型碼,在另一時刻選通另一位數(shù)碼管,并送出相應(yīng)的字型碼,依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時刻分別顯示,但由于人眼存在視覺暫留效應(yīng),只要每位顯示間隔足夠短就可以給人同時顯示的感覺。第十四頁,共八十一頁,2022年,8月28日采用動態(tài)顯示方式比較節(jié)省I/O口,硬件電路也較靜態(tài)顯示方式簡單,但其亮度不如靜態(tài)顯示方式,而且在顯示位數(shù)較多時,CPU要依次掃描,占用CPU較多的時間。【例5.2】電路如圖5.7所示,單片機采用AT89C51,振蕩器頻率fosc為12MHz,數(shù)碼管LED1、LED2采用7SEG-COM-CAT-GRN(共陰極,綠色),兩位數(shù)碼管分別連接在AT89C51的P0口、P1口,按鍵K1接在引腳P2.3上,RP1為排阻。試編程實現(xiàn)下列功能。(1)開機顯示00。(2)按一次K1鍵,數(shù)字加1。(3)當計數(shù)到99時,再按一次K1鍵,又從00開始計數(shù)。第十五頁,共八十一頁,2022年,8月28日圖5.7例5.2電路圖第十六頁,共八十一頁,2022年,8月28日5.3LED數(shù)碼管點陣顯示器

5.3.1字母、數(shù)字及圖形的顯示5.3.2中文字符的顯示LED數(shù)碼管點陣顯示器是由LED按矩陣方式排列而成的,按照尺寸大小,LED點陣顯示器有5×7、5×8、6×8、8×8等多種規(guī)格;按照LED發(fā)光顏色的變化情況,LED點陣顯示器分為單色、雙色、三色;按照LED的連接方式,LED點陣顯示器又有共陰極、共陽極之分。第十七頁,共八十一頁,2022年,8月28日在使用時,只要點亮相應(yīng)的LED,LED點陣顯示器即可按要求顯示英文字母、阿拉伯數(shù)字、圖形以及中文字符等。LED點陣顯示器廣泛地應(yīng)用于股票顯示板、活動信息公告板、活動字幕廣告板等場合。ProteusISIS中只提供了單色的5×7、8×8兩種LED點陣顯示器,如圖5.8所示。(a)5×7LED點陣顯示器(b)8×8LED點陣顯示器圖5.8LED點陣顯示器第十八頁,共八十一頁,2022年,8月28日5.3.1字母、數(shù)字及圖形的顯示單個的西文字母或阿拉伯數(shù)字通常采用5×7點陣顯示,圖5.9所示為字母“A”的5×7字形點陣示意圖。值得注意的是,字形并不是唯一的,應(yīng)根據(jù)具體需要而定。圖5.9字母A的5×7字形點陣示意圖第十九頁,共八十一頁,2022年,8月28日5.3.1字母、數(shù)字及圖形的顯示【例5.3】電路如圖5.11所示,單片機采用AT89C51,振蕩器頻率fOSC為12MHz,LED-DOT為8×8共陽極LED點陣顯示器(MATRIX-8×8-GREEN)。試編程實現(xiàn)下列功能:循環(huán)顯示字符0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。電路中采用帶輸出鎖存器的8位串入并出移位寄存器74HC595作為列驅(qū)動器,目的是為了解決列掃描過程中列數(shù)據(jù)準備與列數(shù)據(jù)顯示之間的矛盾問題。圖5.1074HC595原理圖第二十頁,共八十一頁,2022年,8月28日圖5.11例5.3電路圖第二十一頁,共八十一頁,2022年,8月28日字符數(shù)據(jù)碼字符數(shù)據(jù)碼03EH,41H,41H,41H,3EH,00H,00H,00H836H,49H,49H,49H,36H,00H,00H,00H111H,21H,7FH,01H,01H,00H,00H,00H979H,49H,49H,49H,7FH,00H,00H,00H223H,45H,49H,51H,21H,00H,00H,00HA1FH,24H,44H,24H,1FH,00H,00H,00H322H,49H,49H,49H,36H,00H,00H,00HB7FH,49H,49H,49H,36H,00H,00H,00H40CH,14H,24H,7FH,04H,00H,00H,00HC3EH,41H,41H,41H,22H,00H,00H,00H57AH,49H,49H,49H,4EH,00H,00H,00HD41H,7FH,41H,41H,3EH,00H,00H,00H67FH,49H,49H,49H,4FH,00H,00H,00HE7FH,49H,49H,49H,49H,00H,00H,00H720H,40H,40H,40H,7FH,00H,00H,00HF7FH,48H,48H,48H,48H,00H,00H,00H表5-3字符0~9、A~F的5×7數(shù)據(jù)碼假設(shè)所有字符均以5×7點陣在顯示器的左下角顯示,則各字符的數(shù)據(jù)編碼見表5-3。第二十二頁,共八十一頁,2022年,8月28日利用LED點陣顯示器,可以方便地顯示各種圖形,如正方形、三角形、菱形等,圖5.12所示為一個4×4正方形。通過編程,還可以實現(xiàn)圖形的動態(tài)顯示。圖5.12用8×8LED點陣顯示器顯示自定義圖形第二十三頁,共八十一頁,2022年,8月28日圖形數(shù)據(jù)碼8×8正方形FFH,81H,81H,81H,81H,81H,81H,FFH7×7正方形FEH,82H,82H,82H,82H,82H,FEH,00H6×6正方形FCH,84H,84H,84H,84H,FCH,00H,00H5×5正方形F8H,88H,88H,88H,F8H,00H,00H,00H4×4正方形F0H,90H,90H,F0H,00H,00H,00H,00H3×3正方形E0H,A0H,E0H,00H,00H,00H,00H,00H2×2正方形C0H,C0H,00H,00H,00H,00H,00H,00H1×1正方形80H,00H,00H,00H,00H,00H,00H,00H表5-4自定義圖形編碼【例5.4】在例5.3的基礎(chǔ)上,編程實現(xiàn)下列功能:以顯示器的左上角為原點,依次循環(huán)顯示表5-4所定義的各種圖形。第二十四頁,共八十一頁,2022年,8月28日5.3.2中文字符的顯示利用LED點陣顯示器可以方便地實現(xiàn)中文字符的顯示,由于國標漢字是用16×16點陣(256個像素)來表示的,因此需要用4塊8×8的LED點陣顯示器組合成16×16LED點陣顯示器,才可以完整地顯示一個漢字。圖5.13所示為漢字“電”的16×16字形點陣示意圖。值得注意的是,字形并不是唯一的,應(yīng)根據(jù)具體需要而定。第二十五頁,共八十一頁,2022年,8月28日圖5.13“電”的16×16字形點陣示意圖為了使用8位的51系列單片機控制漢字的顯示,通常把一個漢字分成上、下兩個部分,如圖5.13所示。單片機從上半部左側(cè)開始,掃描完上半部的第1列后,繼續(xù)掃描下半部的第1列;然后又從上半部的第2列開始掃描,掃描完上半部的第2列后,繼續(xù)掃描下半部的第2列;……以此類推,直到掃描下半部右側(cè)最后一列為止。第二十六頁,共八十一頁,2022年,8月28日漢字“電”的掃描代碼第二十七頁,共八十一頁,2022年,8月28日【例5.5】用4塊8×8的紅色LED點陣顯示器構(gòu)成1塊16×16的LED電子廣告屏,用來顯示圖形和漢字字符。具體要求如下:開機以卷簾出的形式出現(xiàn)一個笑臉,然后以左跑馬的形式出現(xiàn)“零五智能電子班是最棒的!”,再以下滾屏的形式出現(xiàn)“零五智能電子是最棒的!”。最后再以卷簾入的形式出現(xiàn)另一個笑臉。接著不斷循環(huán)上面的步驟。第二十八頁,共八十一頁,2022年,8月28日(a)總電路圖圖5.14例5.5電路圖第二十九頁,共八十一頁,2022年,8月28日(b)16×16LED點陣顯示器內(nèi)部接線圖圖5.14例5.5電路圖第三十頁,共八十一頁,2022年,8月28日圖5.15例5.5程序流程圖根據(jù)題目要求,主程序的流程圖如圖5.15所示。第三十一頁,共八十一頁,2022年,8月28日5.4液晶顯示器

5.4.1點陣字符型LCD的內(nèi)部結(jié)構(gòu)5.4.2點陣字符型LCD的指令系統(tǒng)5.4.3點陣字符型LCD應(yīng)用舉例液晶顯示器(LCD)由于功耗低、抗干擾能力強等優(yōu)點,日漸成為各種便攜式產(chǎn)品、儀器儀表以及工控產(chǎn)品的理想顯示器。LCD種類繁多,按顯示形式及排列形狀可分為字段型、點陣字符型、點陣圖形型。單片機應(yīng)用系統(tǒng)中主要使用后兩種。第三十二頁,共八十一頁,2022年,8月28日本節(jié)重點介紹1602點陣字符型LCD(ProteusISIS中的LM016L),16代表每行可顯示16個字符;02表示共有2行,即這種LCD顯示器可同時顯示32個字符,如圖5.16所示。圖5.161602點陣字符型LCD第三十三頁,共八十一頁,2022年,8月28日5.4.1點陣字符型LCD的內(nèi)部結(jié)構(gòu)圖5.171602點陣字符型LCD的內(nèi)部結(jié)構(gòu)框圖1602點陣字符型LCD顯示模塊(LCM)由LCD控制器、LCD驅(qū)動器、LCD顯示裝置(液晶屏)等組成,主要用于顯示數(shù)字、字母、圖形符號及少量自定義符號,內(nèi)部結(jié)構(gòu)如圖5.17所示。第三十四頁,共八十一頁,2022年,8月28日高4位低4位0000(CGRAM)0010001101000101011001110000(1)0@P\p0001(2)!1AQaq0010(3)”2BRbr0011(4)#3CScs0100(5)$4DTdt0101(6)%5EUeu0110(7)&6FVfv0111(8)'7GWgw表5-5字符發(fā)生器中部分常用的5×7點陣字符代碼第三十五頁,共八十一頁,2022年,8月28日1000(1)(8HXhx1001(2))9IYiy1010(3)*:JZjz1011(4)+;K[k{1100(5),<L¥l|1101(6)ˉ=M]m}1110(7)·>N^n→1111(8)/?O—o←續(xù)表5-5字符發(fā)生器中部分常用的5×7點陣字符代碼第三十六頁,共八十一頁,2022年,8月28日圖5.191602點陣字符型LCD的顯示地址編碼第三十七頁,共八十一頁,2022年,8月28日5.4.2點陣字符型LCD的指令系統(tǒng)點陣字符型液晶顯示模塊是一個智能化的器件,所有的顯示功能都是由指令實現(xiàn)的。點陣字符型LCD的指令系統(tǒng)共有11條指令,下面分別介紹。第三十八頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D0100000000011.清屏指令編碼:01H。指令功能:用字符代碼為20H的“空格”刷新屏幕,同時將光標移到屏幕的左上角。第三十九頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D01000000001×2.光標返回原點指令編碼:02H或03H。指令功能:將光標移到屏幕的左上角,同時清零地址計數(shù)器AC,而DDRAM的內(nèi)容不變?!啊痢北硎驹撐豢梢詾?或1(下同)。第四十頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D0100000001I/DS3.設(shè)置字符/光標移動模式指令編碼:04H~07H。指令功能:(1)I/D=1,表示當讀或?qū)懲暌粋€數(shù)據(jù)操作后,地址指針AC加l,且光標加1(光標右移1格);I/D=0,表示當讀或?qū)懲暌粋€數(shù)據(jù)操作后,地址指針AC減1,且光標減1(光標左移1格)。(2)S=1,表示當寫一個數(shù)據(jù)操作時,整屏顯示左移(I/D=1)或右移(I/D=0),以得到光標不移動而屏幕移動的效果;S=0,表示當寫一個數(shù)據(jù)操作時,整屏顯示不移動。第四十一頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D010000001DCB4.顯示器開/關(guān)控制指令編碼:08H~0FH。指令功能:(1)D=0,顯示器關(guān)閉,DDRAM中的顯示數(shù)據(jù)保持不變;D=1,顯示器打開,立即顯示DDRAM中的內(nèi)容。(2)C=1,表示在顯示屏上顯示光標;C=0,表示光標不顯示。(3)B=1,表示光標出現(xiàn)后會閃爍;B=0,表示光標不閃爍。第四十二頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D01000001S/CR/L××5.光標或字符移位指令編碼:10H~1FH。指令功能:(1)S/C=1,表示顯示屏上的畫面平移1個字符位;S/C=0,表示光標平移1個字符位。(2)R/L=1,表示右移;R/L=0,表示左移。第四十三頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D0100001DLNF××6.設(shè)置功能指令編碼:20H~3FH。指令功能:(1)DL=1,表示采用8位數(shù)據(jù)接口;DL=0,表示采用4位數(shù)據(jù)接口,使用D7~D4位,分兩次送入1個完整的字符數(shù)據(jù)。(2)N=1,表示采用雙行顯示;N=0,表示采用單行顯示。(3)F=1,表示采用5×10點陣字符;F=0,表示采用5×7點陣字符。第四十四頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D010001××××××7.設(shè)置CGRAM地址指令編碼:40H~7FH。指令功能:設(shè)定下一個要讀/寫數(shù)據(jù)的CGRAM地址,地址由(D5~D0)給出,可設(shè)定00~3FH共64個地址。第四十五頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D01001×××××××8.設(shè)置DDRAM地址指令編碼:80H~FFH。指令功能:設(shè)定下一個要讀/寫數(shù)據(jù)的DDRAM地址,地址由(D6~D0)給出,可設(shè)定00~7FH共128個地址。當N=0時單行顯示(參見6:設(shè)置功能)。D6~D0的取值范圍為00~0FH(參見圖5.19);當N=1時雙行顯示(參見6:設(shè)置功能),首行D6~D0的取值范圍為00H~0FH,次行D6~D0的取值范圍為40H~4FH(參見圖5.19)。第四十六頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D0101BF×××××××9.忙碌標志位BF或AC的值忙碌標志位BF用來指示LCD目前的工作情況,當BF=1時,表示正在進行內(nèi)部數(shù)據(jù)的處理,不接收單片機送來的指令或數(shù)據(jù);當BF=0時,表示已準備接收命令或數(shù)據(jù)。當程序讀取此數(shù)據(jù)的內(nèi)容時,D7表示BF,D6~D0的值表示CGRAM或DDRAM中的地址。至于是指向哪一個地址,則根據(jù)最后寫入的地址設(shè)定指令而定。第四十七頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D0110××××××××10.寫數(shù)到CGRAM或DDRAM先設(shè)定CGRAM或DDRAM地址,再將數(shù)據(jù)寫入D7~D0中,以使LCD顯示出字形,也可以使用戶自定義的字符圖形存入CGRAM中。第四十八頁,共八十一頁,2022年,8月28日控制信號指令編碼ERSR/WD7D6D5D4D3D2D1D0111××××××××11.從CGRAM或DDRAM中讀數(shù)先設(shè)定CGRAM或DDRAM地址,再讀取其中的數(shù)據(jù)。第四十九頁,共八十一頁,2022年,8月28日5.4.3點陣字符型LCD應(yīng)用舉例液晶顯示模塊與單片機的連接方式有兩種:一種為直接訪問方式(總線方式),另一種為間接控制方式(模擬口線方式)。直接訪問方式是將液晶顯示模塊的接口作為存儲器或I/O設(shè)備直接掛在單片機總線上,單片機以訪問存儲器或I/O設(shè)備的方式控制液晶顯示模塊的工作。間接控制方式是單片機通過自身的或系統(tǒng)中的并行接口與液晶顯示模塊連接,單片機通過對這些接口的操作,實現(xiàn)對液晶顯示模塊的控制。間接控制方式的特點是電路簡單,節(jié)省單片機外圍的數(shù)字邏輯電路,控制時序由軟件產(chǎn)生,可以實現(xiàn)高速的單片機與液晶顯示模塊的接口。本節(jié)將通過實例介紹間接控制方式的使用方法。第五十頁,共八十一頁,2022年,8月28日【例5.6】電路如圖5.20所示,單片機采用AT89C51,振蕩器頻率fOSC為12MHz,顯示器采用16×2的字符型LCD(ProteusISIS中的LM016L)。試編寫程序,讓顯示器顯示兩行字符串,第1行為“ZhuHaiChengShi”,共15個字符;第2行為“JiShuXueYuan”,共14個字符。第五十一頁,共八十一頁,2022年,8月28日圖5.20例5.6電路圖第五十二頁,共八十一頁,2022年,8月28日【例5.7】電路如圖5.21所示,單片機采用AT89C51,振蕩器頻率fosc為12MHz,顯示器采用16×2的字符型LCD(ProteusISIS中的LM016L)。試編寫程序,在LCD的左上角顯示鍵名,如按A鍵顯示字符“A”。第五十三頁,共八十一頁,2022年,8月28日(a)主機部分(b)按鍵、顯示部分圖5.21例5.7電路圖第五十四頁,共八十一頁,2022年,8月28日5.5非編碼鍵盤

5.5.1線性非編碼鍵盤

5.5.2矩陣非編碼鍵盤

鍵盤是單片機應(yīng)用系統(tǒng)中最常用的輸入設(shè)備,通過鍵盤輸入數(shù)據(jù)或命令,可以實現(xiàn)簡單的人機對話。鍵盤有編碼鍵盤和非編碼鍵盤之分。目前,單片機應(yīng)用系統(tǒng)中普遍采用非編碼鍵盤。按照鍵開關(guān)的排列形式,非編碼鍵盤又分為線性非編碼鍵盤和矩陣非編碼鍵盤兩種。第五十五頁,共八十一頁,2022年,8月28日5.5.1線性非編碼鍵盤線性非編碼鍵盤的鍵開關(guān)(K1、K2、K3、K4)通常排成一行或一列,一端連接在單片機I/O口(P1)的引腳(P0.0、P0.1、P0.2、P0.3)上,同時經(jīng)上拉電阻接至+5V電源,另一端則串接在一起作為公共接地端,如圖5.22所示。線性非編碼鍵盤的工作原理是:當無按鍵被按下時,引腳P0.0、P0.1、P0.2、P0.3為高電平;當按下某個按鍵時,對應(yīng)的I/O口引腳為低電平。單片機只要讀取I/O口引腳的狀態(tài),就可以獲得按鍵信息,識別有無鍵被按下、哪個鍵被按下。第五十六頁,共八十一頁,2022年,8月28日在編寫鍵盤處理程序時要考慮如何消除按鍵抖動的問題。具體方法是:首先讀取I/O口狀態(tài)并第1次判斷有無鍵被按下,若有鍵被按下則等待10ms,然后讀取I/O口狀態(tài)并第2次判斷有無鍵被按下,若仍然有鍵被按下則說明某個按鍵處于穩(wěn)定的閉合狀態(tài);若第2次判斷時無鍵被按下,則認為第1次是按鍵抖動引起的無效閉合。圖5.22線性非編碼鍵盤的應(yīng)用(a)主機、顯示部分(b)鍵盤部分第五十七頁,共八十一頁,2022年,8月28日線性非編碼鍵盤的狀態(tài)掃描及鍵值處理流程圖如圖5.23所示。圖5.23線性非編碼鍵盤按鍵處理流程圖第五十八頁,共八十一頁,2022年,8月28日【例5.8】電路如圖5.22所示,單片機采用AT89C51,振蕩器頻率fOSC為12MHz,在P1口接有8只發(fā)光二極管D1~D8。試編寫程序?qū)崿F(xiàn)下列要求。(1)開機D1~D8全亮。(2)僅按下K1鍵時,依次點亮D1~D8,時間間隔為50ms。(3)僅按下K2鍵時,依次點亮D8~D1,時間間隔為50ms。(4)僅按下K3鍵時,D8~D1閃爍,時間間隔為50ms。(5)僅按下K4鍵時,熄滅D1~D8。第五十九頁,共八十一頁,2022年,8月28日5.5.2矩陣非編碼鍵盤矩陣非編碼鍵盤的鍵開關(guān)處于行線與列線的交叉點上,每個鍵開關(guān)的一端與行線相連,另一端與列線相連。圖5.24所示是一個4×3的矩陣非編碼鍵盤。圖5.24矩陣非編碼鍵盤第六十頁,共八十一頁,2022年,8月28日矩陣非編碼鍵盤鍵代碼的確定通常采用逐行掃描法,其處理流程如圖5.25所示。圖5.25矩陣非編碼鍵盤按鍵處理流程第六十一頁,共八十一頁,2022年,8月28日【例5.9】基于圖5.26所示的硬件電路,試編寫程序,用7段數(shù)碼管顯示矩陣非編碼鍵盤的鍵名。例如,按1鍵則顯示“1”。圖5.26所示是4×4矩陣非編碼鍵盤與單片機的典型連接方式。4根行線分別與單片機P1口的P1.0~P1.3引腳相連,稱為行掃描口;4根列線分別與單片機P1口的P1.4~P1.7引腳相連,稱為列檢測口。16個按鍵的鍵名分別為0~9、A~F。第六十二頁,共八十一頁,2022年,8月28日(a)主機、顯示部分(b)鍵盤部分圖5.26矩陣非編碼鍵盤的應(yīng)用第六十三頁,共八十一頁,2022年,8月28日根據(jù)矩陣非編碼鍵盤逐行掃描法處理流程,鍵盤掃描程序應(yīng)包括以下內(nèi)容:(1)查詢是否有鍵被按下首先單片機向行掃描口輸出掃描碼F0H,然后從列檢測口讀取列檢測信號,只要有一列信號不為“1”,即P1口的值不等于F0H,則表示有鍵被按下;否則表示無鍵被按下。(2)查詢閉合鍵所在的行列位置若有鍵被按下,單片機將得到的列檢測信號取反,列檢測口中為1的位便是閉合鍵所在的列。第六十四頁,共八十一頁,2022年,8月28日列號確定后,還需要進行逐行掃描以確定行號。單片機首先向行掃描口輸出第1行的掃描碼FEH,接著讀列檢測口,若列檢測信號全為“1”,則表示閉合鍵不在第1行。接著向行掃描口輸出第2行的掃描碼FDH,再讀列檢測口,……。以此類推,直到找到閉合鍵所在的行,并將該行的掃描碼取反保存。如果掃描完所有的行后仍沒有找到閉合鍵,則結(jié)束行掃描,判定本次按鍵是誤動作。第六十五頁,共八十一頁,2022年,8月28日(3)對得到的行號和列號進行譯碼,確定鍵值根據(jù)圖5.26所示的硬件電路,1、2、3、4行的掃描碼分別為0xfe、0xfd、0xfb、0xf7;1、2、3、4列的列檢測數(shù)據(jù)分別為0xe0、0xd0、0xb0、0x70。設(shè)行掃描碼為HSM,列檢測數(shù)據(jù)為LJC,鍵值為KEY,則有例如,“0”鍵處在第1行第1列,其HSM=0xfe,LJC=0xe0,代入上式,可得“0”鍵的鍵值為第六十六頁,共八十一頁,2022年,8月28日鍵名鍵值鍵名鍵值00x1180x1410x2190x2420x41A0x4430x81B0x8440x12C0x1850x22D0x2860x42E0x4870x82F0x88表5-64×4矩陣非編碼鍵盤的鍵值根據(jù)上述算法,可計算出所有按鍵的鍵值,見表5-6。第六十七頁,共八十一頁,2022年,8月28日(4)按鍵防抖動處理當用手按下一個按鍵時,一般都會產(chǎn)生抖動,即所按下的鍵會在閉合位置與斷開位置之間跳動幾下才能達到穩(wěn)定狀態(tài)。抖動持續(xù)的時間長短不一,通常小于10ms。若抖動問題不解決,就會導致對閉合鍵的多次讀入。解決的方法是:在發(fā)現(xiàn)有鍵按下后,延時10ms再進行逐行掃描。因為鍵被按下時的閉合時間遠遠大于10ms,所以延時后再掃描也不遲。第六十八頁,共八十一頁,2022年,8月28日5.6本章小結(jié)1.51系列單片機有4個8位的雙向并行輸入/輸出(I/O)端口,稱為P0口、P1口、P2口和P3口。各個端口既可以按字節(jié)輸入、輸出,又可以按位進行輸入、輸出。利用這4個I/O端口可以方便地實現(xiàn)單片機與外部數(shù)字設(shè)備或芯片的信息交換。2.LED數(shù)碼管顯示器按用途可分為通用7段LED數(shù)碼管顯示器和專用LED數(shù)碼管顯示器。通用7段LED數(shù)碼管顯示器按內(nèi)部結(jié)構(gòu)劃分,數(shù)碼管又分為共陰極和共陽極兩種。數(shù)碼管的控制方式分為靜態(tài)和動態(tài)兩種。第六十九頁,共八十一頁,2022年,8月28日3.LED數(shù)碼管點陣顯示器是由LED按矩陣方式排列而成的,按照尺寸大小,LED點陣顯示器有5×7、5×8、6×8、8×8等多種規(guī)格;按照LED發(fā)光顏色的變化情況,LED點陣顯示器分為單色、雙色、三色;按照LED的連接方式,LED點陣顯示器又有共陰極、共陽極之分。4.液晶顯示器由于功耗低、抗干擾能力強等優(yōu)點,日漸成為各種便攜式產(chǎn)品、儀器儀表以及工控產(chǎn)品的理想顯示器。LCD種類繁多,按顯示形式及排列形狀可分為字段型、點陣字符型、點陣圖形型。單片機應(yīng)用系統(tǒng)中主要使用后兩種。第七十頁,共八十一頁,2022年,8月28日5.液晶顯示模塊與單片機的連接方式有兩種:一種為直接訪問方式,另一種為間接控制方式。6.鍵盤是單片機應(yīng)用系統(tǒng)中最常用的輸入設(shè)備,通過鍵盤輸入數(shù)據(jù)或命令,可以實現(xiàn)簡單的人機對話。鍵盤有編碼鍵盤和非編碼鍵盤之分。編碼鍵盤除了鍵開關(guān)外,還需去鍵抖動電路、防串鍵保護電路以及專門的、用于識別閉合鍵并產(chǎn)生鍵代碼的集成電路(如8255、8279等)。編

溫馨提示

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

評論

0/150

提交評論