版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章AT89S51單片機(jī)與輸入/輸出
外設(shè)的接口12
第10章目錄10.1LED數(shù)碼管的顯示原理
10.1.1LED數(shù)碼管的結(jié)構(gòu)
10.1.2LED數(shù)碼管工作原理10.2鍵盤(pán)接口原理
10.2.1鍵盤(pán)輸入應(yīng)解決的問(wèn)題
10.2.2鍵盤(pán)的工作原理
10.2.3鍵盤(pán)的工作方式10.3鍵盤(pán)/顯示器接口設(shè)計(jì)實(shí)例
10.3.1利用AT89S51單片機(jī)串行口實(shí)現(xiàn)的鍵盤(pán)/顯示器接口
10.3.2各種專用的鍵盤(pán)/顯示器接口芯片簡(jiǎn)介
10.3.3專用接口芯片CH451實(shí)現(xiàn)的鍵盤(pán)/顯示器控制
10.3.4專用接口芯片HD7279實(shí)現(xiàn)的鍵盤(pán)/顯示器控制10.4AT89S51單片機(jī)與液晶顯示器(LCD)的接口
10.4.1LCD顯示器的分類
10.4.2點(diǎn)陣字符型液晶顯示模塊介紹
10.4.3AT89S51單片機(jī)與LCD的接口及軟件編程10.5AT89S51單片機(jī)與微型打印機(jī)TPP-40A/16A的接口10.6AT89S51單片機(jī)與BCD碼撥盤(pán)的接口設(shè)計(jì)3內(nèi)容概要大多數(shù)的單片機(jī)應(yīng)用系統(tǒng),都要配置輸入外設(shè)和輸出外設(shè)。常用的輸入外設(shè)有鍵盤(pán)、BCD碼撥盤(pán)等;常用的輸出外設(shè)有LED數(shù)碼管、LCD顯示器、打印機(jī)等。本章介紹AT89S51與各種輸入外設(shè)、輸出外設(shè)的接口設(shè)計(jì)以及軟件編程。410.1LED數(shù)碼管的顯示原理 LED(LightEmittingDiode)發(fā)光二極管縮寫(xiě)。LED數(shù)碼管是由發(fā)光二極管構(gòu)成的。10.1.1LED數(shù)碼管的結(jié)構(gòu) 常見(jiàn)的LED數(shù)碼管為“8”字型的,共計(jì)8段。每一段對(duì)應(yīng)一個(gè)發(fā)光二極管。有共陽(yáng)極和共陰極兩種,如圖10-1所示。共陰極發(fā)光二極管的陰極連在一起,通常公共陰極接地。當(dāng)陽(yáng)極為高電平時(shí),發(fā)光二極管點(diǎn)亮。 同樣,共陽(yáng)極LED數(shù)碼管的發(fā)光二極管的陽(yáng)極連接在一起,公共陽(yáng)極接正電壓,當(dāng)某個(gè)發(fā)光二極管的陰極接低電平時(shí),發(fā)光二極管被點(diǎn)亮,相應(yīng)的段被顯示。56圖10-18段LED數(shù)碼管結(jié)構(gòu)及外形為了使數(shù)碼管顯示不同的符號(hào)或數(shù)字,要把某些段發(fā)光二極管點(diǎn)亮,就要為L(zhǎng)ED數(shù)碼管提供段碼(字型碼)。LED數(shù)碼管共計(jì)8段。正好是一個(gè)字節(jié)。習(xí)慣上是以“a”段對(duì)應(yīng)段碼字節(jié)的最低位。各段與字節(jié)中各位對(duì)應(yīng)關(guān)系如表10-1所示。按照上述格式,顯示各種字符的8段LED數(shù)碼管的段碼如表10-2所示。78表10-1只列出了部分段碼,讀者可以根據(jù)實(shí)際情況選用,或重新定義。除“8”字型的LED數(shù)碼管外,市面上還有“±1”型、“米”字型和“點(diǎn)陣”型LED顯示器,如圖10-2所示。本章均以“8”字型的LED數(shù)碼管為例。
圖10-2
其他各種字型的LED顯示器910.1.2LED數(shù)碼管工作原理 圖10-3所示為顯示4位字符的LED數(shù)碼管的結(jié)構(gòu)原理圖。N位位選線和8
N條段碼線。段碼線控制顯示字型,而位選線控制著該顯示位的LED數(shù)碼管的亮或暗。
10圖10-34位LED數(shù)碼管的結(jié)構(gòu)原理圖LED數(shù)碼管有靜態(tài)顯示和動(dòng)態(tài)顯示兩種顯示方式。1.LED靜態(tài)顯示方式無(wú)論多少位LED數(shù)碼管,同時(shí)處于顯示狀態(tài)。靜態(tài)顯示方式,各位的共陰極(或共陽(yáng)極)連接在一起并接地(或接+5V);每位的段碼線(a~dp)分別與一個(gè)8位的I/O口鎖存器輸出相連。如果送往各個(gè)LED數(shù)碼管所顯示字符的段碼一經(jīng)確定,則相應(yīng)I/O口鎖存器鎖存的段碼輸出將維持不變,直到送入另一個(gè)字符的段碼為止。正因?yàn)槿绱?,靜態(tài)顯示方式的顯示無(wú)閃爍,亮度都較高,軟件控制比較容易。11圖10-4為4位LED數(shù)碼管靜態(tài)顯示器電路,各位可獨(dú)立顯示,靜態(tài)顯示方式接口編程容易,但是占用口線較多。對(duì)圖10-4電路,若用I/O口線接口,要占用4個(gè)8位I/O口。因此在顯示位數(shù)較多的情況下,所需的電流比較大,對(duì)電源的要求也就隨之增高,這時(shí)一般都采用動(dòng)態(tài)顯示方式。2.LED動(dòng)態(tài)顯示方式無(wú)論在任何時(shí)刻只有一個(gè)LED數(shù)碼管處于顯示狀態(tài),即單片機(jī)采用“掃描”方式控制各個(gè)數(shù)碼管輪流顯示。1213圖10-44位LED靜態(tài)顯示電路在多位LED顯示時(shí),為簡(jiǎn)化硬件電路,通常將所有顯示位的段碼線的相應(yīng)段并聯(lián)在一起,由一個(gè)8位I/O口控制,而各位的共陽(yáng)極或共陰極分別由相應(yīng)的I/O線控制,形成各位的分時(shí)選通。圖10-5所示為一個(gè)4位8段LED動(dòng)態(tài)顯示電路。其中段碼線占用一個(gè)8位I/O口,而位選線占用一個(gè)4位I/O口。必須采用動(dòng)態(tài)的“掃描”顯示方式。即在某一時(shí)刻,只讓某一位的位選線處于選通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時(shí),段碼線上輸出相應(yīng)位要有顯示的字符的段碼。1415圖10-54位8段LED動(dòng)態(tài)顯示電路雖然這些字符是在不同時(shí)刻出現(xiàn),而在同一時(shí)刻,只有一位顯示,其他各位熄滅,由于余輝和人眼的“視覺(jué)暫留”作用,只要每位顯示間隔足夠短,則可以造成“多位同時(shí)亮”的假象,達(dá)到同時(shí)顯示的效果。LED不同位顯示的時(shí)間間隔(掃描間隔)應(yīng)根據(jù)實(shí)際情況而定。顯示位數(shù)多,將占大量的單片機(jī)時(shí)間,因此動(dòng)態(tài)顯示的實(shí)質(zhì)是以犧牲單片機(jī)時(shí)間來(lái)?yè)Q取I/O端口的減少。圖10-6所示為8位LED動(dòng)態(tài)顯示2009.10.10的過(guò)程。圖10-6(a)所示為顯示過(guò)程,某一時(shí)刻,只有一位LED被選通顯示,其余位則是熄滅的;圖10-6(b)所示為實(shí)際的顯示結(jié)果,人眼看到的是8位穩(wěn)定的同時(shí)顯示的字符。16
圖10-68位LED動(dòng)態(tài)顯示過(guò)程和結(jié)果動(dòng)態(tài)顯示的優(yōu)點(diǎn)是硬件電路簡(jiǎn)單,顯示器越多,優(yōu)勢(shì)越明顯。缺點(diǎn)是顯示亮度不如靜態(tài)顯示的亮度高。如果“掃描”速率較低,會(huì)出現(xiàn)閃爍現(xiàn)象。1710.2鍵盤(pán)接口原理鍵盤(pán)具有向單片機(jī)輸入數(shù)據(jù)、命令等功能,是人與單片機(jī)對(duì)話的主要手段。下面介紹鍵盤(pán)的工作原理和鍵盤(pán)的工作方式。10.2.1鍵盤(pán)輸入應(yīng)解決的問(wèn)題1.鍵盤(pán)的任務(wù)任務(wù)有三項(xiàng):(1)判別是否有鍵按下?若有,進(jìn)入下一步工作。(2)識(shí)別哪一個(gè)鍵被按下,并求出相應(yīng)的鍵值。(3)根據(jù)鍵值,找到相應(yīng)鍵值的處理程序入口。182.鍵盤(pán)輸入的特點(diǎn)常見(jiàn)鍵盤(pán):觸摸式鍵盤(pán)、薄膜鍵盤(pán)和按鍵式鍵盤(pán),最常用的是按鍵式鍵盤(pán)。按鍵實(shí)質(zhì)上就是一個(gè)開(kāi)關(guān)。如圖10-7(a)所示,按鍵開(kāi)關(guān)的兩端分別連接在行線和列線上,通過(guò)鍵盤(pán)開(kāi)關(guān)機(jī)械觸點(diǎn)的斷開(kāi)、閉合,其行線電壓輸出波形如圖10-7(b)所示。
圖10-7
鍵盤(pán)開(kāi)關(guān)及其行線波形19圖10-7(b)所示的t1和t3分別為鍵的閉合和斷開(kāi)過(guò)程中的抖動(dòng)期(呈現(xiàn)一串負(fù)脈沖),抖動(dòng)時(shí)間長(zhǎng)短與開(kāi)關(guān)的機(jī)械特性有關(guān),一般為5~10ms,t2為穩(wěn)定的閉合期,其時(shí)間由按鍵動(dòng)作確定,一般為十分之幾秒到幾秒,t0、t4為斷開(kāi)期。3.按鍵的識(shí)別鍵的閉合與否,行線輸出電壓上就是呈現(xiàn)高電平或低電平。高電平,表示鍵斷開(kāi),低電平則表示鍵閉合,通過(guò)對(duì)行線電平的高低狀態(tài)的檢測(cè),可確認(rèn)按鍵按下以及按鍵釋放與否。為了確保對(duì)一次按鍵動(dòng)作只確認(rèn)一次按鍵有效,必須消除抖動(dòng)期t1和t3的影響。204.如何消除按鍵的抖動(dòng)按鍵去抖動(dòng)的方法有兩種:一種軟件延時(shí),本思想是:在檢測(cè)到有鍵按下時(shí),該鍵所對(duì)應(yīng)的行線為低電平,執(zhí)行一段延時(shí)10ms的子程序后,確認(rèn)該行線電平是否仍為低電平,如果仍為低電平,則確認(rèn)該行確實(shí)有鍵按下。當(dāng)按鍵松開(kāi)時(shí),行線的低電平變?yōu)楦唠娖?,?zhí)行一段延時(shí)10ms的子程序后,檢測(cè)該行線為高電平,說(shuō)明按鍵確實(shí)已經(jīng)松開(kāi)。采取本措施,可消除兩個(gè)抖動(dòng)期t1和t3的影響。另一種是采用專用的鍵盤(pán)/顯示器接口芯片,這類芯片中都有自動(dòng)去抖動(dòng)的硬件電路。2110.2.2鍵盤(pán)的工作原理鍵盤(pán)可分為兩類:非編碼鍵盤(pán)和編碼鍵盤(pán)。非編碼鍵盤(pán)是利用按鍵直接與單片機(jī)相連接而成,這種鍵盤(pán)通常使用在按鍵數(shù)量較少的場(chǎng)合。使用這種鍵盤(pán),系統(tǒng)功能通常比較簡(jiǎn)單,需要處理的任務(wù)較少,但是可以降低成本、簡(jiǎn)化電路設(shè)計(jì)。按鍵的信息通過(guò)軟件來(lái)獲取。1.非編碼鍵盤(pán)常見(jiàn)的為兩種結(jié)構(gòu):獨(dú)立式鍵盤(pán)和矩陣式鍵盤(pán)。(1)獨(dú)立式鍵盤(pán)特點(diǎn)是:一鍵一線,各鍵相互獨(dú)立,每個(gè)鍵各接一條I/O口線,通過(guò)檢測(cè)I/O輸入線的電平狀態(tài),可容易地判斷哪個(gè)按鍵被按下,如圖10-8所示。22圖10-8獨(dú)立式鍵盤(pán)接口電路23對(duì)于圖10-8的鍵盤(pán),圖中的上拉電阻保證按鍵釋放時(shí),輸入檢測(cè)線上有穩(wěn)定的高電平。當(dāng)某一按鍵按下時(shí),對(duì)應(yīng)的檢測(cè)線就變成了低電平,與其他按鍵相連的檢測(cè)線仍為高電平,只需讀入I/O輸入線的狀態(tài),判別哪一條I/O輸入線為低電平,很容易識(shí)別哪個(gè)鍵被按下。優(yōu)點(diǎn):電路簡(jiǎn)單,各條檢測(cè)線獨(dú)立,識(shí)別按下按鍵的軟件編寫(xiě)簡(jiǎn)單。適用于鍵盤(pán)按鍵數(shù)目較少的場(chǎng)合,不適用于鍵盤(pán)按鍵數(shù)目較多的場(chǎng)合,因?yàn)閷⒄加幂^多的I/O口線。24識(shí)別某一鍵是否按下的子程序:KEYIN: MOV P1,0FFH;P1口寫(xiě)入1,設(shè)置P1口為輸入狀態(tài) MOV A,P1 ;讀入8個(gè)按鍵的狀態(tài) CJNE A,#0FFH,QUDOU;有鍵按下,跳去抖動(dòng) LJMP RETURN ;無(wú)鍵按下,返回
QUDOU:MOVR3,A ;8個(gè)按鍵的狀態(tài)送R3保存 LCALLDELAY10 ;調(diào)用延時(shí)子程序,軟件去鍵抖動(dòng) MOV A,P1 ;再一次讀入8個(gè)按鍵的狀態(tài) CJNE A,R3,RETURN;兩次鍵值比較,不同, ;是抖動(dòng)引起,轉(zhuǎn)RETURN 25KEY0:
MOV C,P1.0;有鍵按下,讀P1.0的按鍵狀態(tài) JC KEY1 ;P1.0為高,該鍵未按下,跳KEY1, ;判下一個(gè)鍵 LJMP PKEY0 ;P1.0的鍵按下,跳PKEY0處理KEY1:
MOV C,P1.1;讀P1.1的按鍵狀態(tài) JC KEY2 ;P1.1為高,該鍵未按下,跳KEY2, ;判下一個(gè)鍵 LJMP PKEY1 ;P1.1的鍵按下,跳PKEY1處理26KEY2:
MOV C,P1.2 ;讀P1.2的按鍵狀態(tài) JC KEY3 ;P1.2為高,該鍵未按下,跳 ;KEY3,判下一個(gè)鍵 LJMP PKEY2
;P1.2的鍵按下,跳PKEY2處理KEY3:
MOV C,P1.3 ;讀P1.3的按鍵狀態(tài) …… ……KEY7:
MOV C,P1.7 ;讀P1.7的按鍵狀態(tài) JC RETURN ;P1.7為高,該鍵未按下,跳
;RETURN處 LJMP PKEY7
;P1.7的鍵按下,跳PKEY7處理RETURN:
RET ;子程序返回27軟件延時(shí)10ms子程序DELAY10的編寫(xiě),參見(jiàn)第4章。對(duì)應(yīng)8個(gè)按鍵的鍵處理程序PKEY0~PKEY7,根據(jù)按鍵功能的要求來(lái)編寫(xiě)。注意,在進(jìn)入鍵處理程序后,需要先等待按鍵釋放,再執(zhí)行鍵處理功能。另外,在鍵處理程序完成后,一定要跳向RETURN標(biāo)號(hào)處返回。(2)矩陣式鍵盤(pán)矩陣式(也稱行列式)鍵盤(pán)用于按鍵數(shù)目較多的場(chǎng)合,由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上。如圖10-9所示,一個(gè)44的行、列結(jié)構(gòu)可以構(gòu)成一個(gè)16個(gè)按鍵鍵盤(pán)。在按鍵數(shù)目較多的場(chǎng)合,要節(jié)省較多的I/O口線。2829圖10-9
矩陣式鍵盤(pán)接口矩陣中無(wú)按鍵按下時(shí),行線為高電平;當(dāng)有按鍵按下時(shí),行線電平狀態(tài)將由與此行線相連的列線的電平?jīng)Q定。列線的電平如果為低,則行線電平為低;列線的電平如果為高,則行線的電平也為高,這是識(shí)別按鍵是否按下的關(guān)鍵所在。由于矩陣式鍵盤(pán)中行、列線為多鍵共用,各按鍵彼此將相互發(fā)生影響,所以必須將行、列線信號(hào)配合,才能確定閉合鍵位置。下面討論矩陣式鍵盤(pán)按鍵的識(shí)別方法。①掃描法。第1步,識(shí)別鍵盤(pán)有無(wú)鍵按下;第2步,如有鍵被按下,識(shí)別出具體的鍵位。下面以圖10-9所示的鍵3被按下為例,說(shuō)明識(shí)別過(guò)程。30第1步,識(shí)別鍵盤(pán)有無(wú)鍵按下。先把所有列線均置為0,然后檢查各行線電平是否都為高,如果不全為高,說(shuō)明有鍵按下,否則無(wú)鍵被按下。例如,當(dāng)鍵3按下時(shí),第1行線為低,還不能確定是鍵3被按下,因?yàn)槿绻恍械逆I2、1或0之一被按下,行線也為低電平。只能得出第1行有鍵被按下的結(jié)論。第2步,識(shí)別出哪個(gè)按鍵被按下。采用逐列掃描法,在某一時(shí)刻只讓1條列線處于低電平,其余所有列線處于高電平。當(dāng)?shù)?列為低電平,其余各列為高電平時(shí),因?yàn)槭擎I3被按下,第1行的行線仍處于高電平;31當(dāng)?shù)?列為低電平,其余各列為高電平時(shí),第1行的行線仍處于高電平;直到讓第4列為低電平,其余各列為高電平時(shí),此時(shí)第1行的行線電平變?yōu)榈碗娖剑瑩?jù)此,可判斷第1行第4列交叉點(diǎn)處的按鍵,即鍵3被按下。綜上所述,掃描法的思想是,先把某一列置為低電平,其余各列置為高電平,檢查各行線電平的變化,如果某行線電平為低電平,則可確定此行此列交叉點(diǎn)處的按鍵被按下。32②線反轉(zhuǎn)法。掃描法要逐列掃描查詢,有時(shí)則要多次掃描。而線反轉(zhuǎn)法則很簡(jiǎn)練,無(wú)論被按鍵是處于第一列或最后一列,均只需經(jīng)過(guò)兩步便能獲得此按鍵所在的行列值,下面以圖10-10所示的矩陣式鍵盤(pán)為例,介紹線反轉(zhuǎn)法的具體步驟。
讓行線編程為輸入線,列線編程為輸出線,并使輸出線輸出為全低電平,則行線中電平由高變低的所在行為按鍵所在行。
再把行線編程為輸出線,列線編程為輸入線,并使輸出線輸出為全低電平,則列線中電平由高變低所在列為按鍵所在列。33兩步即可確定按鍵所在的行和列,從而識(shí)別出所按的鍵。
34圖10-10
采用線反轉(zhuǎn)法的矩陣式鍵盤(pán)假設(shè)鍵3被按下。第一步,P1.0~P1.3輸出全為“0”,然后,讀入P1.4~P1.7線的狀態(tài),結(jié)果P1.4=0,而P1.5~P1.7均為1,因此,第1行出現(xiàn)電平的變化,說(shuō)明第1行有鍵按下;第二步,讓P1.4~P1.7輸出全為“0”,然后,讀入P1.0~P1.3位,結(jié)果P1.0=0,而P1.1~P1.3均為1,因此第4列出現(xiàn)電平的變化,說(shuō)明第4列有鍵按下。綜上所述,即第1行、第4列按鍵被按下,此按鍵即鍵3按下。線反轉(zhuǎn)法簡(jiǎn)單適用,但不要忘記按鍵去抖動(dòng)處理。3510.2.3鍵盤(pán)的工作方式單片機(jī)在忙于其他各項(xiàng)工作任務(wù)時(shí),如何兼顧鍵盤(pán)的輸入,這取決于鍵盤(pán)的工作方式。工作方式選取原則是,既要保證及時(shí)響應(yīng)按鍵操作,又不過(guò)多占用單片機(jī)工作時(shí)間。鍵盤(pán)工作方式有3種,即編程掃描、定時(shí)掃描和中斷掃描。1.編程掃描方式也稱查詢方式,利用單片機(jī)空閑時(shí),調(diào)用鍵盤(pán)掃描子程序,反復(fù)掃描鍵盤(pán)。如果單片機(jī)的查詢的頻率過(guò)高,雖能及時(shí)響應(yīng)鍵盤(pán)的輸入,但也會(huì)影響其他任務(wù)的進(jìn)行。查詢的頻率過(guò)低,可能會(huì)鍵盤(pán)輸入漏判。36所以要根據(jù)單片機(jī)系統(tǒng)的繁忙程度和鍵盤(pán)的操作頻率,來(lái)調(diào)整鍵盤(pán)掃描的頻率。2.定時(shí)掃描方式每隔一定的時(shí)間對(duì)鍵盤(pán)掃描一次。在這種方式中,通常利用單片機(jī)內(nèi)的定時(shí)器產(chǎn)生的定時(shí)中斷,進(jìn)入中斷子程序來(lái)對(duì)鍵盤(pán)進(jìn)行掃描,在有鍵按下時(shí)識(shí)別出該鍵,并執(zhí)行相應(yīng)鍵的處理程序。為了不漏判有效的按鍵,定時(shí)中斷的周期一般應(yīng)小于100ms。373.中斷掃描方式為提高單片機(jī)掃描鍵盤(pán)的工作效率,可采用中斷掃描方式,如圖10-11所示。圖中的鍵盤(pán)只有在鍵盤(pán)有按鍵按下時(shí),發(fā)出中斷請(qǐng)求信號(hào),單片機(jī)響應(yīng)中斷,執(zhí)行鍵盤(pán)掃描程序中斷服務(wù)子程序。如無(wú)鍵按下,單片機(jī)將不理睬鍵盤(pán)。此種方式的優(yōu)點(diǎn)是,只有按鍵按下時(shí),才進(jìn)行處理,所以其實(shí)時(shí)性強(qiáng),工作效率高。3839圖10-11
采用線反轉(zhuǎn)法的矩陣式鍵盤(pán)非編碼矩陣式鍵盤(pán)所完成的工作分為3個(gè)層次。(1)單片機(jī)如何來(lái)監(jiān)視鍵盤(pán)的輸入,體現(xiàn)在鍵盤(pán)的工作方式上就是:①編程掃描;②定時(shí)掃描;③中斷掃描。(2)確定按下鍵的鍵號(hào)。體現(xiàn)在按鍵的識(shí)別方法上就是:①掃描法;②線反轉(zhuǎn)法。(3)根據(jù)按下鍵的鍵號(hào),實(shí)現(xiàn)按鍵的功能,即跳向?qū)?yīng)的鍵處理程序。10.3鍵盤(pán)/顯示器接口設(shè)計(jì)實(shí)例在單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)中,一般都是把鍵盤(pán)和顯示器放在一起考慮。也有的系統(tǒng)僅單獨(dú)需要鍵盤(pán)或顯示器。介紹幾種實(shí)用的鍵盤(pán)/顯示器接口的設(shè)計(jì)方案。4010.3.1利用AT89S51串行口實(shí)現(xiàn)的鍵盤(pán)/顯示器接口 當(dāng)AT89S51單片機(jī)的串行口未作它用時(shí),可使用AT89S51的串行口的方式0的輸出方式,構(gòu)成鍵盤(pán)/顯示器接口,如圖10-12所示。 8個(gè)74LS164:74LS164(0)~74LS164(7)作為8位LED數(shù)碼管的段碼輸出口,AT89S51的P3.4、P3.5作為兩行鍵的行狀態(tài)輸入線,P3.3作為T(mén)XD引腳同步移位脈沖輸出控制線,P3.3=0時(shí),與門(mén)封死,禁止同步移位脈沖輸出。這種方案主程序可不必掃描顯示器,軟件設(shè)計(jì)簡(jiǎn)單,使單片機(jī)有更多的時(shí)間處理其他事務(wù)。 下面列出顯示子程序和鍵盤(pán)掃描子程序。41
圖10-12
用AT89S51串行口擴(kuò)展鍵盤(pán)/顯示器42顯示子程序:DIR:
SETB P3.3 ;P3.3=1,允許TXD腳同步移位脈沖輸出 MOV R7,#08H ;送出的段碼個(gè)數(shù) MOV R0,#7FH ;7FH~78H為顯示數(shù)據(jù)緩沖區(qū)DL0:
MOVA,@R0 ;取出要顯示的數(shù)送A ADDA,#0DH ;加上偏移量 MOVCA,@A+PC ;查段碼表SEGTAB,取出段碼 MOVSBUF,A ;將段碼送串行口的SBUFDL1:
JNB TI,DL1 ;查詢1個(gè)字節(jié)的段碼輸出完否?
CLR TI ;
1字節(jié)的段碼輸出完,清TI標(biāo)志 DEC R0 ;指向下一個(gè)顯示數(shù)據(jù)單元43
DJNZ R7,DL0 ;段碼個(gè)數(shù)計(jì)數(shù)器R7是否為0,如不 ;為0,繼續(xù)送段碼 CLRP3.3 ;
8個(gè)段碼輸出完畢,關(guān)閉顯示器輸出 RET ;返回SEGTAB:DB0C0H,0F9H,0A4H,0B0H,99H;共陽(yáng)極段 ;碼表 DB 92H,82H,0F8H,90H;
DB 88H,83H,0C6H,0A1H,86H; DB 8FH,0BFH,8CH,0FFH,0FFH;44鍵盤(pán)掃描子程序:KEYI:
MOVA,#00H;判斷有無(wú)鍵按下,使所有列線為0 MOVSBUF,A;掃描鍵盤(pán)的(8)號(hào)74LS164輸出為
;00H,使所有列線為0KL0:
JNB TI,KL0 ;串行輸出完否? CLRTI ;串行輸出完畢,清TIKL1:
JNB P3.4,PK1;第1行有閉合鍵嗎?如有,跳PK1 ;進(jìn)行處理 JB P3.5,KL1;在第2行鍵中有閉合鍵嗎?無(wú)閉 ;合鍵跳KL145PK1:
ACALLDL10 ;調(diào)用延時(shí)10ms子程,軟件消抖動(dòng) JNB P3.4,PK2 ;判斷是否由抖動(dòng)引起? JB P3.5,KL1PK2:
MOVR7,#08H ;不是抖動(dòng)引起的 MOVR6,#0FEH ;判別是哪一個(gè)鍵按下,F(xiàn)EH為最左 ;1列為低 MOVR3,#00H ;R3為列號(hào)寄存器 MOVA,R6KL5:
MOVSBUF,A ;列掃描,列掃描碼從串行口輸出
46KL2:
JNB TI,KL2 ;等待串行口發(fā)送完 CLRTI ;串行口發(fā)送完畢,清TI標(biāo)志 JNB P3.4,PKONE ;讀第1行線狀態(tài),第1行有鍵 ;閉合,跳PKONE JB P3.5,NEXT ;讀第2行狀態(tài),2行某鍵否? MOVR4,#08H ;2行中有鍵被按下,行首鍵 ;號(hào)08H送R4 AJMPPK3PKONE:MOVR4,#00H ;1行鍵中有鍵按下,行首鍵 ;號(hào)00H送R4PK3:
MOVSBUF,#00H ;等待鍵釋放,發(fā)送00H使所 ;有列線為低47KL3:
JNB TI,KL3 ;判1個(gè)字節(jié)是否發(fā)送完畢 CLRTI ;發(fā)送完畢,清標(biāo)志KL4:
JNB P3.4,KL4 ;判行線狀態(tài) JNB P3.5,KL4 MOVA,R4 ;兩行線均為高,說(shuō)明鍵已釋放
ADDA,R3 ;計(jì)算得鍵碼→A RETNEXT: MOVA,R6 ;列掃描碼左移一位,判下一列鍵 RL A MOVR6,A ;記住列掃描碼于R6中
48
INC R3 ;列號(hào)增1 DJNZR7,KL5 ;列計(jì)數(shù)器R7減1,8列 ;鍵都檢查完否? AJMPKEYI ;
8列掃描完,開(kāi)始下一個(gè)鍵盤(pán)掃描周期DL10:
MOVR7,#0AH ;延時(shí)10ms子程序DL:
MOVR6,#0FFHDL6:
DJNZR6,DL6 DJNZR7,DL RET本例中,如只需LED數(shù)碼管顯示部分,可把鍵盤(pán)部分的電路去掉即可;如只需鍵盤(pán),可把LED數(shù)碼管部分的電路去掉。4910.3.2各種專用的鍵盤(pán)/顯示器接口芯片簡(jiǎn)介用專用芯片,可省去編寫(xiě)鍵盤(pán)/顯示器動(dòng)態(tài)掃描程序以及鍵盤(pán)去抖動(dòng)程序編寫(xiě)的繁瑣工作。目前各種專用接口芯片種類繁多,各有特點(diǎn),總體趨勢(shì)是并行接口芯片逐漸退出,串行接口芯片越來(lái)越多的得到應(yīng)用。早期的較為流行的鍵盤(pán)/顯示器芯片8279,目前流行的鍵盤(pán)/顯示器接口芯片均采用串行通信方式,占用口線少。常見(jiàn)的芯片有:周立功公司的ZLG7289A、ZLG7290B、MAX7219、南京沁恒公司的CH451、HD7279和BC7281等。50這些芯片全采用動(dòng)態(tài)掃描方式,且控制的鍵盤(pán)均為編碼鍵盤(pán)。1.專用鍵盤(pán)/顯示器接口芯片8279可編程的并行鍵盤(pán)/顯示器接口芯片。內(nèi)部有鍵盤(pán)FIFO(先進(jìn)先出堆棧)/傳感器雙重功能的8×8=64字節(jié)RAM,鍵盤(pán)控制部分可控制8×8的鍵盤(pán)矩陣,能自動(dòng)獲得按下鍵的鍵號(hào)。自動(dòng)去鍵盤(pán)抖動(dòng)并具有雙鍵鎖定保護(hù)功能。顯示RAM的容量為16×8位,最多可控制16個(gè)LED數(shù)碼管顯示。8279已經(jīng)逐漸淡出市場(chǎng)。512.專用鍵盤(pán)/顯示器芯片ZLG7290B采用I2C串行口總線結(jié)構(gòu),可實(shí)現(xiàn)8位LED顯示和64鍵的鍵盤(pán)管理,需外接晶振,使用按鍵功能時(shí)要接8個(gè)二極管,電路稍顯復(fù)雜,且每次I2C通信間隔稍長(zhǎng)(10ms)。功能:閃爍、段點(diǎn)亮、段熄滅、功能鍵、連擊鍵計(jì)數(shù)等。其中,功能鍵實(shí)現(xiàn)了組合按鍵,這在此類芯片中極具特點(diǎn);連擊鍵計(jì)數(shù)實(shí)現(xiàn)了識(shí)別長(zhǎng)按鍵的功能,也是獨(dú)有的。3.專用顯示器芯片MAX7219MAXIM(美信)公司的產(chǎn)品。該芯片采用串行SPI接口,僅是單純驅(qū)動(dòng)共陰極LED數(shù)碼管,沒(méi)有鍵盤(pán)管理功能。524.專用顯示器芯片BC7281可驅(qū)動(dòng)16位LED數(shù)碼管顯示和實(shí)現(xiàn)64鍵的鍵盤(pán)管理,可實(shí)現(xiàn)閃爍、段點(diǎn)亮、段熄滅等功能。最大特點(diǎn)是通過(guò)外接移位寄存器驅(qū)動(dòng)16位LED數(shù)碼管。但所需外圍電路較多,占PCB空間較大,且在驅(qū)動(dòng)16位LED數(shù)碼管時(shí),由于采用動(dòng)態(tài)掃描方式工作,電流噪聲過(guò)大。5.專用鍵盤(pán)/顯示器芯片HD7279與單片機(jī)間采用串行通信,可控制并驅(qū)動(dòng)8位LED數(shù)碼管和實(shí)現(xiàn)64(8×8)鍵的鍵盤(pán)管理。外圍電路簡(jiǎn)單,價(jià)格低廉。由于具有上述優(yōu)點(diǎn),目前得到較為廣泛的應(yīng)用。536.專用鍵盤(pán)/顯示器芯片CH451可動(dòng)態(tài)驅(qū)動(dòng)8位LED數(shù)碼管顯示,具有BCD碼譯碼、閃爍、移位等功能。內(nèi)置大電流驅(qū)動(dòng)級(jí),段電流不小于30mA,位電流不小于160mA。內(nèi)置64(8×8)鍵鍵盤(pán)控制器,可對(duì)8×8矩陣鍵盤(pán)自動(dòng)掃描,且有去抖動(dòng)電路,并提供鍵盤(pán)中斷和按鍵釋放標(biāo)志位,可供查詢按鍵按下與釋放狀態(tài)。片內(nèi)內(nèi)置上電復(fù)位和看門(mén)狗定時(shí)器。芯片性價(jià)比較高,是目前使用較為廣泛的專用的鍵盤(pán)/顯示器接口芯片之一。但抗干擾能力不是很強(qiáng),不支持組合鍵識(shí)別。上述各種芯片,CH451和HD7279使用較多。從性價(jià)比,首推CH451,主要對(duì)LED數(shù)碼管的驅(qū)動(dòng)功能較完善。5410.3.3專用接口芯片CH451實(shí)現(xiàn)的鍵盤(pán)/顯示器控制 介紹專用鍵盤(pán)/顯示器接口芯片CH451(南京沁恒公司)1.基本功能與引腳介紹 內(nèi)部集成數(shù)碼管顯示驅(qū)動(dòng)和鍵盤(pán)掃描控制的專用鍵盤(pán)/顯示器接口芯片。內(nèi)置RC振蕩電路,可以直接動(dòng)態(tài)驅(qū)動(dòng)8位LED數(shù)碼管(或者64只LED),可實(shí)現(xiàn)顯示數(shù)字左移、右移、左循環(huán)、右循環(huán)、各位顯示數(shù)字獨(dú)立閃爍等功能。 內(nèi)置大電流驅(qū)動(dòng)級(jí),段電流不小于30mA,字電流不小于160mA,并有16級(jí)亮度控制功能;55在鍵盤(pán)控制方面,該芯片內(nèi)有64鍵鍵盤(pán)控制器,可實(shí)現(xiàn)8×8矩陣編碼鍵盤(pán)的掃描,并內(nèi)置自動(dòng)去抖動(dòng)電路,可提供按鍵中斷與按鍵釋放標(biāo)志位等功能。與單片機(jī)的接口,可選用1線串行接口或高速4線串行接口,片內(nèi)有上電復(fù)位電路,同時(shí)可提供高電平有效復(fù)位和低電平有效復(fù)位兩種輸出,同時(shí)片內(nèi)提供看門(mén)狗WatchDog。56兩種封裝形式:28腳的表貼型封裝(SOP型)以及24腳的雙列直插
(DIP)封裝,如圖10-13所示。
圖10-13
CH451的封裝與引腳575828腳與24腳在功能上稍有差別,引腳定義見(jiàn)表10-3。2.CH451的操作命令命令均為12位,其中高4位為標(biāo)識(shí)碼,低8位為參數(shù),(1)空操作命令編碼:0000××××××××B。對(duì)CH451無(wú)任何影響??蓱?yīng)用在多個(gè)CH451的級(jí)聯(lián)中,透過(guò)前級(jí)CH451向后級(jí)CH451發(fā)送操作命令而不影響前級(jí)CH451的狀態(tài)。例如,要將操作命令001000000001B發(fā)送給兩級(jí)級(jí)聯(lián)電路中的后級(jí)CH451(后級(jí)CH451的DIN引腳連接到前級(jí)CH451的DOUT引腳),只要在該操作命令后添加空操作59命令000000000000B再發(fā)送,該操作命令將經(jīng)過(guò)前級(jí)CH451到達(dá)后級(jí)CH451,而空操作命令留給了前級(jí)CH451。另外,為在不影響CH451的前提下,使DCLK變化以清除看門(mén)狗計(jì)時(shí)器,也可以發(fā)送空操作命令。在非級(jí)聯(lián)的應(yīng)用中,空操作命令可只發(fā)送高4位。(2)芯片內(nèi)部復(fù)位命令編碼:001000000001B??蓪H451的各個(gè)寄存器和各種參數(shù)復(fù)位到默認(rèn)的狀態(tài)。芯片上電時(shí),CH451均被復(fù)位,此時(shí)各個(gè)寄存器均復(fù)位為0,各種參數(shù)均恢復(fù)為默認(rèn)值。60(3)字?jǐn)?shù)據(jù)移位命令編碼:0011000000[D1][D0]B。命令共有4個(gè):開(kāi)環(huán)左移、右移,閉環(huán)左移、右移。D0=0時(shí)為開(kāi)環(huán),D0=時(shí)為閉環(huán);D1=0時(shí)左移,D1=1時(shí)為右移。開(kāi)環(huán)左移時(shí),DIG0引腳對(duì)應(yīng)的單元補(bǔ)00H,此時(shí)不譯碼方式顯示為空格,BCD譯碼方式時(shí)顯示為0;開(kāi)環(huán)右移時(shí),DIG7引腳對(duì)應(yīng)的單元補(bǔ)00H;而在閉環(huán)時(shí)DIG0與DIG7頭尾相接,閉環(huán)移位。61(4)設(shè)定系統(tǒng)參數(shù)命令編碼:010000000[WDOG][KEYB][DISP]B。用于設(shè)定CH451的系統(tǒng)級(jí)參數(shù),如看門(mén)狗WDOG使能、鍵盤(pán)掃描使能KEYB、顯示驅(qū)動(dòng)使能DISP等。各個(gè)參數(shù)均可通過(guò)命令中的1位數(shù)據(jù)來(lái)進(jìn)行控制,將相應(yīng)數(shù)據(jù)位置為1可啟用該功能,否則關(guān)閉該功能(默認(rèn)值)。(5)設(shè)定顯示參數(shù)命令編碼:0101[MODE(1位)][LIMIT(3位)][INTENSITY(4位)]B。設(shè)定CH451的顯示參數(shù),其中譯碼方式MODE(1位)、掃描極限LIMIT(3位)、顯示亮度INTENSITY(4位)。62譯碼方式MODE=1,為BCD譯碼方式,MODE=0時(shí)為不譯碼方式。CH451默認(rèn)不譯碼方式,此時(shí)8個(gè)數(shù)據(jù)寄存器中字節(jié)數(shù)據(jù)的位7~位0分別對(duì)應(yīng)8個(gè)數(shù)碼管的小數(shù)點(diǎn)和段a~段g,當(dāng)某段數(shù)據(jù)位為1時(shí),對(duì)應(yīng)的段點(diǎn)亮;當(dāng)某段數(shù)據(jù)位為0時(shí)熄滅。CH451BCD譯碼方式主要用于LED數(shù)碼管驅(qū)動(dòng),單片機(jī)只要給出二進(jìn)制數(shù)的BCD碼,便由CH451將其譯碼并直接驅(qū)動(dòng)LED數(shù)碼管以顯示對(duì)應(yīng)的字符。BCD譯碼方式是對(duì)顯示數(shù)據(jù)寄存器字節(jié)中的數(shù)據(jù)位4~位0進(jìn)行BCD譯碼,可用于控制段驅(qū)動(dòng)引腳SEG6~SEG0的輸出,它們對(duì)應(yīng)于數(shù)碼管的段g~段a,同時(shí)可用字節(jié)63數(shù)據(jù)的位7來(lái)控制SEG7段對(duì)應(yīng)的LED數(shù)碼管的小數(shù)點(diǎn),字節(jié)數(shù)據(jù)的位6和位5不影響B(tài)CD譯碼的輸出,它們可以是任意值。將位4~位0進(jìn)行BCD譯碼可顯示以下28個(gè)字符,其中00000B~01111B分別對(duì)應(yīng)于顯示字符“0~F”,10000B~11010B分別對(duì)應(yīng)于顯示“空格”、“+”、“-”、“=”、“[”、“]”、“_”、“H”、“L”、“P”、“.”,其余值為空格。掃描極限LIMIT控制位001B~111B和000B(默認(rèn)值)可分別設(shè)定掃描極限1~7和8。64顯示亮度INTENSITY控制位(4位)可實(shí)現(xiàn)16級(jí)顯示亮度控制。0001B~1111B和0000B(默認(rèn)值)則用于分別設(shè)定顯示驅(qū)動(dòng)占空比1/16~15/16和16/16,(6)設(shè)定閃爍控制命令編碼:[D7S][D6S][D5S][D4S][D3S][D2S][D1S][D0S]B用于設(shè)定CH451的閃爍顯示屬性,其中D7S~D0S位分別對(duì)應(yīng)于8個(gè)數(shù)碼管的字驅(qū)動(dòng)DIG7~DIG0,并控制DIG7~DIG0的屬性,將相應(yīng)的數(shù)據(jù)位置為1則閃爍顯示,否則為不閃爍的正常顯示(默認(rèn)值)。(7)加載顯示數(shù)據(jù)命令編碼:[DIG_ADDR][DIG_DATA]B。65用于將顯示字節(jié)數(shù)據(jù)DIG_DATA(8位)寫(xiě)入DIG_ADDR(3位)指定的數(shù)據(jù)寄存器中。DIG_ADDR的000B~111B分別用于指定顯示寄存器的地址0~7,并分別對(duì)應(yīng)于DIG0~DIG7引腳驅(qū)動(dòng)的8個(gè)LED數(shù)碼管。DIG_DATA為待寫(xiě)入的顯示字節(jié)數(shù)據(jù)。(8)讀取按鍵代碼命令編碼:0111××××××××B。用于獲得CH451最近檢測(cè)到的有效按鍵的代碼。CH451通常從DOUT引腳向單片機(jī)輸出按鍵代碼,按鍵代碼是7位數(shù)據(jù),最高位是狀態(tài)碼,位5~位0是掃描碼。讀取按鍵代碼命令的位7~位0可以是任意值,可將該命令縮短為4位,即位11~位8。66例如,CH451檢測(cè)到有效按鍵并向單片機(jī)發(fā)出中斷請(qǐng)求時(shí),假如按鍵代碼是5EH,則單片機(jī)先向CH451發(fā)出讀取按鍵代碼命令0111B,然后再?gòu)腄OUT獲得按鍵代碼5EH。CH451所提供的按鍵代碼為7位,位2~位0是列掃描碼,位5~位3是行掃描碼,位6是按鍵的狀態(tài)碼(鍵按下為1,鍵釋放為0)。對(duì)8×8鍵盤(pán),即連接在DIG7~DIG0與SEG7~SEG0之間的鍵按下時(shí),CH451所提供的按鍵代碼是固定的,如圖10-14所示。如果需要鍵被釋放時(shí)的按鍵代碼,可將圖10-14所示的按鍵代碼的位6置0,也可將按鍵代碼減去40H。67例如,連接DIG3與SEG4的鍵被按下時(shí),按鍵代碼為63H,鍵被釋放后,按鍵代碼是23H。單片機(jī)可在任何時(shí)候讀取有效按鍵的代碼,但一般在CH451檢測(cè)到有效按鍵并向發(fā)出鍵盤(pán)中斷請(qǐng)求時(shí),進(jìn)入中斷服務(wù)程序讀取按鍵代碼,此時(shí)按鍵代碼的位6總是1。另外,如需了解按鍵何時(shí)釋放,可通過(guò)查詢方式定期讀取按鍵代碼,直到按鍵代碼的位6為0。注意:CH451不支持組合鍵。如需要組合鍵功能,則可利用兩片CH451來(lái)實(shí)現(xiàn)。具體的實(shí)現(xiàn),請(qǐng)見(jiàn)相關(guān)資料。683.CH451與AT89S51單片機(jī)的接口接口電路如圖10-14所示,使用4線串行接口。其中DOUT腳連到外部中斷輸入
腳,用中斷方式響應(yīng)有效按鍵。也可用查詢方式確定CH451是否檢測(cè)到有效按鍵,同時(shí)還可向單片機(jī)提供復(fù)位信號(hào)RESET,并帶有WatchDog功能。CH451的段驅(qū)動(dòng)腳串200Ω電阻用于限制和均衡段驅(qū)動(dòng)電流。在5V下,串接200Ω電阻對(duì)應(yīng)的段電流為13mA。CH451具有64鍵的鍵盤(pán)掃描功能,為防止鍵按下后在SEG信號(hào)線與DIG信號(hào)線之間形成短路而影響數(shù)碼管顯示,一般應(yīng)在CH451的DIG0~DIG7腳與鍵盤(pán)矩陣之間串接限流電阻,阻值1kΩ~10kΩ。69圖10-14
CH451與AT89S51單片機(jī)的接口電路70將P1.0與DIN連接可用于輸入串行數(shù)據(jù),串行數(shù)據(jù)輸入的順序是低位在前,高位在后。另外,在上電復(fù)位后,CH451默認(rèn)選擇1線串行接口,如需選擇4線串行接口,則應(yīng)在DCLK輸出串行時(shí)鐘之前,先在DIN上輸出一個(gè)低電平脈沖,以通知CH451為4線串行接口。將P1.1與DCLK連接可提供串行時(shí)鐘,以使CH451在其上升沿從DIN輸入數(shù)據(jù),并在其下降沿從DOUT輸出數(shù)據(jù)。71LOAD用于加載串行數(shù)據(jù),CH451一般在其上升沿加載移位寄存器中的12位數(shù)據(jù)以作為操作命令進(jìn)行分析并處理。也就是說(shuō),LOAD的上升沿是串行數(shù)據(jù)幀的幀完成標(biāo)志,此時(shí)無(wú)論移位寄存器中的12位數(shù)據(jù)是否有效,CH451都會(huì)將其當(dāng)作操作命令來(lái)處理。應(yīng)注意,在級(jí)聯(lián)電路中,單片機(jī)每次輸出的串行數(shù)據(jù)必須是單個(gè)CH451的串行數(shù)據(jù)的位數(shù)乘以級(jí)聯(lián)的級(jí)數(shù)。下面介紹該接口電路的驅(qū)動(dòng)程序:72CH451初始化子程序:INIT:
CLR P1.0 ;DIN腳先置低,當(dāng)有上跳沿時(shí) ;選擇CH451為4線串行接口 SETBP1.1 ;置DCLK為默認(rèn)的高電平 SETB P1.0 ;置DIN為高電平,產(chǎn)生上跳 ;沿,選4線串行接口 SETB P1.2 ;置LOAD腳為高電平 SETB P3.2 ;置
(P3.2)為輸入 MOV B,#04H ;設(shè)置系統(tǒng)參數(shù)命令 MOV A,#07H;WatchDog使能,開(kāi)鍵盤(pán)、顯示功能
LCALLWRITE ;調(diào)用寫(xiě)命令子程序WRITE MOV B,#03H ;設(shè)置移位命令73
MOV A,#00H ;開(kāi)環(huán)左移 LCALLWRITE ;調(diào)用寫(xiě)命令子程序WRITE MOV B,#05H ;設(shè)置顯示參數(shù) MOV A,#00H ;不譯碼,8位顯示,最高亮度 LCALLWRITE ;調(diào)用寫(xiě)命令子程序WRITE MOV B,#06H ;設(shè)置閃爍控制 MOV A,#00H ;不閃爍 LCALLWRITE ;調(diào)用寫(xiě)命令子程序WRITE CLR IT0 ;置外中斷請(qǐng)求信號(hào)為低電平觸發(fā) CLR IE0 ;清外中斷的中斷請(qǐng)求標(biāo)志 SETB EX0 ;允許鍵盤(pán)中斷 SETB EA ;總中斷允許 RET ;子程序返回74寫(xiě)入命令子程序:入口:B、Acc中裝入待寫(xiě)的12位命令數(shù)據(jù),低8位在Acc中,高4位在B的低4位中WRITE:CLR EX0 ;禁止鍵盤(pán)中斷 CLR P1.2 ;置LOAD腳為低,命令開(kāi)始 MOV R7,#08H ;將Acc中8位送出WRIT_8:RRCA ;低位在前,高位在后 CLR P1.1 ;置DCLK腳為低電平 MOV P1.0,C ;送出1位數(shù)據(jù) SETB P1.1;時(shí)鐘上升沿,通知CH451輸入位數(shù)據(jù) DJNZ R7,WRIT_8 ;8位數(shù)據(jù)未送完,繼續(xù)75
MOV A,B MOV R7,#04H ;將B中4位送出WRIT_4:RRCA ;低位在前高位在后 CLR P1.1 ;置DCLK腳為低電平 MOV P1.0,C ;送出1位數(shù)據(jù) SETB P1.1 ;產(chǎn)生時(shí)鐘上升沿,通知 ;CH451輸入位數(shù)據(jù) DJNZ R7,WRIT_4 ;4位數(shù)據(jù)未送完,繼續(xù)
SETB P1.2 ;產(chǎn)生加載上跳沿,通知 ;CH451處理命令數(shù)據(jù) SETB EX0 ;允許鍵盤(pán)中斷 RET76讀入鍵值子程序:
出口:鍵值數(shù)據(jù)在Acc中。READ: CLR EXO ;禁止鍵盤(pán)中斷 CLR P1.2 ;命令開(kāi)始 MOV A,#07H;讀取鍵值命令的高4位0111B MOV R7,#04H;忽略12位命令的低8位READ_4READ_4:RRC A ;低位在前,高位在后 CLR P1.1 ;置DCLK腳為低電平 MOV P1.0,C ;讀入1位數(shù)據(jù) SETB P1.1 ;置DCLK腳為高電平 DJNZ R7,READ_4 ;4位數(shù)據(jù)未完繼續(xù) SETB P1.2;加載上跳沿,通知CH451處理命令數(shù)據(jù) MOV A ;先清除鍵值單元以便移位77
MOV R7,#07H
;讀入7位鍵值READ_7:MOVC,P3.2 ;讀入1位數(shù)據(jù) CLR P1.1 ;置DCLK腳低電平,產(chǎn)生下跳 ;沿,通知CH451輸出下一位 RLC A ;數(shù)據(jù)移入Acc,高位前,低位后 SETB P1.1 ;置DCLK腳為高電平 DJNZ R7,READ_7 ;7位數(shù)據(jù)未完繼續(xù) MOV IE0 ;清中斷標(biāo)志,讀操作過(guò)程中 ;有低電平脈沖 SETB EX0 ;允許鍵盤(pán)中斷 RET78使用CH451擴(kuò)展鍵盤(pán)顯示接口,具有接口簡(jiǎn)單、占用CPU資源少、外圍器件簡(jiǎn)單、性能價(jià)格比高等優(yōu)點(diǎn),在各種單片機(jī)系統(tǒng)中得以廣泛的應(yīng)用。7910.3.4專用接口芯片HD7279實(shí)現(xiàn)的鍵盤(pán)/顯示器控制HD7279是目前使用較廣泛的另一種專用接口芯片。1.
HD7279A簡(jiǎn)介能同時(shí)驅(qū)動(dòng)8個(gè)共陰極LED數(shù)碼管(或64個(gè)獨(dú)立的LED發(fā)光二極管)和64(88)鍵的編碼鍵盤(pán)矩陣??刂芁ED數(shù)碼管采用動(dòng)態(tài)掃描的循環(huán)顯示方式。具有如下特性:
與單片機(jī)采用串口方式,僅占4條口線,接口簡(jiǎn)單;
內(nèi)部有譯碼器,可直接接收BCD碼或十六進(jìn)制碼,同時(shí)具有兩種譯碼方式,實(shí)現(xiàn)LED數(shù)碼管位尋址和段尋址,可方便地控制每位LED數(shù)碼管中任意一段是否發(fā)光;80內(nèi)部有驅(qū)動(dòng)器,可直接驅(qū)動(dòng)不超過(guò)25.4mm的LED數(shù)碼管。片選信號(hào)輸入,易實(shí)現(xiàn)多于8位顯示器或多于64鍵的鍵盤(pán)控制。具有自動(dòng)消除鍵抖動(dòng)并識(shí)別有效鍵值的功能。HD7279A芯片占用口線少,外圍電路簡(jiǎn)單,具有較高性價(jià)比,已在鍵盤(pán)/顯示器接口的設(shè)計(jì)中獲得廣泛應(yīng)用。(1)引腳說(shuō)明與電氣特性為28腳標(biāo)準(zhǔn)雙列直插式封裝(DIP),單一+5V供電。其引腳如圖10-15所示,引腳功能見(jiàn)表10-4。81
圖10-15
HD7279A的引腳8283位驅(qū)動(dòng)輸出端DIG0~DIG7連接8只LED數(shù)碼管的共陰極;段驅(qū)動(dòng)輸出端SA~SG分別連接至LED數(shù)碼管的a~g段的陽(yáng)極,而DP腳連至小數(shù)點(diǎn)dp的陽(yáng)極。DIG0~DIG7和DP以及SA~SG還分別是64鍵的鍵盤(pán)的列線和行線,完成對(duì)鍵盤(pán)的譯碼和鍵值識(shí)別。88矩陣陣列中的每個(gè)鍵值(見(jiàn)圖10-19)可用讀鍵盤(pán)命令讀出,鍵值范圍是00H~3FH。與單片機(jī)連接僅需4條口線:
、DATA、CLK和KEY。84:當(dāng)單片機(jī)訪問(wèn)HD7279A芯片(寫(xiě)入命令、顯示數(shù)據(jù)、位地址、段地址或讀出鍵值等)時(shí),應(yīng)將其置為低電平。DATA:串行數(shù)據(jù)端,當(dāng)單片機(jī)向HD7279A芯片發(fā)送數(shù)據(jù)時(shí),DATA為輸入端;當(dāng)單片機(jī)從HD7279A芯片讀入鍵值時(shí),DATA為輸出端。CLK:數(shù)據(jù)串行傳送的同步時(shí)鐘輸入端,時(shí)鐘的上升沿將數(shù)據(jù)寫(xiě)入HD7279A中或從HD7279A中讀出數(shù)據(jù)。85KEY:為按鍵信號(hào)輸出端,在無(wú)鍵按下時(shí)為高電平,在有鍵按下時(shí)變?yōu)榈碗娖?,并且一直保持到該按下鍵至釋放為止。
:為復(fù)位端,由低電平變?yōu)楦唠娖?,并?jīng)過(guò)18~25ms復(fù)位結(jié)束。通常,該端接+5V即可。若對(duì)可靠性要求較高,則可外接復(fù)位電路,或直接由單片機(jī)控制。RC:用于外接振蕩元件,其典型值為R=1.5k,C=15pF。NC:懸空。HD7279A的電氣特性如表10-5所示。8687(2)控制命令介紹
6條純命令、7條帶數(shù)據(jù)命令和1條讀鍵盤(pán)命令組成。①純命令(6條)。所有純命令都是單字節(jié),見(jiàn)表10-6。88②帶數(shù)據(jù)命令(7條)。均由雙字節(jié)組成,第一字節(jié)為命令標(biāo)志碼(有的還有位地址),第二字節(jié)為顯示內(nèi)容。a.按方式0譯碼顯示命令命令中的a2、a1、a0表示LED數(shù)碼管的位地址,表示顯示數(shù)據(jù)是送給哪一位LED的,L1表示LED最低位,L8表示LED最高位,具體位地址的譯碼見(jiàn)表10-7。89命令中的d3、d2、d1、d0為顯示數(shù)據(jù),收到這些數(shù)據(jù)后,HD7279A按表10-8所示的規(guī)則譯碼和顯示。dp為小數(shù)點(diǎn)顯示控制位,dp=1時(shí),小數(shù)點(diǎn)顯示,dp=0時(shí),小數(shù)點(diǎn)不顯示。命令中的×××為無(wú)影響位。
90例如,命令第一字節(jié)為80H,第二字節(jié)為08H,則L1位LED顯示內(nèi)容為8,小數(shù)點(diǎn)dp熄滅:命令第一字節(jié)為87H,第二字節(jié)為8EH,則L8位LED顯示內(nèi)容為P,小數(shù)點(diǎn)dp點(diǎn)亮。b.按方式1譯碼顯示命令91
該命令和按方式0譯碼顯示的含義基本相同,不同的是譯碼方式為1,LED顯示的內(nèi)容與十六進(jìn)制相對(duì)應(yīng),如表10-9所示。a2、a1、a0位地址譯碼表如表10-9所示
表10-9
方式1譯碼顯示表例如,命令第一字節(jié)為C8H,第二字節(jié)為09H,則L1位LED顯示內(nèi)容為9,小數(shù)點(diǎn)dp熄滅;命令第一字節(jié)為C9H,第二字節(jié)為8FH,則L2位LED顯示內(nèi)容為F,小數(shù)點(diǎn)dp點(diǎn)亮。92d3~d0(十六進(jìn)制)LED顯示d3~d0(十六進(jìn)制)LED顯示0H08H81H19H92H2AHA3H3BHB4H4CHC5H5DHD6H6EHE7H7FHFc.不譯碼顯示命令命令中的a2、a1、a0仍為位地址,譯碼表如表10-8所示。第2字節(jié)仍為L(zhǎng)ED顯示內(nèi)容,其中dp和A~G分別代表LED的小數(shù)點(diǎn)和對(duì)應(yīng)的段,當(dāng)取值為1時(shí),該段點(diǎn)亮;取值為0時(shí),該段熄滅,見(jiàn)表10-10。93可在指定位上顯示字符。例如,若命令第一字節(jié)為95H,第二字節(jié)為3EH,則在L6位LED上顯示字符U,小數(shù)點(diǎn)dp熄滅。d.閃爍控制命令94
命令規(guī)定了每個(gè)數(shù)碼管的閃爍屬性。d8~d1分別對(duì)應(yīng)L8~L1位數(shù)碼管,其值為1時(shí),LED不閃爍;其值為0時(shí),LED閃爍。如表10-11所示,該命令默認(rèn)所有數(shù)碼管均不閃爍。例如,命令第一字節(jié)為88H,第二字節(jié)為97H,則L7、L6、L4位LED閃爍。e.消隱控制命令95該命令規(guī)定了每個(gè)數(shù)碼管的消隱屬性。d8~d1分別對(duì)應(yīng)L8~L1位數(shù)碼管,其值為1時(shí),LED顯示;值為0時(shí),消隱,如表10-12所示。應(yīng)注意至少要有一個(gè)LED數(shù)碼管保持顯示,如全部消隱,該命令無(wú)效。96例如,命令第一字節(jié)為98H,第二字節(jié)為81H,則L7、L6、L5、L4、L3、L2位LED消隱。f.段點(diǎn)亮命令點(diǎn)亮某個(gè)LED數(shù)碼管中的某一段或獨(dú)立的64個(gè)LED發(fā)光二極管中的某一個(gè)。d5~d0取值為00H~3FH,點(diǎn)亮段見(jiàn)表10-13。例如,命令第一字節(jié)為E0H,第二字節(jié)為00H,則點(diǎn)亮L1位LED的g段;第二字節(jié)為10H,則點(diǎn)亮L3位LED的g段。9798g.段關(guān)閉命令關(guān)閉某個(gè)數(shù)碼管中的某一段。d5~d0的取值為00H~3FH,所對(duì)應(yīng)的關(guān)閉段同表10-12,僅將點(diǎn)亮段變?yōu)殛P(guān)閉段。例如,命令第一字節(jié)為C0H,第二字節(jié)為00H,則關(guān)閉L1位LED的g段;第二字節(jié)為10H,則關(guān)閉L3位LED的g段。99③讀取鍵盤(pán)命令 從HD7279A讀出當(dāng)前按鍵值。命令第一字節(jié)為15H,表示單片機(jī)寫(xiě)到HD7279A是讀鍵命令,而第二字節(jié)d7~d0為從HD7279A中讀的按鍵值,其范圍為00H~3FH。 當(dāng)按鍵按下時(shí),KEY引腳從高電平變?yōu)榈碗娖剑⒈3值桨存I釋放為止。在此期間,若HD7279A收到來(lái)自單片機(jī)的讀鍵盤(pán)命令15H,則HD7279A向單片機(jī)輸出當(dāng)前的按鍵代碼。100注意,HD7279A只能給出其中一個(gè)按下鍵的代碼,不適合需要兩個(gè)或兩個(gè)以上鍵同時(shí)按下的場(chǎng)合。如果確實(shí)需要雙鍵組合使用,可在單片機(jī)某位I/O引腳接一鍵,HD7279A所連鍵盤(pán)共同組成雙鍵功能。④時(shí)序HD7279A采用串行方式與單片機(jī)通信,串行數(shù)據(jù)從DATA引腳送入或輸出,并與CLK端同步。當(dāng)片選信號(hào)
變?yōu)榈碗娖胶?,DATA引腳上的數(shù)據(jù)在CLK脈沖上升沿作用下寫(xiě)入或讀出HD7279A的數(shù)據(jù)緩沖器。101(3)命令時(shí)序a.純命令時(shí)序單片機(jī)發(fā)出8個(gè)CLK脈沖,向HD7279A發(fā)出8位命令,DATA引腳最后為高阻態(tài),如圖10-16所示。
圖10-16
純命令時(shí)序102b.帶數(shù)據(jù)命令時(shí)序單片機(jī)發(fā)出16個(gè)CLK脈沖,前8個(gè)向HD7279A發(fā)送8位命令;后8個(gè)向HD7279A傳送8位顯示數(shù)據(jù),DATA引腳最后為高阻態(tài),如圖10-17所示。
圖10-17
帶數(shù)據(jù)命令時(shí)序103c.讀鍵盤(pán)命令時(shí)序單片機(jī)發(fā)出16個(gè)CLK脈沖,前8個(gè)向HD7279A發(fā)送8位命令;發(fā)送完之后DATA引腳為高阻態(tài);后8個(gè)CLK由HD7279A向單片機(jī)返回8位按鍵值,DATA引腳為輸出狀態(tài)。最后一個(gè)CLK脈沖的下降沿將DATA引腳恢復(fù)為高阻態(tài),如圖10-18所示。
圖10-18
讀鍵盤(pán)命令時(shí)序104保證正確的時(shí)序是HD7279A正常工作的前提條件。當(dāng)選定HD7279A的振蕩元件RC和單片機(jī)的晶振之后,應(yīng)調(diào)節(jié)延時(shí)時(shí)間,使時(shí)序中的T1~T8滿足表10-14要求。應(yīng)仔細(xì)調(diào)整HD7279A時(shí)序,使其運(yùn)行時(shí)間接近最短。1052.AT89S51單片機(jī)與HD7279A接口設(shè)計(jì)(1)硬件接口電路圖10-19為單片機(jī)與HD7279A的接口電路,外接振蕩元件為典型值,晶振頻率為12MHz。上電后,HD7279A大約經(jīng)過(guò)15~18ms的時(shí)間才進(jìn)入工作狀態(tài)。單片機(jī)判斷鍵盤(pán)矩陣中是否有按鍵按下,是通過(guò)KEY腳電平來(lái)判斷的。使用中斷方式時(shí),可將KEY腳接至單片機(jī)的外部中斷輸入端,并設(shè)置成跳沿觸發(fā)。HD7279A控制顯示器時(shí),應(yīng)連接共陰極顯示器。對(duì)于不使用的按鍵和顯示器,可以不連接。省去的顯示器或?qū)?06顯示器設(shè)置的消隱、閃爍屬性,均不影響鍵盤(pán)的使用。除非不用顯示器,否則串聯(lián)在DP及SA~SG引線上的200電阻不可省去。 如果不使用鍵盤(pán),圖10-19所示的與鍵盤(pán)連接的10k電阻和100k電阻便可省去。如果使用鍵盤(pán),電路中的100k下拉電阻則不可省去。 HD7279A采用動(dòng)態(tài)循環(huán)掃描方式,如果采用普通的LED數(shù)碼管亮度不夠,則可采用高亮度或超高亮度型號(hào)的LED數(shù)碼管。
圖10-19所示的3、5、26引腳懸空。107108圖10-19
AT89S51單片機(jī)與HD7279A的接口電路(2)驅(qū)動(dòng)程序設(shè)計(jì)根據(jù)圖10-19,編程實(shí)現(xiàn)當(dāng)有按鍵按下時(shí),單片機(jī)讀取該按鍵的代碼并將其顯示在LED數(shù)碼管上。程序中使用單片機(jī)內(nèi)RAM的29H和28H兩個(gè)單元。29H單元位地址為48H~4FH;28H單元位地址為40H~47H。①發(fā)送29H單元中的數(shù)據(jù)到HD7279A,高位在前。程序入口條件為
=1,CLK
=
0。
SETB P1.0 ;
=1 CLR P1.1 ;CLK=0SEND:MOV R2,#08H ;發(fā)送8位數(shù)據(jù) CLR P1.0 ;
=0
109 LCALL DELY1 ;延時(shí)50s(T1)LOOP1:MOV C,4FH;29H單元的D7位傳至HD7279A MOV P1.2,C ;數(shù)據(jù)出現(xiàn)在DATA引腳上 SETB P1.1 ;置CLK為高電平,數(shù)據(jù)寫(xiě)入HD7279A MOV A,29H ;待發(fā)數(shù)據(jù)左移1位 RL A MOV 29H,A LCALL DELY2 ;延時(shí)8s(T2) CLR P1.1 ;置CLK為低電平 LCALL DELY2 ;延時(shí)8s(T3) DJNZ R2,LOOP1 ;檢測(cè)8位數(shù)據(jù)是否發(fā)送完畢
110
CLR P1.2;發(fā)送完畢,
DATA為低電平(輸出狀態(tài)) RET ;返回②讀入的鍵碼送到28H單元,高位在前。程序入口條件為=
0,
CLK
=
0。 CLR P1.0 ;
=0 CLR P1.1 ;CLK=0RESE:
MOV R2,#08H ;接收8位數(shù)據(jù) SETB P1.2 ;P1.2輸出鎖存器為高電平,準(zhǔn)備輸入 LCALL DELY3 ;延時(shí)25s(T5)LOOP2:SETB P1.1 ;置CLK為高電平,讀出HD7279A數(shù)據(jù) LCALL DELY2 ;延時(shí)8s(T6和T7) MOV A,28H ;接收數(shù)據(jù)左移1位111
RL A MOV 28H,A MOV C,P1.2 ;接收1位數(shù)據(jù) MOV 40H,C ;讀入數(shù)據(jù)存入28H的D0位 CLR P1.1 ;置P1.1為低電平 LCALL DELY2 ;延時(shí)8s(T3) DJNZ R2,LOOP2 ;檢測(cè)8位數(shù)據(jù)是否發(fā)送完畢 CLR P1.2 ;接收完畢,DATA引腳置低電平 RET ;返回112③查詢方式讀鍵值并顯示 MOV P1,#0F9H ;=1,KEY=1,CLK=0, ;DATA=0 LCALL DELY4 ;延時(shí)25ms MOV 29H,#0A4H ;復(fù)位命令 LCALL SEND SETB P1.0 ;
=1MAIN:
JB P1.3,MAIN ;檢測(cè)鍵盤(pán),無(wú)按鍵下則等待 MOV 29H,#15H ;發(fā)讀鍵盤(pán)命令 LCALL SEND ;寫(xiě)入HD7279A LCALL RESE ;讀鍵值到28H單元113
SETB P1.0 ;=1 MOV B,#0AH ;十六進(jìn)制鍵值轉(zhuǎn)換成BCD碼
MOV A,28H DIV AB MOV R1,A ;十位暫存于R1 MOV 29H,#81H ;按方式0譯碼顯示在L2位LED LCALL SEND ;命令寫(xiě)入HD7279A LCALL DELY3 ;延時(shí)25s(T4) MOV 29H,R1114
LCALL SEND ;顯示十位 SETB P1.0 ;=1 MOV 29H,#80H;按方式0譯碼顯示在L1位LED LCALL SEND LCALL DELY3 ;延時(shí)25s(T4) MOV 29H,B ;顯示個(gè)位 LCALL SEND SETB P1.0 ;
=1WAIT:
JNB P1.3,WAIT ;等待按鍵釋放 SJMP MAIN上述程序中的各延時(shí)子程序DELY1~DELY3由用戶自行編寫(xiě)。11510.4AT89S51單片機(jī)與液晶顯示器(LCD)的接口 LCD(LiquidCrystalDisplay)液晶顯示器縮寫(xiě),被動(dòng)顯示,本身并不發(fā)光,是利用液晶經(jīng)過(guò)處理后能改變光線通過(guò)方向的特性,從而達(dá)到白底黑字或黑底白字顯示的目的。液晶顯示器具有省電、抗干擾能力強(qiáng)等優(yōu)點(diǎn),廣泛應(yīng)用在智能儀器儀表和單片機(jī)測(cè)控系統(tǒng)中。10.4.1LCD顯示器的分類
當(dāng)前市場(chǎng)上液晶顯示器種類繁多,按排列形狀可分為字段型、點(diǎn)陣字符型和點(diǎn)陣圖形型。116(1)字段型。以長(zhǎng)條狀組成字符顯示。主要用于數(shù)字顯示,也可用于顯示西文字母或某些字符,已廣泛用于電子表、計(jì)算器、數(shù)字儀表中。(2)點(diǎn)陣字符型。專門(mén)用于顯示字母、數(shù)字、符號(hào)等。它由若干57或510的點(diǎn)陣組成,每一點(diǎn)陣顯示一字符。廣泛應(yīng)用在各類單片機(jī)應(yīng)用系統(tǒng)中。(3)點(diǎn)陣圖形型。它是在平板上排列多行或多列,形成矩陣式的晶格點(diǎn),點(diǎn)的大小可根據(jù)顯示的清晰度來(lái)設(shè)計(jì)。廣泛應(yīng)用于圖形顯示,如用于筆記本電腦、彩色電視和游戲機(jī)等。11710.4.2點(diǎn)陣字符型液晶顯示模塊介紹 單片機(jī)應(yīng)用中,常用點(diǎn)陣字符型LCD顯示器。要有相應(yīng)的LCD控制器、驅(qū)動(dòng)器來(lái)對(duì)LCD顯示器進(jìn)行掃描、驅(qū)動(dòng),還要RAM和ROM來(lái)存儲(chǔ)單片機(jī)寫(xiě)入的命令和顯示字符的點(diǎn)陣。 由于LCD的面板較為脆弱,制造商已將LCD控制器、驅(qū)動(dòng)器、RAM、ROM和LCD顯示器用PCB連接到一起,稱為液晶顯示模塊(LCdModule,LCM)。只需購(gòu)買現(xiàn)成的液晶顯示模塊即可。 單片機(jī)控制LCM時(shí),只要向LCM送入相應(yīng)的命令和數(shù)據(jù)就可顯示需要的內(nèi)容。下面介紹常見(jiàn)的點(diǎn)陣型液晶顯示模塊:1602字符型LCM(兩行,每行16個(gè)字符)。1181.基本結(jié)構(gòu)與特性(1)液晶顯示板在液晶顯示板上排列著若干57或510點(diǎn)陣的字符顯示位,從規(guī)格上分為每行8、16、20、24、32、40位,有1行、2行及4行等,根據(jù)需要,選擇購(gòu)買。(2)模塊電路框圖圖10-20所示為字符型LCD模塊的電路框圖,它由日立公司生產(chǎn)的控制器HD44780、驅(qū)動(dòng)器HD44100及幾個(gè)電阻和電容組成。HD44100是擴(kuò)展顯示字符位用的(例如,16字符1行模塊就可不用HD44100,16字符2行模塊就要用一片HD44100)。119
圖10-20
字符型
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人藝術(shù)品投資過(guò)橋資金合同4篇
- 二零二五年綠色能源項(xiàng)目投資購(gòu)銷合同示范3篇
- 2025年度跨境電商物流服務(wù)合同書(shū)范本3篇
- 大連二零二五版二手房房產(chǎn)買賣合同解除條件合同3篇
- 2025年中國(guó)草坪機(jī)械行業(yè)市場(chǎng)全景評(píng)估及投資前景展望報(bào)告
- 2024-2030年中國(guó)補(bǔ)水面膜行業(yè)市場(chǎng)全景分析及投資策略研究報(bào)告
- 2022-2027年中國(guó)國(guó)產(chǎn)動(dòng)畫(huà)行業(yè)運(yùn)行態(tài)勢(shì)及市場(chǎng)發(fā)展?jié)摿︻A(yù)測(cè)報(bào)告
- 2025年中國(guó)電子駐車制動(dòng)系統(tǒng)行業(yè)市場(chǎng)前景預(yù)測(cè)及投資戰(zhàn)略研究報(bào)告
- 2025年車輛方向盤(pán)等配件項(xiàng)目投資可行性研究分析報(bào)告
- 2025年數(shù)字營(yíng)銷SAAS工具銷售合同3篇
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計(jì)與授權(quán)使用3篇
- 2024年08月云南省農(nóng)村信用社秋季校園招考750名工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 防詐騙安全知識(shí)培訓(xùn)課件
- 心肺復(fù)蘇課件2024
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2024-2025學(xué)年江蘇省南京市高二上冊(cè)期末數(shù)學(xué)檢測(cè)試卷(含解析)
- 四川省名校2025屆高三第二次模擬考試英語(yǔ)試卷含解析
- 《城鎮(zhèn)燃?xì)忸I(lǐng)域重大隱患判定指導(dǎo)手冊(cè)》專題培訓(xùn)
- 湖南財(cái)政經(jīng)濟(jì)學(xué)院專升本管理學(xué)真題
- 考研有機(jī)化學(xué)重點(diǎn)
- 全國(guó)身份證前六位、區(qū)號(hào)、郵編-編碼大全
評(píng)論
0/150
提交評(píng)論