版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> PS2鍵盤(pán)在單片機(jī)上的應(yīng)用</p><p> 摘 要:在嵌入式PC應(yīng)用系統(tǒng)中,作為人機(jī)交互設(shè)備的鍵盤(pán),往往采用結(jié)構(gòu)簡(jiǎn)單按鍵少的矩陣鍵盤(pán)。標(biāo)準(zhǔn)鍵盤(pán)雖然能直接與嵌入式PC機(jī)的PS/2接口相連,但是體積大,按鍵多,不能滿足需求,本文提出用一種AT89C52單片機(jī)實(shí)現(xiàn)具有標(biāo)準(zhǔn)PS/2接口的矩陣鍵盤(pán),具有便捷,實(shí)用的特點(diǎn)。</p><p> 關(guān)鍵詞:PS/2接口,PS/2
2、鍵盤(pán),撥號(hào)鍵,AT89C52,LCD1602</p><p> Abstract: PS/2 interface is one of the most useful mouse interface.It was IBM’s patent named osulum before. It is the dedicate interface of mouse and keyboard. This text impli
3、ed a plan using PS/2 to make a system. PS/2 tansmit the data which was pressed, and AT89C52 receive it ,disposed it and transmit it to Lcd1602. Lcd1602 discover it to make us know which key has been pressed. PS/2 simulat
4、e a phone’s dial keyboard. This system’s feature is the circuit is sample and useful.</p><p> Keywords: PS/2 keyboard, AT89C52, LCD1602,PS/2 interface,dial keyboard</p><p><b> 目錄</b&g
5、t;</p><p><b> 1、前言1</b></p><p> 2、整體方案設(shè)計(jì)2</p><p> 2.1 方案論證2</p><p> 2.2 方案比較3</p><p> 3、單元模塊設(shè)計(jì)4</p><p> 3.1 PS2鍵盤(pán)模塊4&l
6、t;/p><p> 3.2 單片機(jī)模塊6</p><p> 3.3 LCD顯示模塊7</p><p><b> 4 、軟件設(shè)計(jì)9</b></p><p> 5、系統(tǒng)技術(shù)指標(biāo)及精度和誤差分析10</p><p><b> 6 、結(jié)論11</b></p>
7、;<p><b> 7、設(shè)計(jì)小結(jié)12</b></p><p><b> 8、致謝14</b></p><p><b> 9、參考文獻(xiàn)14</b></p><p> 附錄1:電路總圖15</p><p> 附錄2:仿真圖16</p>
8、<p> 附錄3:軟件代碼17</p><p><b> 1、 前言</b></p><p> 單片機(jī)因其性價(jià)比高, 處理能力強(qiáng), 且抗干擾能力好, 在醫(yī)療器械、機(jī)電液控制、數(shù)據(jù)傳輸?shù)雀黝惞た叵到y(tǒng)和設(shè)備儀器中得到廣泛應(yīng)用。一方面, 在實(shí)際應(yīng)用中, 單片機(jī)經(jīng)常需要將采集到的數(shù)據(jù)發(fā)送給PC機(jī)進(jìn)行處理或保存等; 另一方面, 工控系統(tǒng)和設(shè)備儀器設(shè)計(jì), 因環(huán)
9、境或軟硬件資源的限制, 也往往需要不同的通信接口。比如, 很多工控PC機(jī)的鍵盤(pán)接口因受惡劣環(huán)境不利于鍵盤(pán)的使用而處于閑置狀態(tài)。因此, 設(shè)計(jì)一個(gè)具有通用性的PS/2鍵盤(pán)通信接口既方便PC機(jī)進(jìn)行外設(shè)擴(kuò)展, 又豐富了單片機(jī)的接口資源。單片機(jī)與PC機(jī)常用的數(shù)據(jù)通信協(xié)議為RS - 232通信協(xié)議, 傳輸數(shù)據(jù)格式是二進(jìn)制, 而單片機(jī)通過(guò)PS/2鍵盤(pán)協(xié)議傳輸?shù)臄?shù)據(jù)格式是ASC II碼, 可以直接以常用的文本文件和表格文件的形式進(jìn)行處理和保存。目前,
10、單片機(jī)采用PS/2協(xié)議進(jìn)行通信較多的是單片機(jī)接收PS/2鍵盤(pán)設(shè)備的數(shù)據(jù), 而以單片機(jī)做為鍵盤(pán)與PC機(jī)通信則較為少見(jiàn)。本文的新穎之處主要表現(xiàn)為:</p><p> 1.本文主要著眼于基于單片機(jī)的PS/2鍵盤(pán)通信模塊的實(shí)現(xiàn), 本模塊可通過(guò)RS -232、RS - 485接口或數(shù)據(jù)總線從其它系統(tǒng)上獲取要傳給PC機(jī)的數(shù)據(jù)。單片機(jī)把二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成對(duì)應(yīng)的鍵盤(pán)掃描碼后上傳給PC機(jī)。本模塊只需要簡(jiǎn)單的軟硬件改動(dòng)(甚至于有時(shí)不
11、需要改動(dòng)) 就可以擴(kuò)展大部分工控系統(tǒng)和設(shè)備儀器的通信功能, 具有較大的通用性。</p><p> 2. 本文比較深入地分析了PC機(jī)與鍵盤(pán)之間相互通信的時(shí)序, 并介紹了PC機(jī)開(kāi)機(jī)自檢時(shí)鍵盤(pán)模塊需要響應(yīng)的幾個(gè)主要命令。</p><p> 3. 本模塊在條形碼掃描系統(tǒng)中進(jìn)行了應(yīng)用測(cè)試, 實(shí)驗(yàn)證明了本模塊具有較好的穩(wěn)定性和可靠性, 有較廣泛的應(yīng)用范圍。</p><p>
12、<b> 2 、整體方案設(shè)計(jì)</b></p><p> 本設(shè)計(jì)的整體思路是:利用PS2鍵盤(pán),通過(guò)AT89C52單片機(jī)接收PS2鍵盤(pán)的鍵值,并顯示在LCD1602上,PS2鍵盤(pán)模擬電話的撥號(hào)鍵。</p><p><b> 2.1 方案論證</b></p><p> 設(shè)計(jì)中采用了三個(gè)方案,具體的方案見(jiàn)方案一、方案二和方
13、案三。</p><p> 方案一:普通鍵盤(pán)設(shè)計(jì)方案</p><p> 采用普通的4X4鍵盤(pán),通過(guò)鍵盤(pán)掃描得到鍵值,有單片機(jī)控制并顯示在LCD上,優(yōu)點(diǎn)是成本低,設(shè)計(jì)簡(jiǎn)單,缺點(diǎn)是鍵盤(pán)掃描效率不夠且容易出錯(cuò)。</p><p> 圖2.1 普通鍵盤(pán)整體方案一框圖</p><p> 方案二:數(shù)碼管顯示設(shè)計(jì)方案</p><p&
14、gt; 采用普通的PS2鍵盤(pán),通過(guò)鍵盤(pán)掃描得到鍵值,由單片機(jī)控制并顯示在數(shù)碼管上,優(yōu)點(diǎn)是成本低,設(shè)計(jì)簡(jiǎn)單,鍵盤(pán)自動(dòng)掃描,自動(dòng)識(shí)別,自動(dòng)編碼,有鍵按下時(shí)才發(fā)送數(shù)據(jù),因此減輕了CPU的負(fù)擔(dān),缺點(diǎn)是數(shù)碼管顯示不直觀。</p><p> 圖2.2 PS2鍵盤(pán)整體方案一框圖</p><p> 方案三:PS2鍵盤(pán)方案</p><p> 見(jiàn)圖2.2.利用PS2鍵盤(pán)設(shè)計(jì),優(yōu)
15、點(diǎn)是鍵盤(pán)自動(dòng)掃描,自動(dòng)識(shí)別,自動(dòng)編碼,有鍵按下時(shí)才發(fā)送數(shù)據(jù),因此減輕了CPU的負(fù)擔(dān),用LCD1602顯示方便直觀。</p><p> 圖2.3 PS2鍵盤(pán)整體方案二框圖</p><p><b> 2.2 方案比較</b></p><p> 由于方案一采用的是4X4鍵盤(pán),設(shè)計(jì)需要CPU不斷的掃描鍵盤(pán),占用了大量的CPU資源,方案二利用PS
16、2鍵盤(pán),有鍵按下時(shí)才發(fā)送數(shù)據(jù),減輕了CPU的負(fù)擔(dān),但是用數(shù)碼管顯示不夠直觀,交互界面不夠好,因此綜合方案一和方案二的優(yōu)點(diǎn),本設(shè)計(jì)采用了方案三。</p><p><b> 3、 單元模塊設(shè)計(jì)</b></p><p> 集成溫度傳感器實(shí)際上是一種半導(dǎo)體集成電路,它是利用晶體管的b—e結(jié)壓降的不飽和值Vbe與熱力學(xué)溫度T和通過(guò)。</p><p>
17、 3.1 PS2鍵盤(pán)模塊</p><p> PS2模塊由PS2鍵盤(pán)和PS2接口組成,利用通信協(xié)議對(duì)PS2鍵盤(pán)進(jìn)行操作,PS2通訊協(xié)議是一種雙向同步串行通訊協(xié)議。PS2鍵盤(pán)連線圖如圖所示:</p><p> 圖3.1 PS2鍵盤(pán)連線圖</p><p> PS2接口操作時(shí)序如下圖所示:</p><p><b> 圖3.2 時(shí)
18、序圖</b></p><p> PS2接口通信協(xié)議表如下表所示:</p><p> 圖3.3 通信協(xié)議表</p><p> 表中,如果數(shù)據(jù)位中1的個(gè)數(shù)為偶數(shù),校驗(yàn)位就為1;如果數(shù)據(jù)位中1的個(gè)數(shù)為奇數(shù),校驗(yàn)位就為0;總之,數(shù)據(jù)位中1的個(gè)數(shù)加上校驗(yàn)位中1的個(gè)數(shù)總為奇數(shù),因此總進(jìn)行奇校驗(yàn)。</p><p> 由于PS/2設(shè)備能提
19、供串行同步時(shí)鐘,因此,如果PC機(jī)發(fā)送數(shù)據(jù),則PC機(jī)要先把時(shí)鐘線和數(shù)據(jù)線置為請(qǐng)求發(fā)送的狀態(tài)。PC機(jī)通過(guò)下拉時(shí)鐘線大于100μs來(lái)抑制通訊,并且通過(guò)下拉數(shù)據(jù)線發(fā)出請(qǐng)求發(fā)送數(shù)據(jù)的信號(hào),然后釋放時(shí)鐘。當(dāng)PS/2設(shè)備檢測(cè)到需要接收的數(shù)據(jù)時(shí),它會(huì)產(chǎn)生時(shí)鐘信號(hào)并記錄下面8?jìng)€(gè)數(shù)據(jù)位和一個(gè)停止位。主機(jī)此時(shí)在時(shí)鐘線變?yōu)榈蜁r(shí)準(zhǔn)備數(shù)據(jù)到數(shù)據(jù)線,并在時(shí)鐘上升沿鎖存數(shù)據(jù)。而PS/2設(shè)備則要配合PC機(jī)才能讀到準(zhǔn)確的數(shù)據(jù)。具體連接步驟如下:</p>&l
20、t;p> (1)等待時(shí)鐘線為高電平。 (2)判斷數(shù)據(jù)線是否為低,為高則錯(cuò)誤退出,否則繼續(xù)執(zhí)行。 (3)讀地址線上的數(shù)據(jù)內(nèi)容,共8?jìng)€(gè)bit,每讀完一個(gè)位,都應(yīng)檢測(cè)時(shí)鐘線是否被PC機(jī)拉低,如果被拉低則要中止接收。 (4)讀地址線上的校驗(yàn)位內(nèi)容,1個(gè)bit。
21、; (5)讀停止位。 (6)如果數(shù)據(jù)線上為0(即還是低電平),PS/2設(shè)備繼續(xù)產(chǎn)生時(shí)鐘,直到接收到1且產(chǎn)生出錯(cuò)信號(hào)為止(因?yàn)橥V刮皇牵?,如果PS/2設(shè)備沒(méi)有讀到停止位,則表明此次傳輸出錯(cuò)。 (7) 輸出應(yīng)答位。&
22、#160; (8) 檢測(cè)奇偶校驗(yàn)位,如果校驗(yàn)失敗,則產(chǎn)生錯(cuò)誤信號(hào)以表明此次傳輸出現(xiàn)錯(cuò)誤。 (9)延時(shí)45 μs,以便PC機(jī)進(jìn)行下一次傳輸。</p><p> PS2鍵盤(pán)掃描方式:鍵盤(pán)的處理器如果發(fā)現(xiàn)有鍵被按下釋放或按住鍵盤(pán)將發(fā)送掃描碼的信息包到計(jì)算機(jī)掃描碼有兩種不同的類型通碼和斷碼,當(dāng)一個(gè)鍵被按下或按住就發(fā)送通碼,當(dāng)一個(gè)鍵被釋放就發(fā)送斷碼,每個(gè)按鍵被
23、分配了唯一的通碼和斷碼,這樣主機(jī)通過(guò)查找唯一的掃描碼就可以測(cè)定是哪個(gè)按鍵,每個(gè)鍵一整套的通斷碼組成了掃描碼集有三套標(biāo)準(zhǔn)的掃描碼集,分別是第一套、第二套、和第三套,所有現(xiàn)代的鍵盤(pán)默認(rèn)使用第二套掃描碼 雖然多數(shù)第二套通碼都只有一個(gè)字節(jié)寬但也有少數(shù)擴(kuò)展按鍵的通碼是兩字節(jié)或四字節(jié)寬這類的通碼第一個(gè)字節(jié)總是為E0h 正如鍵按下通碼就被發(fā)往計(jì)算機(jī)一樣,只
24、要鍵一釋放斷碼就會(huì)被發(fā)送,每個(gè)鍵都有它自己唯一的通碼,它們也都有唯一的斷碼,幸運(yùn)的是你不用總是通過(guò)查表來(lái)找出按鍵的斷碼在通碼和斷碼之間存在著必然的聯(lián)系,多數(shù)第二套斷碼有兩字節(jié)長(zhǎng)它們的第一個(gè)字節(jié)是F0h ,第二個(gè)字節(jié)是這個(gè)鍵的通碼,擴(kuò)展按鍵的斷碼通常有三個(gè)字節(jié),它們前兩個(gè)字節(jié)是E0h,F0h ,最后一個(gè)字節(jié)是這個(gè)按鍵通碼的最后一個(gè)字節(jié)。我在下面列出了幾個(gè)按鍵的第二套通碼和斷碼。</p><p> 3.2 單片機(jī)
25、模塊</p><p> STC89C52單片機(jī)是Atmel公司生產(chǎn)的單片機(jī),51的內(nèi)核,具有處理能強(qiáng)、運(yùn)行速度快、功耗低等優(yōu)點(diǎn)。最小系統(tǒng)包括單片機(jī),電源,復(fù)位電路。單片機(jī)接收PS2鍵盤(pán)的鍵值,并控制LCD的顯示。其系統(tǒng)框圖如下圖所示:</p><p> 圖3.4 單片機(jī)控制系統(tǒng)框圖</p><p> STC89C52單片機(jī)有4X8個(gè)IO口,其中P0口需外接上
26、拉電阻,因此本次設(shè)計(jì)采用P1口作為PS2接口,P2口作為與LCD1602的接口,其電路圖如下圖所示:</p><p> 圖3.5 單片機(jī)最小系統(tǒng)圖</p><p> 3.3 LCD顯示模塊</p><p> LCD1602采用8位并行數(shù)據(jù)傳輸,其操作時(shí)序如下圖所示:</p><p> 圖3.6 LCD單片機(jī)圖</p>&
27、lt;p> LCD1602接口由8位數(shù)據(jù)線,電源地電源正,液晶顯示偏壓信號(hào)(VL),數(shù)據(jù)命令選擇端(RS),讀寫(xiě)選擇端(RW)組成。其接口信號(hào)說(shuō)明如下圖所示:</p><p> 圖3.7接口信號(hào)說(shuō)明圖</p><p> 可以在1602的液晶顯示偏壓信號(hào)端接一個(gè)可變電阻,調(diào)節(jié)顯示亮度,初始狀態(tài)時(shí),調(diào)至1602上面一排顯示12個(gè)黑塊為止,LCD1602電路圖如下圖所示:</p
28、><p> 圖3.8 LCD電路圖</p><p><b> 4、 軟件設(shè)計(jì)</b></p><p> 1、主程序設(shè)計(jì):首先初始化IO口和鍵盤(pán)、LCD1602,然后接收按鍵的鍵值,并通過(guò)8位并行傳輸方式傳送給LCD1602顯示。</p><p> 2、獲取鍵值程序:按照PS2鍵盤(pán)協(xié)議操作,鍵盤(pán)按下時(shí)發(fā)送通碼,彈起時(shí)發(fā)
29、送斷碼,在單片機(jī)中,將接收到的碼字與第二套掃描碼比較,得出鍵值。本次設(shè)計(jì)共采用12個(gè)鍵,模擬電話的撥號(hào)鍵。</p><p> 3、LCD顯示程序:首先初始化LCD1602端口和寄存器,然后接收單片機(jī)傳送的數(shù)據(jù),通過(guò)1602寫(xiě)操作時(shí)序顯示接收到的數(shù)據(jù)。</p><p> 4.1 程序整體設(shè)計(jì)框圖</p><p> 5、 系統(tǒng)技術(shù)指標(biāo)及精度和誤差分析</p
30、><p> 隨著計(jì)算機(jī)工業(yè)的發(fā)展,作為計(jì)算機(jī)最常用輸入設(shè)備的鍵盤(pán)也日新月異。IBM推出PS2鍵盤(pán)接口標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)定義了84~101鍵,采用6腳mini-DIN連接器,用雙向串行通訊協(xié)議并且提供有可選擇的第三套鍵盤(pán)掃描碼集,同時(shí)支持17個(gè)主機(jī)到鍵盤(pán)的命令。</p><p> 本系統(tǒng)利用PS2鍵盤(pán)作為交互接口,操作方便,比普通鍵盤(pán)精度高,在機(jī)械鍵盤(pán)中需要考慮鍵盤(pán)去抖的問(wèn)題,硬件去抖或軟件去抖,
31、但是在PS2鍵盤(pán)中不需要考慮鍵盤(pán)去抖,因?yàn)镻S2鍵盤(pán)采用按鍵發(fā)送通碼,彈起發(fā)送斷碼的方式,不易出錯(cuò)。只要將接口連線處理好,單片機(jī)處理數(shù)據(jù)時(shí)不出錯(cuò)。</p><p> 本次設(shè)計(jì)實(shí)現(xiàn)了軟件的設(shè)計(jì)和電路設(shè)計(jì)和仿真,實(shí)現(xiàn)了系統(tǒng)功能,完成了系統(tǒng)設(shè)計(jì)指標(biāo):按下一個(gè)鍵,準(zhǔn)確的顯示在LCD1602上。</p><p><b> 6 、結(jié)論</b></p><p
32、> 本系統(tǒng)采用第二套鍵盤(pán)掃描碼,利用PS2鍵盤(pán)作為輸入,準(zhǔn)確度比普通鍵盤(pán)高,完成了系統(tǒng)的仿真圖,電路圖和程序設(shè)計(jì),實(shí)現(xiàn)了系統(tǒng)的功能。</p><p> 很多品牌機(jī)上采用PS/2口來(lái)連接鼠標(biāo)和鍵盤(pán)。PS/2接口與傳統(tǒng)的鍵盤(pán)接口除了在接口外型、引腳有不同外,在數(shù)據(jù)傳送格式上是相同的?,F(xiàn)在很多主板用PS/2接口插座連接鍵盤(pán),傳統(tǒng)接口的鍵盤(pán)可以通過(guò)PS/2接口轉(zhuǎn)換器連接主板PS/2接口插座。</p>
33、<p> 采用PS2鍵盤(pán)比普通鍵盤(pán)精度更高,使用更方便,USB即插即用,與USB相比,穩(wěn)定性而言PS2比較好,但它不支持熱拔插,因此在使用時(shí)需注意不能經(jīng)常拔掉下PS2鍵盤(pán)。</p><p><b> 7、 設(shè)計(jì)小結(jié)</b></p><p> 本次設(shè)計(jì)完成后,在效果上能完全達(dá)到原先設(shè)計(jì)的功能。例如,通過(guò)按下按鍵“1”,能將數(shù)值“1”發(fā)送到LCD上顯示
34、驅(qū)動(dòng)程序經(jīng)Keil uVision3編譯,在AT89C52上單片機(jī)通過(guò),該模擬鍵盤(pán)接口可以作為一個(gè)接口模塊嵌入到其他設(shè)備儀器和工程控制系統(tǒng),增加了與PC機(jī)的通信途徑。在應(yīng)用和測(cè)試結(jié)果分析中,該接口模塊具有較高的可靠性與穩(wěn)定性。</p><p> 由于時(shí)間倉(cāng)促和我們自身水平有限,本設(shè)計(jì)在功能上也只是完成了一些基本功能,對(duì)于電路的可靠性,穩(wěn)定性等參數(shù)還未做過(guò)詳細(xì)的測(cè)試。仿真中出現(xiàn)的一些問(wèn)題,也尚未解決。</p
35、><p><b> 8、 致謝</b></p><p> 在***老師辛勤指導(dǎo)下,我與小組同學(xué)積極討論和思考,完成本此課程設(shè)計(jì),此次設(shè)計(jì),使我們受益匪淺。在此我要感謝電氣信息學(xué)院提供這次課程設(shè)計(jì)的機(jī)會(huì);感謝電氣信息學(xué)院各位老師的幫助。在這里我要特別感謝***老師,在我們的設(shè)計(jì)過(guò)程中,至始至終都得到了***老師的悉心指導(dǎo),我們的設(shè)計(jì)才得以順利完成。</p>
36、<p><b> 9、 參考文獻(xiàn)</b></p><p> [1] 張培仁.基于 C 語(yǔ)言編程 MCS-51 單片機(jī)原理與應(yīng)用[M]. 北京:清華大學(xué)出版社,2003. </p><p> [2] 楊振江、杜鐵軍.流行單片機(jī)實(shí)用子程序及應(yīng)用實(shí)例[M].西安電子科技大學(xué)出版社,2002. </p><p> [3] 蔡美琴、張
37、為民.MCS-51 系列單片機(jī)系統(tǒng)及其應(yīng)用(第二版)[M]. 北京:高等教育出版社,2004.</p><p> [4] 蘇家健.單片機(jī)原理及應(yīng)用技術(shù)[M]. 北京:高等教育出版社,2004.</p><p> [5] C語(yǔ)譚浩強(qiáng).言程序設(shè)計(jì)(第三版)[M].北京:清華大學(xué)出版社,2005.</p><p><b> 附錄1:電路總圖</b&g
38、t;</p><p> 圖 附錄1 電路總圖</p><p><b> 附錄2:仿真圖</b></p><p><b> 圖 附錄2仿真圖</b></p><p><b> 附錄3:軟件代碼</b></p><p><b> main
39、.c:</b></p><p> #include<reg52.h> </p><p> #include "KEY4x4_MODE.h"</p><p> #include <string.h></p><p> #include "type.h"<
40、/p><p> #include "lcd1602.h"</p><p> uchar Dis_buffer[12]="0123456789*#";</p><p> uchar key_flag=0;</p><p> void main()</p><p><b&g
41、t; {</b></p><p> uchar loca,key_value=0;</p><p> Init_1602(); //初始化1602</p><p><b> while(1)</b></p><p><b> {</b></p><p>
42、 key_value = Get_key(); //鍵盤(pán)掃描</p><p> if(key_flag)</p><p><b> {</b></p><p> lcd_dis(Dis_buffer,key_value,loca++); //顯示</p><p> key_flag=0;//標(biāo)志位清零<
43、;/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> Lcd1602.c:</p><p> #include<reg52.h></p><
44、;p> #include <string.h></p><p> #include "type.h"</p><p> #include "lcd1602.h"</p><p> void Init_1602(void) //初始化</p><p><b> {
45、</b></p><p> Lcd_write_CMD(0x38,0); </p><p> Lcd_write_CMD(0x38,1); //設(shè)置顯示模式</p><p> Lcd_write_CMD(0x08,1); //顯示關(guān)閉</p><p> Lcd_write_CMD(0x01,1); //清屏</p
46、><p> Lcd_write_CMD(0x06,1); //光標(biāo)從左向右移,文本不移</p><p> Lcd_write_CMD(0x0f,1); //顯示開(kāi) </p><p><b> }</b></p><p> void delay_ms(UCHAR i) //延時(shí) ms級(jí)</p>&l
47、t;p><b> {</b></p><p> unsigned int j;</p><p> for(;i>0;i--)</p><p> for(j=0;j<125;j++)</p><p><b> {;}</b></p><p
48、><b> }</b></p><p> void Lcd_write_CMD(UCHAR DATA_output,UCHAR If_Check) //寫(xiě)指令</p><p><b> {</b></p><p> if(If_Check)</p><p> Check_ifbus
49、y(); </p><p> RS_1602=0;</p><p> RW_1602=0;</p><p> DATA_out=DATA_output; </p><p><b> E_1602=1;</b></p><p> delay_ms(1); </p>&
50、lt;p> E_1602=0; //鎖存數(shù)據(jù)</p><p> RS_1602=1;</p><p> RW_1602=1;</p><p><b> }</b></p><p> void Check_ifbusy(void) //讀狀態(tài)</p><p><b&g
51、t; {</b></p><p> DATA_out=0xff;</p><p> RS_1602=0;</p><p> RW_1602=1;</p><p><b> E_1602=1;</b></p><p> while(DATA_out & 0x80)&l
52、t;/p><p><b> {</b></p><p> E_1602=0; //這兩句protues仿真必須加</p><p> E_1602=1; //</p><p><b> }</b></p><p><b> E_1602=0;<
53、/b></p><p><b> }</b></p><p> void Lcd_1602_Display(UCHAR *dis_p) //顯示</p><p><b> {</b></p><p> UCHAR i,len; //定義要放在前面</p><p&
54、gt; len=strlen(dis_p); </p><p> Lcd_Set_XY(0,0); </p><p> if( len>16)</p><p><b> {</b></p><p> for( i=0;i<16;i++)</p><p><b>
55、 {</b></p><p> Lcd_write_DATA(dis_p[i],1);</p><p><b> }</b></p><p> Lcd_Set_XY(0,1);</p><p> for( i=16;i<len;i++)</p><p><b&g
56、t; {</b></p><p> Lcd_write_DATA(dis_p[i],1);</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p>&
57、lt;b> {</b></p><p> for( i=0;i<len;i++)</p><p><b> {</b></p><p> Lcd_write_DATA(dis_p[i],1);</p><p><b> }</b></p><p&
58、gt;<b> } </b></p><p><b> }</b></p><p> void lcd_dis(UCHAR *dis_p,UCHAR i,UCHAR location)</p><p><b> {</b></p><p> Lcd_Set_XY(l
59、ocation,0); </p><p> Lcd_write_DATA(dis_p[i],1);</p><p><b> }</b></p><p> void Lcd_Set_XY(UCHAR x,UCHAR y) //設(shè)置顯示的初始坐標(biāo)</p><p><b> {</b><
60、;/p><p> x &= 0x0f;</p><p> y &= 0x01;</p><p> delay_ms(1);</p><p><b> if(y)</b></p><p><b> {</b></p><p>
61、Lcd_write_CMD(0X80+0X40+x,1);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> Lcd_write_CMD(0X80+x,1);</p>
62、;<p><b> } </b></p><p><b> }</b></p><p> void Lcd_write_DATA(UCHAR DATA_output,UCHAR If_Check)//寫(xiě)數(shù)據(jù)</p><p><b> {</b></p><
63、p> if(If_Check)Check_ifbusy();</p><p> RS_1602=1;</p><p> RW_1602=0;</p><p> DATA_out=DATA_output;</p><p><b> E_1602=1;</b></p><p> d
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--ps2鍵盤(pán)鼠標(biāo)識(shí)別器的設(shè)計(jì)
- 基于verilog的ps2鍵盤(pán)設(shè)計(jì)進(jìn)階
- 51單片機(jī)模擬ps2協(xié)議
- 實(shí)驗(yàn)四_ps2鍵盤(pán)的控制
- 基于單片機(jī)的畢業(yè)設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)--基于單片機(jī)的電子時(shí)鐘
- 單片機(jī)畢業(yè)設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-單片機(jī)
- ps2鼠標(biāo)鍵盤(pán)協(xié)議 外文翻譯
- 單片機(jī)畢業(yè)設(shè)計(jì)---基于單片機(jī)控制的模擬電梯顯示
- 單片機(jī)畢業(yè)設(shè)計(jì)--基于單片機(jī)的恒壓供水系統(tǒng)設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)---基于單片機(jī)簡(jiǎn)易計(jì)算機(jī)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)數(shù)字時(shí)鐘設(shè)計(jì)
- 基于單片機(jī)的電子羅盤(pán)設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)數(shù)字秒表的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的門(mén)禁系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的門(mén)禁系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的熱能表設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的數(shù)控電源設(shè)計(jì)畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論