已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
中國人民解放軍防空兵指揮學院畢業(yè)論文解 放 軍防 空 兵 學 院畢業(yè)設(shè)計(論文)說明書題 目:可編程計算機鍵盤顯示器接口- 電路設(shè)計 作 者: 張兵 學 號: 91591006 系 (院): 計算機科學系 專 業(yè): 計算機科學與技術(shù) 指導者: 評閱者: 2005 年 5 月 北 京 可編程計算機鍵盤顯示器接口電路設(shè)計第一章 引言隨著信息技術(shù)和互聯(lián)網(wǎng)的飛速發(fā)展,以及計算機、通訊、數(shù)碼產(chǎn)品等領(lǐng)域已經(jīng)來臨。嵌入式設(shè)備是數(shù)字化時代的主流產(chǎn)品,嵌入式軟件是數(shù)字化產(chǎn)品的核心,作為嵌入式軟件的基礎(chǔ)和關(guān)鍵,嵌入式操作系統(tǒng)在產(chǎn)業(yè)發(fā)展過程中扮演著越來越重要的角色,應(yīng)用遍及工業(yè)自動化、網(wǎng)絡(luò)通信、航天等領(lǐng)域??删幊逃嬎銠C鍵盤顯示器接口電路設(shè)計就是采用一種8279單片機芯片。本設(shè)計采用8279單片機為控制芯片,8279是一種專用于鍵盤顯示可編程器的接口電路,能對鍵盤自動掃描,給出閉合健的鍵碼,能自動向數(shù)碼管顯示器輸出顯示代碼和位代碼。其中鍵盤接口電路可與64鍵點陣式鍵盤連接,具有二鍵封鎖或n鍵巡回功能,可自動消除按鍵抖動。顯示器接口電路可與8或16位數(shù)碼管顯示器連接,8279與鍵盤 、顯示器的連接,其中包括一個8鍵盤和8位led顯示器,代碼驅(qū)動器選用8708,sl2sl0信號譯碼器選用74ls138,時鐘信號由單片機的ale提供。在振蕩器頻率為12mhz時ale輸出頻率為2mhz。8279選擇2鍵封鎖、編碼掃描方式,顯示器左端輸入。第二章 led顯示器的結(jié)構(gòu)與原理:顯示器常作為單片機系統(tǒng)中最簡單的輸出設(shè)備,用以顯示單片機系統(tǒng)的運行結(jié)果與運行狀態(tài)等。常用的顯示器主要有l(wèi)ed數(shù)碼顯示器、lcd液晶顯示器和crt顯示器。在單片機系統(tǒng)中,通常用led數(shù)碼顯示器顯示各種數(shù)字或符號。由于它具有顯示清晰、亮度高、使用電壓低、壽命長的特點,因此使用非常廣泛。本節(jié)以led為例,介紹其結(jié)構(gòu)、工作原理及與單片機的接口技術(shù)。 led顯示器的結(jié)構(gòu)與原理 led顯示器是由發(fā)光二極管顯示字段的顯示器件,也可稱為數(shù)碼管。單片機系統(tǒng)中通常使用8段led數(shù)碼顯示器,其外形及引腳如圖1(a)所示,由圖可見8段led顯示器由8個發(fā)光二極管組成。其中7個長條形的發(fā)光二極管排列成“日”字形,另一個圓點形的發(fā)光二極管在顯示器的右下角作為顯示小數(shù)點用,通過不同的組合可用來顯示各種數(shù)字,包括af在內(nèi)的部分英文字母和小數(shù)點“”等字樣。 led顯示器有兩種不同的形式:一種是8個發(fā)光二極管的陽極都連在一起的,稱為共陽極led顯示器;另一種是8個發(fā)光二極管的陰極都連在一起的,稱為共陰極led顯示器。如圖1(b)所示。 共陰和共陽結(jié)構(gòu)的led顯示器各筆劃段名和安排位置是相同的,當二極管導通時,相應(yīng)的筆劃段發(fā)亮,由發(fā)亮的筆劃段組合從而顯示各種字符。8個筆劃段dpgfedcba對應(yīng)于1b(8位)的d7、d6、d5、d4、d3、d2、d1、d0,于是用8位二進制碼就可以表示欲顯示字符的字形代碼。例如,對于共陰極led顯示器,當公共陰極接地(為零電平),而陽極dpgfedcba各段為01110011時,顯示器顯示“p”字符,即對于共陰極led顯示器,“p”字符的字形碼是073。如果是共陽極led顯示器,公共陽極接高電平,顯示“p”字符的字形代碼應(yīng)為10001100(0x8c)。這里必須注意的是:很多產(chǎn)品為方便接線,常不按規(guī)則的方法去對應(yīng)字段與位的關(guān)系,這時字形碼就必須根據(jù)接線自行設(shè)計了。 led顯示器的顯示方法有靜態(tài)顯示與動態(tài)顯示兩種,下面分別予以介紹。 窗體頂端1窗體底端1.led靜態(tài)顯示接口數(shù)碼管工作在靜態(tài)顯示方式時,共陰極(共陽極)的公共端com連接在一起接地(電源)。每位的段選線與一個8位并行口相連。只要在該位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。這里的8位并行口可以直接采用并行i/o接口片(例如80c51的p1端口、8155和8255的i/o端口等),也可以采用串行輸入/并行輸出的移位寄存器??紤]到若采用并行i/o接口,占用i/o資源較多,因而靜態(tài)顯示方式常采用串行接口方式,外接8位移位寄存器74hcl64構(gòu)成顯示電路,圖2是通過串行口擴展8位led顯示器靜態(tài)驅(qū)動電路,在txd(p3.1)運行時鐘信號,將顯示數(shù)據(jù)由rxd(p3.0)口串行輸出,串行口工作在移位寄存器方式(方式0)。 圖2中使用的是共陰極數(shù)碼管,因而各數(shù)碼管的公共極com端接地,要顯示某字段,則相應(yīng)的移位寄存器74hc164的輸出線必須是高電平。 顯然,要顯示某字符,首先要把這個字符轉(zhuǎn)換成相應(yīng)的字形碼,然后再通過串行口發(fā)送到74hc164。74hc164把串行口收到的數(shù)變?yōu)椴⑿休敵黾拥綌?shù)碼管上。 先建立一個字形碼表,以十六進制數(shù)的次序存放它們的相應(yīng)字形碼,共陰極字形碼表如表1所示。 2. led動態(tài)掃描顯示接口led動態(tài)顯示的基本做法在于分時輪流選通數(shù)碼管的公共端,使得各數(shù)碼管輪流導通,在選通相應(yīng)led后,即在顯示字段上得到顯示字形碼。這種方式不但能提高數(shù)碼管的發(fā)光效率,而且由于各個數(shù)碼管的字段線是并聯(lián)使用的,從而大大簡化了硬件線路。 動態(tài)掃描顯示接口是單片機系統(tǒng)中應(yīng)用最為廣泛的一種顯示方式。其接口電路是把所有顯示器的8個筆劃段adp同名端并聯(lián)在起,而每一個顯示器的公共極com是各自獨立地受i/o線控制。cpu向字段輸出口送出字形碼時,所有顯示器由于同名端并連接收到相同的字形碼,但究竟是哪個顯示器亮,則取決于com端,而這一端是由i/o控制的,所以就可以自行決定何時顯示哪一位了。而所謂動態(tài)掃描是指采用分時的方法,輪流控制各個顯示器的com端,使各個顯示器輪流點亮。 在輪流點亮掃描過程中,每位顯示器的點亮時間是極為短暫的(約1ms),但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位顯示器并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。 圖3是一個典型的動態(tài)掃描8位led顯示接口電路。該電路由74hc245提供段adp的驅(qū)動,74ls145提供位com1com8的驅(qū)動。請注意89c52的p0.0p0.7每個口線上有1個10kw的上拉電阻,圖中未示出。 3.led顯示器接口:一.led原理簡述 led顯示塊是用發(fā)光二極管顯示字段,單片機應(yīng)用系統(tǒng)常用的是七段led,如下圖,它有其陰極和共陽極兩種: +5v af b ge c d h a a b b c c d d e e f f g g h h 共陰極 共陽極例如,要顯示0字符,對于共陰極管應(yīng)輸出段碼:h g f e d c b a a 0 0 1 1 1 1 1 1 3 f h f b g e c對于共陽極管則應(yīng)輸出段碼: d h.h g f e d c b a 1 1 0 0 0 0 0 0 c 0 h 共陽極管和共陰極管的段碼是互為補碼的。 二.動態(tài)顯示的七段led基本用法:1. 動態(tài)顯示的七段led與單片機的硬件接口擴展顯示器接口實質(zhì)是輸出口的擴展,例如設(shè)計一個6位的數(shù)碼管顯示系統(tǒng),它需要擴充兩個8位輸出口,一個輸出8段碼,一個輸出位選碼。如下圖: 輸出段碼 +5v1d 1q8d 8q1#377clk e 8 8 8 8 8 8 8a0 fehwr fdha1clk e1d 1q2#3778d 8q +5v 8由圖可知,要顯示哪個字符,該字符的段碼從1#377輸出,要使1#377輸出只要a0 = 0即可,因此1#377的地址為feh。該段碼輸出到6個數(shù)碼管上是相同的,要哪個管亮,必須使該管的相應(yīng)段二極管導通,則由2#377輸出的位碼控制,對應(yīng)哪個管為0,則該管可以亮。要使2#377輸出只要a1 = 0,2#377的地址為fdh。 在軟件設(shè)計上將6個led管輪流點亮,每管延時約1ms,利用人的視覺殘留,則可以看成持續(xù)點亮。2. 動態(tài)顯示的軟件設(shè)計:要點:代碼轉(zhuǎn)換:直接驅(qū)動7段led發(fā)光的是段碼,而我們習慣的是字符0、1、2、f等,因此軟件中必須將待顯示的字符轉(zhuǎn)換成段碼。 每次只能輸出同樣的段碼,因此要使某管亮,必須用軟件保證逐位輪流點亮并適當延時,給人的眼睛產(chǎn)生持續(xù)發(fā)光的效果。程序中使用的顯示緩沖區(qū)示意圖:01 02 03 04 05 06 79h 7ah 7bh 7ch 7dh 7eh顯示緩沖區(qū)共6個單元,自左至右一一對應(yīng)6個數(shù)碼管,其中存放待顯示字符在段碼表中的查表偏移量。程序如下:org 8100hdisup: mov r0 , #79h ;置顯示緩沖區(qū)首地址mov r2 , #0dfh ;11011111 位碼初值,最左面管亮dsp1: mov a , r0 mov dptr , #tabl movc a , a+dptr ;查表求段碼 mov r1 , #0feh ;選1#377 movx r1 , a ;送段碼 mov r1 , #0fdh ;選2#377 mov a , r2 movx r1 , a ;輸出位碼,最左面管亮 lcall d1ms ;延時 1nc r0 ;指向顯示緩沖區(qū)的下一地址 mov a , r2 rr a ;位碼右移一位 mov r2 , a xrl a , #7fh ;位碼右移6次后為7fh時6管全顯示完 jnz dsp1 ;不為7fh則未顯示完,返回送下一個led rettabl: 段碼轉(zhuǎn)換表略d1ms: 延時子程序略三.led靜態(tài)顯示在靜態(tài)顯示方式中,數(shù)碼管的共陰極或共陽極接地或十5v,每一個數(shù)碼管的8段碼需擴展一個8位輸出口與之相連接,輸出口可將令該管顯示某字符的段碼鎖存,同一時間里,每一位的段碼均可不同,即顯示不同字符。如圖: 8 8 8 84#3773#3772#3771#377 8 8 8 8靜態(tài)顯示方式中,有n位數(shù)碼管則需擴展n個8位輸出口,占用i/o資源較多。它的優(yōu)點是軟件不必動態(tài)掃描,送出段碼后可鎖存,直到需更改顯示字符,軟件簡單,同時由于始終保持顯示而亮度較好。第三章 鍵盤接口在單片機應(yīng)用系統(tǒng)中,為了控制系統(tǒng)的工作狀態(tài),或向系統(tǒng)內(nèi)部輸入數(shù)據(jù),常設(shè)有按鍵或鍵盤,使用這些鍵的開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù)。鍵盤的擴展實質(zhì)是輸入口的擴展。一.鍵輸入過程及軟件結(jié)構(gòu):當所設(shè)置的數(shù)字鍵或功能鍵按下的時候,單片機應(yīng)用系統(tǒng)應(yīng)能完成該鍵所設(shè)定的功能。因此,鍵輸入的信息與軟件結(jié)構(gòu)密切相關(guān)。不少應(yīng)用系統(tǒng)鍵掃描程序是應(yīng)用程序的核心部分。鍵輸入程序的軟件框圖大致如下:鍵 掃 描 no 有 鍵 按 下? yes判 哪 一 鍵 按 下求鍵值 a (a)=00h (a)=01h 1#鍵處理程序0#鍵處理程序 cpu通過查訊或中斷方式掃描有無鍵按下及哪一鍵按下,將鍵號送入a,根據(jù)a的內(nèi)容跳轉(zhuǎn)到該鍵所應(yīng)完成的功能的程序中去,鍵處理完畢后再回到鍵掃描程序,查找有無另一鍵按下。二.鍵輸入接口與軟件應(yīng)解決的問題:1. 保證鍵開關(guān)狀態(tài)的可靠輸入鍵是一種常開式按鈕開關(guān),按鍵和鍵盤都是利用機械觸點的閉合和斷開來輸入電平信號的,在鍵的閉合和斷開的瞬間的有抖動過程,會出現(xiàn)一系列負脈沖,一般為510ms ,為了保證cpu對鍵的一次閉合只進行一次鍵處理,必須消除抖動的影響。 通常去抖動措施可分別采用硬件和軟件兩種方法來解決,硬件的方法是在按鍵的硬件電路上增加rs觸發(fā)器或單穩(wěn)態(tài)電路,這需要增加硬件開銷。較為方便的軟件去抖措施是當檢測到有鍵按下時,執(zhí)行一個延時10ms的子程序,而后再檢測該鍵是否仍保持閉合狀態(tài),若仍閉合才確認為該鍵按下。2. 對所有按鍵進行編碼,確定鍵值或直接確定鍵號。給每一按鍵確定一個鍵值或編號,當cpu掃描鍵盤時,可根據(jù)接收到的鍵輸入信息確定是哪一個鍵按下。3. 選擇鍵盤監(jiān)測方法:在應(yīng)用系統(tǒng)軟件中,鍵掃描程序、鍵處理程序只是應(yīng)用程序的一部分,在程序運行過程中什么時候查詢鍵輸入的情況,可有查詢方式和中斷方式兩種: 查詢方式在程序中以一定的時間間隔掃描鍵盤輸入的情況,無鍵按下則可執(zhí)行其它程序,有鍵按下則執(zhí)行鍵處理程序。 中斷方式中斷方式是當有鍵按下時引起中斷,在中斷服務(wù)程序中進行鍵處理,無鍵按下時cpu不必顧及鍵盤的工作情況。一般在鍵盤使用不多的情況采用中斷方式。4. 編制好鍵盤處理程序:它應(yīng)解決如下問題: 掃描有無鍵按下。 有鍵按下時,若無硬件去抖措施應(yīng)以軟件延時去抖動。 有可靠的邏輯處理,保證一次只處理一個鍵,一次鍵按下只進行一次鍵處理。 輸出確定的鍵號,一個鍵按下后能準確跳轉(zhuǎn)到該鍵的處理程序,處理結(jié)束后再返回鍵掃描。 三.獨立式按鍵結(jié)構(gòu): 指直接用i/o線構(gòu)成的單個按鍵電路。每一鍵互相獨立地各自接通一條輸入線,每根i/o線上的按鍵工作狀態(tài)不影響其它i/o線的工作狀態(tài),此亦稱非編碼鍵盤結(jié)構(gòu)。如下圖: +5v p1.0 p1.1 p1.2 p1.38031 k3 k2 k1 k0 (a)查詢式電路 查詢i/o輸入線0有效 即為0者該線上鍵閉合 地 +5v p1.0 p1.1 p1.2 p1.3 int08031 k3多輸入與門 k2 k1 k0 (b)中斷式電路 任一鍵按下則int0觸發(fā)中斷 地 在中斷服務(wù)程序中查詢哪一鍵按下獨立式按鍵結(jié)構(gòu)的優(yōu)點是配置靈活,軟件簡單,缺點是使用i/o口線多,適于按鍵數(shù)量不多時使用。獨立式按鍵的軟件結(jié)構(gòu):strat:mov a,#0ffh mov p1 , a ;置p1口輸入方式 mov a , p1 ;鍵狀態(tài)輸入 jnb acc.0 , p0 ;0號鍵按下轉(zhuǎn) jnb acc.1 , p1 jnb acc.2 , p2 jnb acc.3 , p3 ljmp start鍵處理程序略注:該程序中未包括軟件去抖措施,實際應(yīng)用中應(yīng)考慮去抖動處理。四.行列式鍵盤結(jié)構(gòu):1. 鍵盤工作原理:如圖 3 2 1 0 0行 +5v p1.7 p1.6 7 6 5 4 1行 b a 9 8 2行 p1.5 f e d c 3行 p1.4 3列 p1.3 2列 p1.2 1列 p1.1 0列 p1.0用i/o口線組成行列式結(jié)構(gòu),按鍵設(shè)置在行列的交叉點上,22的鍵盤結(jié)構(gòu)可構(gòu)成4個鍵的鍵盤,44的鍵盤結(jié)構(gòu)可構(gòu)成16個鍵的鍵盤。鍵掃描的過程: 判斷有無鍵按下列線輸出全0碼(d0d3),將行線狀態(tài)讀入累加器a(d4d7),若讀入狀態(tài)不全為1則有鍵按下,否則無鍵按下。 當有鍵按下時,判斷哪一鍵按下:由列線逐列置0,檢查行輸入狀態(tài)。例如列線輸出d3d0為1110,即d0=0,讀入行線狀態(tài)d7d4,若為0111,即d7=0,則可判斷為0鍵按下,若此時讀出行線狀態(tài)為全1,則本列無鍵按下,即0、4、8、c均未按下。接著再將下一列線置0輸出,檢查下一列鍵是否有鍵按下,直到每一列均查完為止。鍵盤上每一個鍵均有一個唯一的鍵值,一般用直接賦值方法定義鍵值,每個鍵的鍵值為當它按下時,鍵掃描程序的列碼和行碼按一定順序由二進制數(shù)排列。例如當0鍵按下時,鍵掃描程序輸出的列碼為1110,讀入的行碼為0111,將它們按d7d0的順序排列為:01111110,則0鍵的鍵值定義為7eh。類似的方法可得到:1鍵的鍵值為7dh4鍵的鍵值為beh f鍵的鍵值為e7h鍵掃描程序中只要將列碼輸出,再讀入行碼,然后將行列碼拼接,與鍵值比較,即可確定為哪一鍵按下。鍵掃描的方式可采取編程掃描、定時掃描或中斷方式定時器中斷原理:中斷的原理有關(guān)中斷的概念什么是中斷,我們從一個生活中的例子引入。你正在家中看書,突然電話鈴響了,你放下書本,去接電話,和來電話的人交談,然后放下電話,回來繼續(xù)看你的書。這就是生活中的“中斷”的現(xiàn)象,就是正常的工作過程被外部的事件打斷了。仔細研究一下生活中的中斷,對于我們學習單片機的中斷也很有好處。第一、什么可經(jīng)引起中斷,生活中很多事件可以引起中斷:有人按了門鈴了,電話鈴響了,你的鬧鐘鬧響了,你燒的水開了.等等諸如此類的事件,我們把可以引起中斷的稱之為中斷源,單片機中也有一些可以引起中斷的事件,8031中一共有5個:兩個外部中斷,兩個計數(shù)/定時器中斷,一個串行口中斷。 第二、中斷的嵌套與優(yōu)先級處理:設(shè)想一下,我們正在看書,電話鈴響了,同時又有人按了門鈴,你該先做那樣呢?如果你正是在等一個很重要的電話,你一般不會去理會門鈴的,而反之,你正在等一個重要的客人,則可能就不會去理會電話了。如果不是這兩者(即不等電話,也不是等人上門),你可能會按你通常的習慣去處理??傊@里存在一個優(yōu)先級的問題,單片機中也是如此,也有優(yōu)先級的問題。優(yōu)先級的問題不僅僅發(fā)生在兩個中斷同時產(chǎn)生的情況,也發(fā)生在一個中斷已產(chǎn)生,又有一個中斷產(chǎn)生的情況,比如你正接電話,有人按門鈴的情況,或你正開門與人交談,又有電話響了情況??紤]一下我們會怎么辦吧。第三、中斷的響應(yīng)過程:當有事件產(chǎn)生,進入中斷之前我們必須先記住現(xiàn)在看書的第幾頁了,或拿一個書簽放在當前頁的位置,然后去處理不同的事情(因為處理完了,我們還要回來繼續(xù)看書):電話鈴響我們要到放電話的地方去,門鈴響我們要到門那邊去,也說是不同的中斷,我們要在不同的地點處理,而這個地點通常還是固定的。計算機中也是采用的這種方法,五個中斷源,每個中斷產(chǎn)生后都到一個固定的地方去找處理這個中斷的程序,當然在去之前首先要保存下面將執(zhí)行的指令的地址,以便處理完中斷后回到原來的地方繼續(xù)往下執(zhí)行程序。具體地說,中斷響應(yīng)可以分為以下幾個步驟:1、保護斷點,即保存下一將要執(zhí)行的指令的地址,就是把這個地址送入堆棧。2、尋找中斷入口,根據(jù)5個不同的中斷源所產(chǎn)生的中斷,查找5個不同的入口地址。以上工作是由計算機自動完成的,與編程者無關(guān)。在這5個入口地址處存放有中斷處理程序(這是程序編寫時放在那兒的,如果沒把中斷程序放在那兒,就錯了,中斷程序就不能被執(zhí)行到)。3、執(zhí)行中斷處理程序。4、中斷返回:執(zhí)行完中斷指令后,就從中斷處返回到主程序,繼續(xù)執(zhí)行。究竟單片機是怎么樣找到中斷程序所在位置,又怎么返回的呢?我們稍后再談. mcs-51中斷系統(tǒng)的結(jié)構(gòu):由與中斷有關(guān)的特殊功能寄存器、中斷入口、順序查詢邏輯電路等組成,包括5個中斷請求源,4個用于中斷控制的寄存器ie、ip、econ和scon來控制中斷 類弄、中斷的開、關(guān)和各種中斷源的優(yōu)先級確定。中斷請求源:(1)外部中斷請求源:即外中斷0和1,經(jīng)由外部引腳引入的,在單片機上有兩個引腳,名稱為int0、int1,也就是p3.2、p3.3這兩個引腳。在內(nèi)部的tcon中有四位是與外中斷有關(guān)的。it0:int0觸發(fā)方式控制位,可由軟件進和置位和復位,it0=0,int0為低電平觸發(fā)方式,it0=1,int0為負跳變觸發(fā)方式。這兩種方式的差異將在以后再談。ie0:int0中斷請求標志位。當有外部的中斷請求時,這位就會置1(這由硬件來完成),在cpu響應(yīng)中斷后,由硬件將ie0清0。it1、ie1的用途和it0、ie0相同。(2)內(nèi)部中斷請求源tf0:定時器t0的溢出中斷標記,當t0計數(shù)產(chǎn)生溢出時,由硬件置位tf0。當cpu響應(yīng)中斷后,再由硬件將tf0清0。tf1:與tf0類似。ti、ri:串行口發(fā)送、接收中斷,在串口中再講解。2、中斷允許寄存器ie在mcs51中斷系統(tǒng)中,中斷的允許或禁止是由片內(nèi)可進行位尋址的8位中斷允許寄存器ie來控制的。見下表 eaxxeset1ex1et0ex0 其中ea是總開關(guān),如果它等于0,則所有中斷都不允許。es串行口中斷允許et1定時器1中斷允許ex1外中斷1中斷允許。et0定時器0中斷允許ex0外中斷0中斷允許。如果我們要設(shè)置允許外中斷1,定時器1中斷允許,其它不允許,則ie可以是 eaxxeset1ex1et0ex0 10001100即8ch,當然,我們也可以用位操作指令setb easetb et1setb ex1來實現(xiàn)它。3、五個中斷源的自然優(yōu)先級與中斷服務(wù)入口地址外中斷0:0003h定時器0:000bh外中斷1:0013h定時器1:001bh串口 :0023h它們的自然優(yōu)先級由高到低排列。寫到這里,大家應(yīng)當明白,為什么前面有一些程序一始我們這樣寫:org 0000hljmp startorg 0030hstart:。這樣寫的目的,就是為了讓出中斷源所占用的向量地址。當然,在程序中沒用中斷時,直接從0000h開始寫程序,在原理上并沒有錯,但在實際工作中最好不這樣做。優(yōu)先級:單片機采用了自然優(yōu)先級和人工設(shè)置高、低優(yōu)先級的策略,即可以由程序員設(shè)定那些中斷是高優(yōu)先級、哪些中斷是低優(yōu)先級,由于只有兩級,必有一些中斷處于同一級別,處于同一級別的,就由自然優(yōu)先級確定。開機時,每個中斷都處于低優(yōu)先級,我們可以用指令對優(yōu)先級進行設(shè)置??幢?中斷優(yōu)先級中由中斷優(yōu)先級寄存器ip來高置的,ip中某位設(shè)為1,相應(yīng)的中斷就是高優(yōu)先級,否則就是低優(yōu)先級。 xxxpspt1px1pt0px0 例:設(shè)有如下要求,將t0、外中斷1設(shè)為高優(yōu)先級,其它為低優(yōu)先級,求ip的值。ip的首3位沒用,可任意取值,設(shè)為000,后面根據(jù)要求寫就可以了 xxxpspt1px1pt0px0 00000110第四章 8279的內(nèi)部結(jié)構(gòu)原intel8279芯片是一種通用的可編程序的鍵盤、顯示接口器件,單個芯片就能完成鍵盤輸入和led顯示控制兩種功能。其內(nèi)部結(jié)構(gòu)如圖6-10-1所示。8279包括鍵盤輸入和顯示輸出兩個部分。 鍵盤部分提供的掃描方式,可以和64個按鍵或傳感器的陣列相連。能自動消除開關(guān)抖動以及n個鍵同時按下的保護。 顯示部分按掃描的方式工作??梢燥@示8或16位led顯示塊。 一、8279電路工作原理單片機系統(tǒng)中有兩種led顯示方式,即靜態(tài)顯示和動態(tài)顯示,靜態(tài)顯示的優(yōu)點是顯示效果好,編程簡單,但由于輸出的每一位都需要鎖存,使用的硬件較多;動態(tài)顯示方式中,各位數(shù)碼管的ah端并連在一起,每一時刻只有一位數(shù)碼管被點亮,各位依次輪流被點亮,硬件電路簡單,但由于需要不停地進行刷新顯示,降低了cpu的效率,而且編程的工作量很大。為了解決動態(tài)顯示中存在的問題,intel公司研制出了專用的鍵盤、顯示器接口電路芯片8279,該芯片能自動完成對顯示的刷新,同時還可以對鍵盤自動掃描,識別閉合鍵的鍵號,使用非常方便。8279用a0來區(qū)分信息特征,當a0為0時,cpu從8279讀出的是狀態(tài),寫入的是命令,且每個命令也有自己的特征;當a0=1時讀出和寫入的都是數(shù)據(jù)。8279內(nèi)部有兩個緩沖區(qū),即一個8字節(jié)的fifo(firstinfirstout)鍵盤ram和一個16字節(jié)的顯示ram,顯示數(shù)據(jù)時只要將待顯示數(shù)據(jù)的段碼寫入顯示ram即可;當有鍵閉合時,8279會自動執(zhí)行去抖、得到鍵值、等待按鍵釋放等操作,最后,將鍵值存入fiforam中,程序只需從fifo中讀取鍵值即可,編程十分簡單,具體實驗線路圖17所示。8279鍵盤、顯示器接口器件是實現(xiàn)人機對話的主要部件,它已為廣大用戶歡迎和廣泛應(yīng)用。然而在有些應(yīng)用場合,既要鍵盤具有普通的數(shù)據(jù)輸入和控制功能,又要鍵盤具備按鈕功能。例如,微機控制的注塑機,在手動控制時需要有點動功能:按鈕按下進行調(diào)模運動,按鈕松開,調(diào)模運動停止。本文介紹使8279構(gòu)成的鍵盤具有以上功能的實現(xiàn)方法,供讀者參考使用。為了使8279具有合適的鍵盤、顯示功能,首先要對芯片初始化??蛇m當?shù)靥暨x8279的控制字,例如:使8279具有8位顯示、右端輸入、編碼鍵盤、雙鍵鎖定時可選控制字10h.這時每次按鍵都將產(chǎn)生鍵特征碼,并且存放在fiforom中,同時使8279的irq引腳變?yōu)楦唠娖?,可作為向cpu申請中斷信號,如果cpu是中斷開放的,則轉(zhuǎn)向中斷服務(wù)程序,可在中斷服務(wù)程序中讀取特征碼。每當cpu讀取fiforom中的數(shù)據(jù)后,8279自動撤消irq信號,irq引腳變?yōu)榈碗娖?。cpu返回主程序后,可由鍵特征碼來決定程序的流向。問題是,當cpu從8279的fiforom中讀取鍵特征碼后,irq雖然恢復底電平,但fiforom中的數(shù)據(jù)并沒有消失,仍保存在里面,這時即使使用對改8279清除的指令d3h,也不能將fiforom中的數(shù)改變,只有按其它鍵才能改變fiforom中的數(shù)據(jù),因這樣是無法實現(xiàn)按鈕功能的。為了使鍵盤具有按鈕功能,應(yīng)該利用8279的傳感方式功能,在傳感器方式中,8279每當檢測到傳感狀態(tài)變化時,irq就變?yōu)楦唠娖剑瑘D1是以8031cpu構(gòu)成的系統(tǒng)為例,說明irq引腳電平的翻新過程。 8279的irq端經(jīng)反相器接到8031的int1端(即p3.3引腳)。先將8279設(shè)置成編碼鍵盤,允許int1中斷,當鍵按下時,反相器輸出低電平,cpu進入中斷服務(wù)程序,讀取鍵特征碼后,又為高電平。返回主程序后,轉(zhuǎn)向功能程序(例如調(diào)模進)。輸出控制信號(例如p1.0為“1”時調(diào)模進電磁閥得電)后,將8279設(shè)置為傳感器方式,并且不允許int1中斷,然后調(diào)試p3.3是否為低電平。如果按鍵松開,8279將測出傳感器狀態(tài)發(fā)生變化,而使irq由低電平轉(zhuǎn)為高電平。也就是說p3.3腳為低電平時,按鍵已經(jīng)松開,程序重新設(shè)置8279為編碼鍵盤,int1中斷開放,以便使鍵盤脫離按鈕功能。實現(xiàn)以上功能的程序清單如下: 根據(jù)結(jié)構(gòu)框圖,分別介紹各部分電路工作原理。 1.i/o控制及數(shù)據(jù)緩沖器 數(shù)據(jù)緩沖器是雙向緩沖器,連接內(nèi)、外總線,用于傳送cpu和8279之間的命令或數(shù)據(jù);i/o控制線是cpu對8279進行控制的引線。cs是8279的片選信號,cs=0時,8279才被允許讀出或?qū)懭胄畔?。wr、rd為來自cpu的控制信號。 a0用于區(qū)別信息特性:a0=1時,表示數(shù)據(jù)緩沖器輸入為指令、輸出為狀態(tài)字;a=0時,輸入、輸出皆為數(shù)據(jù)。 2.控制與定時寄存器及定時控制 控制與定時寄存器用來寄存鍵盤及顯示的工作方式,以及由cpu編程的其它操作方式。這些寄存器一旦接受并鎖存送來的命令,就通過譯碼產(chǎn)生相應(yīng)的信號,從而完成相應(yīng)的控制功能。 定時控制包含基本記數(shù)鍵。首級計數(shù)器是一個可編程的n級計數(shù)器。n可以231之間由軟件編程,以便從外界時鐘clk分頻得到內(nèi)部所需要的100khz時鐘。然后再經(jīng)過分頻為鍵盤掃描提供適當?shù)闹鹦袙呙桀l率和顯示掃描時間。 3.掃描計數(shù)器 掃描計數(shù)器有兩種工作方式。按編碼方式工作時,計數(shù)器作二進制記數(shù)。4位記數(shù)狀態(tài)從掃描線sl0sl3輸出,經(jīng)外部譯碼器譯碼后,為鍵盤和顯示器提供掃描線;按譯碼方式工作時,掃描計數(shù)器的最低二位被譯碼后,從sl0sl3輸出。因此,sl0sl3提供了4中取1的掃描譯碼。 4.回復緩沖器、鍵盤去抖及控制 來自rl0rl3的8根回復線的回復信號,由回復緩沖器緩沖并鎖存。 在鍵盤工作方式中,回復線作為行列式鍵盤的行列輸入線。在逐行列輸入時,在逐行列掃描時,回復線用來搜索每一行列中閉合的鍵。當某一鍵閉合時,去抖電路被置位,延時等待10ms后,再檢驗該鍵是否繼續(xù)閉和,并將該鍵的地址和附加的移位、控制狀態(tài)一起形成鍵盤數(shù)據(jù)被送入8279內(nèi)部fifo(先進先出)存儲器。鍵盤數(shù)據(jù)格式如下: d7 d6 d5 d4 d3 d2 d1 d0控制移位掃描回復 控制和移位(d6、d7)的狀態(tài)由兩個獨立的附加開關(guān)決定,而掃描(d5、d4、d3)和回復(d2、d1、d0)則是被按鍵置位的數(shù)據(jù)。d5、d4、d3來自動掃描計數(shù)器,是按下鍵的行列編碼,而(d7d7d7)則來自行/列計數(shù)器,它們是根據(jù)回復信號而確定的行/列編碼。 在傳感器開關(guān)狀態(tài)矩陣方式中,回復線的內(nèi)容直接被送往和相應(yīng)的傳感器ram(即fifo存儲器)。在選通輸入方式中,回復線的內(nèi)容在cntl/stb線的脈沖上升沿被送入fifo存儲器。 5.fifo/傳感器及其狀態(tài)寄存器fifo/傳感器ram是一個雙重功能的88ram。 在鍵盤或選通方式工作時,它是fifo存儲器,其輸入或讀出遵循先入先出的原則。fifo狀態(tài)寄存器用于存放fifo的工作狀態(tài)。例如,ram是滿還是空;其中存有多少數(shù)據(jù);是否操作出錯等。當fifo存儲器不空,狀態(tài)邏輯將產(chǎn)生irq=1信號向cpu申請中斷。 在傳感器矩陣方式工作時,這個存儲器以是傳感器不是存儲器。它存放著傳感器矩陣中的每一個傳感器狀態(tài)。在此方式中,若檢索出傳感器的變化,irq信號變?yōu)楦唠娖?,向cpu申請中斷。 6.顯示ram和顯示地址寄存器 顯示ram用來存儲顯示數(shù)據(jù)。容量為168位。在顯示過程中,存儲的顯示數(shù)據(jù)輪流從顯示寄存器輸出。顯示寄存器分別為a、b兩組,outa03和outb03可以單獨送數(shù),也可以組成一個8位的字。顯示寄存器的輸出與顯示掃描配合,不斷從顯示ram中讀出顯示數(shù)據(jù),同時輪流驅(qū)動被選中的顯示器件,以達到多路復用的目的,使顯示器件呈現(xiàn)穩(wěn)定的顯示狀態(tài)。 顯示地址寄存器用來寄存由cpu進行讀/寫顯示ram的地址,它可以由命令設(shè)定,也可以設(shè)置成每次讀寫或?qū)懭胫笞詣舆f減。 二.管腳、引線與功能 8279采用40引腳封裝,其管腳、引線功能如圖6-10-2所示。其引腳功能如下: d0d7(數(shù)據(jù)總線):雙向、三態(tài)總線,和系統(tǒng)數(shù)據(jù)總線相連;用于cpu和8279間的數(shù)據(jù)/命令傳遞。 clk(系統(tǒng)時鐘):輸入線,為8279提供內(nèi)部時鐘的輸入端。 reset(復位):輸入線,當reset=1時,8279復位,其復位狀態(tài)為: 16個字符顯示; 編碼掃描鍵盤-雙鍵鎖定; 程序時鐘編碼為31。 cs(片選):輸入線,當cs=0時8279被選中,允許cpu對其讀、寫,否則被禁止。 a0(數(shù)據(jù)選擇):輸入線。當a0=1時cpu寫入數(shù)據(jù)為命令字,讀出數(shù)據(jù)為狀態(tài)字;a0=0時cpu讀、寫的字節(jié)均為數(shù)據(jù)。 rd、wr(讀、寫信號):輸入線。低電平有效,來自cpu的控制信號,控制8279的讀、寫操作。 irq(中斷請求):輸出線。高電平有效。 在鍵盤工作方式中,當fifo/傳感器ram存有數(shù)據(jù)時,irq為高電平。cpu每次從ram中讀出數(shù)據(jù)時,irq變?yōu)榈碗娖?。若ram中仍有數(shù)據(jù),則irq再次恢復高電平。 在傳感器工作方式中,每當檢測到傳感器狀態(tài)變化時,irq就出現(xiàn)高電平。 sl0sl3(掃描線):輸出線。用來掃描鍵盤和顯示器。它們可以編程設(shè)定為編碼(4中取1)或譯碼輸出(16取1)。 rl0rl7(回復線):輸入線。它們是鍵盤矩陣或傳感矩陣的列(或行)信號輸入線。 shift(移位信號):輸入線、高電平有效。該輸入信號是鍵盤數(shù)據(jù)的最高位(d7),通常用來擴充鍵開關(guān)的功能,作為控制功能鍵用。 在選通輸入方式時,該信號的上升沿可將來自rl0rl7的數(shù)據(jù)存入fifo ram中。 在傳感器輸入下,該信號無效。 outa0outa3(a組顯示信號):輸出線。 outb0outb3(b組顯示信號):輸出線。 這兩組引線都是顯示數(shù)據(jù)輸出線,與多位數(shù)字顯示的掃描線sl0sl3同步,兩組可以獨立使用,也可以合并使用。 bd(顯示消隱):輸出線。低電平有效。該信號在數(shù)字切換顯示或使用消隱命令時,將顯示消隱。 三、命令格式與命令字 8279的操作方式是通過cpu對8279送入命令時來實現(xiàn)編程的。當數(shù)據(jù)選擇端a0置1時,cpu對8279寫入數(shù)據(jù)為命令字,讀出的數(shù)據(jù)為狀態(tài)字。 8279共有八條命令。其功能及命令字定義分述如下。 1.鍵盤/顯示方式設(shè)置命令字 命令格式: d7 d6 d5 d4 d3 d2 d1 d0000ddkkk 其中: d7、d6、d5=000方式設(shè)置命令特征位。 d d(d4、d3):來設(shè)定顯示方式,其定義如下: 00:8個字符顯示,左入口 00:16個字符顯示,左入口 00:8個字符顯示,右入口 00:16個字符顯示,右入口 所謂左入口,即顯示位置從最左一位(最高位)開始,以后逐次輸入的顯示字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新科版選修2地理下冊月考試卷含答案
- 2025年新世紀版九年級歷史上冊月考試卷含答案
- 2025年外研版高一生物下冊月考試卷含答案
- 2025年外研版三年級起點九年級歷史上冊階段測試試卷含答案
- 2025年文學類百科常識知識競賽題庫及答案(共480題)
- 山東省威海市環(huán)翠區(qū)(五四制)2023-2024學年八年級下學期期中檢測物理試題【含答案、解析】
- 2025年廣州東華職業(yè)學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年安徽工貿(mào)職業(yè)技術(shù)學院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年安徽中醫(yī)藥高等??茖W校高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 2025年大連軟件職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2024年湖南高速鐵路職業(yè)技術(shù)學院單招職業(yè)適應(yīng)性測試題庫附答案
- 電力系統(tǒng)動態(tài)仿真與建模
- 中國的古代祭祀文化
- 學校中層干部管理培訓
- 《航運市場營銷》課件-海運巨頭馬士基
- 繪本創(chuàng)作方案
- 《童年的水墨畫》的說課課件
- 地鐵保潔服務(wù)投標方案(技術(shù)標)
- 2023年河南省新鄉(xiāng)市鳳泉區(qū)事業(yè)單位招聘53人高頻考點題庫(共500題含答案解析)模擬練習試卷
- 2023年小升初簡歷下載
- 廣府文化的奇葩
評論
0/150
提交評論