單片機(jī)與液晶顯示器的接口電路_第1頁
單片機(jī)與液晶顯示器的接口電路_第2頁
單片機(jī)與液晶顯示器的接口電路_第3頁
單片機(jī)與液晶顯示器的接口電路_第4頁
單片機(jī)與液晶顯示器的接口電路_第5頁
已閱讀5頁,還剩120頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

單片機(jī)與液晶顯示器的接口電路第一頁,共一百二十五頁,2022年,8月28日

3.體積小、重量輕液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。4.功耗低相對而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動IC上,因而耗電量比其它顯示器要少得多。11.1.1液晶顯示簡介1.液晶顯示原理液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動、易于實現(xiàn)全彩色顯示的特點,目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字?jǐn)z像機(jī)、PDA移動通信工具等眾多領(lǐng)域。2.液晶顯示器的分類液晶顯示的分類方法有很多種,通??砂雌滹@示方式分為段式、字符式、點陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動方式來分,可以分為靜態(tài)驅(qū)動(Static)、單純矩陣驅(qū)動(SimpleMatrix)和主動矩陣驅(qū)動(ActiveMatrix)三種。第二頁,共一百二十五頁,2022年,8月28日3.液晶顯示器各種圖形的顯示原理1)線段的顯示點陣圖形式液晶由M×N個顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個點組成,屏上64×16個顯示單元與顯示RAM區(qū)1024字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的000H——00FH的16字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(dāng)(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。2)字符的顯示用LCD顯示一個字符時比較復(fù)雜,因為一個字符由6×8或8×8點陣組成,既要找到和第三頁,共一百二十五頁,2022年,8月28日顯示屏幕上某幾個位置對應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但對于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。

3)漢字的顯示漢字的顯示一般采用圖形的方式,事先從微機(jī)中提取要顯示的漢字的點陣碼(一般用字模提取軟件),每個漢字占32B,分左右兩半,各占16B,左邊為1、3、5……右邊為2、4、6……根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)可找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),送上要顯示的漢字的第一字節(jié),光標(biāo)位置加1,送第二個字節(jié),換行按列對齊,送第三個字節(jié)……直到32B顯示完就可以LCD上得到一個完整漢字。第四頁,共一百二十五頁,2022年,8月28日11.1.2字符型液晶LCD1602簡介字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以XX電子有限公司的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實物如下圖11-1所示。圖11-1LCD1602字符型液晶顯示器實物圖第五頁,共一百二十五頁,2022年,8月28日1.LCD1602的基本參數(shù)及引腳功能LCD1602分為帶背光和不帶背光兩種,其控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如下圖11-2所示。第六頁,共一百二十五頁,2022年,8月28日LCD1602主要技術(shù)參數(shù):顯示容量:16×2個字符芯片工作電壓:4.5—5.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm2.引腳功能說明LCD1602采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表11-1所示。第七頁,共一百二十五頁,2022年,8月28日第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇。高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第八頁,共一百二十五頁,2022年,8月28日第5腳:R/W為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,來判斷是否可以刷新液晶,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。

第4腳和第5腳的組合需要深刻理解第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。

3.LCD1602的指令說明及時序LCD1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表11-2所示。第九頁,共一百二十五頁,2022年,8月28日

第十頁,共一百二十五頁,2022年,8月28日LCD1602里面是有CGARM和CGROM的。LCD1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)。

指令1:清顯示。指令碼01H,光標(biāo)復(fù)位到地址00H位置。

指令2:光標(biāo)復(fù)位。光標(biāo)返回到地址00H。

指令3:光標(biāo)和顯示模式設(shè)置。I/D:光標(biāo)移動方向,高電平右移,低電平左移。S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。

指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。

指令5:光標(biāo)或顯示移位S/C:高電平時移動顯示的文字,低電平時移動光標(biāo)。

指令6:功能設(shè)置命令DL:高電平時為8位總線,低電平時為4位總線N:低電平時為單行顯示,高電平時雙行顯示F:低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。第十一頁,共一百二十五頁,2022年,8月28日指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。4.與HD44780相兼容的芯片時序表如下所表11-3示。表11-3LCD1602基本操作時序表第十二頁,共一百二十五頁,2022年,8月28日圖11-3讀操作時序第十三頁,共一百二十五頁,2022年,8月28日圖11-4寫操作時序第十四頁,共一百二十五頁,2022年,8月28日5.LCD1602的RAM地址映射及標(biāo)準(zhǔn)字庫表液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖11-5是1602的內(nèi)部顯示地址。第十五頁,共一百二十五頁,2022年,8月28日1)例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。2)在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時光標(biāo)是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。3)1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如圖11-6所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。第十六頁,共一百二十五頁,2022年,8月28日

第十七頁,共一百二十五頁,2022年,8月28日圖11-6字符代碼與圖形對應(yīng)圖6.LCD1602的一般初始化(復(fù)位)過程延時5ms寫指令38H(不檢測忙信號)延時5ms寫指令38H(不檢測忙信號)延時5ms寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號寫指令38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標(biāo)移動設(shè)置寫指令0CH:顯示開及光標(biāo)設(shè)置第十八頁,共一百二十五頁,2022年,8月28日11.1.3LCD1602的軟硬件設(shè)計實例

1.硬件原理圖

1602液晶顯示模塊可以和單片機(jī)AT89C51直接接口,電路如圖11-7所示。第十九頁,共一百二十五頁,2022年,8月28日圖11-7硬件原理圖第二十頁,共一百二十五頁,2022年,8月28日例11-1如圖11-8所示,在LCD1602的第一行顯示"happyeveryday!",第二行顯示"gugu1979candy448"。第二十一頁,共一百二十五頁,2022年,8月28日圖11-8單片機(jī)和LCD1602的連線圖程序如下:#include<reg51.h>#include<intrins.h>sbitLCD_RS=P1^0;//RS寄存器選擇;高電平選數(shù)據(jù);低電平選指令;sbitLCD_RW=P1^1;//讀寫信號線;高電平讀操作;低電平寫操作;sbitLCD_E=P1^2;//E使能端#defineLCD_DataP2//液晶數(shù)據(jù)D7-D0#defineBusy0x80//用于檢測LCD狀態(tài)字中的Busy標(biāo)識voidWriteDataLCD(unsignedcharWDLCD);//寫數(shù)據(jù)voidWriteCommandLCD(unsignedcharWCLCD,BuysC);//寫指令unsignedcharReadDataLCD(void);//讀數(shù)據(jù)unsignedcharReadStatusLCD(void);//讀狀態(tài)voidLCDInit(void);//LCD初始化第二十二頁,共一百二十五頁,2022年,8月28日voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData);//顯示一個字符voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);//顯示一串字符voidDelay5Ms(void);voidDelay400Ms(void);unsignedcharcodeuctech[]={"happyeveryday!"};unsignedcharcodenet[]={"gugu1979candy448"};voidmain(void){Delay400Ms();//啟動等待,等LCD進(jìn)入工作狀態(tài)LCDInit();//LCD初始化第二十三頁,共一百二十五頁,2022年,8月28日Delay5Ms();//延時片刻(可不要)DisplayListChar(0,0,uctech);//顯示第0行DisplayListChar(0,1,net);//顯示第1行ReadDataLCD();//測試用句無意義while(1);}//寫數(shù)據(jù)voidWriteDataLCD(unsignedcharWDLCD){ReadStatusLCD();//檢測忙LCD_Data=WDLCD;LCD_RS=1;LCD_RW=0;LCD_E=0;//若晶振速度太高可以在這后加小的延時LCD_E=0;//延時Delay5Ms();//不加延時通不過PROTEUS仿真LCD_E=1;}第二十四頁,共一百二十五頁,2022年,8月28日//寫指令voidWriteCommandLCD(unsignedcharWCLCD,BuysC)//BuysC為0時忽略忙檢測{if(BuysC)ReadStatusLCD();//根據(jù)需要檢測忙

LCD_Data=WCLCD;LCD_RS=0;LCD_RW=0;LCD_E=0;LCD_E=0;Delay5Ms();LCD_E=1;}第二十五頁,共一百二十五頁,2022年,8月28日//讀數(shù)據(jù)unsignedcharReadDataLCD(void){LCD_RS=1;LCD_RW=1;LCD_E=0;LCD_E=0;Delay5Ms();LCD_E=1;return(LCD_Data);}第二十六頁,共一百二十五頁,2022年,8月28日

//讀狀態(tài)unsignedcharReadStatusLCD(void){LCD_Data=0xFF;LCD_RS=0;LCD_RW=1;LCD_E=0;LCD_E=0;Delay5Ms();LCD_E=1;while(LCD_Data&Busy);//檢測忙信號return(LCD_Data);}第二十七頁,共一百二十五頁,2022年,8月28日voidLCDInit(void)//LCD初始化{LCD_Data=0;WriteCommandLCD(0x38,0);//三次顯示模式設(shè)置,不檢測忙信號Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,1);//顯示模式設(shè)置,開始要求每次檢測忙信號WriteCommandLCD(0x08,1);//關(guān)閉顯示W(wǎng)riteCommandLCD(0x01,1);//顯示清屏WriteCommandLCD(0x06,1);//顯示光標(biāo)移動設(shè)置WriteCommandLCD(0x0C,1);//顯示開及光標(biāo)設(shè)置}第二十八頁,共一百二十五頁,2022年,8月28日//按指定位置顯示一個字符voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData){Y&=0x01;X&=0x0F;//限制X不能大于15,Y不能大于1if(Y)X|=0x40;//當(dāng)要顯示第二行時地址碼+0x40;X|=0x80;//算出指令碼WriteCommandLCD(X,0);//這里不檢測忙信號,發(fā)送地址碼WriteDataLCD(DData);}第二十九頁,共一百二十五頁,2022年,8月28日//按指定位置顯示一串字符//指向數(shù)組的指針:inta[10];int*p;p=&a[0],p指向a[0],是因為將a[0]的地址賦給了pvoidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData){unsignedcharListLength;ListLength=0;Y=Y&0x01;//行標(biāo)志符號,第0行,或者第1行;X=X&0x0F;//限制X不能大于15,0-15顯示16個字符while(ListLength<=0x0F)//若到達(dá)字串尾則退出{if(X<=0x0F)//X坐標(biāo)應(yīng)小于0xF{DisplayOneChar(X,Y,DData[ListLength]);//顯示單個字符ListLength++;X++;}}}第三十頁,共一百二十五頁,2022年,8月28日//5ms延時voidDelay5Ms(void){unsignedintTempCyc=5552;while(TempCyc--);}//400ms延時voidDelay400Ms(void){unsignedcharTempCycA=5;unsignedintTempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);};}第三十一頁,共一百二十五頁,2022年,8月28日例11-2

如圖11-9所示,在LCD1602的顯示"IWillAlwaysLoveYou!"。圖11-9單片機(jī)和LCD1602的連線圖第三十二頁,共一百二十五頁,2022年,8月28日程序如下:#include<reg52.h>#include<intrins.h>sbitLCD_RS=P1^0;sbitLCD_RW=P1^1;sbitLCD_E=P1^2;#defineLCD_DATAP2//LCDDATA//函數(shù)聲明voidlcd_init(void);voiddisplay_string(unsignedcharx,unsignedchary,unsignedchar*s);//功能描述:短暫延時,使用12MHZ晶體,約0.01MSvoiddellay(unsignedinth){while(h--);//0.01MS第三十三頁,共一百二十五頁,2022年,8月28日}//功能描述:寫數(shù)據(jù)到LCDvoidWriteDataLcd(unsignedcharwdata){LCD_DATA=wdata;LCD_RS=1;LCD_RW=0;LCD_E=0;dellay(200);//短暫延時,代替檢測忙狀態(tài)

LCD_E=1;}//功能描述:寫命令到LCDvoidWriteCommandLcd(unsignedcharwdata){第三十四頁,共一百二十五頁,2022年,8月28日LCD_DATA=wdata;LCD_RS=0;LCD_RW=0;LCD_E=0;dellay(200);//短暫延時,代替檢測忙狀態(tài)

LCD_E=1;}//LCD初始化voidlcd_init(void){LCD_DATA=0;WriteCommandLcd(0x38);dellay(1000);WriteCommandLcd(0x38);//顯示模式設(shè)置

WriteCommandLcd(0x08);//關(guān)閉顯示

WriteCommandLcd(0x01);//顯示清屏第三十五頁,共一百二十五頁,2022年,8月28日WriteCommandLcd(0x06);//顯示光標(biāo)移動設(shè)置

WriteCommandLcd(0x0c);//顯示開及光標(biāo)移動設(shè)置}//功能描述:設(shè)置光標(biāo)位置,x是列號,y是行號voiddisplay_xy(unsignedcharx,unsignedchary){if(y==1)x=x+0x40;x=x+0x80;WriteCommandLcd(x);}//功能描述:在具體位置顯示單個字符,x是列號,y是行號

voiddisplay_char(unsignedcharx,unsignedchary,unsignedchardat){display_xy(x,y);第三十六頁,共一百二十五頁,2022年,8月28日

WriteDataLcd(dat);}//功能描述:在具體位置顯示字符串,字符串是以/0代表結(jié)束的,x是列號,y是行號voiddisplay_string(unsignedcharx,unsignedchary,unsignedchar*s){charn=0;if(y>1)y=1;display_xy(x,y);while(*(s+n))//若到達(dá)字符串尾則推出

{ if(x>=16)//第一行超出則在第二行繼續(xù)寫

{ display_xy(x-16,1);}if(x>=32)//寫滿兩行則退出第三十七頁,共一百二十五頁,2022年,8月28日return;WriteDataLcd(*(s+n));n++;x++;}}voidmain(){lcd_init();//液初始化

display_string(0,0,"IWillAlwaysLoveYou!");//顯示

while(1);//停止}第三十八頁,共一百二十五頁,2022年,8月28日11.2液晶LCD122321)HS12232-9內(nèi)置ST7920A驅(qū)動控制器,點陣為122×32點,每行7個半漢字,共2行。2)內(nèi)部字型ROM包括8192個16×16點陣的中文字型和126個16×8點陣的字母符號字型,另外還提供一個64×256點的繪圖區(qū)域(GDRAM)及240點的ICONRAM,可以和文字畫面混合顯示。內(nèi)含的CGRAM有4組可編程的16X16點陣的造字功能。3)與單片機(jī)的接口有8位并行、4位并行、2/3線串行。它采用低功率電源消耗,電壓范圍2.7~5.5V,功能齊全,漢字、點陣圖形、ASCII碼、曲線同屏顯示;上下左右移動當(dāng)前顯示屏幕、清屏、光標(biāo)顯示、閃爍、睡眠、喚醒、關(guān)閉顯示功能齊備,適合許多場合應(yīng)用。4)它內(nèi)置8192個16*16點漢字庫和128個16*8點ASCII字符集圖形點陣液晶顯示器,它主要由行驅(qū)動器/列驅(qū)動器及128×32全點陣液晶顯示器組成??赏瓿蓤D形顯示,也可以顯示7.5×2個(16×16點陣)漢字.與外部CPU接口采用并行或串行方式控制。5)本文介紹點陣式液晶顯示器HS12232-9和它與單片機(jī)的接口及編程的方法,同時給出顯示器常用的字符顯示和漢字顯示程序。2講第三十九頁,共一百二十五頁,2022年,8月28日11.2.1液晶驅(qū)動IC基本特性1.具有低功耗、供應(yīng)電壓范圍寬等特點。2.具有串行和并行輸出,并可外接驅(qū)動IC擴(kuò)展驅(qū)動。3.具有2560位顯示RAM(DDRAM),即80×8×4位4.具有與68系列或80系列相適配的MPU接口功能,并有專用的指令集,可完成文本顯示或圖形顯示的功能設(shè)置5.視域尺寸:,60.5×18.0mm(12232-1/-2),54.8×18.3mm(12232-3)6.顯示類型:黃底黑字7.LCD顯示角度:6點鐘直觀8.驅(qū)動方式:1/32duty(功率比),1/6bias(偏壓比)9.連接方式:導(dǎo)電膠條,鐵框10.補(bǔ)充說明:模塊外觀尺寸可根據(jù)用戶的要求進(jìn)行適度調(diào)整。第四十頁,共一百二十五頁,2022年,8月28日

11.2.2工作參數(shù)電氣特性(測試條件Ta=25,Vdd=5.0±0.25V)1、邏輯工作電壓(VDD-VSS):2.4~6.0V2、LCD驅(qū)動電壓(Vdd-Vlcd):3.0~13.5V3、工作溫度(Ta):0~55℃(常溫)/-20~70℃(寬溫)4、保存溫度(Tstg):-10~70℃5、輸入高電平(Vih):3.5Vmin6、輸入低電平(Vil):0.55Vmax7、輸出高電平(Voh):3.75Vmin8、輸出低電平(Vol):1.0Vmax9、工作電流:2.0mAmax11.2.3接口說明第四十一頁,共一百二十五頁,2022年,8月28日

第四十二頁,共一百二十五頁,2022年,8月28日11.2.4LCD12232管腳說明1.VDD:邏輯電源正2.GND(VSS):邏輯電源地3.VLCD(VEE,V0):LCD驅(qū)動電源4.RET:復(fù)位端。對于68系列MPU:上升沿(L-H)復(fù)位,且復(fù)位后電平須保持為高電平(H);對于80系列MPU:下降沿(H-L)復(fù)位,且復(fù)位后電平須保持為低電平(L)。5.CS1:讀寫使能。對于68系列MPU,連接使能信號引腳,高電平有效;對于80系列MPU,連接/RD引腳,低電平有效。6.CS2:使能端。7./RD:讀允許,低電平有效。第四十三頁,共一百二十五頁,2022年,8月28日8./WR:寫允許,低電平有效。9.R/W:讀寫選擇。對于68系列MPU,高電平時讀數(shù)據(jù),低電平時寫數(shù)據(jù);對于80系列MPU,低電平時允許數(shù)據(jù)傳輸,上升沿時鎖定數(shù)據(jù)。10.A0:數(shù)據(jù)/指令選擇。高電平:數(shù)據(jù)D0-D7將送入顯示RAM;低電平:數(shù)據(jù)D0-D7將送入指令執(zhí)行器執(zhí)行。11.D0-D7:數(shù)據(jù)輸入輸出引腳。11.2.5指令描述1.顯示模式設(shè)置第四十四頁,共一百二十五頁,2022年,8月28日

R/W A0 /RD /WR D7 D6 D6 D4 D3 D2 D1 D00 1 0 1 0 1 0 1 1 1 D功能:開/關(guān)屏幕顯示,不改變顯示RAM(DDRAM)中的內(nèi)容,也不影響內(nèi)部狀態(tài)。D=0,開顯示;D=1,關(guān)顯示。如果在顯示關(guān)閉的狀態(tài)下選擇靜態(tài)驅(qū)動模式,那么內(nèi)部電路將處于安全模式。2.設(shè)置顯示起始行R/W A0 /RD /WR D7 D6 D6 D4 D3 D2 D1 D00 1 0 1 1 0 A4 A3 A2 A1 A0功能:執(zhí)行該命令后,所設(shè)置的行將顯示在屏幕的第一行。起始地址可以是0-31范圍內(nèi)任意一行。行地址計數(shù)器具有循環(huán)計數(shù)功能,用于顯示行掃描同步,當(dāng)掃描完一行后自動加一。3.頁地址設(shè)置R/W A0 /RD /WR D7 D6 D6 D4 D3 D2 D1 D00 1 0 H L H H H L A1 A0功能:設(shè)置頁地址。第四十五頁,共一百二十五頁,2022年,8月28日

第四十六頁,共一百二十五頁,2022年,8月28日

第四十七頁,共一百二十五頁,2022年,8月28日當(dāng)“讀-修改-寫模式”關(guān)閉時,每執(zhí)行一次讀指令,列地址自動加1,所以可以連續(xù)從DDRAM讀出數(shù)據(jù)而不用設(shè)置列地址。注意:再設(shè)置完列地址后,首次讀顯示數(shù)據(jù)前必須執(zhí)行一次空的“讀顯示數(shù)據(jù)”。這是因為設(shè)置完列地址后,第一次讀數(shù)據(jù)時,出現(xiàn)在數(shù)據(jù)總線上的數(shù)據(jù)是列地址而不是所要讀出的數(shù)據(jù)。

8.設(shè)置顯示方向第四十八頁,共一百二十五頁,2022年,8月28日

第四十九頁,共一百二十五頁,2022年,8月28日功能:使模塊內(nèi)部初始化。初始化內(nèi)容:①設(shè)置顯示初始行為第一行;②頁地址設(shè)置為第三頁。復(fù)位指令對顯示RAM沒有影響。14設(shè)置安全模式通過關(guān)閉顯示并打開靜態(tài)顯示的方法,可以設(shè)置安全模式,以減小功耗。第五十頁,共一百二十五頁,2022年,8月28日安全模式下的內(nèi)部狀態(tài):停止LCD驅(qū)動。Segment和Common輸出VDD電平。停止晶體震蕩并禁止外部時鐘輸入,晶振輸入OSC2引腳處于不確定狀態(tài)。顯示數(shù)據(jù)和內(nèi)部模式不變??赏ㄟ^打開顯示或關(guān)閉靜態(tài)顯示的方法關(guān)閉安全模式。

11.2.6LCD12232指令碼功能表LCD12232指令碼功能表如表11-4所示。表11-4LCD12232指令碼功能表第五十一頁,共一百二十五頁,2022年,8月28日

第五十二頁,共一百二十五頁,2022年,8月28日11.2.7LCD12232應(yīng)用舉例例11.3用C51編程,實現(xiàn)在12232液晶的第一行顯示“BigBigWorld!”第二行顯示“世界無限大!”。#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitCS=P1^2;sbitSID=P1^1;sbitSCLK=P1^0;ucharcodedisps[]={"BigBigWorld!"};ucharcodedispx[]={"世界無限大!"};第五十三頁,共一百二十五頁,2022年,8月28日voiddelay(uintxms){ uinti,j; for(j=0;j<xms;j++) for(i=0;i<110;i++);}voidsend_command(ucharcommand_data)//命令發(fā)送{ uchari; uchari_data; i_data=0xf8;//寫指令

CS=1; SCLK=0; for(i=0;i<8;i++)//第1字節(jié)

{ SID=(bit)(i_data&0x80); SCLK=0;

第五十四頁,共一百二十五頁,2022年,8月28日

SCLK=1; i_data=i_data<<1; }

i_data=command_data; i_data&=0xf0; for(i=0;i<8;i++)//第2字節(jié)

{ SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1; } i_data=command_data; i_data<<=4; for(i=0;i<8;i++)//第3字節(jié)

{

第五十五頁,共一百二十五頁,2022年,8月28日SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1; } CS=0; delay(10);}voidsend_data(ucharcommand_data)//數(shù)據(jù)發(fā)送{ uchari; uchari_data; i_data=0xfa;//寫數(shù)據(jù)第五十六頁,共一百二十五頁,2022年,8月28日CS=1; for(i=0;i<8;i++)//第1字節(jié) { SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1; }

i_data=command_data; i_data&=0xf0; for(i=0;i<8;i++)//第2字節(jié) { SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1;

第五十七頁,共一百二十五頁,2022年,8月28日} i_data=command_data; i_data<<=4; for(i=0;i<8;i++)//第3字節(jié)

{ SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1; } CS=0; delay(10);}voidinit(){ delay(100);

第五十八頁,共一百二十五頁,2022年,8月28日send_command(0x06);//游標(biāo)及顯示右移一位 send_command(0x0c);//整體顯示開,游標(biāo)關(guān),反白關(guān) send_command(0x01);//寫入空格清屏幕 send_command(0x80);//設(shè)定首次顯示位置}voiddisplay_s(){ uchara; send_command(0x80); for(a=0;a<11;a++) { send_data(disps[a]); }}第五十九頁,共一百二十五頁,2022年,8月28日voiddisplay_x(){ uchara; send_command(0x92); for(a=0;a<11;a++) { send_data(dispx[a]); }}voidmain(){ init(); display_s(); display_x(); while(1);}第六十頁,共一百二十五頁,2022年,8月28日程序說明:1、發(fā)送命令和發(fā)送數(shù)據(jù)分別用send_command()和send_data()函數(shù)實現(xiàn),由前面的描述可知,無論是發(fā)送一條命令還是發(fā)送一條數(shù)據(jù)都是由三個字節(jié)組成,若發(fā)送指令則第一個字節(jié)為0xf8,若發(fā)送數(shù)據(jù)則第一個字為0xfa,從上面兩個函數(shù)可看出,它們的不同之處。2、“SID=(bit)(i_data&0x80)”中(bit)表示將后面括號里的數(shù)強(qiáng)制轉(zhuǎn)換成位,當(dāng)把一個字節(jié)強(qiáng)制轉(zhuǎn)換成一位時,使用(bit),這里只取這個字節(jié)的最高位。整條語句的意思是,將i_data的最高位取出來賦給SID,從而發(fā)送給液晶。3、“i_data=command_data;”和“i_data&=0xf0;”這兩句的意思是,將所發(fā)送字節(jié)的高4位取出,低4位補(bǔ)0?!癷_data=command_data;”和“i_data<<4;”這兩句的意思是,將所發(fā)送的低4位移到高4位的位置上,原來的低4位自動補(bǔ)0。4、“l(fā)cd_init();”是對12232液晶的初始化設(shè)置,只有對液晶進(jìn)行了正確的初始化設(shè)置,液晶才能正常運行。第六十一頁,共一百二十五頁,2022年,8月28日例11.4

用C51編程,實現(xiàn)第一行從右側(cè)移入“Youarenotalone!”,同時第二行從右側(cè)移入“你并不孤獨!”,移入速度自定,最后停留在屏幕上。#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitCS=P1^2;sbitSID=P1^1;sbitSCLK=P1^0;ucharcodedisps[]={"Youarenotalone!"};ucharcodedispx[]={"你并不孤獨!"};voiddelay(uintxms){ uinti,j; for(i=xms;i>0;i--) for(j=110;j>0;j--);}voidsend_command(ucharcommand_data)第六十二頁,共一百二十五頁,2022年,8月28日{(diào) uchari; uchari_data; i_data=0xf8; CS=1; SCLK=0; for(i=0;i<8;i++) { SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1; }

i_data=command_data; i_data&=0xf0; for(i=0;i<8;i++) 第六十三頁,共一百二十五頁,2022年,8月28日{(diào) SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1; } i_data= for(i=0;i<8;i++) { SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1; }第六十四頁,共一百二十五頁,2022年,8月28日CS=0; delay(1);}voidsend_data(ucharcommand_data){ uchari; uchari_data; i_data=0xfa; CS=1; for(i=0;i<8;i++) { SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1; }第六十五頁,共一百二十五頁,2022年,8月28日i_data=command_data; i_data&=0xf0; for(i=0;i<8;i++) { SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1; } i_data=command_data; i_data<<=4; for(i=0;i<8;i++) { SID=(bit)(i_data&0x80); SCLK=0; SCLK=1; i_data=i_data<<1;第六十六頁,共一百二十五頁,2022年,8月28日} CS=0; delay(1);}voidlcd_init(){ delay(100); send_command(0x30); //設(shè)置8位數(shù)據(jù)口,基本指令模式 send_command(0x02);//清DDRAM send_command(0x06);//游標(biāo)及顯示右移一位 send_command(0x0c);//整體顯示開,游標(biāo)關(guān),反白關(guān) send_command(0x01);//寫入空格清屏幕send_command(0x80);//設(shè)定首次顯示位置第六十七頁,共一百二十五頁,2022年,8月28日}voiddisplay_s(ucharnum){ uchara; send_command(0x88-num); for(a=0;a<15;a++) { send_data(dispx[a]); }}voiddisplay_x(ucharnum){ uchara; send_command(0x98-num); for(a=0;a<15;a++) {第六十八頁,共一百二十五頁,2022年,8月28日send_data(dispx[a]); }}voidmain(){ ucharaa; lcd_init(); for(aa=0;aa<9;aa++) { display_s(aa); display_x(aa); delay(300); } while(1);}第六十九頁,共一百二十五頁,2022年,8月28日程序說明:1.由于12232液晶沒有專門的移屏指令,因此我們使用for循環(huán)來實現(xiàn)移屏效果,實際上這種效果是重復(fù)向不同的地方寫入顯示字符而實現(xiàn)的。用這種方法看上去是從右往左移動,也可以從左向右移動。2.Delay(300)延時函數(shù)決定屏幕移動的速度,自行調(diào)節(jié)。11.3液晶顯示器LCD1286411.3.1液晶LCD12864顯示模塊概述JM12864M-2漢字圖形點陣液晶顯示模塊,可顯示漢字及圖形,內(nèi)置8192個中文漢字(16X16點陣)、128個字符(8X16點陣)及64X256點陣顯示RAM(GDRAM)。主要技術(shù)參數(shù)和顯示特性:1.電源:VDD3.3V~+5V(內(nèi)置升壓電路,無需負(fù)壓);2.顯示內(nèi)容:128列×64行3.顯示顏色:黃綠3講第七十頁,共一百二十五頁,2022年,8月28日

4.LCD類型:STN5.與MCU接口:8位或4位并行/3位串行6.配置LED背光7.多種軟件功能:光標(biāo)顯示、畫面移位、自定義字符、睡眠模式等8.外觀尺寸:93×70×12.5mm視域尺寸:73×39mm如圖11-10和圖11-11所示。第七十一頁,共一百二十五頁,2022年,8月28日

11.3.2LCD12864模塊引腳說明LCD128X64HZ引腳說明表如表11-5所示。表11-5LCD128X64HZ引腳說明表第七十二頁,共一百二十五頁,2022年,8月28日

第七十三頁,共一百二十五頁,2022年,8月28日邏輯工作電壓(VDD):4.5~5.5V電源地(GND):0V工作溫度(Ta):-10℃~60℃(常溫)/-20℃~70℃(寬溫)11.3.3LCD12864接口時序模塊有并行和串行兩種連接方法(時序如下)。

1.并行連接時序圖

1)MPU寫資料到模塊如圖11-12所示。第七十四頁,共一百二十五頁,2022年,8月28日

第七十五頁,共一百二十五頁,2022年,8月28日

圖11-14串行連接時序圖串行數(shù)據(jù)傳送共分三個字節(jié)完成:第一字節(jié):串口控制—格式11111ABCA為數(shù)據(jù)傳送方向控制:H表示數(shù)據(jù)從LCD到MCU,L表示數(shù)據(jù)從MCU到LCDB為數(shù)據(jù)類型選擇:H表示數(shù)據(jù)是顯示數(shù)據(jù),L表示數(shù)據(jù)是控制指令C固定為0第七十六頁,共一百二十五頁,2022年,8月28日第二字節(jié):(并行)8位數(shù)據(jù)的高4位—格式DDDD0000第三字節(jié):(并行)8位數(shù)據(jù)的低4位—格式0000DDDD11.3.4LCD12864用戶指令集

1.指令表1:(RE=0:基本指令集)第七十七頁,共一百二十五頁,2022年,8月28日

第七十八頁,共一百二十五頁,2022年,8月28日

第七十九頁,共一百二十五頁,2022年,8月28日備注:1.當(dāng)模塊在接受指令前,微處理順必須先確認(rèn)模塊內(nèi)部處于非忙碌狀態(tài),即讀取BF標(biāo)志時BF需為0,方可接受新的指令;如果在送出一個指令前并不檢查BF標(biāo)志,那么在前一個指令和這個指令中間必須延遲一段較長的時間,即是等待前一個指令確實執(zhí)行完成,指令執(zhí)行的時間請參考指令表中的個別指令說明。

第八十頁,共一百二十五頁,2022年,8月28日

2.“RE”為基本指令集與擴(kuò)充指令集的選擇控制位元,當(dāng)變更“RE”位元后,往后的指令集將維持在最后的狀態(tài),除非再次變更“RE”位元,否則使用相同指令集時,不需每次重設(shè)“RE”位元。具體指令介紹:

1、清除顯示第八十一頁,共一百二十五頁,2022年,8月28日功能:把DDRAM地址計數(shù)器調(diào)整為“00H”,游標(biāo)回原點,該功能不影響顯示DDRAM功能:執(zhí)行該命令后,所設(shè)置的行將顯示在屏幕的第一行。顯示起始行是由Z地址計數(shù)器控制的,該命令自動將A0-A5位地址送入Z地址計數(shù)器,起始地址可以是0-63范圍內(nèi)任意一行。Z地址計數(shù)器具有循環(huán)計數(shù)功能,用于顯示行掃描同步,當(dāng)掃描完一行后自動加一。4、顯示狀態(tài)開/關(guān)第八十二頁,共一百二十五頁,2022年,8月28日

第八十三頁,共一百二十五頁,2022年,8月28日

第八十四頁,共一百二十五頁,2022年,8月28日

第八十五頁,共一百二十五頁,2022年,8月28日

第八十六頁,共一百二十五頁,2022年,8月28日

第八十七頁,共一百二十五頁,2022年,8月28日

1.文本顯現(xiàn)RAM(DDRAM)文本顯示RAM提供4行(每行8個)的漢字空間,當(dāng)寫入文本顯示RAM時,可以分別顯示CGROM、HCGROM與CGRAM的字型;ST7920A可以顯示三種字型,分別是半寬的HCGROM字型、CGRAM字型及中文CGROM字型。三種字型的選擇,由在DDRAM中寫入的編碼選擇,各種字型詳細(xì)編碼如下:1)顯示半寬字型:將一位字節(jié)寫入DDRAM中,范圍為02H-7FH的編碼。2)顯示CGRAM字型:將兩字節(jié)編碼寫入DDRAM中,總共有0000H,0002H,0004H,0006H四種編碼3)顯示中文字形:將兩字節(jié)編碼寫入DDRAMK,范圍為A1A0H-F7FFH(GB碼)或A140H-D75FH(BIG5碼)的編碼。

2.繪圖RAM(GDRAM)繪圖顯示RAM提供128×8字節(jié)的記憶空間,在更改繪圖RAM時,先連續(xù)寫入水平與垂直的坐標(biāo)值,再寫入兩個字節(jié)的數(shù)據(jù)到繪圖RAM,而地址計數(shù)器(AC)會自動加一;在寫入繪圖RAM的期間,繪圖顯示必須關(guān)閉,整個寫入繪圖RAM的步驟如下:第八十八頁,共一百二十五頁,2022年,8月28日1)關(guān)閉繪圖顯示功能。2)先將水平的位元組坐標(biāo)(X)寫入繪圖RAM地址;3)再將垂直的坐標(biāo)(Y)寫入繪圖RAM地址;4)將D15—D8寫入到RAM中;將D7—D0寫入到RAM中;5)打開繪圖顯示功能。6)繪圖顯示的緩沖區(qū)對應(yīng)分布請參考“顯示坐標(biāo)”7)游標(biāo)/閃爍控制ST7920A提供硬件游標(biāo)及閃爍控制電路,由(addresscounter)地址計數(shù)器的值來指定DDRAM中的游標(biāo)或閃爍位置。11.3.7LCD12864應(yīng)用舉例例11-5如圖11-15所示,用C編寫程序,在LCD12864上顯示“中山大學(xué)”四個字。第八十九頁,共一百二十五頁,2022年,8月28日

第九十頁,共一百二十五頁,2022年,8月28日//函數(shù)庫名稱:12864顯示函數(shù)#include<reg51.h>#include<absacc.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definePORTP0sbitCS1=P2^4;//左半屏片選腳sbitCS2=P2^3;//右半屏片選腳sbitRS=P2^2;//H代表數(shù)據(jù)輸入,L代表指令碼輸入sbitRW=P2^1;//H讀取,L寫入sbitE=P2^0;//使能,由H到L完成使能sbitbflag=P0^7;//忙標(biāo)志位ucharcodeNum[]={0x00,0x20,0x60,0xE0,0xE0,0xE0,0xF0,0xFC,第九十一頁,共一百二十五頁,2022年,8月28日0xFF,0xFC,0xF0,0xE0,0xE0,0xE0,0x60,0x20,0x00,0x00,0x40,0x30,0x3D,0x1F,0x1F,0x0F,0x07,0x0F,0x1F,0x1F,0x3D,0x30,0x40,0x00,//星號0x00,0xf8,0x08,0x08,0x08,0x08,0x08,0xff,0x08,0x08,0x08,0x08,0x08,0xfc,0x08,0x00,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0xff,0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00,//中0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x7f,0x20,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x7f,0x00,0x00, //山0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x7f,0xa0,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x00,0x40,0x40,0x20,0x10,0x0c,0x03,0x00,0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00, //大0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,第九十二頁,共一百二十五頁,2022年,8月28日0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7e,0x06,0x05,0x04,0x04,0x04,0x06,0x04,0x00,//學(xué)};//****驅(qū)動函數(shù)****voidLeft()//選左半屏{CS1=0;CS2=1;}voidRight()//選右半屏{CS1=1;CS2=0;}第九十三頁,共一百二十五頁,2022年,8月28日voidBusy_12864()//判忙函數(shù){do { E=0; RS=0;//讀狀態(tài)

RW=1; PORT=0xff; E=1; E=0; }while(bflag);//若bflag=1則代表系統(tǒng)忙}voidWreg(ucharc)//寫指令{

第九十四頁,共一百二十五頁,2022年,8月28日Busy_12864(); RS=0; RW=0; PORT=c; E=1;//E下降沿,液晶模塊從數(shù)據(jù)總線寫入指令

E=0;}voidWdata(ucharc)//寫數(shù)據(jù){ Busy_12864(); RS=1; RW=0; PORT=c; E=1; E=0;第九十五頁,共一百二十五頁,2022年,8月28日}voidPagefirst(ucharc)//頁設(shè)置//LCD12864一共可以畫32個字,4行,每行8個字,左半屏4個,右半屏4個;//每個字占2頁,第0頁顯示上半字,第1頁顯示下半字,畫1個字是16X16個點;//8小行為一頁,DDRAM共64小行,即8頁,7,所以只能顯示4行漢字{ uchari; i=c; c=i|0xb8;//實際頁數(shù)和b8(即10111000B)的或運算就是要送的代碼,邏輯加法

Busy_12864(); Wreg(c);}第九十六頁,共一百二十五頁,2022年,8月28日voidLinefirst(ucharc)//列設(shè)置,Y=0-63,左右半屏各64列{ uchari; i=c; c=i|0x40;//實際列數(shù)和40H(即01000000B)的或運算就是要送的代碼

Busy_12864(); Wreg(c);}//****清屏函數(shù)****voidReady_12864() {uinti,j;Left();Wreg(0x3f);//左屏開顯示;0x3e為關(guān)顯示的控制字

Right();第九十七頁,共一百二十五頁,2022年,8月28日

Wreg(0x3f);//右屏開顯示;0x3f為開顯示的控制字Left();//清左屏for(i=0;i<8;i++){ Pagefirst(i); Linefirst(0x00); for(j=0;j<64;j++) { Wdata(0x00); }}Right();//清右屏for(i=0;i<8;i++){ Pagefirst(i);

第九十八頁,共一百二十五頁,2022年,8月28日Linefirst(0x00); for(j=0;j<64;j++) { Wdata(0x00); } }}//****16×6漢字顯示程序****voidDisplay(uchar*s,ucharpage,ucharline) {//先上半字,再下半字;由左向右逐列送值

uchari,j; Pagefirst(page); Linefirst(line); for(i=0;i<16;i++) {第九十九頁,共一百二十五頁,2022年,8月28日

Wdata(*s);//指針S指向數(shù)組Num進(jìn)行抽數(shù)

s++; } Pagefirst(page+1); //換頁,顯示下半字,一個字需要2頁才可以完成顯示,即16小行

Linefirst(line); for(j=0;j<16;j++) { Wdata(*s); s++; }}第一百頁,共一百二十五頁,2022年,8月28日main()//主程序{//(3、4頁)顯示6個字;Ready_12864(); Left(); Display(Num+0,0x03,16);//第3頁第16列(左屏第1個字位置) Display(Num+32,0x03,32);//第3頁第32列(左屏第2個字位置) Display(Num+64,0x03,48);//第3頁第48列(左屏第3個字位置) Right(); Display(Num+96,0x03,0);//第3頁第0列(右屏第0個字位置) Display(Num+128,0x03,16);//第3頁第16列(右屏第1個字位置) Display(Num+0,0x03,32);//第3頁第32列(右屏第2個字位置) while(1);}第一百零一頁,共一百二十五頁,2022年,8月28日例11.6

如圖11-16所示,用C編程,在4X4鍵盤上按鍵,在LCD12864顯示相應(yīng)的按鍵。第一百零二頁,共一百二十五頁,2022年,8月28日程序如下:#include<reg51.h>#include<INTRINS.H>#defineanP0/*使用P0口作鍵盤輸入*//*****液晶顯示*****KS0108驅(qū)動芯片的LCD*******************/#definec88#definec1616/*****************************/#defineksddP2 /*數(shù)據(jù)輸出*/sbitksrs=P1^0;sbitksrw=P1^1;sbitkse=P1^2;sbitkscs1=P1^3;第一百零三頁,共一百二十五頁,2022年,8月28日sbitkscs2=P1^4;/****************************//*中*/codeunsignedcharzhong[32]={0x00,0xf8,0x08,0x08,0x08,0x08,0x08,0xff,0x08,0x08,0x08,0x08,0x08,0xfc,0x08,0x00,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0xff,0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00};/*文*/codeunsignedcharwen[32]={0x08,0x08,0x08,0x18,0x68,0x88,0x09,0x0e,0x08,0x08,0xc8,0x38,0x08,0x0c,0x08,0x00,0x80,0x80,0x40,0x40,0x20,0x11,0x0a,0x04,0x0a,0x11,0x10,0x20,0x40,0xc0,0x40,0x00};/*液*/codeunsignedcharye[32]={0x10,0x22,0x64,0x0c,0x80,0x04,0xc4,0x34,0x05,0xc6,0xbc,0x24,0x24,0xe6,0x04,0x00,0x04,0x04,0xfe,0x01,0x02,0x01,0xff,0x42,0x21,0x16,0x08,0x15,0x23,0x60,0x20,0x00};第一百零四頁,共一百二十五頁,2022年,8月28日/*晶*/codeunsignedcharjing[32]={0x00,0x00,0x00,0x00,0xff,0x49,0x49,0x49,0x49,0x49,0xff,0x00,0x00,0x80,0x00,0x00,0x00,0xff,0x49,0x49,0x49,0x49,0xff,0x00,0xff,0x49,0x49,0x49,0x49,0xff,0x01,0x00};/*顯*/codeunsignedcharxian[32]={0x00,0x00,0x00,0xfe,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0xff,0x02,0x00,0x00,0x00,0x40,0x42,0x44,0x4d,0x40,0x7f,0x40,0x40,0x40,0x7f,0x40,0x49,0x44,0x66,0x40,0x00};/*示*/codeunsignedcharshi[32]={0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xc2,0x42,0x42,0x42,0x43,0x42,0x60,0x40,0x00,0x00,0x10,0x08,0x04,0x06,0x40,0x80,0x7f,0x00,0x00,0x02,0x04,0x0c,0x18,0x00,0x00};第一百零五頁,共一百二十五頁,2022年,8月28日/*0*/codeunsignedcharzero[32]={0x00,0x00,0x00,0x00,0xf0,0xf8,0x0c,0x04,0x04,0x04,0x0c,0xf8,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x1f,0x30,0x20,0x20,0x20,0x30,0x1f,0x0f,0x00,0x00,0x00};/*16x16數(shù)字字模*//*1*/codeunsignedcharone[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xf8,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3f,0x3f,0x20,0x00,0x00,0x00,0x00,0x00,0x00};/*2*/codeunsignedchartwo[32]={0x00,0x00,0x00,0x00,0x30,0x38,0x0c,0x04,第一百零六頁,共一百二十五頁,2022年,8月28日0x04,0x0c,0xf8,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x38,0x2c,0x26,0x23,0x21,0x38,0x00,0x00,0x00,0x00};/*3*/codeunsignedcharthree[32]={0x00,0x00,0x00,0x00,0x10,0x18,0x0c,0x84,0x84,0xcc,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x30,0x20,0x20,0x31,0x1f,0x0e,0x00,0x00,0x00,0x00};/*4*/codeunsignedcharfour[32]={0x00,0x00,0x00,0x00,0x80,0xc0,0x70,0x18,0xfc,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x07,0x05,0x04,0x24,0x3f,0x3f,0x24,0x04,0x00,0x00,0x00,0x00};/*5*/codeunsignedcharfine[32]={0x00,0x00,0x00,0x00,0xfc,0xfc,0xc4,0x44,0x44,0xc4,0x84,0x04,0x00,0x00,0x00,0x00,第一百零七頁,共一百二十五頁,2022年,8月28日0x00,0x00,0x00,0x00,0x08,0x18,0x30,0x20,0x20,0x30,0x1f,0x0f,0x00,0x00,0x00,0x00};/*6*/codeunsignedcharsix[32]={0x00,0x00,0x00,0x00,0xf0,0xf8,

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論