在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)筆記——TFT2.4彩屏顯示字符和漢字

            STM32學(xué)習(xí)筆記——TFT2.4彩屏顯示字符和漢字

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

            #else//條件編譯-8位數(shù)據(jù)模式

            voidLCD_Writ_Bus(charVH,charVL)//并行數(shù)據(jù)寫(xiě)入函數(shù)

            {

            //LCD_DataPortH=VH;//八位模式都用P0口送數(shù)據(jù)

            //LCD_wr(0);

            //LCD_wr(1);

            //LCD_DataPortH=VL;//八位模式都用P0口送數(shù)據(jù)

            //LCD_wr(0);

            //LCD_wr(1);

            }

            #endif

            //參數(shù)VH,VL分別為要寫(xiě)入命令的高8位和低8位

            voidLCD_Write_COM(charVH,charVL)//發(fā)送命令

            {

            LCD_rs(0);

            LCD_Writ_Bus(VH,VL);

            }

            //參數(shù)VH,VL分別為要寫(xiě)入數(shù)據(jù)的高8位和低8位

            voidLCD_Write_DATA(charVH,charVL)//發(fā)送數(shù)據(jù)

            {

            LCD_rs(1);

            LCD_Writ_Bus(VH,VL);

            }

            voidPant(charVH,charVL)//涂滿(mǎn)全屏函數(shù)

            {

            inti,j;

            LCD_cs(0);//打開(kāi)片選使能

            Address_set(0,0,239,319);//設(shè)置地址范圍為全屏

            for(i=0;i<320;i++)

            {

            for(j=0;j<240;j++)

            {

            LCD_Write_DATA(VH,VL);

            }

            }

            LCD_cs(1);//關(guān)閉片選使能

            }

            voidAddress_set(unsignedintx1,unsignedinty1,unsignedintx2,unsignedinty2)//設(shè)置地址范圍函數(shù)

            {

            LCD_Write_COM(0x00,0x20);LCD_Write_DATA(x1>>8,x1);//設(shè)置X坐標(biāo)位置

            LCD_Write_COM(0x00,0x21);LCD_Write_DATA(y1>>8,y1);//設(shè)置Y坐標(biāo)位置

            LCD_Write_COM(0x00,0x50);LCD_Write_DATA(x1>>8,x1);//開(kāi)始X

            LCD_Write_COM(0x00,0x52);LCD_Write_DATA(y1>>8,y1);//開(kāi)始Y

            LCD_Write_COM(0x00,0x51);LCD_Write_DATA(x2>>8,x2);//結(jié)束X

            LCD_Write_COM(0x00,0x53);LCD_Write_DATA(y2>>8,y2);//結(jié)束Y

            LCD_Write_COM(0x00,0x22);

            }

            voidChineseChar(uintx,uinty,intsize,uintFor_color,uintBk_color,charc)

            {

            inte=0,i,j;

            inted;

            uintncols;

            uintnrows;

            uintnbytes;

            uchar*pfont;//指向指定大小的漢字?jǐn)?shù)據(jù)存儲(chǔ)的數(shù)組的指針

            uchar*pchar;//指向指定數(shù)組中指定要顯示的漢字的數(shù)據(jù)的指針

            uchar*fonttable[]={(uchar*)hz16,(uchar*)hz24,(uchar*)hz32};//漢字的三種大小,16位,24位,32位

            //其中hz16,hz24,hz32為三個(gè)數(shù)組,分別存儲(chǔ)宋體12,宋體18和宋體24的漢字的數(shù)據(jù)

            //每個(gè)數(shù)組中的數(shù)據(jù)可能包含相同大小字體的多個(gè)漢字

            pfont=(uchar*)fonttable[size];//指向指定大小的漢字的數(shù)組

            if(size==0)

            {

            ncols=16-1;

            nrows=16-1;

            nbytes=32;//每個(gè)字取模的字節(jié)數(shù)=(16*16)/8

            }

            else

            if(size==1)

            {

            ncols=24-1;

            nrows=24-1;

            nbytes=72;//每個(gè)字取模的字節(jié)數(shù)=(24*24)/8

            }

            else

            if(size==2)

            {

            ncols=32-1;

            nrows=32-1;

            nbytes=132;//每個(gè)字取模的字節(jié)數(shù)=(32*32)/8

            }

            pchar=pfont+(nbytes*(c-1));//指定要顯示指定數(shù)組中的第c個(gè)漢字

            //每個(gè)數(shù)組中的數(shù)據(jù)可能包含相同大小字體的多個(gè)漢字

            Address_set(x,y,x+nrows,y+ncols);//設(shè)置漢字顯示的范圍

            for(i=0;i//每個(gè)漢字含有nbytes個(gè)字節(jié),所以要循環(huán)nbytes次

            {

            ed=*pchar++;//ed取出指定要顯示的字節(jié)的數(shù)據(jù)

            if(size==0)//???

            {

            if(i%2==0)//???

            e=8;

            else

            e=4;//???

            }

            else

            e=8;

            for(j=0;j{

            if((ed>>j)&0x01)//判斷是漢字還是背景,然后分別寫(xiě)入不同的顏色

            {

            LCD_Write_DATA(For_color>>8,For_color);//textcolor

            }

            else

            {

            LCD_Write_DATA(Bk_color>>8,Bk_color);//backcolor

            }

            }

            }

            }

            voidLCD_ShowChar(uintx,uinty,uintFor_color,uintBk_color,charch)

            {

            uchartemp,Bytes;

            ucharpos,t;

            uintCHAR_W,CHAR_H;//一個(gè)字符的大小

            //CHAR_W=8;//8*16

            //CHAR_H=16;

            CHAR_W=16;//16*24字符的大小為16*24

            CHAR_H=24;

            if(x>(LCD_SIZE_X-CHAR_W)||y>(LCD_SIZE_Y-CHAR_H))//如果指定的字符顯示的位置超過(guò)了彩屏的分辨率,則返回

            return;

            Address_set(x,y,x+CHAR_W-1,y+CHAR_H-1);//設(shè)置字符顯示的地址范圍

            ch=ch-32;//按照ASCII編碼順序得到相應(yīng)字母的編碼

            Bytes=(CHAR_W*CHAR_H)/8;//每個(gè)字母取模字節(jié)數(shù)一個(gè)字節(jié)為8位,也即是8個(gè)像素點(diǎn)是一個(gè)字節(jié)

            for(pos=0;pos//一個(gè)字節(jié)一個(gè)字節(jié)的寫(xiě)入,知道這個(gè)字符的全部字節(jié)數(shù)寫(xiě)完

            {

            //temp=Font8x16[ch][pos];//8*16的字體

            temp=Font16x24[ch][pos];//字體的大小為16*24

            for(t=0;t<8;t++)//一個(gè)字節(jié)為8位,所以要循環(huán)8次寫(xiě)入,一次只能寫(xiě)入一個(gè)像素點(diǎn)

            {

            //判斷哪里是顯示字符的地方,哪里是背景,然后分別寫(xiě)入不同的顏色就可以了

            if(temp&0x80)//如果是顯示字符的地方

            LCD_Write_DATA(For_color>>8,For_color);//textcolor

            else//否則就是背景的地方

            LCD_Write_DATA(Bk_color>>8,Bk_color);//backcolor

            temp<<=1;//右移一位

            }

            }

            }

            voidLCD_ShowString(uintx,uinty,uintFor_color,uintBk_color,char*p)

            {

            while(*p!=