




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1602 液晶顯示漢字程序利用 1602 顯示漢字也不是新鮮的內(nèi)容,今天不想頹廢了。只是需要自己事先定義一下 漢字的字模,就是顯示出來(lái)的漢子字體結(jié)構(gòu)。要定義字模就需要知道 1602 的 CG RAM 地址和顯示字符的地址 DD RAM圖 1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 第一行第一個(gè)字符的地址是 ( 0x80) ,后面的字符地址以此類推 第二行第一個(gè)字符的地
2、址為 ( 0x80 + 0x40) ,需要在第一行的基地址后面加上一個(gè)偏移 量 0x40 ,后面的地址在此基址上再依次加一。void delay(unsigned int time_i) int i;for (;tim0;tim-)for (i=0;i10;i+); void command_out (char out_data) RW=0;RS=0;EN=1;DB=out_data;EN=0;delay(10);void OUTD(char out_data)RS=1;RW=0;EN=1;DB= out_data;EN=0;delay(10);OUTI() 是寫(xiě)入指令的函數(shù), OUTD()
3、是寫(xiě)入數(shù)據(jù)的函數(shù)。 如: 左上角第一個(gè) 5*7 的顯示數(shù)據(jù)為:0x00,0x01,0x81,0x12,0x24,0x41,0x81,0x10藍(lán)色區(qū)域的相應(yīng)位為 1這樣就可以寫(xiě)出全部 4 個(gè) 5*7 點(diǎn)陣的顯示數(shù)據(jù)了,把它封裝在一個(gè)數(shù)組中,如數(shù)組, hanzi=OxOO,OxO1,Ox81,Ox12,Ox24,Ox41,Ox81,Ox1O, 之后利用命令:OUTI(0X40); for (i=0;i64;i+) OUTD(neui); 將這個(gè)數(shù)組中的數(shù)據(jù)賦值到 1602 內(nèi)部 CGRAM 中。完成后,再設(shè)置數(shù)據(jù)在 1602 上的 顯示地址,根據(jù)圖 1 的結(jié)構(gòu),設(shè)置好位置,如在第一行第一個(gè)字符和第
4、二個(gè)字符以及第二 行 第一個(gè)字符和第二個(gè)字符處顯示: Command_out (0x80+0x00);for (i=0;i4;i+) data_out (i); Command_out(0x80+0x40);for (i=4;i8;i+) data_out(i); command_out() 的作用是設(shè)置顯示的起始地址,data_out() 的作用是將 hanzi 數(shù)組中的 16 1 行第 1 個(gè)字 2 行的兩個(gè)字進(jìn)制數(shù)據(jù)發(fā)送出去,每一個(gè)1 6進(jìn)制數(shù)字對(duì)應(yīng)之 5*7 點(diǎn)陣上的每一行內(nèi)容。第符需要 8 個(gè) 16 進(jìn)制數(shù)據(jù),第 1 行第 2 個(gè)字符處也需要 816 進(jìn)制數(shù)據(jù)。還有第 符點(diǎn)陣,這樣顯
5、示一個(gè)漢字需要 32 個(gè) 16進(jìn)制數(shù)據(jù)。 下面列舉一個(gè)實(shí)例( proteus 仿真通過(guò)) /*/硬件連接:1602VDD接5V, VO接地,BL1接5V, BL2接地,8根數(shù)據(jù)線接 E 分別接 P2.0、P2.1、P.4 口/*#include #include #define Busy 0x80 / 用于檢測(cè)#define LCM_Data P0sbit LCM_RS=PiO;sbit LCM_RW= PSI;sbit LCM_E=P2A4;int i,j;/自定義字符列表/=LCM 狀態(tài)字中的 Busy 標(biāo)識(shí)/寄存器選擇/讀/寫(xiě)控制/讀/寫(xiě)使能PO 口,RS RW/年unsigned ch
6、ar characterO8 = OxO8,OxOf,Ox12,OxOf,OxOa,Ox1f,OxO2,OxO2, character18 = OxOf,OxO9,OxOf,OxO9,OxOf,OxO9,OxOb,Ox11, / 月character28 = 0x0f,0x09,0x09,0x09,0x0f,0x09,0x09,0x0f, / 日 characterN8 = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00; / 日 /= /=/延時(shí)程序/= void Delay5Ms(void)unsigned long int TempCyc = 5552;
7、while(TempCyc-);void Delay400Ms(void)unsigned char TempCycA = 5; unsigned int TempCycB; while(TempCycA-)TempCycB=7269; while(TempCycB-); /= /讀寫(xiě)子程序/= /讀數(shù)據(jù)unsigned char ReadDataLCM(void)LCM_RS = 1;LCM_RW = 1;LCM_E = 1;LCM_E = 0; for(i=0;i100;i+);LCM_E = 1;return(LCM_Data);/讀狀態(tài)unsigned char ReadStatusL
8、CM(void) LCM_Data = 0xFF;LCM_RS = 0;LCM_RW = 1;LCM_E = 1;LCM_E = 0;for(i=0;i100;i+);LCM_E = 1;/while (LCM_Data & Busy); / 檢測(cè)忙信號(hào) return(LCM_Data);/寫(xiě)數(shù)據(jù)void WriteDataLCM(unsigned char WDLCM)ReadStatusLCM(); / 檢測(cè)忙 LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0; LCM_E = 1;LCM_E = 0; / 若晶振速度太高可以在這后加小的延時(shí) for(i=0;i
9、100;i+);/ 延時(shí)LCM_E = 1;/寫(xiě)指令為 0 時(shí)忽略忙檢測(cè)void WriteCommandLCM(unsigned char WCLCM,BuysC) /BuysC if (BuysC) ReadStatusLCM(); / 根據(jù)需要檢測(cè)忙 LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 1;LCM_E = 0; for(i=0;i100;i+);LCM_E = 1; /= /初始化子程序/= void LCMInit(void) /LCM 初始化三次顯示模式設(shè)置,不檢測(cè)忙信號(hào)LCM_Data = 0; WriteCommandLC
10、M(0x38,0); /Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,0);顯示模式設(shè)置 ,開(kāi)始要求每次檢測(cè)忙信號(hào)Delay5Ms(); WriteCommandLCM(0x38,1); /關(guān)閉顯示Delay5Ms(); WriteCommandLCM(0x08,1); /Delay5Ms();WriteCommandLCM(0x01,1); /Delay5Ms();WriteCommandLCM(0x06,1); /Delay5Ms();WriteCommandLCM(0x0c,1); /Delay5
11、Ms();清屏顯示光標(biāo)移動(dòng)設(shè)置顯示開(kāi)及光標(biāo)設(shè)置/= /按指定位置顯示一個(gè)字符/= void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)Y &= 0x1;X &= 0xF; / 限制 X 不能大于 15, Y 不能大于 1if (Y) X |= 0x40; / 當(dāng)要顯示第二行時(shí)地址碼 +0x40;X |= 0x80; / 算出指令碼WriteCommandLCM(X, 0); / 這里不檢測(cè)忙信號(hào),發(fā)送地址碼WriteDataLCM(DData); /= /按指定位置顯示一串字符/void Displ
12、ayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)/說(shuō)明 : x(0-15):x 參數(shù) y(0-1):y 參數(shù) DData( 字符串 ):要顯示的內(nèi)容 ( 英文、數(shù)字、符號(hào) ) /= void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) unsigned char ListLength,j;ListLength = strlen(DData);Y &= 0x1;X &= 0xF; / 限制 X
13、不能大于 15, Y 不能大于 1if (X = 0xF) /X 坐標(biāo)應(yīng)小于 0xF for(j=0;jListLength;j+)DisplayOneChar(X, Y, DDataj); / 顯示單個(gè)字符 X+;/=/顯示自定義字符/void mychar(char xx,char yy,unsigned char *character,unsigned char saveto)/說(shuō)明 :xx(0-15): 為 x 參數(shù) .yy(0-1):y 參數(shù) .character: 要顯示的字符的列表地址, 在程序前面有定義saveto(1-7)為字符保存的 RAM,每屏最多顯示 7個(gè)自定義字符/(
14、0x00-0x0h 是自定義字符 ) /=void mychar(char xx,char yy,unsigned char *character,unsigned char saveto) unsigned char add = (saveto3) | 0x40; unsigned char t;/臨時(shí)變量,/* t=*(character+0);WriteCommandLCM(add, 0);WriteDataLCM(t); t=*(character+1);WriteCommandLCM(add+1, 0);WriteDataLCM(t); t=*(character+2);WriteC
15、ommandLCM(add+2, 0);WriteDataLCM(t); t=*(character+3);WriteCommandLCM(add+3, 0);WriteDataLCM(t); t=*(character+4);WriteCommandLCM(add+4, 0);WriteDataLCM(t); t=*(character+5);WriteCommandLCM(add+5, 0);WriteDataLCM(t); t=*(character+6);WriteCommandLCM(add+6, 0);WriteDataLCM(t); t=*(character+7);WriteC
16、ommandLCM(add+7, 0);WriteDataLCM(t);*/for(i = 0;i8;i+) WriteCommandLCM(add+i, 0); WriteDataLCM(*(character+i); DisplayOneChar(xx,yy,saveto); /=每一行的值/第 1 行/第 2 行/第 3 行/第 4 行/第 5 行/第 6 行/第 7 行/第 8 行/顯示字符/主函數(shù)/= main() Delay400Ms();LCMInit();/1602 初始化Delay400Ms(); while(1) DisplayListChar(0,0,This is ListChar); DisplayListChar(0,1,!); for(j=0;j30;j+)for(i=0;i30000;i+); WriteCommandLCM(0x01,1); / 清屏 Delay5Ms();DisplayListChar(0,0,This is OneChar:);DisplayOneChar(0,1,0x4f);DisplayOneChar(1,1,0x6e);DisplayOneChar(2,1,0x65);DisplayOneChar(3,1,0x21); for(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 案件質(zhì)量流程管理辦法
- 火電廠熱網(wǎng)水側(cè)高效清洗工藝優(yōu)化與運(yùn)行策略研究
- 公司工會(huì)經(jīng)費(fèi)管理與收支優(yōu)化方案
- 保健管理處方管理辦法
- 申請(qǐng)報(bào)告書(shū)的撰寫(xiě)
- 檔案信息收集管理辦法
- 地理空間數(shù)據(jù)底座在區(qū)域開(kāi)發(fā)中的應(yīng)用與挑戰(zhàn)
- 《中小學(xué)德育工作指南》的實(shí)踐意義
- 船舶復(fù)合材料結(jié)構(gòu)多目標(biāo)優(yōu)化設(shè)計(jì)技術(shù)
- 普通美容廣告管理辦法
- 2025年下半年佛山市南海區(qū)建筑工程質(zhì)量檢測(cè)站招考編外工作人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- GB/T 45610-2025煤矸石回填塌陷區(qū)復(fù)墾技術(shù)規(guī)程
- 2型糖尿病患者卒中預(yù)防及血糖管理專家共識(shí)2024解讀
- 人教版五年級(jí)上冊(cè)數(shù)學(xué)全冊(cè)導(dǎo)學(xué)案(2021年秋修訂)
- 二級(jí)注冊(cè)建造師繼續(xù)教育題庫(kù)附答案
- 夏季安全生產(chǎn)八防
- 2025-2030年中國(guó)寫(xiě)字樓行業(yè)市場(chǎng)深度調(diào)研及前景趨勢(shì)與投資研究報(bào)告
- 人教版(2024)七年級(jí)下冊(cè)英語(yǔ)Unit 8 Once upon a Time單元集體備課教案(共5課時(shí))
- 上海2025年上海市第一批面向西藏籍畢業(yè)生招聘筆試歷年參考題庫(kù)附帶答案詳解
- 鄒平市社區(qū)工作者招聘真題2024
- 公司員工飲水管理制度
評(píng)論
0/150
提交評(píng)論