版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C51編程鍵盤LED數(shù)碼管字符型LCD主要內(nèi)容:主要內(nèi)容:鍵盤1. 獨(dú)立式鍵盤獨(dú)立式鍵盤 (1) 獨(dú)立式鍵盤的結(jié)構(gòu)與特點(diǎn)鍵盤1. 獨(dú)立式鍵盤獨(dú)立式鍵盤 (2) 編程模式 在確定了鍵盤的編程結(jié)構(gòu)后,就可以編制鍵盤接口程序。鍵盤接口程序的功能實(shí)際上就是驅(qū)動鍵盤工作,完成按鍵的識別,根據(jù)所識別按鍵的鍵值,完成按鍵子程序的正確散轉(zhuǎn),從而完成單片機(jī)應(yīng)用系統(tǒng)對用戶按鍵動作的預(yù)定義響應(yīng)。 由于獨(dú)立式鍵盤的每一個按鍵占用一條IO口線,每個按鍵的工作不影響其他按鍵,因此,可以直接依據(jù)每個IO口線的狀態(tài)來進(jìn)行子程序散轉(zhuǎn),使程序編制簡練一些。鍵盤1. 獨(dú)立式鍵盤獨(dú)立式鍵盤 (2)編程模式 另外,可以使用鍵盤編碼值來
2、進(jìn)行按鍵子程序的散轉(zhuǎn),程序更具有通用性。通用的獨(dú)立式鍵盤接口程序由鍵盤管理程序、散轉(zhuǎn)表和鍵盤處理子程序三部分組成。 鍵盤管理程序:擔(dān)負(fù)鍵盤工作時的循環(huán)監(jiān)測(看是否有鍵被按下)、鍵盤去抖動、按鍵識別、子程序散轉(zhuǎn)(根據(jù)所識別的按鍵進(jìn)行轉(zhuǎn)子程序處理)等基本工作。 散轉(zhuǎn)表:支持應(yīng)用程序根據(jù)按鍵值進(jìn)行正確的按鍵子程序跳轉(zhuǎn)。 鍵盤處理子程序:負(fù)責(zé)對具體按鍵的系統(tǒng)定義及功能執(zhí)行。鍵盤2. 矩陣鍵盤矩陣鍵盤 (1) 矩陣鍵盤的結(jié)構(gòu)與特點(diǎn) 行列式鍵盤是用n條I/O線作為行線,m條I/O線作為列線組成的鍵盤。在行線和列線的每一個交叉點(diǎn)上,設(shè)置一個按鍵。這樣,鍵盤中按鍵的個數(shù)是nm個。鍵盤2. 矩陣鍵盤矩陣鍵盤 (
3、2) 矩陣鍵盤的編程模式 矩陣鍵盤具有更加廣泛的應(yīng)用,可采用計算的方法來求出鍵值,以得到按鍵特征碼?,F(xiàn)在以圖6-2為例加以說明。 檢測出是否有鍵按下。方法是Pl.0Pl.3輸出全0,然后讀Pl.4Pl.7的狀態(tài),若為全1則無鍵閉合,否則表示有鍵閉合。 有鍵閉合后,調(diào)用l020 ms延時子程序以避開按鍵抖動。鍵盤3. 按鍵開關(guān)的抖動問題按鍵開關(guān)的抖動問題 (1) 硬件方法 在硬件上可采用在鍵輸出端加R-S觸發(fā)器(雙穩(wěn)態(tài)觸發(fā)器)或單穩(wěn)態(tài)觸發(fā)器構(gòu)成去抖動電路,如圖所示是一種由R-S觸發(fā)器構(gòu)成的去抖動電路,當(dāng)觸發(fā)器一旦翻轉(zhuǎn),觸點(diǎn)抖動不會對其產(chǎn)生任何影響。鍵盤3. 按鍵開關(guān)的抖動問題按鍵開關(guān)的抖動問題
4、(2)軟件方法 軟件方法其實(shí)很簡單,就是在單片機(jī)獲得P1.0口為低電平的信息后,不是立即認(rèn)定S已被按下,而是延時10ms或更長一些時間后再次檢測P1.0口,如果仍為低電平,說明S的確按下了,這實(shí)際上是避開了按鍵按下時的抖動時間。而在檢測到按鍵釋放后(P1.0為高電平)再延時510ms,消除后沿的抖動,然后再對鍵值處理。不過一般情況下,通常不對按鍵釋放的后沿進(jìn)行處理,實(shí)踐證明,也能滿足一定的要求。當(dāng)然,在實(shí)際應(yīng)用中,對按鍵的要求也是千差萬別的,要根據(jù)不同的需要來編制處理程序,但以上是消除按鍵抖動的原則。鍵盤4. 鍵盤的工作方式鍵盤的工作方式 (1) 編程掃描方式 編程掃描方式是利用CPU完成其他
5、工作的空余調(diào)用鍵盤掃描子程序來響應(yīng)鍵盤輸入的要求。在執(zhí)行鍵功能程序時,CPU不再響應(yīng)鍵輸入要求,直到CPU重新掃描鍵盤為止。鍵盤4. 鍵盤的工作方式鍵盤的工作方式 (2) 定時掃描方式 定時掃描方式就是每隔一段時間對鍵盤掃描一次,它利用單片機(jī)內(nèi)部的定時器產(chǎn)生一定時間(例如10ms)的定時,當(dāng)定時時間到就產(chǎn)生定時器溢出中斷,CPU響應(yīng)中斷后對鍵盤進(jìn)行掃描,并在有鍵按下時識別出該鍵,再執(zhí)行該鍵的功能程序。鍵盤4. 鍵盤的工作方式鍵盤的工作方式 (3)中斷掃描方式 采用上述兩種鍵盤掃描方式時,無論是否按鍵,CPU都要“定時”掃描鍵盤,而單片機(jī)應(yīng)用系統(tǒng)工作時,并非經(jīng)常需要鍵盤輸入,因此,CPU經(jīng)常處于
6、空掃描狀態(tài),為提高CPU工作效率,可采用中斷掃描工作方式。其工作過程如下:當(dāng)無鍵按下時,CPU處理自己的工作,當(dāng)有鍵按下時,產(chǎn)生中斷請求,CPU轉(zhuǎn)去執(zhí)行鍵盤掃描子程序,并識別鍵號。鍵盤5. 獨(dú)立式鍵盤應(yīng)用例程獨(dú)立式鍵盤應(yīng)用例程 . (1)程序功能 P3口作輸入口,P1口作輸出口。P3口的低4位連接4只獨(dú)立按鍵,構(gòu)成獨(dú)立式鍵盤;P1口用于驅(qū)動8只LED燈,低電平有效??刂埔鬄椋篜3.0為低電平時,P1.0、P1.7對應(yīng)的LED點(diǎn)亮;P3.1為低電平時,P1.1、P1.6對應(yīng)的LED點(diǎn)亮;P3.2為低電平時,P1.2、P1.5對應(yīng)的LED點(diǎn)亮;P3.3為低電平時,P1.3、P1.4對應(yīng)的LED點(diǎn)
7、亮。 (2)源程序清單(見word文檔)鍵盤5. 矩陣鍵盤應(yīng)用例程矩陣鍵盤應(yīng)用例程 (1)程序功能 矩陣鍵盤如圖6-2所示, P2口作輸出口,用于驅(qū)動8只LED,低電平有效??刂埔鬄椋簭?fù)位LED的顯示狀態(tài)為高4位亮,低4位滅,當(dāng)相應(yīng)按鍵按下時,8位LED以BCD碼形式顯示對應(yīng)的按鍵輸入數(shù)字。如9號鍵按下時,8位LED的狀態(tài)(亮表示1,滅表示0)為:09H。 (2) 源程序清單(見word文檔)LED數(shù)碼管 1. ED顯示器的結(jié)構(gòu)與工作原理顯示器的結(jié)構(gòu)與工作原理 LED顯示器又稱數(shù)碼管,它由8只發(fā)光二極管組成。7只發(fā)光二極管排成“8”字形,另一只構(gòu)成小數(shù)點(diǎn),各字形段標(biāo)記如圖所示。通過不同的組合
8、,可用來顯示數(shù)字09、字母AF及小數(shù)點(diǎn)等。要顯示某個字形時,就點(diǎn)亮相應(yīng)的字段。LED數(shù)碼管 1. LED顯示的接口電路顯示的接口電路 (1) 靜態(tài)顯示 所謂靜態(tài)顯示,是指顯示器顯示某一字符時,相應(yīng)的發(fā)光二極管恒定地導(dǎo)通,顯示器的公共端接固定的有效電平,即共陰極的公共端接低電平,共陽極的公共端接高電平(電源)。靜態(tài)顯示有并行輸出和串行輸出兩種方式。3位共陽LED靜態(tài)顯示接口電路。如圖6-8所示為并行輸出的3位共陽LED靜態(tài)顯示接口電路。并行顯示方式每個十進(jìn)制位都需要有一個8位輸出口控制,圖中采用3片74LS373擴(kuò)展并行I/O口,口地址是由74LSl38譯碼器的輸出決定的,74LSl38的A、B
9、、C分別接80C5l的P2.5、P2.6和P2.7,所以3片74LS373的地址分別為1FFFH、3FFFH、5FFFH。譯碼輸出信號與單片機(jī)的寫信號一起控制對各74LS373數(shù)據(jù)的寫入。LED數(shù)碼管 1. LED顯示的接口電路顯示的接口電路 靜態(tài)顯示 對于靜態(tài)顯示方式,LED顯示器由接口芯片直接驅(qū)動,采用較小的驅(qū)動電流就可以得到較高的顯示亮度。但是,并行輸出顯示的十進(jìn)制位數(shù)多時,需要并行I/O接口芯片的數(shù)量較多。示數(shù)字09、字母AF及小數(shù)點(diǎn)等。要顯示某個字形時,就點(diǎn)亮相應(yīng)的字段。LED數(shù)碼管 1. LED顯示的接口電路顯示的接口電路 (2) 動態(tài)顯示 當(dāng)顯示器位數(shù)較多時,可以采用動態(tài)顯示。所
10、謂動態(tài)顯示,就是一位一位地輪流點(diǎn)亮各位顯示器。對于每一位顯示器而言,每隔一段時間點(diǎn)亮一次。雖然在同一時刻只有一位顯示器在工作,但由于人眼的視覺暫留效應(yīng)和發(fā)光二極管熄滅時的余輝,看到的卻是多個字符“同時”顯示。顯示器亮度既與點(diǎn)亮?xí)r的導(dǎo)通電流有關(guān),也與點(diǎn)亮掃描時間長短和間隔時間有關(guān)。調(diào)整電流和時間參數(shù),即可實(shí)現(xiàn)亮度較高較穩(wěn)定的顯示。LED數(shù)碼管 3. LED動態(tài)顯示應(yīng)用例程(一)動態(tài)顯示應(yīng)用例程(一) (1) 程序功能 LED數(shù)碼顯示電路如圖6-9所示,在單片機(jī)負(fù)載能力足夠的情況下,可去掉7407和7406芯片,在本程序中不考慮7407和7406芯片的作用,即位驅(qū)動是低電平有效,字驅(qū)動是高電平有效
11、??刂埔鬄椋涸?位LED數(shù)碼管上依次顯示1、2、3、4、5、6。掃描間隔時間為1ms。 (2)源程序清單(見word文檔)字符型LCD (1)LCD的特性 1)+5 V供電,亮度可調(diào)整。 2)內(nèi)藏振蕩電路,系統(tǒng)內(nèi)含重置電路。 3)提供各種控制命令,如清除顯示器、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能。 4)顯示用數(shù)據(jù)RAM(DDRAM)共有80個字節(jié)。 5)字符產(chǎn)生器ROM(CGROM)有160個57點(diǎn)陣字形。 6)字符產(chǎn)生器RAM(CGRAM)可由用戶自行定義8個57的點(diǎn)陣字形。 (2)162字符型LCD引腳說明 162字符型LCD共有14個引腳,其功能見表6-3所示。2. HD44780
12、 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)字符型LCD (3)LCD內(nèi)部的內(nèi)存 LCD內(nèi)部存儲器共分為3種:固定字形ROM,稱為CG(Character Generator)ROM;數(shù)據(jù)顯示RAM,稱為DD(Data Display)RAM;用戶自定義字形RAM,稱為CG RAM。 1)CGROM:CGROM內(nèi)存儲著192個57點(diǎn)陣的字形,這些字形均已固定,例如將“A”寫入LCD中,就是將“A”的ASCII碼41H寫入DDRAM中,控制芯片就會自動至CGROM中將“A”的字形點(diǎn)陣數(shù)據(jù)找出來而顯示在LCD上。2. HD44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)字符型LCD (3)L
13、CD內(nèi)部的內(nèi)存 2)DDRAM:DDRAM內(nèi)用來存儲寫入LCD內(nèi)部的字符,DDRAM的地址分布從00H67H,分別代表LCD的各列位置,如表6-4和表6-5所示,例如我們要將“A”寫入第2行的第l個位置,就先設(shè)置DDRAM地址為40H,而后寫入41H至LCD即可。2. HD44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)字符型LCD (3)LCD內(nèi)部的內(nèi)存 3)CGRAM:此區(qū)域只有64字節(jié),可將用戶將自行設(shè)計的字形寫入LCD中,一個字的大小為57點(diǎn)陣,共可以存儲8個字形,其顯示碼為00H07H。2. HD44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)字符型LCD (4)LCD內(nèi)
14、部寄存器 1)指令寄存器(Instructiong Register,IR)與數(shù)據(jù)寄存器(Data Register,DR):指令寄存器和數(shù)據(jù)寄存器都是8位的寄存器,IR寄存器用來儲存指令代碼或地址;DR寄存器則是作為寫入存儲器或從存儲器中讀取數(shù)據(jù)的數(shù)據(jù)緩沖區(qū)。從外部要對LCD模塊控制時,是由RS引腳來選擇數(shù)據(jù)引腳D7D0的信號,用來對IR寄存器或DR寄存器做寫入或讀取。 2)忙碌標(biāo)志(Busy Flag,BF)。當(dāng)LCD模塊內(nèi)部處于忙碌狀態(tài),不能接收或處理外部信號時,這個標(biāo)志就會被設(shè)定為1,因此在對LCD模塊控制時,一定要先檢查這個忙碌標(biāo)志,當(dāng)BF=0時,才可以對LCD模塊進(jìn)行控制。2. H
15、D44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)字符型LCD (4)LCD內(nèi)部寄存器 3)地址計數(shù)器(Address Count,AC)。LCD模塊顯示的每一個字符位置都會有一個地址,地址計數(shù)器記錄了這個地址,在數(shù)據(jù)寫入或讀取的動作完成后,AC的值會遞減或遞增1,可以在LCD初始化時設(shè)定。2. HD44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)字符型LCD (5)控制方式 通過CPU來控制LCD模塊,方式十分簡單,LCD模塊其內(nèi)部可以看成有兩組寄存器,一個為指令寄存器,一個為數(shù)據(jù)寄存器,由RS引腳來控制。所有對指令寄存器或數(shù)據(jù)寄存器的存取均需檢查LCD內(nèi)部的忙碌標(biāo)志(Busy
16、Flag),此標(biāo)志用來告知LCD內(nèi)部正在工作,不允許接收任何的控制命令。而此位的檢查可以令RS=0時,讀取D7來加以判斷,當(dāng)此位為0時,才可以寫入指令寄存器或數(shù)據(jù)寄存器。2. HD44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)字符型LCD (6)控制命令 單片機(jī)通過11條指令對LCD模塊進(jìn)行控制,表6-6列出了這些指令和控制引腳的關(guān)系。 1)清屏(01H) 2. HD44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)2 2)歸)歸home位(位(Return Home)字符型LCD (6)控制命令 3)輸入方式設(shè)置(Enter Mode Set) 2. HD44780 驅(qū)動器(驅(qū)動
17、器(162字符型字符型LCD)4)顯示狀態(tài)設(shè)置()顯示狀態(tài)設(shè)置(Display on/off Control)。)。字符型LCD (6)控制命令 5)光標(biāo)或畫面滾動(Cursor or Display Shift) 2. HD44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)6)工作方式設(shè)置()工作方式設(shè)置(Function Set)字符型LCD (6)控制命令 7)CGRAM地址設(shè)置(Set CGRAM Address)。 2. HD44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)8) DDRAM地址設(shè)置(地址設(shè)置(Set DDRAM Address)字符型LCD (6)控制命令
18、9)讀“忙”標(biāo)志和地址指針(Read Busy Flag and Address)。單片機(jī)對指令寄存器通道讀操作(RS=0,R/W=l)時,將讀出此格式的“忙”標(biāo)志BF值和7位地址指針計數(shù)器AC的當(dāng)前值。單片機(jī)隨時都可以對HD44780U讀“忙”操作。BF值反映HD44780U的接口狀態(tài)。單片機(jī)在對進(jìn)行HD44780U每次操作時,首先要讀BF值判斷HD44780U的當(dāng)前接口狀態(tài),僅在BF=0時,單片機(jī)才可以向HD44780U寫指令代碼或顯示數(shù)據(jù)以及從HD44780U讀出顯示數(shù)據(jù)。單片機(jī)讀出的地址指針計數(shù)器AC當(dāng)前值可能是DDRAM地址或CGRAM的地址,這取決于最近一次單片機(jī)向AC寫入的地址類
19、型。 2. HD44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)字符型LCD (6)控制命令 11)讀數(shù)據(jù)(Read Data from CG or DD RAM)。在HD44780U內(nèi)部運(yùn)行時序的操作下,地址指針計數(shù)器AC的每次修改,包括新的AC值的寫入,光標(biāo)滾動位移所引起的AC值的修改或由單片機(jī)讀寫數(shù)據(jù)操作后產(chǎn)生的AC值的修改,HD44780U都會把當(dāng)前AC所指單元的內(nèi)容送到接口部分?jǐn)?shù)據(jù)輸出寄存器內(nèi),供單片機(jī)讀取。如果AC值為DDRAM地址指針,則認(rèn)為接口部分?jǐn)?shù)據(jù)輸出寄存器的數(shù)據(jù)為DDRAM內(nèi)AC所指單元的字符代碼;如果AC值為CGRAM地址指針,則認(rèn)為接口部分?jǐn)?shù)據(jù)輸出寄存器的數(shù)據(jù)為
20、CGRAM內(nèi)AC所指單元的字模數(shù)據(jù)。 2. HD44780 驅(qū)動器(驅(qū)動器(162字符型字符型LCD)字符型LCD (2) 寫命令子函數(shù)void lcdwCMD(unsigned char CMD) /*定義寫命令子函數(shù),CMD為控制碼,Attribc 為屬性標(biāo)志,決定是否要進(jìn)行忙信號檢測*/ lcdwaitidle() /*調(diào)用忙檢測子函數(shù)*/RSPIN=0; RWPIN=0; /*設(shè)置為寫命令狀態(tài)*/ DataPort = CMD; /*控制碼送數(shù)據(jù)口*/ ENPIN=1; /*形成使能脈沖*/ _nop_(); ENPIN=0;3. 162字符型字符型LCD的驅(qū)動子函數(shù)的驅(qū)動子函數(shù)字符型
21、LCD (3) 寫數(shù)據(jù)子函數(shù)void lcdwData(unsigned char Data) /*定義寫數(shù)據(jù)子函數(shù),dataW 為顯示數(shù)據(jù)*/ lcdwaitidle(); /*調(diào)用忙檢測子函數(shù)*/ RSPIN=1; RWPIN=0; /*設(shè)置為寫數(shù)據(jù)狀態(tài)*/ DataPort = Data; /*顯示數(shù)據(jù)送數(shù)據(jù)口*/ ENPIN=1; /*形成使能脈沖*/ _nop_(); ENPIN=0;3. 162字符型字符型LCD的驅(qū)動子函數(shù)的驅(qū)動子函數(shù)字符型LCD (4) 顯示光標(biāo)(位置)定位子函數(shù)void lcdpos(void) /*定義顯示位置子函數(shù),行、列號在調(diào)用前給出*/ XPOS&=0 x0f; /*列號為015*/ YPOS&=0 x01; /*行號為0或1*/ if(YPOS=0 x00) lcdwCMD(XPOS|0 x80); /*若為第1行,地址設(shè)置碼為:列號80H */ else if(YPOS=0 x01) /*若為第2行,地址設(shè)置碼為:列號80H40H*/ lcdwCMD (XPOS+0 x40)|0 x80);3. 162字符型字符型LCD的驅(qū)動
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年IT運(yùn)維外包與應(yīng)急管理協(xié)議3篇
- 二零二五年度房地產(chǎn)公司股權(quán)分割與股東權(quán)益保障協(xié)議3篇
- 單位制度分享合集職工管理篇十篇
- 單位制度分享大全【員工管理】十篇
- 醫(yī)學(xué)美容技術(shù)畢業(yè)生就業(yè)協(xié)議
- 二零二五年度客戶服務(wù)外包服務(wù)合同2篇
- 體育館隔斷安裝協(xié)議
- 體育館外圍墻施工協(xié)議
- 電子設(shè)備維修服務(wù)合同
- 軟件許可使用協(xié)議
- 金屬的拉伸實(shí)驗(yàn)(實(shí)驗(yàn)報告)
- 鍋爐定期檢驗(yàn)
- 普通話課件(完整版)
- 品管圈QCC質(zhì)量持續(xù)改進(jìn)案例胃腸外科-落實(shí)胃腸腫瘤患者術(shù)后早期下床活動PDCA
- 人員密集場所安全風(fēng)險源辨識清單
- GB/T 39335-2020信息安全技術(shù)個人信息安全影響評估指南
- 比較文學(xué)概論馬工程課件 第6章
- GB/T 19631-2005玻璃纖維增強(qiáng)水泥輕質(zhì)多孔隔墻條板
- GB/T 11352-2009一般工程用鑄造碳鋼件
- 冠心病診斷與治療課件
- 新疆少數(shù)民族發(fā)展史課件
評論
0/150
提交評論