項目六 1602液晶顯示計數(shù)器制作_第1頁
項目六 1602液晶顯示計數(shù)器制作_第2頁
項目六 1602液晶顯示計數(shù)器制作_第3頁
項目六 1602液晶顯示計數(shù)器制作_第4頁
項目六 1602液晶顯示計數(shù)器制作_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目六

1602液晶顯示計數(shù)器制作1602液晶簡介所謂1602就是指它的顯示內(nèi)容為16X2,即顯示兩行,每行16個字符。1602LCD模塊帶有背光光源,并行接口,可以與單片機(jī)I/O口直接相連。項目綱要任務(wù)一1602液晶顯示字符任務(wù)二1602液晶顯示計數(shù)器制作任務(wù)一1602液晶顯示字符(一)任務(wù)要求

使用YL-236單片機(jī)實訓(xùn)考核裝置顯示模塊中的1602LCD,上電后液晶屏第一行居中顯示字符Welcome,第二行居中顯示字符2013-05-01。顯示界面如下圖所示。任務(wù)一1602液晶顯示字符實現(xiàn)本任務(wù)的方法:可以采用前面LED點陣顯示的方法,建立顯示緩沖區(qū),將要顯示的內(nèi)容在顯示緩沖區(qū)中定義,掃描函數(shù)負(fù)責(zé)將顯示緩沖區(qū)中的內(nèi)容送入DDRAM,其余全部由顯示屏內(nèi)部電路進(jìn)行掃描顯示。實現(xiàn)的方法這種方法看起來是多進(jìn)行了一次緩沖(因為1602LCD已經(jīng)有內(nèi)部的顯存了),但比較直觀,容易理解;還有一種方法就是直接根據(jù)字符的位置,由顯示函數(shù)直接將要顯示的字符送入緩存中相應(yīng)的位置。本項目采用前面一種方法。(二)任務(wù)分析任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(1)模塊外形及引腳

YL-236裝置上1602液晶結(jié)構(gòu)示意圖數(shù)據(jù)總線接口DB0-DB7液晶電源開關(guān)控制引腳任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(1)模塊外形及引腳1602液晶引腳及其功能引腳號名稱輸入/輸出作用1Vss電源負(fù)端(0V)2Vdd電源正端(+5V)3V0對比度調(diào)節(jié)4RS輸入數(shù)據(jù)/指令寄存器選擇端RS=0,輸入指令;RS=1,輸入數(shù)據(jù)。5R/W輸入讀寫選擇端R/W=0,寫操作;R/W,讀操作。6E輸入使能信號,下降沿觸發(fā)7-14DB0-DB7輸入/輸出數(shù)據(jù)總線從低位到高位15LEDA背光電源正端(+5V)16LEDK背光電源負(fù)端(0V)任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(2)模塊顯示字符原理

模塊內(nèi)部由三部分組成,控制器和驅(qū)動器往往由專用的集成電路完成,大部分都是HD44780或其兼容的芯片。HD44780主要由DDRAM、CGROM等部分組成。任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(2)模塊顯示字符原理

DDRAM為數(shù)據(jù)顯示RAM(DataDisplayRAM),用以存放要LCD顯示的數(shù)據(jù),能存儲80個字符。只要將標(biāo)準(zhǔn)的ASCⅡ碼放入DDRAM,內(nèi)部控制線路就會自動將數(shù)據(jù)傳送到顯示器上,并顯示出該ASCⅡ碼對應(yīng)的字符。顯示位置序號1234567。。。。。。3940DDRAM地址第一行00010203040506。。。。。。2627第二行40414243444546。。。。。。6667注:如果要在LCD1602屏幕的第一行第二列顯示一個"P"字,就要向DDRAM的01H地址寫入“P”字的代碼0X50就行了。那么一行可有40個地址呀?是的,在1602中我們就用前16個就行了。第二行也一樣用前16個地址,所以在后面寫程序的時候注意第二行的位置是從40開始的。另外需要注意的是:我們往DDRAM里的01H地址處送一個數(shù)據(jù),如0x50(P的代碼)并不能顯示P出來,原因就是如果你要想在DDRAM的01H地址處顯示數(shù)據(jù),則必須將01H加上80H,即81H,若要在DDRAM的02H處顯示數(shù)據(jù),則必須將02H加上80H即82H。依次類推。任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(2)模塊顯示字符原理

CGROM為字符產(chǎn)生器ROM(CharacterGeneratorROM),它存儲了由8位字符碼生成的192個5點陣字符和32種5×10點陣字符。8位字符編碼和字符的對應(yīng)關(guān)系(內(nèi)置字符集)如圖所示。每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(0X41),顯示時模塊把地址0X41中的點陣字符圖形顯示出來,我們就能看到字母“A”了。任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識模塊與單片機(jī)硬件接口電路(3)模塊的使用——硬件接口電路任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(3)模塊的使用——模塊控制指令指令名稱控制信號指令代碼功能RSR/WD7D6D5D4D3D2D1D0顯示模式設(shè)置0000111000設(shè)置16X2,5X7點陣,8位數(shù)據(jù)顯示開關(guān)控制0000001DCB設(shè)置顯示、光標(biāo)、閃爍開關(guān):D:為1開顯示;為0關(guān)顯示C:為1顯示光標(biāo);為0不顯示光標(biāo)B:為1光標(biāo)閃爍;為0不顯示光標(biāo)輸入模式控制00000001NS設(shè)置光標(biāo)、顯示畫面移動方向N:為1,讀寫一個字符后,地址指針加1,光標(biāo)加1;為0,讀寫一個字符后地址指針減1,光標(biāo)減1。S:為1,寫入一個字符后整屏左移(N=1)或右移(N=0);為0,寫一個字符整屏顯示不動。讀數(shù)據(jù)11數(shù)據(jù)從DDRAM中讀取數(shù)據(jù)寫數(shù)據(jù)10數(shù)據(jù)對DDRAM進(jìn)行寫數(shù)據(jù)清屏0000000001清除顯示器的內(nèi)容,光標(biāo)到左上角光標(biāo)歸位設(shè)定000000001*地址計數(shù)器清0,DDRAM數(shù)據(jù)不變。*表示為0或1。數(shù)據(jù)指針設(shè)置0080H+地址碼(0-27H,40-47H)設(shè)置數(shù)據(jù)地址指針忙碌標(biāo)志01BF指示LCD目前的工作情況。BF為1,LCD忙,不接收單片機(jī)送過來的數(shù)據(jù);為0,表示已準(zhǔn)備好接收指令或數(shù)據(jù)任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(3)模塊的使用——模塊指令操作時序任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(3)模塊的使用——驅(qū)動函數(shù)voiddelay(uintus);//短延時函數(shù)聲明voiddelay_ms(uintms);//毫秒級延時函數(shù)聲明voidwcmd_1602(ucharcmd);//寫命令到LCD函數(shù)聲明voidwdat_1602(uchardat);//寫數(shù)據(jù)到LCD函數(shù)聲明voidinit_1602();//初始化函數(shù)聲明voiddisp_one(ucharx,uchary,uchardispbuf);//到指定位置顯示單個字符的函數(shù)聲明voiddisp_mul(ucharx,uchary,ucharcode*dispbuf);//到指定的位置顯示多個字符的函數(shù)聲明任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(3)模塊的使用——驅(qū)動函數(shù)/******向LCD寫入命令********/voidwcmd_1602(ucharcmd){delay(60);//延時,不檢測忙信號E=0;//初始狀態(tài)E=0RS=0;//初始狀態(tài)RS=0

RW=0;//初始狀態(tài)RW=0

_nop_();//極短延時

DATAPORT=cmd;//單片機(jī)給出有效的指令數(shù)據(jù)

_nop_();//極短延時_nop_();

E=1;//產(chǎn)生E下降沿執(zhí)行命令寫入_nop_();_nop_();_nop_();E=0;

_nop_();}任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(3)模塊的使用——驅(qū)動函數(shù)/******到指定的位置顯示字符*******************/voiddisp_one(ucharx,uchary,uchardispbuf){

y&=0x01;//限制行數(shù)y不能大于1 x&=0x0f;//限制1行字符數(shù)x不能大于15 if(y==1)//如果在第二行則字符地址從0x40 x|=0x40; x|=0x80;//設(shè)置地址指針 wcmd_1602(x);//寫地址碼 wdat_1602(dispbuf);//寫數(shù)據(jù)}任務(wù)一1602液晶顯示字符2.1602液晶顯示模塊知識(3)模塊的使用——驅(qū)動函數(shù)/******到指定的位置顯示多個字符****************/voiddisp_mul(ucharx,uchary,ucharcode*dispbuf){ ucharlen,i; len=strlen(dispbuf);//計算要顯示的字符串長度 y&=0x01;//限制X,Y位置 x&=0x0F; if(x<=0x0F)//X坐標(biāo)小于一行執(zhí)行顯示

{ for(i=0;i<len;i++) {

disp_one(x,y,dispbuf[i]);//顯示單個字符 x++; }

}

}任務(wù)一1602液晶顯示字符3.C51的庫函數(shù)簡介

C51強(qiáng)大功能及其高效率的重要體現(xiàn)之一在于其豐富的可直接調(diào)用的庫函數(shù),要使用庫函數(shù),則必須將用到的每個庫函數(shù)都在相應(yīng)的頭文件(.H)中給出了函數(shù)原型聲明,即用#include,將有關(guān)的頭文件包含進(jìn)來,然后再用戶的源文件中就可以直接使用包含的頭文件中的庫函數(shù)了。(1)專用寄存器庫函數(shù)REG××.H專用寄存器庫函數(shù)REG××.H中定義了所有8052的SFR及其位,定義時都用大寫字母。任務(wù)一1602液晶顯示字符3.C51的庫函數(shù)簡介(2)字符串函數(shù)STRING.H

該文件中包括了對字符的復(fù)制、比較、移動等函數(shù),使用這些函數(shù)可以很方便地對字符串進(jìn)行處理。例如:strlen函數(shù)的函數(shù)原型為intstrlen(char*src);其功能是返回字符串src中的字符個數(shù),包括結(jié)束符。(3)內(nèi)部函數(shù)INTRINS.H該文件提供了幾個最常用的移位操作函數(shù)以及空操作等函數(shù)。例如:_nop_函數(shù)的原型為void_nop_(void),其功能是產(chǎn)生一個MCS-51單片機(jī)的NOP(空)指令,實現(xiàn)短暫的延時。任務(wù)一1602液晶顯示字符(三)硬件電路1602液晶顯示字符電路原理圖任務(wù)一1602液晶顯示字符(三)硬件電路硬件模塊接線圖任務(wù)一1602液晶顯示字符(四)參考程序#include<reg52.h>#include"1602LCD.h"/******變量定義***************/ucharcodeOnedisp1[] ={"Welcome!"}; //待顯示的字符串ucharcodeOnedisp2[] ={"2013-05-01"}; //待顯示的字符串/******主函數(shù)**************/voidmain() //定義主函數(shù){init_1602();

//LCD初始化

delay(50); //延時等待穩(wěn)定disp_mul(0,0,Onedisp1);//第一行顯示W(wǎng)elcome!

disp_mul(0,1,Onedisp2); //第二行顯示2013-05-01while(1); //無限循環(huán)}任務(wù)一1602液晶顯示字符(五)任務(wù)實施步驟1.硬件電路連接;2.打開KEIL軟件,通過菜單“項目/新建項目”,新建立一個工程項目1602LCD1,然后再建一個文件名為1602LCD1.C的源程序文件,將上面的參考程序輸入并保存,同時將該文件添加到項目中;3.對源程序進(jìn)行編譯和鏈接,產(chǎn)生目標(biāo)代碼并使用下載器將目標(biāo)代碼寫入單片機(jī);4.通電觀察運行結(jié)果,如果不能實現(xiàn)任務(wù)要求,則修改程序、調(diào)整和檢查硬件連接,直到1602液晶顯示正常;5.進(jìn)行扎線,整理。謝謝!任務(wù)二1602液晶顯示計數(shù)器制作(一)任務(wù)要求

使用YL-236單片機(jī)實訓(xùn)考核裝置顯示模塊中的1602LCD制作一個計數(shù)器,顯示界面如圖所示。該計數(shù)器具體要求如下:1.計數(shù)器上電后第一行顯示“Count:000”(在Count:后空一格,然后是三位計數(shù)器的顯示數(shù)值從000-999)。第二行顯示功能操作鍵提示字符“S1:+S2:-S3:R”。2.計數(shù)器使用三個按鍵對計數(shù)器進(jìn)行控制。其中:S1鍵為計數(shù)值加鍵,每按一次,顯示的計數(shù)值加1;S2為計數(shù)值減鍵,每按一次鍵,顯示的計數(shù)值減1;S3鍵為復(fù)位鍵,按一次,計數(shù)器復(fù)位,顯示的計數(shù)值為000。任務(wù)二1602液晶顯示計數(shù)器制作與本項目的第一個任務(wù)相比,LCD1602在顯示上的最大區(qū)別是第一行中的計數(shù)值會隨著計數(shù)的進(jìn)行而實時改變;而第一行的count:和第二行顯示的字符是固定不變的,這些可以采用與第一個任務(wù)相同的方法,調(diào)用到指定的位置顯示字符的子函數(shù),將要顯示的內(nèi)容送到顯示緩沖區(qū)。而計數(shù)值因為是變量,所以必須定義變量,顯示時只要將該變量的實時值拆分后送到相應(yīng)的顯示位置就可以顯示所需的內(nèi)容了。按鍵等部分實現(xiàn)比較簡單,這里就不再多述。(二)任務(wù)分析任務(wù)二1602液晶顯示計數(shù)器制作(三)硬件電路液晶顯示計數(shù)器電路原理圖任務(wù)二1602液晶顯示計數(shù)器制作(三)硬件電路液晶顯示計數(shù)器電路模塊接線圖任務(wù)二1602液晶顯示計數(shù)器制作(四)參考程序主函數(shù)流程圖任務(wù)二1602液晶顯示計數(shù)器制作/******變量定義***************/ucharOnedisp1[]={"Count:"};//待顯示的字符串ucharcodeOnedisp2[]={"S1:+S2:-S3:P"};//待顯示的字符串ucharcodedisp_tab[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20};//0-9,不顯示uintcount=0;//設(shè)置計數(shù)變量(四)參考程序/******計數(shù)變量處理***************/Onedisp1[11]=disp_tab[count/100];//取計數(shù)百位數(shù)值送緩沖區(qū)Onedisp1[12]=disp_tab[(count%100)/10];//取

溫馨提示

  • 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

提交評論