<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機GUI編程顯示漢字

單片機GUI編程顯示漢字

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201611/322062.htm

uint8 ReadSdate(void)

{

uint8checkbusy;

//LCD_BUS = 0xff;

OutData(0xff);

//CD1=1;

SCD1();

//RD1=0;

CRD1();

//checkbusy=((IO0PIN&0x00ff0000)>>16);

checkbusy = (GPIOD->IDR&0x00ff);

//RD1=1;

SRD1();

return ( checkbusy );

}

void RWcheck(void)

{

uint8databusy;

do

{

databusy=ReadSdate();

}while( !(databusy&0x03) );

}

void AutoRcheck(void)

{

uint8databusy;

do

{

databusy=ReadSdate();

}while( !(databusy&0x04) );

}

void AutoWcheck(void)

{

uint8databusy;

do

{

databusy=ReadSdate();

}while( !(databusy&0x08) );

}

//寫(xiě)數據

voidWriteData(uint8 dat)

{

RWcheck();

//CD1=0;

CCD1();

//LCD_BUS=dat;

OutData(dat);

//WR1=0;

CWR1();

//WR1=1;

SWR1();

}

//寫(xiě)指令

voidWriteCmd1(unsigned char cmd)

{

RWcheck();;

//CD1=1;

SCD1();

//LCD_BUS=cmd;

OutData(cmd);

//WR1=0;

CWR1();

//WR1=1;

SWR1();

}

//先寫(xiě)數據再寫(xiě)指令

voidWriteCmd2(uint8 dat,uint8 cmd)

{

WriteData(dat);

WriteCmd1(cmd);

}

//先寫(xiě)2組數據再寫(xiě)1組指令

voidWriteCmd3(uint8 dat1,uint8 dat2,uint8 cmd)

{

WriteData(dat1);

WriteData(dat2);;

WriteCmd1(cmd);

}

//數據自動(dòng)寫(xiě)

voidAutoWriteData( uint8 dat)

{

AutoWcheck();;

//CD1 = 0;

CCD1();

//LCD_BUS= dat;

OutData(dat);

//WR1=0;

CWR1();

//WR1=1;

SWR1();

}

#defineOutData(dat)GPIOD->BRR = 0xff<BSRR = (dat&0xff)<

#defineLCM_WR112

#defineSWR1()GPIOB->BSRR = 1<

#defineCWR1()GPIOB->BRR= 1<

#defineLCM_RD113

#defineSRD1()GPIOB->BSRR = 1<

#defineCRD1()GPIOB->BRR= 1<

#defineLCM_CE114

#defineSCE1()GPIOB->BSRR = 1<

#defineCCE1()GPIOB->BRR= 1<

#defineLCM_CD115

#defineSCD1()GPIOB->BSRR = 1<

#defineCCD1()GPIOB->BRR= 1<

圖形顯示的操作,最根本是對緩存的操作。

從應用層到底層的整個(gè)過(guò)程解析如下:

1、調用寫(xiě)字函數在LCD上顯示一個(gè)漢字。

GUI_PutHZ(x1,y1,(uint8*)gb12Dot[GetGB12_Address(ptr)].Msk,12, 12);

l參數參考上面的函數說(shuō)明,其中要顯示的字需要通過(guò)一個(gè)數組查找。

l該數組是一個(gè)結構體數組,每一個(gè)結構體中有兩個(gè)分量,第一個(gè)是要顯示的漢字,第二個(gè)是該漢字的字庫。

l把需要寫(xiě)入的漢字及字庫先存放在數組中,根據漢字的內容查找到相應字庫。

2、在GUI_PutHZ函數中調用了GUI_LoadLine(x, y, dat, hno);

字庫的實(shí)質(zhì)是點(diǎn)矩陣,寫(xiě)字的實(shí)質(zhì)就是把字庫里安排的點(diǎn)陣寫(xiě)進(jìn)緩存里。

這里調用畫(huà)線(xiàn)函數,對矩陣進(jìn)行操作。

3、在GUI_LoadLine函數中調用了GUI_Point(x, y, bakc);

l對畫(huà)線(xiàn)的操作,實(shí)質(zhì)就是對線(xiàn)上的每一點(diǎn)進(jìn)行操作。

l對于黑白屏來(lái)說(shuō),點(diǎn)的操作就是點(diǎn)亮與熄滅。

l對于彩色屏就是對像素位的操作來(lái)實(shí)現顏色的變化。

l所有的圖案及字,都是不同顏色組合后給人的一種感官視覺(jué)。

lgui_disp_buf[y][x>>3] |=DCB_HEX_TAB[x&0x07];改變顯示緩存中的數據。

lLCD_UpdatePoint(x, y);調用更新點(diǎn)函數實(shí)現刷屏。

4、LCD_UpdatePoint函數中,調用了WriteCmd3和WriteCmd2函數

WriteCmd3這兩個(gè)函數是對底層最基本的IO口操作,涉及硬件原理,涉及時(shí)序。

GUI的操作原理及程序例子基本完成。操作關(guān)鍵總結歸納如下:

l如何設計外圍接口。

l如何編寫(xiě)底層驅動(dòng)函數。

l如何根據需求編寫(xiě)應用軟件。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 單片機GUI編程顯示漢

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>