




已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
??飘厴I(yè)設計(論文) 設計題目: 基于基于 mcs51 單單片機與片機與 lcd 液晶液晶顯顯示器的接口示器的接口 技技術(shù)術(shù) 系 部: 信息工程系信息工程系 專 業(yè): 電電子信息工程子信息工程 班 級: 電電子信息子信息 姓 名: 學 號: : 指導教師: 職 稱 講師講師 2009 年 6 月 南京 摘 要 lcd 液晶顯示已經(jīng)是人機界面的關(guān)鍵技術(shù)。本文對基于單片機的 lcd 液晶顯示器控制 技術(shù)進行了研究。 本文闡明用單片機(stc89c52)控制 lcd1602 顯示屏的方法。首先本文研究了 lcd1602 液晶屏(hd44780)的點陣顯示原理及字庫代碼獲取方法,隨后通過在 proteus 仿真軟件上構(gòu)建相關(guān)的仿真電路,并連接在 keil 軟件上編寫、編輯及編譯生成的相關(guān)的. hex 驅(qū)動程序進行電路仿真,成功仿真出對所需內(nèi)容的循環(huán)顯示。編程語言主要使用的是 匯編。在成功模擬仿真后本文進一步進行了在單片機開發(fā)板上的程序燒錄。本文所描述 的設計產(chǎn)品實際制作是基于原理圖生成的 pcb 板,最后通過購買元件、元件測試、電路 焊接、產(chǎn)品調(diào)試完成了本次設計的全部過程。 關(guān)鍵詞 :lcd,單片機,顯示屏,驅(qū)動,掃描,仿真,設計 abstractabstract lcd liquid crystal display is the key to man-machine interface technology. in this paper, based on single-chip lcd liquid crystal display control technology is studied. this article set out to use single-chip microcomputer (stc89c52) control method lcd1602 display. first of all, this paper lcd1602 lcd (hd44780) and the principle of the dot matrix display font access method code, followed by proteus simulation software circuit simulation to build relevant and connected to the keil software to prepare, edit and compile the relevant generating . hex driver circuit simulation, the success of the simulation cycle required to display the content. the main programming language used was compiled. after the success of simulation in this paper for further development in the single-chip on-board procedures for burning. this paper describes the design of the actual production of products is based on the schematic diagram of the pcb board to generate, and finally through the purchase of components, component testing, circuit welding, product testing was completed the design of the whole process. keywordskeywords: lcd,singlechip,display,drive,scan,simulation,design 目目 錄錄 摘摘 要要 iiii 1 1 緒論緒論 1 1 1.1 液晶顯示器在單片機系統(tǒng)中的應用 .1 1.2 液晶顯示器的優(yōu)點 .1 2 2 lcd1602lcd1602 液晶顯示器的顯示原理液晶顯示器的顯示原理3 3 2.1 液晶顯示原理簡介 .3 2.2 1602 字符型 lcd 簡介 4 2.3 lcd1602 的基本參數(shù)及引腳功能 .4 2.4 lcd1602 的 ram 地址映射及標準字庫表 .6 2.5 lcd1602 的一般初始化(復位)過程 13 3 3 電路軟件模擬及仿真電路軟件模擬及仿真 1414 3.1 keil及 proteus使用介紹 .14 3.2 lcd1602 入門程序的實現(xiàn) 16 3.3 字符型液晶顯示模塊與單片機的連接18 3.4 字符型液晶顯示模塊應用 23 3.5 液晶模塊顯示的拓展提高26 4 4 硬件電路原理圖及程序的燒寫硬件電路原理圖及程序的燒寫 2929 4.1 硬件電路原理圖及硬件圖29 4.2 程序的燒寫方法及演示30 結(jié)結(jié) 論論 3232 致致 謝謝 3333 參參 考考 文文 獻獻 3434 學院 2009 屆??粕厴I(yè)設計 第 1 頁 1 1 緒論緒論 當今是一個信息化的時代,信息的重要性是不言而喻的,獲取手段顯得尤其重 要。人們所接受的信息有 70%來自于人的視覺,無論用何種方式獲取的信息最終需要 有某種顯示方式來表示。在當代顯示技術(shù)中,主流的有 led 顯示屏及 lcd 液晶顯示, 而在這些顯示技術(shù)中,尤其以液晶顯示器 lcd(liquid crystal display)為代表的平 板顯示器發(fā)展最快、應用最廣。lcd 是典型的光電器件,它以材料科學為基礎,綜合 利用了精密機械、光電及計算機技術(shù),并正在微機械、微光學、纖維光學等前沿領(lǐng) 域研究基礎上,向高集成化、智能化方向發(fā)展。 1.11.1 液晶顯示器在單片機系統(tǒng)中的應用液晶顯示器在單片機系統(tǒng)中的應用 在日常生活中,我們對液晶顯示器并不陌生。液晶顯示模塊已作為很多電子產(chǎn) 品的通用器件,如在計算器、萬用表、電子表及很多家用電子產(chǎn)品中都可以看到, 顯示的主要是數(shù)字、專用符號和圖形。在單片機的人機交流界面中,一般的輸出方 式有以下幾種:發(fā)光管、led 數(shù)碼管、液晶顯示器。發(fā)光管和 led 數(shù)碼管比較常用, 軟硬件都比較簡單,在小型智能化電子產(chǎn)品中,普通的 7 段 led 數(shù)碼管只能顯示數(shù) 字,若要顯示英文字母或圖像漢字,則必須使用液晶顯示器,所以本課題重點研究 液晶顯示器。 1.21.2 液晶顯示器的優(yōu)點液晶顯示器的優(yōu)點 在單片機系統(tǒng)中應用晶液顯示器作為輸出器件有以下幾個優(yōu)點: 1.1.1 顯示質(zhì)量高 由于液晶顯示器每一個點在收到信號后就一直保持那種色彩和亮度,恒定發(fā)光, 而不像陰極射線管顯示器(crt)那樣需要不斷刷新新亮點。因此,液晶顯示器畫質(zhì) 高且不會閃爍。 1.1.2 數(shù)字式接口 液晶顯示器都是數(shù)字式的,和單片機系統(tǒng)的接口更加簡單可靠,操作更加方。 1.1.3 體積小、重量輕 學院 2009 屆??粕厴I(yè)設計 第 2 頁 液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達到顯示的目的,在重量 上比相同顯示面積的傳統(tǒng)顯示器要輕得多。 1.1.4 功耗低 相對而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動 ic 上,因而耗電 量比其它顯示器要少得多。 學院 2009 屆??粕厴I(yè)設計 第 3 頁 2 2 lcd1602lcd1602 液晶顯示器的顯示原理液晶顯示器的顯示原理 2.12.1 液晶顯示原理簡介液晶顯示原理簡介 2.1.1 液晶顯示原理 液晶顯示的原理是利用液晶的物理特性, 通過電壓對其顯示區(qū)域進行控制,有 電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成 電路直接驅(qū)動、易于實現(xiàn)全彩色顯示的特點,目前已經(jīng)被廣泛應用在便攜式電腦、 數(shù)字攝像機、pda 移動通信工具等眾多領(lǐng)域。 2.1.2 液晶顯示器的分類 液晶顯示的分類方法有很多種,通??砂雌滹@示方式分為段式 lcd、字符式 lcd、點陣式 lcd 等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果 根據(jù)驅(qū)動方式來分,可以分為靜態(tài)驅(qū)動(static)、單純矩陣驅(qū)動(simple matrix)和主動矩陣驅(qū)動(active matrix)三種。 2.1.3 液晶顯示器各種圖形的顯示原理: 線段的顯示 點陣圖形式液晶由 mn 個顯示單元組成,假設 lcd 顯示屏有 64 行,每行有 128 列,每 8 列對應 1 字節(jié)的 8 位,即每行由 16 字節(jié),共 168=128 個點組成,屏上 6416 個顯示單元與顯示 ram 區(qū) 1024 字節(jié)相對應,每一字節(jié)的內(nèi)容和顯示屏上相應 位置的亮暗對應。例如屏的第一行的亮暗由 ram 區(qū)的 000h00fh 的 16 字節(jié)的內(nèi) 容決定,當(000h)=ffh 時,則屏幕的左上角顯示一條短亮線,長度為 8 個點;當 (3ffh)=ffh 時,則屏幕的右下角顯示一條短亮線;當(000h)=ffh,(001h) =00h,(002h)=00h,(00eh)=00h,(00fh)=00h 時,則在屏幕的頂部顯示 一條由 8 段亮線和 8 條暗線組成的虛線。這就是 lcd 顯示的基本原理。 字符的顯示 用 lcd 顯示一個字符時比較復雜,因為一個字符由 68 或 88 點陣組成,既 要找到和顯示屏幕上某幾個位置對應的顯示 ram 區(qū)的 8 字節(jié),還要使每字節(jié)的不同 位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某 個字符。但由于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控 制器工作在文本方式,根據(jù)在 lcd 上開始顯示的行列號及每行的列數(shù)找出顯示 ram 對應的地址,設立光標,在此送上該字符對應的代碼即可。 學院 2009 屆??粕厴I(yè)設計 第 4 頁 漢字的顯示 漢字的顯示一般采用圖形的方式,事先從微機中提取要顯示的漢字的點陣碼 (一般用字模提取軟件),每個漢字占 32b,分左右兩半,各占 16b,左邊為 1、3、5右邊為 2、4、6根據(jù)在 lcd 上開始顯示的行列號及每行的列數(shù)可找 出顯示 ram 對應的地址,設立光標,送上要顯示的漢字的第一字節(jié),光標位置加 1, 送第二個字節(jié),換行按列對齊,送第三個字節(jié)直到 32b 顯示完就可以 lcd 上得 到一個完整漢字。 2.22.2 16021602 字符型字符型 lcdlcd 簡介簡介 字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式 lcd,目前 常用 16*1,16*2,20*2 和 40*2 行等的模塊。下面以長沙太陽人電子有限公司的 1602 字符型液晶顯示器為例,介紹其用法。一般 1602 字符型液晶顯示器實物如圖 2.2.1: 圖 2.2.1 學院 2009 屆專科生畢業(yè)設計 第 5 頁 2.32.3 lcd16021602 的基本參數(shù)及引腳功能的基本參數(shù)及引腳功能 市面上 1602 字符液晶顯示屏絕大多數(shù)是基于 hd44780 液晶芯片的,控制原理是 完全相同的,因此 hd44780 寫的控制程序可以很方便地應用于市面上大部分的字符 型液晶。字符型 lcd 通常有 14 條引腳線或 16 條引腳線的 lcd,多出來的 2 條線是背 光電源線 vcc(15 腳)和地線 gnd(16 腳),其控制原理與 14 腳的 lcd 完全一樣,外形 尺寸和引腳接口信號說明分別如圖 2.3.1 和表 2.3.1 所示1 1: 圖 2.3.1 表 2.3.1 1602lcd 主要技術(shù)參數(shù): 學院 2009 屆專科生畢業(yè)設計 第 6 頁 表 2.3.2 引腳接口說明: 第 1 腳:vss 為地電源。 第 2 腳:vdd 接 5v 正電源。 第 3 腳:vl 為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比 度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個 10k 的電位器調(diào)整對 比度。 第 4 腳:rs 為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。 第 5 腳:r/w 為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當 rs 和 r/w 共同為低電平時可以寫入指令或者顯示地址,當 rs 為低電平 r/w 為高電平 時可以讀忙信號,當 rs 為高電平 r/w 為低電平時可以寫入數(shù)據(jù)。 第 6 腳:e 端為使能端,當 e 端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 第 714 腳:d0d7 為 8 位雙向數(shù)據(jù)線。 第 15 腳:背光源正極。 第 16 腳:背光源負極。 2.42.4 lcd16021602 的的 ramram 地址映射及標準字庫表地址映射及標準字庫表 hd44780 內(nèi)置了 ddram、cgrom 和 cgram。 ddram 就是顯示數(shù)據(jù) ram,用來寄存待顯示的字符代碼。共 80 個字節(jié),其地址 和屏幕的對應關(guān)系如表 2.4.1: 表 2.4.1 學院 2009 屆??粕厴I(yè)設計 第 7 頁 也就是說想要在 lcd1602 屏幕的第一行第一列顯示一個“a“字,就要向 ddram 的 00h 地址寫入“a”字的代碼就行了。但具體的寫入是要按 lcd 模塊的指令格式來進 行的,后面將會提到。我們很容易發(fā)現(xiàn)每一行有 40 個地址,在 1602 中我們就用前 16 個就行了。第二行也一樣用前 16 個地址。對應如表 2.4.2: ddram 地址與顯示位置的對應關(guān)系 表 2.4.2 我們知道文本文件中每一個字符都是用一個字節(jié)的代碼記錄的。一個漢字是用 兩個字節(jié)的代碼記錄。在 pc 上我們只要打開文本文件就能在屏幕上看到對應的字符 是因為在操作系統(tǒng)里和 bios 里都固化有字符字模。什么是字模?就代表了是在點陣 屏幕上點亮和熄滅的信息數(shù)據(jù)。例如“a”字的字模: 01110 10001 10001 10001 11111 10001 10001 上圖左邊的數(shù)據(jù)就是字模數(shù)據(jù),右邊就是將左邊數(shù)據(jù)用“”代表 0,用“” 代表 1。看出是個“a”字了嗎?在文本文件中“a”字的代碼是 41h,pc 收到 41h 的 代碼后就去字模文件中將代表 a 字的這一組數(shù)據(jù)送到顯卡去點亮屏幕上相應的點, 你就看到“a”這個字了。 剛才我說了想要在 lcd1602 屏幕的第一行第一列顯示一個“a“字,就要向 ddram 的 00h 地址寫入“a”字的代碼 41h 就行了,可 41h 這一個字節(jié)的代碼如何才能讓 lcd 模塊在屏幕的陣點上顯示“a”字呢?同樣,在 lcd 模塊上也固化了字模存儲器, 這就是 cgrom 和 cgram。hd44780 內(nèi)置了 192 個常用字符的字模,存于字符產(chǎn)生器 cgrom(character generator rom)中,另外還有 8 個允許用戶自定義的字符產(chǎn)生 學院 2009 屆專科生畢業(yè)設計 第 8 頁 ram,稱為 cgram(character generator ram)。圖 2.4.1 說明了 cgrom 和 cgram 與字 符的對應關(guān)系。 圖 2.4.12 2 從上圖可以看出,“a”字的對應上面高位代碼為 0100,對應左邊低位代碼為 0001,合起來就是 01000001,也就是 41h??梢娝拇a與我們 pc 中的字符代碼是 基本一致的。字符代碼 0x000x0f 為用戶自定義的字符圖形 ram(對于 5x8 點陣的字 符,可以存放 8 組,5x10 點陣的字符,存放 4 組),就是 cgram 了。 學院 2009 屆??粕厴I(yè)設計 第 9 頁 0x200x7f 為標準的 ascii 碼,0xa00xff 為日文字符和希臘文字符,其余字 符碼(0x100x1f 及 0x800x9f)沒有定義。 如果要對 ddram 的內(nèi)容和地址進行具體操作,首先就要了解 hd44780 的指令集 及其設置說明。該指令集及其對 ddram 的內(nèi)容和地址進行操作的指令如下。 共 11 條指令2 2: 1.清屏指令 表 2.4.3 功能: 清除液晶顯示器,即將 ddram 的內(nèi)容全部填入“空白“的 ascii 碼 20h; 光標歸位,即將光標撤回液晶顯示屏的左上方; 將地址計數(shù)器(ac)的值設為 0。 2.光標歸位指令 表 2.4.4 功能: 把光標撤回到顯示器的左上方; 把地址計數(shù)器(ac)的值設置為 0; 保持 ddram 的內(nèi)容不變。 3.進入模式設置指令 表 2.4.5 學院 2009 屆??粕厴I(yè)設計 第 10 頁 功能:設定每次定入 1 位數(shù)據(jù)后光標的移位方向,并且設定每次寫入的一個字 符是否移動。參數(shù)設定的情況如下所示: 位名 設置 i/d 0=寫入新數(shù)據(jù)后光標左移 1=寫入新數(shù)據(jù)后光標右移 s 0=寫入新數(shù)據(jù)后顯示屏不移動 1=寫入新數(shù)據(jù)后顯示屏整體右移 1 個字符 4.顯示開關(guān)控制指令 表 2.4.6 功能:控制顯示器開/關(guān)、光標顯示/關(guān)閉以及光標是否閃爍。 位名 設置 d 0=顯示功能關(guān) 1=顯示功能開 c 0=無光標 1=有光標 b 0=光標閃爍 1=光標不閃爍 5.設定顯示屏或光標移動方向指令 表 2.4.7 功能:使光標移位或使整個顯示屏幕移位。參數(shù)設定的情況如下: s/c r/l 設定情況 0 0 光標左移 1 格,且 ac 值減 1 0 1 光標右移 1 格,且 ac 值加 1 1 0 顯示器上字符全部左移一格,但光標不 動 學院 2009 屆專科生畢業(yè)設計 第 11 頁 1 1 顯示器上字符全部右移一格,但光標不 動 6.功能設定指令 表 2.4.8 功能:設定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。參數(shù)設定的情況如下: 位名 設置 dl 0=數(shù)據(jù)總線為 4 位 1=數(shù)據(jù)總線為 8 位 n 0=顯示 1 行 1=顯示 2 行 f 0=57 點陣/每字符 1=510 點陣/每字符 7.設定 cgram 地址指令 表 2.4.9 功能:設定下一個要存入數(shù)據(jù)的 cgram 的地址。 8.設定 ddram 地址指令 表 2.4.10 功能:設定下一個要存入數(shù)據(jù)的 cgram 的地址。 9.讀取忙信號或 ac 地址指令 學院 2009 屆??粕厴I(yè)設計 第 12 頁 表 2.4.11 功能: 讀取忙碌信號 bf 的內(nèi)容,bf=1 表示液晶顯示器忙,暫時無法接收單片機 送來的數(shù)據(jù)或指令;當 bf=0 時,液晶顯示器可以接收單片機送來的數(shù)據(jù)或指令; 讀取地址計數(shù)器(ac)的內(nèi)容。 10.數(shù)據(jù)寫入 ddram 或 cgram 指令一覽 表 2.4.12 功能: 將字符碼寫入 ddram,以使液晶顯示屏顯示出相對應的字符; 將使用者自己設計的圖形存入 cgram。 11.從 cgram 或 ddram 讀出數(shù)據(jù)的指令一覽 表 2.4.13 功能:讀取 ddram 或 cgram 中的內(nèi)容。 基本操作時序: 讀狀態(tài) 輸入:rs=l,rw=h,e=h 輸出:db0db7=狀態(tài)字 寫指令 輸入:rs=l,rw=l,e=下降沿脈沖,db0db7=指令碼 輸出: 學院 2009 屆??粕厴I(yè)設計 第 13 頁 無 讀數(shù)據(jù) 輸入:rs=h,rw=h,e=h 輸出:db0db7=數(shù)據(jù) 寫數(shù)據(jù) 輸入:rs=h,rw=l,e=下降沿脈沖,db0db7=數(shù)據(jù) 輸出: 無 2.52.5 lcd16021602 的一般初始化(復位)過程的一般初始化(復位)過程 延時 15ms 寫指令 38h(不檢測忙信號) 延時 5ms 寫指令 38h(不檢測忙信號) 延時 5ms 寫指令 38h(不檢測忙信號) 以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號 寫指令 38h:顯示模式設置 寫指令 08h:顯示關(guān)閉 寫指令 01h:顯示清屏 寫指令 06h:顯示光標移動設置 寫指令 0ch:顯示開及光標設置 學院 2009 屆??粕厴I(yè)設計 第 14 頁 3 3 電路軟件模擬及仿真電路軟件模擬及仿真 3.13.1 keilkeil 及及 proteusproteus 使用介紹使用介紹 單片機編程及仿真軟件有很多種,本課程設計主要使用的是 keil 及 proteus, 下面對兩種軟件的使用大體介紹下。 3.1.1keilkeil 中驅(qū)動程序的實現(xiàn)4 4 為了能使 keil 成功與 proteus 連接,其關(guān)鍵就是在 keil 中編寫驅(qū)動程序并生 成.hex 文件。圖 3.1.1 用紅線圈住的部分為生成.hex 文件必做步驟,圖 3.1.2 為軟 件中一些常用的項或注意點。 圖 3.1.1 學院 2009 屆專科生畢業(yè)設計 第 15 頁 圖 3.1.2 3.1.2proteusproteus 中.hex.hex 文件的導入5 5 在 proteus 中連接好仿真電路圖以后,就要開始向單片機中導入生成的.hex 文 件。雙擊單片機,會出現(xiàn)圖 3.1.3 所示圖形,點擊 program file 里面用紅線圈住的 文件夾樣式的按鈕,然后從保存的文件夾中導入.hex 文件,再點擊 ok 鍵,就可以進 行模擬仿真了。 學院 2009 屆??粕厴I(yè)設計 第 16 頁 圖 3.1.3 3.23.2 lcd1602lcd1602 入門程序的實現(xiàn)入門程序的實現(xiàn) 液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的 忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地 址,也就是告訴模塊在哪里顯示字符,圖 3.2.1 為 1602 顯示要用到的地址。 圖 3.2.1 例如第二行第一個字符的地址是 40h,那么是否直接寫入 40h 就可以將光標定位 在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位 d7 恒定 為高電平 1 所以實際寫入的數(shù)據(jù)應該是 01000000b(40h)+10000000b(80h) 學院 2009 屆??粕厴I(yè)設計 第 17 頁 =11000000b(c0h)。 為了直觀的說明這個問題,我用 lcd1602 入門的一個程序來顯示一個字符。還 是以 a 字為例,實現(xiàn)在第二行第一個字符的位置顯示一個 a 字。我們已經(jīng)知道 a 字 的代碼是 41h,所以代碼 41h 和 c0h 是本程序的關(guān)鍵。詳細程序如下: rs equ p3.7;確定具體硬件的連接方式 rw equ p3.6 ;確定具體硬件的連接方式 e equ p3.5 ;確定具體硬件的連接方式 mov p1,#00000001b acall enable;調(diào)用寫入命令子程序 mov p1,#00111000b acall enable ;調(diào)用寫入命令子程序 mov p1,#00001111b acall enable ;調(diào)用寫入命令子程序 mov p1,#00000110b acall enable ;調(diào)用寫入命令子程序 mov p1,#0c0h acall enable ;調(diào)用寫入命令子程序 mov p1,#01000001b setb rs clr rw;準備寫入數(shù)據(jù) clr e;執(zhí)行顯示命令 acall delay ;判斷液晶模塊是否忙? setb e;顯示完成,程序停車 ajmp $ enable: clr rs clr rw clr e acall delay setb e ret delay: 學院 2009 屆??粕厴I(yè)設計 第 18 頁 mov p1,#0f0h clr rs setb rw clr e nop setb e jb p1.7,delay ret end 將本程序輸入單片機后,仿真效果如圖 3.2.1: 圖 3.2.1 3.33.3 字符型液晶顯示模塊與單片機的連接 單片機與液晶顯示器的連接方法有兩種。一:直接訪問方式;二:間接控制方 式。一:直接訪問方式模擬接口電路見圖 3.3.12 2: 學院 2009 屆??粕厴I(yè)設計 第 19 頁 圖 3.3.1 直接訪問方式的驅(qū)動子程序如下: a15 = e的選通信號a9 = r/w a8 = rs com equ 20h ; 指令寄存器 dat equ 21h ; 數(shù)據(jù)寄存器 cw_add equ 8000h ; 指令口寫地址 cr_add equ 8200h ; 指令口讀地址 dw_add equ 8100h ; 數(shù)據(jù)口寫地址 dr_add equ 8300h ; 數(shù)據(jù)口讀地址 1、讀bf和ac值 pr0: push dph push dpl push acc mov dptr,#cr_add ; 設置指令口讀地址 movx a,dptr ; 讀bf和ac值 mov com,a ; 存入com 單元 pop acc pop dpl pop dph ret 2、寫指令代碼子程序 pr1: push dph push dpl 學院 2009 屆??粕厴I(yè)設計 第 20 頁 push acc mov dptr,#cr_add ; 設置指令口讀地址 pr11: movx a,dptr jb acc.7,pr11 ; 判bf=0? 是繼續(xù) mov a,com mov dptr,#cw_add ; 設置指令口寫地址 movx dptr,a ; 寫指令代碼 pop acc pop dpl pop dph ret 3、寫顯示數(shù)據(jù)子程序 pr2: push dph push dpl push acc mov dptr,#cr_add ; 設置指令口讀地址 pr21: movx a,dptr jb acc.7,pr21 ; 判bf=0? 是繼續(xù) mov a,dat mov dptr,#dw_add ; 設置數(shù)據(jù)口寫地址 movx dptr,a ; 寫數(shù)據(jù) pop acc pop dpl pop dph ret 4、讀顯示數(shù)據(jù)子程序 pr3: push dph push dpl push acc mov dptr,#cr_add ; 設置指令口讀地址 pr31: movx a,dptr jb acc.7,pr31 ; 判bf=0? 是繼續(xù) 學院 2009 屆??粕厴I(yè)設計 第 21 頁 mov dptr,#dr_add ; 設置數(shù)據(jù)口讀地址 movx a,dptr ; 讀數(shù)據(jù) mov dat,a ; 存入dat 單元 pop acc pop dpl pop dph ret 二:間接控制方式 間接控制方式(4位總線)是利用hd44780所具有的4位數(shù)據(jù)總線的功能簡化電路接 口的一種接口方式實用電路如圖3.3.2: 圖 3.3.2 間接控制方式的驅(qū)動子程序如下 rs equ p3.3 ; 寄存器選擇信號 r/w equ p3.4 ; 讀/寫選擇信號 e equ p3.5 ; 使能信號 1、讀bf和ac值 pr0: push acc mov p1,#0ffh ; p1置位, 準備讀 clr rs ; rs=0 setb r/w ; r/w=1 setb e ; e=1 mov com,p1 ; 讀bf和ac6-4值 clr e ; e=0 mov p1,#0ffh ; p1置位, 準備讀 setb e ; e=1 mov a,p1 ; 讀ac3-0值 clr e ; e=0 swap a ; 轉(zhuǎn)換成 8位數(shù)據(jù) anl a,#0fh anl com,#0f0h 學院 2009 屆專科生畢業(yè)設計 第 22 頁 orl a,com mov com,a ; 送入com 單元 pop acc ret 2、寫指令代碼子程序 pr1: push acc clr rs ; rs=0 setb r/w ; r/w=1 pr11: mov p1,#0ffh ; p1置位, 準備 讀 setb e ; e=1 mov a,p1 ; 讀bf和ac6-4值 clr e ; e=0 mov c,acc.7 ; bf?進位位c setb e ; e=1 clr e ; e=0 (讀ac3-0值) jc pr11 ; 判別bf=1? 是轉(zhuǎn) clr r/w ; r/w=0 mov p1,com ; 寫入指令代碼高 4位 setb e ; e=1 clr e ; e=0 mov a,com ; 寫入指令代碼低 4位 swap a mov p1,a setb e ; e=1 clr e ; e=0 pop acc ret 3、寫顯示數(shù)據(jù)子程序 pr2: push acc clr rs ; rs=0 setb r/w ; r/w=1 pr21: mov p1,#0ffh ; p1置位, 準備 讀 setb e ; e=1 mov a,p1 ; 讀bf和ac6-4值 clr e ; e=0 mov c,acc.7 ; bf?進位位c setb e ; e=1 clr e ; e=0 (讀ac3-0值) jc pr21 ; 判別bf=1? 是轉(zhuǎn) setb rs ; rs=1 clr r/w ; r/w=0 mov p1,dat ; 寫入數(shù)據(jù)高 4位 setb e ; e=1 clr e ; e=0 mov a,dat ; 寫入數(shù)據(jù)低 4位 swap a mov p1,a setb e ; e=1 clr e ; e=0 pop acc ret 4、讀顯示數(shù)據(jù)子程序 pr3: push acc clr rs ; rs=0 setb r/w ; r/w=1 pr31: mov p1,#0ffh ; p1置位, 準備 讀 setb e ; e=1 mov a,p1 ; 讀bf和ac6-4值 clr e ; e=0 mov c,acc.7 ; bf?進位位c setb e ; e=1 學院 2009 屆??粕厴I(yè)設計 第 23 頁 clr e ; e=0 (讀ac3-0值) jc pr31 ; 判別bf=1? 是轉(zhuǎn) setb rs ; rs=1 setb r/w ; r/w=1 mov p1,#0ffh ; p1置位, 準備讀 setb e ; e=1 mov com,p1 ; 讀數(shù)據(jù)高 4位 clr e ; e=0 mov p1,#0ffh ; p1置位, 準備讀 setb e ; e=1 mov a,p1 ; 讀數(shù)據(jù)低 4位 clr e ; e=0 swap a ; 轉(zhuǎn)換成 8位 anl a,#0fh anl dat,#0f0h orl a,dat mov dat,a ; 數(shù)據(jù)送入dat 單元 pop acc ret 3.4 字符型液晶顯示模塊應用字符型液晶顯示模塊應用 在本章前兩節(jié),已詳細介紹了液晶顯示模塊與單片機的連接方法及入門程序的 實現(xiàn),本節(jié)進一步深入研究,要求液晶模塊在直接訪問模式下實現(xiàn)光標左移,使其 兩行顯示一句話,顯示內(nèi)容為“i love my school jmi is my home!”。 相關(guān)內(nèi)容如下: 這個程序用于實現(xiàn) lcd1602 的光標右移 顯示功能。直接訪問方式的驅(qū)動子程序 如下: ;a15=e 的選通信號,a9=r/w,a8=rs com equ 30h ;指令寄存器 dat equ 31h ;數(shù)據(jù)寄存器 cw_add equ 8000h ;指令口寫地址 rs,r/w 為 00 cr_add equ 8200h ;指令口讀地址 rs,r/w 為 01 dw_add equ 8100h ;數(shù)據(jù)口寫地址 rs,r/w 為 10 dr_add equ 8300h ;數(shù)據(jù)口讀地址 rs,r/w 為 11 main: mov sp,#60h mov p3,#0c7h acall init cycle:acall write acall delay mov com,#01h acall pr1 sjmp cycle;寫指令代碼子程序 pr1: push dph push dpl push acc mov dptr,#cr_add ;設置指令口讀地 址 pr11: movx a,dptr jb acc.7,pr11 ;判 bf=0?是繼續(xù) mov a,com mov dptr,#cw_add ;設置指令口寫地 址 學院 2009 屆??粕厴I(yè)設計 第 24 頁 movx dptr,a ;寫指令代碼 pop acc pop dpl pop dph ret ;寫顯示數(shù)據(jù)子程序 pr2: push dph push dpl push acc mov dptr,#cr_add ;設置指令口讀地 址 pr21: movx a,dptr jb acc.7,pr21 ;判 bf=0?是繼續(xù) mov a,dat ;不忙時寫入數(shù)據(jù) mov dptr,#dw_add ;置數(shù)據(jù)口寫地址 movx dptr,a ;寫數(shù)據(jù) pop acc pop dpl pop dph ret ;直接訪問方式下的初始化子程序 init: mov a,#38h ;功能設置,單行顯 示,8 位數(shù)據(jù)口,30h 為單行顯示 mov dptr,#cw_add ;寫指令口地址 設置 mov r2,#03h ;循環(huán)量=3 此循 環(huán)必要,不可刪除 intk: movx dptr,a ;寫指令代碼 lcall delay ;調(diào)延時子程序 djnz r2,intk ;為什么要寫這么多次? ? mov com,#01h ;清屏 lcall pr1 ;寫入指令 mov com,#06h ;設置輸入方式,ac 自動 增 1,畫面不動 lcall pr1 ;寫入指令 mov com,#0eh ;設置顯示方式,光標開, 閃爍關(guān) lcall pr1 ;寫入指令 ;mov com,#18h ;設置光標,畫面位移 ;lcall pr1 ret ;逐字依次輸入方式演示程序段 write:mov com,#80h ;設置 ddram 第一 行顯示地址 lcall pr1 ;寫入指令 mov dptr,#tab0 ;設置數(shù)據(jù)首地址 mov r2,#0 wrin0:mov a,r2 movc a,a+dptr ;取待寫數(shù)據(jù) mov dat,a ;把取到的數(shù)據(jù)存入數(shù)據(jù)寄 存器 lcall pr2 ;調(diào)用寫數(shù)據(jù)子程序 lcall delay ;延時 inc r2 cjne r2,#16,wrin0 ;25 字符顯示完? mov com,#0c0h acall pr1 wrin1:mov a,r2 movc a,a+dptr ;取待寫數(shù)據(jù) mov dat,a ;把取到的數(shù)據(jù)存入數(shù)據(jù)寄 存器lcall pr2 ;調(diào)用寫數(shù)據(jù)子程序 學院 2009 屆??粕厴I(yè)設計 第 25 頁 lcall delay ;延時 inc r2 cjne r2,#32,wrin1 ;25 符顯示完? ret delay:mov r7,#200 d02: mov r6,#200 d01: nop nop nop djnz r6,d01 djnz r7,d02 ret 學院 2009 屆??粕厴I(yè)設計第 26 頁 tab0:db i,20h,l,o,v,e,20h,m,y,20h,s,c,h,o,o,l db 20h,j,m,i,20h,i,s,20h,m,y,20h,h,o,m,e,! ;i love my school jmi is my home! end 其仿真效果圖如圖 3.4.1 所示: 圖 3.4.1 3.53.5 液晶模塊顯示的拓展提高液晶模塊顯示的拓展提高 平時我們利用液晶顯示模塊顯示的字符都是芯片內(nèi)部自帶的,而 hd44780 芯片允許 我們自定義一部分字符。所以本節(jié)主要對液晶顯示器的接口技術(shù)稍微拓展提高,使其能 夠顯示帶有自定義字符的本次論文答辯時間“2009 年 6 月 9 日”等字符。 首先舉例說明自定義字符實現(xiàn)的方法。以“月”字為例: 01111 01001 01111 01001 01111 01001 10001 00000 根據(jù)上圖容易看出“月”字代碼為:0fh,09h,0fh,09h,0fh,09h,11h,00h。其他字符 如“年” 、 “日”代碼可根據(jù)此方法類推。 再次回到本次拓展提高所要的程序代碼部分。這個程序用于實現(xiàn) lcd1602 的光標右 移顯示功能。可以循環(huán)顯示。 直接訪問方式的驅(qū)動子程序如下: ;a15=e 的選通信號,a9=r/w,a8=rscom equ 30h ;指令寄存器 學院 2009 屆??粕厴I(yè)設計第 27 頁 dat equ 31h ;數(shù)據(jù)寄存器 cw_add equ 8000h ;指令口寫地址 rs,r/w 為 00 cr_add equ 8200h ;指令口讀地址 rs,r/w 為 01 dw_add equ 8100h ;數(shù)據(jù)口寫地址 rs,r/w 為 10 dr_add equ 8300h ;數(shù)據(jù)口讀地址 rs,r/w 為 11 main: mov sp,#60h mov p3,#0c7h acall init acall cg_write cycle:acall cgdisp acall delay mov com,#01h acall pr1 sjmp cycle ;寫指令代碼子程序 pr1: push dph push dpl push acc mov dptr,#cr_add ;設置指令口讀地 址 pr11: movx a,dptr jb acc.7,pr11 ;判 bf=0?是繼續(xù) mov a,com mov dptr,#cw_add ;設置指令口寫地 址 movx dptr,a ;寫指令代碼 pop acc pop dpl pop dph ret ;寫顯示數(shù)據(jù)子程序 pr2: push dph push dpl push acc mov dptr,#cr_add ;設置指令口讀地 址 pr21: movx a,dptr jb acc.7,pr21 ;判 bf=0?是繼續(xù) mov a,dat ;不忙時寫入數(shù)據(jù) mov dptr,#dw_add ;置數(shù)據(jù)口寫地址 movx dptr,a ;寫數(shù)據(jù) pop acc pop dpl pop dphret ;直接訪問方式下的初始化子程序 init: mov a,#30h ;功能設置,單 行顯示,8 位數(shù)據(jù)口,30h 為單行顯示 mov dptr,#cw_add ;寫指令口地址設 置 mov r2,#03h ;循環(huán)量=3 此循 環(huán)必要,不可刪除 intk: movx dptr,a ;寫指令代 碼 lcall delay ;調(diào)延時子程序 djnz r2,intk ;為什么要寫這么多 次? mov com,#01h ;清屏 lcall pr1 ;寫入指令 mov com,#06h ;設置輸入方式, ac 自動增 1,畫面不動 lcall pr1 ;寫入指令 mov com,#0ch ;設置顯示方式, 光標開,閃爍關(guān) lcall pr1 ;寫入指令 ret ;寫 cgram 子程序 cg_write: movcom,#40h ;設置 cgram 地址 lcall pr1 mov r2,#64 ;循環(huán)量設置 mov r3,#00h mov dptr,#cgtab ;設置字模數(shù)據(jù)首地 址 cg1: mov a,r3 movc a,a+dptr mov dat,a lcall pr2 inc r3 djnz r2,cg1 ret ;自定義字符顯示演示程序段 cgdisp: movdptr,#tabdy1 ;設置 學院 2009 屆??粕厴I(yè)設計第 28 頁 字表首地址 mov r2,#0 ;循環(huán)量設置 loop1: mov a,r2 movc a,a+dptr ;取字符代碼 mov dat,a lcall pr2 ;寫數(shù)據(jù) inc r2 cjne r2,#5,loop1 ret delay:mov r7,#200 d02: mov r6,#200 d01: ;nop ;nop nop djnz r6,d01 djnz r7,d02 ret tabdy1: db 2009,00h,6,01h,9,02h ,fenglei cgtab: db 08h,1fh,04h,0fh,0ah,1fh,02h,02h ;“年”代碼=00h db 0fh,09h,0fh,09h,0fh,09h,11h,00h ;“月”代碼=01h db 1fh,11h,11h,1fh,11h,11h,1fh,00h ;“日”代碼=02h db 11h,0ah,04h,1fh,04h,1fh,04h,
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 玻璃材料的生物相容性考核試卷
- 核電工程現(xiàn)場施工安全防護設備使用考核試卷
- 木材加工企業(yè)的客戶關(guān)系管理系統(tǒng)考核試卷
- 批發(fā)行業(yè)互聯(lián)網(wǎng)轉(zhuǎn)型之路考核試卷
- 康復輔具在康復醫(yī)學研究方法的革新考核試卷
- 煤炭行業(yè)投資風險評價考核試卷
- 文化用化學品在聲音記錄材料的技術(shù)發(fā)展考核試卷
- 醫(yī)療數(shù)據(jù)要素市場交易權(quán)限管理
- 美國發(fā)動“對等關(guān)稅戰(zhàn)”的影響
- DB12T 715-2016 籠車 裝卸操作規(guī)范
- 辦公樓裝飾裝修工程施工組織設計方案
- 酒店客房6S管理服務標準
- DB11-T 1953-2022 成品糧儲藏技術(shù)規(guī)范
- 【基于單片機的智能送餐配送車設計與實現(xiàn)(論文)11000字】
- 《機械制圖(多學時)》中職全套教學課件
- 駱駝祥子考點單選題100道及答案解析
- 新教科版小學1-6年級科學需做實驗目錄
- 2024年高等教育自學考試自考《英語二》試卷及解答參考
- 高低壓配電安全規(guī)程
- 李白《南陵別兒童入京》課件
評論
0/150
提交評論