版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)用標(biāo)準(zhǔn)文檔1. 液晶控制電路和方案 41.1 相關(guān)硬件和軟件介紹 41.1.1 STC89C52 41.1.2 帶字庫的 12864 液晶 41.1.3 不帶字庫的 12864 液晶 51.1.4 取模軟件 51.2 液晶顯示控制設(shè)計(jì)電路 61.2.1 系統(tǒng)的總體設(shè)計(jì)思路和框圖 61.2.2 系統(tǒng)方案選擇 61.2.3 系統(tǒng)功能圖和流程圖 71.2.4 系統(tǒng)電路原理圖 82. 程序的設(shè)計(jì)和調(diào)試 102.1 帶字庫的 12864 指令 102.2 不帶字庫的 12864指令 122.3 程序調(diào)試 132.3.1 工程的建立和程序編譯 132.3.2 硬件調(diào)試 143. 液晶設(shè)計(jì)結(jié)果顯示 143
2、.1 帶字庫液晶顯示結(jié)果 143.2 不帶字庫液晶顯示結(jié)果 144. 設(shè)計(jì)總結(jié) 144.1 設(shè)計(jì)中遇到的問題 154.2 設(shè)計(jì)心得 155. 參考文獻(xiàn) 15附錄 15附錄 1:帶字庫 12864 程序源代碼 15附錄 2:不帶字庫 12864程序源代碼 24文案大全實(shí)用標(biāo)準(zhǔn)文檔課程設(shè)計(jì)論文開題報(bào)告課程設(shè)計(jì)應(yīng)達(dá)到的目的本課程是在單片機(jī)原理及應(yīng)用 B課程主要內(nèi)容 學(xué)習(xí)之后,通過一個(gè)單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)和調(diào)試,訓(xùn) 練學(xué)生綜合運(yùn)用課本知識(shí), 獨(dú)立解決工程實(shí)際問題的能 力:使學(xué)生加深對(duì)單片機(jī)結(jié)構(gòu)、工作原理的理解,提高 學(xué)生綜合應(yīng)用知識(shí)的能力、 分析解決問題的能力和單片 機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)技能; 同時(shí)培養(yǎng)學(xué)
3、生查閱資料和撰寫 科技報(bào)告的能力。課題名稱單片機(jī)控制液晶顯示器的應(yīng)用設(shè)計(jì)目的1. 掌握單片機(jī)擴(kuò)展總線的工作原理和操作時(shí)序;2.掌握 128*64 圖形點(diǎn)陣 LCD顯示模塊的工作原理、控 制方式和控制命令;3. 掌握通過單片機(jī)總線時(shí)序控制 LCD顯示模塊的程序的 編寫方法。設(shè)計(jì)要求1. 單片機(jī)通過擴(kuò)展總線和 12864圖形點(diǎn)陣 LCD顯示模塊 相連;2. 單片機(jī)擴(kuò)展總線的地址線和 LCD的控制線相連;3. 使用過取字模軟件,完成本人姓名和學(xué)號(hào)的顯示字 模;4.編程實(shí)現(xiàn)姓名和學(xué)號(hào)的顯示設(shè)置按鍵;5. 實(shí)現(xiàn)不同方式顯示本人姓名和學(xué)號(hào)。文案大全實(shí)用標(biāo)準(zhǔn)文檔單片機(jī)控制 12864 液晶的應(yīng)用 摘要:漢字
4、的使用很廣泛, 顯示漢字始終是計(jì)算機(jī)在我國應(yīng)用普及的 一個(gè)障礙。 隨著單片機(jī)和顯示技術(shù)的發(fā)展, 加上人們不滿足單片機(jī)系 統(tǒng)采用 LED數(shù)碼管的簡單顯示, 利用單片機(jī)控制液晶顯示成為當(dāng)前顯 示系統(tǒng)的主流。本文主要介紹了 89C51單片機(jī)為控制設(shè)備, 12864 液 晶顯示器為顯示設(shè)備。 實(shí)現(xiàn)的一個(gè)可以顯示漢字、 字符和動(dòng)態(tài)顯示漢 字的液晶顯示器設(shè)備。 通過按鍵控制可以實(shí)現(xiàn)顯示的漢字顯示和左右 移動(dòng)。利用液晶顯示器顯示漢字操作靈活, 漢字顯示果可以大大提高。 Abstact: The use of Chinese charactersis very wide,display Chinese cha
5、racters is always an obstacle in the popularization of computer application in our country.With the development of MCUa nd display technology,and people dont satisfy SCMs ystem using simple LED digital display tube,control the use of single-chip LCD display system now become the main stream.This pap
6、er mainly introduces the 89C51 microcontroller as the control equipment, 12864LCD as display equipment.An implementation can display Chinese characters,characters and dynamic displayof liquid crystal display Chinese characters.Through the button control can display the Chinese characters display and
7、 move around.Use LCD display Chinese characters of flexible operation,display of Chinese characters文案大全實(shí)用標(biāo)準(zhǔn)文檔can be greatly improved.1. 液晶控制電路和方案1.1 相關(guān)硬件和軟件介紹1.1.1 STC89C5289C52內(nèi)置 8 位中央處理單元、 256字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器 RAM、8k 片內(nèi)程序 存儲(chǔ)器( ROM)32個(gè)雙向輸入 /輸出(I/O) 口、3個(gè) 16位定時(shí)/計(jì)數(shù)器和 5個(gè)兩級(jí) 中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)時(shí)鐘振蕩電路。此外, 89C52還可工
8、作 于低功耗模式,可通過兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié) CPU 而 RAM定時(shí)器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存 RAM數(shù)據(jù),時(shí) 鐘振蕩停止,同時(shí)停止芯片內(nèi)其它功能。本次設(shè)計(jì)通過 89C52控制 12864 液晶顯示器和矩陣鍵盤, 從而實(shí)現(xiàn)漢字和字 符的顯示。1.1.2 帶字庫的 12864 液晶帶字庫的 12864 顯示漢字和符號(hào)時(shí), 不需要使用字模提取軟件來提取字模, 如果想顯示 自定義的字符,也可以使用字模提取來實(shí)現(xiàn)顯示。下面介紹下帶字庫 12864 液晶引腳功能:引腳標(biāo)志說明1GND接地2VCC接 5V3V0接可調(diào)電阻4RS/CS并行模式: RS=0, 指令
9、; RS=1,數(shù)據(jù)。串行模式:片選。5R/W并行模式: R/W=0,寫; R/W=1,讀。串行模式:數(shù)據(jù)。6E并行模式:允許信號(hào)。串行模式:數(shù)據(jù)。7D0-D7并行模式:數(shù)據(jù) 串行模式:不連接89101112131415PSB并行模式: PSB=1;串行模式: PSB=0文案大全實(shí)用標(biāo)準(zhǔn)文檔16NC不連接17RST復(fù)位18NC不連接19LED+背光正極,接 5V20LED-背光負(fù)極,接地1.1.3 不帶字庫的 12864 液晶不帶字庫的 12864 可以通過取字模軟件顯示各種自定義的字符和圖片, 液晶本身中不帶有字庫。下面介紹不帶字庫 12864 的引腳功能:引腳標(biāo)志說明1GND接地2VCC接
10、5V3V0可調(diào)電阻4D/I1:數(shù)據(jù) 0 :指令5R/W1:讀 0 :寫6E1:可讀寫 0 :不可讀寫7D0-D7數(shù)據(jù)總線89101112131415CS1左半屏片選信號(hào)。 1:選中; 0:不選中。16CS2左半屏片選信號(hào)。 1:選中; 0:不選中。17RST復(fù)位信號(hào),低電平有效。18VEELCD 負(fù)壓驅(qū)動(dòng)腳( -1018V )。19NC20NC1.1.4 取模軟件12 號(hào),此字體對(duì)應(yīng)的液晶取字模軟件使用的是 ZIMO21,在液晶顯示時(shí),選取的字體是 點(diǎn)陣正好是 16X16 大小。所以液晶一頁可以顯示 4X8=32 個(gè)字。取字模軟件也可以設(shè)定各種字體和自定義的圖片,使用比較方便。文案大全實(shí)用標(biāo)準(zhǔn)
11、文檔1.2 液晶顯示控制設(shè)計(jì)電路12864 液晶顯示器可以顯示字母、數(shù)字符號(hào)、中文字型及自定圖形顯示,只要一個(gè)最小 的微處理系統(tǒng), 將液晶顯示模塊的接口作為 I/O 設(shè)備直接與之連接, 就可以進(jìn)行控制液晶顯 示器和數(shù)據(jù)傳輸, 從而達(dá)到理想的顯示效果。 選擇按鍵接高電平, 即可實(shí)現(xiàn)單片機(jī)對(duì)液晶顯 示漢字的控制。1.2.1 系統(tǒng)的總體設(shè)計(jì)思路和框圖整個(gè)系統(tǒng)主要由 STC89C51芯片、 LCD12864液晶和矩陣鍵盤構(gòu)成,具體如下圖1 所示:時(shí)鐘電路復(fù)位電路矩陣鍵盤STC89C51XTALP0口RSTP2.0P2.1P2.2P2.3P3.3P1口圖 1. 系統(tǒng)整體框圖D0-D7RS RW EPSB
12、 RSTLCD128641.2.2 系統(tǒng)方案選擇 時(shí)鐘模塊利用晶體本身的特性, 可以利用晶振與電容搭建振蕩電路與89C51 引腳 XTAL1及 XTAL2相連,設(shè)計(jì)中使用 12M的晶振向單片機(jī)提供一個(gè)頻率定度較高的時(shí)鐘脈沖, 具體連接見原理 圖圖 2。 復(fù)位電路STC89C51的復(fù)位引腳 RST 外接開關(guān)復(fù)位電路,當(dāng)電路工作后,閉合開關(guān),只要在RST引腳上出現(xiàn) 2 個(gè)機(jī)器周期以上的高電平, 單片機(jī)即可復(fù)位。 若 RST始終保持高電平, 則可對(duì) STC89C51循環(huán)復(fù)位。 開關(guān)復(fù)位電路的組成如原理圖 (見原理圖 圖 3)電阻和開關(guān)串聯(lián)后 與電容并聯(lián),然后與電阻串聯(lián)對(duì) +5V 電壓進(jìn)行分壓,電阻一
13、端接地另一端接復(fù)位信號(hào)引腳 RST。 矩陣鍵盤 鍵盤處主要通過按鍵來顯示不同的信息, 如班級(jí)、 姓名等。本來想使用獨(dú)立鍵盤, 雖然 獨(dú)立鍵盤電路簡單, 使用方便, 但是獨(dú)立鍵盤按鍵較多時(shí)占用 I/O 端口多, 造成 I/O 口資源文案大全實(shí)用標(biāo)準(zhǔn)文檔的浪費(fèi),所以電路中使用了矩陣鍵盤,具體電路如原理圖 圖 4 所示。 液晶顯示模塊 .帶字庫的 12864 模塊由于在 Proteus 中無法仿真,只能以實(shí)物運(yùn)行。具體電路和結(jié)果詳見后。 . 不帶字庫的 12864 模塊在 Proteus 中有不帶字庫的 12864 ,而實(shí)際中不帶字庫的 12864 第 18 腳要接負(fù)電平, 所以在仿真中進(jìn)行。1.2
14、.3 系統(tǒng)功能圖和流程圖系統(tǒng)功能圖按鍵功能按鍵功能1顯示“單片機(jī)課程設(shè)計(jì)”9顯示學(xué)號(hào)2顯示課題10滾動(dòng)顯示3顯示課題11滾動(dòng)顯示4顯示指導(dǎo)老師12顯示“自定義顯示字符”5清屏13顯示自定義字符6顯示院系14顯示自定義字符7顯示姓名15顯示自定義字符8顯示班級(jí)16顯示自定義字符流程圖開始12864 液晶初始化檢測 12864 是否忙?否向 12864 寫入命令實(shí)用標(biāo)準(zhǔn)文檔1.2.4 系統(tǒng)電路原理圖其他模由于帶字庫和不帶字庫的 12864 液晶顯示系統(tǒng)的區(qū)別在于液晶的連接電路不同, 塊連接是相同的,具體如下: 時(shí)鐘模塊復(fù)位模塊文案大全實(shí)用標(biāo)準(zhǔn)文檔矩陣鍵盤圖 3. 復(fù)位模塊不帶字庫的 12864 液
15、晶連接文案大全實(shí)用標(biāo)準(zhǔn)文檔圖 5 :不帶字庫的 12864 液晶連接 帶字庫的 12864 液晶連接圖 6 :帶字庫的 12864 液晶連接2. 程序的設(shè)計(jì)和調(diào)試2.1 帶字庫的 12864 指令清除顯示RWRSDB7DB6DB5DB4DB3DB2DB1DB00000000001功能:清除顯示屏幕,把 DDRAM位 址計(jì)數(shù)器調(diào)整為“ 00H”。位址歸位RWRSDB7DB6DB5DB4DB3DB2DB1DB0000000001X功能:把 DDRAM位 址計(jì)數(shù)器調(diào)整為“ 00H”,游標(biāo)回原點(diǎn),該功能不影響顯示DDRAM。進(jìn)入設(shè)定點(diǎn)RWRSDB7DB6DB5DB4DB3DB2DB1DB0000000
16、01I/DS功能:把DDRAM位 址計(jì)數(shù)器調(diào)整為“ 00H”,游標(biāo)回原點(diǎn), 該功能不影響顯示 DDRA功M能 .執(zhí)行 該命令后, 所設(shè)置的行將顯示在屏幕的第一行。 顯示起始行是由 Z 地址計(jì)數(shù)器控制的, 該命文案大全實(shí)用標(biāo)準(zhǔn)文檔令自動(dòng)將 A0-A5 位地址送入 Z 地址計(jì)數(shù)器,起始地址可以是 0-63 范圍內(nèi)任意一行。 Z 地址 計(jì)數(shù)器具有循環(huán)計(jì)數(shù)功能,用于顯示行掃描同步,當(dāng)掃描完一行后自動(dòng)加一。顯示狀態(tài)開 / 關(guān)RWRSDB7DB6DB5DB4DB3DB2DB1DB00000001DCB功能: D=1 ;整體顯示 ON C=1;游標(biāo) ON B=1;游標(biāo)位置 ON。游標(biāo)或顯示移位控制RWRSD
17、B7DB6DB5DB4DB3DB2DB1DB0000000S/CR/LXX功能:設(shè)定游標(biāo)的移動(dòng)與顯示的移位控制位:這個(gè)指令并不改變DDRAM的 內(nèi)容功能設(shè)定RWRSDB7DB6DB5DB4DB3DB2DB1DB00001DLX0REXX功能: DL=1(必須設(shè)為 1) RE=1;擴(kuò)充指令集動(dòng)作 RE=0:基本指令集動(dòng)作。設(shè)定 CGRAM位 址RWRSDB7DB6DB5DB4DB3DB2DB1DB00001AC5AC4AC3AC2AC1AC0功能:設(shè)定 CGRAM位 址到位址計(jì)數(shù)器( AC)。設(shè)定 DDRAM位 址RWRSDB7DB6DB5DB4DB3DB2DB1DB0001AC6AC5AC4A
18、C3AC2AC1AC0功能:設(shè)定 DDRAM位 址到位址計(jì)數(shù)器( AC)。讀取忙碌狀態(tài)( BF)和位址。RWRSDB7DB6DB5DB4DB3DB2DB1DB001BFAC6AC5AC4AC3AC2AC1AC0功能:讀取忙碌狀態(tài)( BF)可以確認(rèn)內(nèi)部動(dòng)作是否完成,同時(shí)可以讀出位址計(jì)數(shù)器(AC)的值。寫資料到 RAMRWRSDB7DB6DB5DB4DB3DB2DB1DB010D7D6D5D4D3D2D1D0功能:寫入資料到內(nèi)部的 RAM( DDRAM/CGRAM/TRAM/GD)R。AM? 讀出 RAM的 值RWRSDB7DB6DB5DB4DB3DB2DB1DB011D7D6D5D4D3D2D1
19、D0功能:從內(nèi)部 RAM 讀取資料( DDRAM/CGRAM/TRAM/GD)R。AM文案大全實(shí)用標(biāo)準(zhǔn)文檔? 待命模式( 12H)RWRSDB7DB6DB5DB4DB3DB2DB1DB00000000001功能:進(jìn)入待命模式,執(zhí)行其他命令都可終止待命模式。? 卷動(dòng)位址或 IRAM 位址選擇( 13H)RWRSDB7DB6DB5DB4DB3DB2DB1DB0000000001SR功能: SR=1;允許輸入卷動(dòng)位址 SR=0;允許輸入 IRAM 位址。? 反白選擇( 14H)RWRSDB7DB6DB5DB4DB3DB2DB1DB000000001R1R0功能:選擇 4 行中的任一行作反白顯示,并可
20、決定反白的與否。? 睡眠模式( 015H)RWRSDB7DB6DB5DB4DB3DB2DB1DB00000001SLXX功能: SL=1;脫離睡眠模式 SL=0;進(jìn)入睡眠模式。? 擴(kuò)充功能設(shè)定( 016H)RWRSDB7DB6DB5DB4DB3DB2DB1DB0000011XREG0功能: RE=1;擴(kuò)充指令集動(dòng)作 RE=0;基本指令集動(dòng)作 G=1;繪圖顯示 ONG =0;繪圖顯示 OFF。2.2 不帶字庫的 12864 指令行設(shè)置命令RWRSD7D6D5D4D3D2D1D00011XXXXXX顯示的起始行為 0xC0,有規(guī)律的改變起始行號(hào),可以實(shí)現(xiàn)滾屏的效果。頁設(shè)置指令RWRSD7D6D5D
21、4D3D2D1D00010111XXX顯示的起始頁為 0xB8,分為 8 頁,每頁有 8 行。列地址設(shè)置RWRSD7D6D5D4D3D2D1D00001XXXXXX第一列為 0x40,一直到 0x7F,共 64 列,兩塊驅(qū)動(dòng)芯片,共 128 列。讀狀態(tài)指令文案大全實(shí)用標(biāo)準(zhǔn)文檔RWRSD7D6D5D4D3D2D1D010BUSY0ON/OFFRST0000BUSY為 1內(nèi)部忙,不能對(duì)液晶操作,為0 正常工作;ON/OFF:1為顯示關(guān)閉,為 0 顯示打開;RST:1為復(fù)位, 0 為正常。屏幕選擇CS1CS2選屏00全屏01左半屏10右半屏11不選2.3 程序調(diào)試2.3.1 工程的建立和程序編譯1、
22、新建工程在菜單 Project-New Project 中新建工程;2、選擇 CPU根據(jù)對(duì)話框選擇 CPU 類型(公司、型號(hào)等)本次課程設(shè)計(jì)采用ATMEL 公司的 STC89C51,3、新建文件點(diǎn)擊 File-New ,新建文件,并保存為 yangjirui.c;4、添加源文件點(diǎn)擊 Project-Window 中 Target1 文件夾右邊的“”號(hào) , 顯示子文件夾 Source Group 1 , 選中Source Group 1 文件夾并點(diǎn)擊鼠標(biāo) “右鍵”,出現(xiàn)快捷菜單。 點(diǎn)擊 Add Files To Group Source Group1 ,在對(duì)話框中完成源文件向工程的添加。添加完成
23、后,在Project Workspace 窗口的 Source Group 1 項(xiàng)前多了“”號(hào),點(diǎn)擊“”號(hào)即可看到所添加的文件。5、編譯用快捷按鈕 Build target 對(duì)工程進(jìn)行編譯,在 Output Window 中有編譯提示信息,可根據(jù) 該信息對(duì)源文件進(jìn)行修改。6、軟件仿真點(diǎn)擊 Strat/Stop Debug Session,可對(duì)程序進(jìn)行設(shè)置斷點(diǎn)、單步、連續(xù)等執(zhí)行操作。7、HEX 文件設(shè)置選中 Target1 文件夾并點(diǎn)擊鼠標(biāo) “右鍵”,選擇快捷菜單中的 Option for Target Target 1。在“ Output ”對(duì)話框中選中復(fù)選框( Create HEXF ile
24、 ),即可使工程在編譯時(shí)生成緊湊 的機(jī)器碼。文案大全實(shí)用標(biāo)準(zhǔn)文檔2.3.2 硬件調(diào)試1. 按照設(shè)計(jì)的電路連接電路,并且檢查連線無誤;2. 將生成的 HEX文件下載到 STC89C51中,按下矩陣鍵盤,看相應(yīng)的按鍵按下后12864是否有相應(yīng)的字符顯示;3. 如果不能出現(xiàn)相應(yīng)的字符顯示,再修改程序,重新進(jìn)行硬件調(diào)試。3. 液晶設(shè)計(jì)結(jié)果顯示3.1 帶字庫液晶顯示結(jié)果通過實(shí)物的連接, 由最小系統(tǒng)、 帶字庫 12864 液晶和矩陣鍵盤的連接, 可以通過按鍵顯 示相應(yīng)的漢字和特定字符,液晶顯示可以顯示課題、姓名、班級(jí)、學(xué)號(hào)、指導(dǎo)老師以及特定 字符,而且可以實(shí)現(xiàn)字符的循環(huán)顯示。3.2 不帶字庫液晶顯示結(jié)果不
25、帶字庫液晶通過仿真實(shí)現(xiàn), 通過按下對(duì)應(yīng)的按鍵, 從而實(shí)現(xiàn)字符的顯示具體實(shí)驗(yàn)結(jié)果 如下圖所示:左圖為相應(yīng)按鍵按下的顯示,右圖為滾動(dòng)顯示過程中截圖4. 設(shè)計(jì)總結(jié)經(jīng)過一個(gè)多星期的準(zhǔn)備和實(shí)踐,我完成了電路的設(shè)計(jì)和連接,程序的編寫和編譯調(diào)試, 最終實(shí)現(xiàn)了帶字庫 12864 和不帶字庫 12864 的字符顯示(包括漢字,自定義字符) ,字符的 移動(dòng)顯示。過程中雖然遇到一些問題,在自己的檢查和老師同學(xué)同學(xué)的幫助下都一一解決。 總的來說,這次的課程設(shè)計(jì)是成功的。文案大全實(shí)用標(biāo)準(zhǔn)文檔4.1 設(shè)計(jì)中遇到的問題1.12864 液晶是分為兩種的,一種帶字庫,另一種是不帶字庫的,在沒接觸課程設(shè)計(jì)之 前我是不了解 128
26、64 的, 所以對(duì) 12864 的概念很是模糊, 所以要分清概念, 不同的液晶使用 方法和指令是不一樣的。2. 在課程設(shè)計(jì)過程中感覺自己的知識(shí)還是很欠缺, 所以在查閱資料這方面要盡可能做的 充分點(diǎn), 書本是我們知識(shí)的主要來源, 課程設(shè)計(jì)是我們平時(shí)學(xué)習(xí)的糅合, 要求我們一點(diǎn)一點(diǎn) 的將知識(shí)復(fù)習(xí)、歸納、組合、然后將它們應(yīng)用到課題中。3. 設(shè)計(jì)過程中, 程序基本完善, 還是會(huì)有很多問題, 原理圖的設(shè)計(jì)、 修改,程序的調(diào)試, 文件的燒入等,用什么方式,字符的定位、滾動(dòng),這些問題經(jīng)過反復(fù)修改終于一一解決。4.2 設(shè)計(jì)心得1. 實(shí)驗(yàn)最關(guān)鍵是要有耐心, 有時(shí)實(shí)驗(yàn)電路和程序并不能一次成功, 所以要有良好的心理
27、素質(zhì),有克服一切困難的勇氣,勇于尋找問題的根源,一次次反復(fù)的實(shí)驗(yàn),才能達(dá)到目的。 這同時(shí)也是一個(gè)學(xué)習(xí)與進(jìn)步的過程, 可以幫助我們自主尋找問題的根源, 自主學(xué)習(xí)尋找解決 問題的辦法,最終實(shí)實(shí)在在地學(xué)到知識(shí),提高本領(lǐng),掌握技能。2. 在器件的選擇上要注意, 相同類型的器件不同的類型使用方法不同, 所以要在使用硬 件前先熟悉硬件的用法,這是編寫好程序的前提。5. 參考文獻(xiàn)1. 單片機(jī)原理與應(yīng)用及 C51程序設(shè)計(jì)(第二版) ,謝維成等 編著,清華大學(xué)出版社, 2009.7.2. 單片機(jī)的 C 語言應(yīng)用程序設(shè)計(jì)(第四版) ,馬忠梅等 編著,北京航空航天大學(xué)出版社。3. 單片機(jī)原理及應(yīng)用實(shí)驗(yàn)與課程設(shè)計(jì)指導(dǎo)
28、書,岳俊生 宗慧編,南京工程學(xué)院, 2013.3.4. 單片機(jī) C語言程序設(shè)計(jì)實(shí)訓(xùn) 100例基于 8051+Proteus 仿真,彭偉編,北京電子工業(yè)出版社, 200906。5. 中文圖形顯示控制芯片 ST7920 的原理與應(yīng)用 .洪家平 編著 .附錄附錄 1:帶字庫 12864 程序源代碼#include #include #define uchar unsigned char #define uint unsigned int文案大全實(shí)用標(biāo)準(zhǔn)文檔#define LCD_DATA P0 / 數(shù)據(jù)口sbit RS = P20;/ 并行的指令 / 數(shù)據(jù)選擇信號(hào) , H 數(shù)據(jù) , L 命令sbit
29、 RW = P21; / 并行讀寫選擇信號(hào) , H 讀, L 寫sbit E = P22; / 并行使能端 , H 有效 , L 無效 sbit PSB = P23;/ 并/ 串接口選擇 , H 并,L 串sbit RET = P33;/ 復(fù)位 , L 有效uchar code datas1 = uchar code datas2 = uchar code datas3 = uchar code datas4 = uchar code datas5 = uchar code datas6 = uchar code datas7 = uchar code datas8 = / 自定義圖形“心形”
30、 uchar code datas9= 單片機(jī)課程設(shè)計(jì) ; 課題:單片機(jī)控制 ; 液晶顯示器的應(yīng)用 ; 指導(dǎo)老師:岳俊生 ;通信工程學(xué)院 ; 姓名:楊濟(jì)瑞 ; 班級(jí):光纖 1 0 1 ; 學(xué)號(hào): 208100234 ;0x00,0x00,0x00,0x00,0x18,0x30,0x24,0x48,0x42,0x84,0x81,0x02,0x80,0x02,0x40,0x04,0x20,0x08,0x10,0x10,0x08,0x20,0xE4,0x4A,0x92,0x8A,0xE1,0x04,0xA0,0x04,0x90,0x 04;/ 自定義圖形“卐”uchar code datas10 =
31、0x81,0xFF,0x81,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0xFF,0xF F, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x01 ;/ 自定義圖形“卐”uchar code datas11 =0x81,0xFF,0x81,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0xFF,0xF F,0x01,0x01,0x01,0x01,0x01,0
32、x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x01 ;/ 自定義圖形“小人”uchar code datas12 =0x07,0xC0,0x08,0x20,0x07,0xC0,0x08,0x20,0x18,0x30,0x28,0x28,0x28,0x28,0x28,0x2 8,0x08,0x20,0x08,0x20,0x08,0x20,0x0F,0xE0,0x08,0x20,0x08,0x20,0x08,0x20,0x1C,0x70 ;uchar code datas13 = 瑞獻(xiàn)四海影音傳情 ;uchar code datas14 =
33、自定義顯示字符 ;/ 延時(shí)約 2us void delayUs() _nop_();文案大全實(shí)用標(biāo)準(zhǔn)文檔_nop_();/ 延時(shí) 1msvoid delayMs(uint a)uint i, j;for(i = a; i 0; i-) for(j = 100; j 0; j-);/ 檢測 LCD是否處于忙狀態(tài) , 若忙返回 1, 空閑返回 0 int checkBusy() int busy;RS = 0;RW = 1;E = 1;delayUs();busy = (bit)(LCD_DATA&0x80);E = 0;return busy;void writeCmd(uchar cmd) w
34、hile(checkBusy(); / 等待 LCD到空閑 RS = 0;RW = 0;E = 0;delayUs(); LCD_DATA = cmd;delayUs();E = 1;delayUs();E = 0;/ 寫數(shù)據(jù)void writeData(uchar dat) while(checkBusy(); / 等待 LCD到空閑 RS = 1;RW = 0;E = 0;delayUs(); LCD_DATA = dat;delayUs();文案大全實(shí)用標(biāo)準(zhǔn)文檔E = 1; delayUs();E = 0;/ 初始化 LCD void init()writeCmd(0x30);/基本指令
35、, 擴(kuò)充指令為 34HdelayMs(10);writeCmd(0x0c);/顯示開 ,關(guān)光標(biāo)delayMs(10);writeCmd(0x01);/清屏delayMs(10);PSB = 1;/ 并口方式void setPosition(uchar x, uchar y) uchar p;switch(x%4)/ 第一行開始地址/ 第二行/ 第三行/ 第四行case 0: p = 0x80; break;case 1: p = 0x88; break;case 2: p = 0x90; break;case 3: p = 0x98; break;p += y; writeCmd(p);voi
36、d display() / 顯示自定義符號(hào)函數(shù) uchar i;writeCmd(0x30);writeCmd(0x40);for(i=0;i16;i+) writeData(datas9i*2); writeData(datas9i*2+1);writeCmd(0x50);for(i=0;i16;i+)writeData(datas10i*2); writeData(datas10i*2+1);文案大全實(shí)用標(biāo)準(zhǔn)文檔writeCmd(0x60);for(i=0;i16;i+)writeData(datas11i*2); writeData(datas11i*2+1);writeCmd(0x70
37、);for(i=0;i16;i+)writeData(datas12i*2); writeData(datas12i*2+1);void writeString(uchar * str) uchar i = 0;while(stri != 0) writeData(stri+);* *LCD12864* *void main()init();while(1)uchar temp;P1 = 0x7f; / 按鍵掃描temp = P1;temp=temp & 0x0f;if(temp!=0x0f) delayMs(10); / 延時(shí)去抖動(dòng) temp = P1;temp =temp & 0x0f;
38、if(temp!=0x0f) temp = P1;switch(temp)case 0x7e:setPosition(0, 0); writeString(datas1);break;case 0x7d:setPosition(2, 0);文案大全實(shí)用標(biāo)準(zhǔn)文檔writeString(datas2); setPosition(1, 0); writeString(datas3);break; case 0x7b:setPosition(3, 0);writeString(datas4);break; case 0x77:writeCmd(0x01);break;P1 = 0xbf;temp =
39、P1;temp=temp & 0x0f;if(temp!=0x0f)delayMs(5);temp = P1;temp =temp & 0x0f;if(temp!=0x0f)temp = P1;switch(temp)case 0xbe:setPosition(0, 0);writeString(datas5);break; case 0xbd:setPosition(2, 0);writeString(datas6);break; case 0xbb:setPosition(1, 0);writeString(datas7);break; case 0xb7:setPosition(3, 0
40、);writeString(datas8);break;P1 = 0xdf;temp = P1;temp=temp & 0x0f;if(temp!=0x0f)delayMs(5);temp = P1;temp =temp & 0x0f;if(temp!=0x0f)文案大全實(shí)用標(biāo)準(zhǔn)文檔temp = P1; switch(temp) / 循環(huán)顯示case 0xde:setPosition(0, 0); writeString(datas1); setPosition(2, 0); writeString(datas2); setPosition(1, 0); writeString(datas3)
41、; setPosition(3, 0); writeString(datas4); delayMs(3000); setPosition(0, 0); writeString(datas4); setPosition(2, 0); writeString(datas1); setPosition(1, 0); writeString(datas2); setPosition(3, 0); writeString(datas3); delayMs(3000); setPosition(0, 0); writeString(datas3); setPosition(2, 0); writeStri
42、ng(datas4); setPosition(1, 0); writeString(datas1); setPosition(3, 0); writeString(datas2); delayMs(3000); setPosition(0, 0); writeString(datas2); setPosition(2, 0); writeString(datas3); setPosition(1, 0); writeString(datas4); setPosition(3, 0); writeString(datas1); delayMs(3000); setPosition(0, 0);
43、 writeString(datas1); setPosition(2, 0); writeString(datas2);文案大全實(shí)用標(biāo)準(zhǔn)文檔setPosition(1, 0); writeString(datas3); setPosition(3, 0); writeString(datas4);break;case 0xdd:setPosition(0, 0); writeString(datas5); setPosition(2, 0); writeString(datas6); setPosition(1, 0); writeString(datas7); setPosition(3,
44、 0); writeString(datas8);delayMs(3000);setPosition(0, 0); writeString(datas8); setPosition(2, 0); writeString(datas5); setPosition(1, 0); writeString(datas6); setPosition(3, 0); writeString(datas7);delayMs(3000);setPosition(0, 0); writeString(datas7); setPosition(2, 0); writeString(datas8); setPosit
45、ion(1, 0); writeString(datas5); setPosition(3, 0); writeString(datas6);delayMs(3000); setPosition(0, 0); writeString(datas6); setPosition(2, 0); writeString(datas7); setPosition(1, 0); writeString(datas8); setPosition(3, 0); writeString(datas5);delayMs(3000); setPosition(0, 0); writeString(datas5);文
46、案大全實(shí)用標(biāo)準(zhǔn)文檔setPosition(2, 0); writeString(datas6); setPosition(1, 0); writeString(datas7); setPosition(3, 0); writeString(datas8);break;case 0xdb: setPosition(0, 0); writeString(datas13);break;case 0xd7: setPosition(2, 0); writeString(datas14);break;P1 = 0xef;temp = P1;temp=temp & 0x0f;if(temp!=0x0f)d
47、elayMs(5);temp = P1;temp =temp & 0x0f;if(temp!=0x0f)temp = P1;switch(temp)case 0xee:display(); writeCmd(0x98); writeData(0x00); writeData(0x00);break; case 0xed: display();writeCmd(0x89);writeData(0x00); writeData(0x02);break; case 0xeb: display();writeCmd(0x8A); writeData(0x00); writeData(0x04);bre
48、ak;文案大全實(shí)用標(biāo)準(zhǔn)文檔case 0xe7: display();writeCmd(0x9B);writeData(0x00);writeData(0x06);break;附錄 2:不帶字庫12864 程序源代碼#include #include #include source.h #define uchar unsigned charsbit lcdCs1 = P20; sbit lcdCs2 = P21; sbit lcdRs = P22;sbit lcdRw = P23; sbit lcdEn = P24;#define Data P0/ 定義 LCD數(shù)據(jù)總線/ 控制左半屏 , 低電平
49、有效/ 控制右半屏/ 數(shù)據(jù)指令選擇: 1數(shù)據(jù); 0指令/ 讀寫選擇: 1寫; 0讀/ 讀寫使能接口void lcdBusy(void); / 讀“忙”函數(shù),當(dāng)總線 DB7為 1 則“忙” void lcdCommand(uchar msg); / 寫 LCD命令函數(shù)void lcdData(uchar msg); / 寫 LCD數(shù)據(jù)函數(shù)void lcdPage(uchar msg);/ 設(shè)置 LCD頁函數(shù)void lcdStartLine(uchar msg); / 設(shè)置 LCD顯示起始行void lcdStartColumn(uchar msg); / 設(shè)置 LCD顯示起始列void lcdSwitch(uchar msg); / 設(shè)置 LCD顯示開關(guān)void lcdScreen(uchar msg); / 選擇 LCD屏幕void clear(uchar msg);/ 清屏void InitLcd(void); / 初始化 LCDvoid DisplayHZ(uchar Screen,uchar Page,uchar Column,uchar *point);/ 顯示漢字函數(shù)void delay(uchar ms);/* 主函數(shù) */ void main()uchar i;/ 初始 12864InitLcd();文案大全實(shí)用標(biāo)準(zhǔn)文檔clear(0); / 清屏lcdSta
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 加工被子合同范例
- 小區(qū)托管轉(zhuǎn)讓合同范例
- 國家合同范例庫查詢
- 小區(qū)閑置房出租合同范例
- 建筑勞務(wù)總包合同范例
- 單位離職合同模板
- 做飯阿姨勞務(wù)合同模板
- 展板制作購銷合同范例
- 后廚租房合同范例
- 借用店鋪合同范例
- 企業(yè)內(nèi)部知識(shí)競賽方案
- 格爾木鹽化(集團(tuán))有限責(zé)任公司察爾汗鹽礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 2023-2024學(xué)年北京版三年級(jí)上冊(cè)期中模擬檢測數(shù)學(xué)試卷(含答案解析)
- 養(yǎng)老家庭照護(hù)床位服務(wù)意向書、綜合評(píng)估表、適老化改造和老年用品配置清單、養(yǎng)老家庭照護(hù)床位服務(wù)協(xié)議(范本)
- (2024年)高層建筑消防要求
- 英語八年級(jí)下冊(cè)《Unit 2 Ill help to clean up the city parks》單元課件
- (2024年)財(cái)務(wù)報(bào)表分析培訓(xùn)講義
- 金融學(xué)專業(yè)大學(xué)生職業(yè)生涯規(guī)劃
- 產(chǎn)品銷售經(jīng)理培訓(xùn)課件
- 變革管理手冊(cè)
- 蔬菜栽培生理學(xué)課件
評(píng)論
0/150
提交評(píng)論