第十六節(jié):液晶屏第三大類定律—任意位置顯示一個點(彩色320240點陣屏)_第1頁
第十六節(jié):液晶屏第三大類定律—任意位置顯示一個點(彩色320240點陣屏)_第2頁
第十六節(jié):液晶屏第三大類定律—任意位置顯示一個點(彩色320240點陣屏)_第3頁
第十六節(jié):液晶屏第三大類定律—任意位置顯示一個點(彩色320240點陣屏)_第4頁
第十六節(jié):液晶屏第三大類定律—任意位置顯示一個點(彩色320240點陣屏)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第十六節(jié):液晶屏第三大類定律任意位置顯示一個點(彩色320240點陣屏)            第三大類定律:任意位置顯示一個點的類型。這類液晶屏在任意位置上以一個點為基本單位,因此X坐標數(shù)值的最大范圍就直接是橫向上的點陣數(shù)減去一(因為從零開始)。而Y坐標數(shù)值的最大范圍就直接是縱向上的點陣數(shù)減去一(因為從零開始)。(1)        開場白:      這節(jié) 我以彩色320240點陣屏為例子,來繼續(xù)深入了解第三大類定律:任意位置顯示一

2、個點的類型。彩色320240點陣屏跟TFT彩屏有點不一樣,彩色320240點陣屏是低像素的屏,僅僅適合顯示有顏色的圖標或者字體,不能顯示照片或者圖像等,單片機驅(qū)動它完全沒有問題。TFT彩屏是高像素的屏,可以顯示照片或者圖像,用單片機驅(qū)動會顯得力不從心,必須用高級的芯片,比如ARM系列的。我這節(jié)講的彩色320240點陣屏是用什么驅(qū)動IC呢?這個我也沒有仔細去查,反正這類屏很常用,從深圳南頭關(guān)外的107國道開往固戍方向的小型公共汽車上,就可以看到駕駛室儀表上用的就是這個屏,黑底紅字,視覺效果非常棒。如果讀者看了鴻哥之前幾節(jié)關(guān)于液晶顯示屏的文章,相信讀者能摸出了我做液晶驅(qū)動程序的套路:第一步:當我拿

3、到一款新的液晶屏?xí)r,我會先從液晶廠家要回一個演示驅(qū)動程序,如果廠家沒有就想辦法在網(wǎng)上下載一個??靠打?qū)動芯片的PDF文檔寫驅(qū)動程序是最笨的一個辦法。第二步:廠家或者網(wǎng)上的演示驅(qū)動程序大部分都是很亂,沒有規(guī)則的,但是不用怕,只要根據(jù)“吳堅鴻液晶顯示三大類定律“的指導(dǎo)思想,在別人的演示驅(qū)動程序中尋找到最核心的東西,也就是顯示的基本單位是屬于三種類型中的哪一種,最后根據(jù)顯示單位的類型自己動手編寫幾個最核心的程序void zf_display816, void hz_display1616, void hz_display2424就夠了,其它初始化的寄存器參數(shù)從來不用管,照抄就可以了。彩色320240液

4、晶屏實際上就是由一塊彩色320240液晶屏組成的,沒有分屏合并的概念。彩色320240屏在橫向上是320個點,縱向上是240個點,也就是一個長方形的屏。因為它屬于第三大類的屏,所以X軸坐標數(shù)值的最大范圍是320-1=319,而縱向坐標數(shù)值的最大范圍是240-1=239. 正常的操作思路是這樣的,先設(shè)置要顯示的點的顏色,然后就顯示對應(yīng)的點。要顯示對應(yīng)的點,只要在顯示子程序中發(fā)送X軸與Y軸的位置數(shù)據(jù),就相當于顯示某個具體位置的點。                   &

5、#160;橫向取模,字節(jié)正序與倒序的概念解釋:當我們一次在橫向上顯示八個點的基本單位時,實際上等于我們發(fā)送了一個字節(jié)的顯示數(shù)據(jù),比如0x01,如果是正序的屏,那么從左到右的八個點中,只有第8個點是顯示的,其它的是空白,而如果是倒序的屏,則只有第1個點是顯示的,其它是空白的。彩色320240這個屏因為是第三類的屏,所以無論是橫向或者縱向,正序或者倒序都可以操作,關(guān)鍵是看你寫的驅(qū)動程序是按什么模式來寫的。我這節(jié)是以橫向順序屏的模式來寫彩色320240的驅(qū)動程序。               

6、0;   取模軟件是必須的,讀者可以在網(wǎng)上自己下載,資料很多。(2)功能需求:        在彩色320240屏上分別顯示8X16的字符,16X16的漢字,24X24的漢字。(3)硬件原理:彩屏不用可調(diào)電阻調(diào)對比度,其它的跟一般的單色屏差不多。模塊與背光的電源線接上5V,其它數(shù)據(jù)線跟單片機的IO口連接上。這個大家都懂。(4)源碼適合的單片機:pic18f4520,晶振為22.1184MHz。(5)源代碼講解如下:#include<pic18.h>#define uchar unsigned char 

7、#define uint  unsigned int #define ulong unsigned long #define RED     0xf800     /顯示不同的顏色配置參數(shù)#define GREEN   0x07e0#define BLUE    0x001f#define YELLOW  0xffe0#define CYAN    0x07ff#define MAGENTA 0x

8、f81f#define BLACK   0x0000#define WHITE   0xffff#define GRAY    0x8410#define hi_re 0xf800       /顯示不同的顏色配置參數(shù)#define hi_or 0xfc00#define hi_ye 0xffb0#define hi_yg 0x87e0#define hi_gr 0x07e0#define hi_gc 0x07f0#define hi_cy 0x07ff#define hi_cb 0x041f#

9、define hi_bl 0x001f#define hi_bm 0x801f#define hi_ma 0xf8f1#define hi_mr 0xf810/補充說明:吳堅鴻程序風格是這樣的,凡是輸出IO后綴都是_dr,凡是輸入的/IO后綴都/是_sr,凡是數(shù)據(jù)總線后綴都是_bus#define LCDBUS    LATD#define  _CS_dr    LATC4#define  _RES_dr   LATC5#define  A1_dr   &

10、#160; LATC3#define  _WR_dr    LATB2#define  _RD_dr    LATB1void delay(unsigned int t);/時序延時子程序void screen_clear ();/清空屏幕的內(nèi)容,實際上相當于整屏涂上白色背景void SDIN_0();   /液晶驅(qū)動程序的一部分,不用知道具體含義,照抄就行void SDIN_1();void SCLK_0();void SCLK_1();void SENA_0();void SENA

11、_1();void write_com(unsigned char cmdcode);/寫命令到LCD,,驅(qū)動液晶程序的一部分void write_com_pkg(const unsigned char *pkg);/一次寫4個字節(jié)的包裹命令到LCD,,驅(qū)動液晶程序的一部分void SetFgColor(uint color);/設(shè)置顯示的顏色,在顯示字體或者任何點陣前,必須先設(shè)置將要顯示的顏色,驅(qū)動液晶程序的一部分void Draw_Line(uint x1,uint y1,uint x2,uint y2);/畫直線,原廠配套的演示驅(qū)動程序,不是本節(jié)的重點,x1,y1為直線的起點坐標,x2,

12、y2為直線的終點坐標,void Draw_Rect(uint x1,uint y1,uint x2,uint y2);/畫矩形,原廠配套的演示驅(qū)動程序,不是本節(jié)的重點,x1,y1為矩形的起點坐標,x2,y2為矩形對角的終點坐標,void Fill_Rect(uint x1,uint y1,uint x2,uint y2);/畫填充矩形,原廠配套的演示驅(qū)動程序,不是本節(jié)的重點,x1,y1為矩形的起點坐標,x2,y2為矩形對角的終點坐標,/顯示一個基本單位-在任意一個位置顯示一個點,正是本節(jié)苦苦尋找的東西,本節(jié)的核心內(nèi)容/x1和y1是要顯示的某個具體點的坐標位置,我們是根據(jù)這個基本點來編寫我們的各

13、種不同字體的程序void dwg_pixel(uint x1,uint y1);void SdRegVal(uchar RegAdd, uchar RegDat);/配置液晶內(nèi)部驅(qū)動寄存器的函數(shù),不是本節(jié)重點,在初始化里照抄即可/顯示8X16的字符函數(shù),本節(jié)的核心內(nèi)容。col代表X軸,pag代表Y軸,zk代表顯示相對應(yīng)的字庫,/因為是彩屏,不存在反顯或者正顯,顯示之前要先設(shè)置一下想要顯示內(nèi)容的顏色即可。void zf_display816(unsigned char col, unsigned char pag,const unsigned char  *zk);/顯示16

14、X16的漢字函數(shù),本節(jié)的核心內(nèi)容。col代表X軸,pag代表Y軸,zk代表顯示相對應(yīng)的字庫,/因為是彩屏,不存在反顯或者正顯,顯示之前要先設(shè)置一下想要顯示內(nèi)容的顏色即可。void hz_display1616(unsigned char col, unsigned char pag,const unsigned char  *zk);/顯示24X24的漢字函數(shù),本節(jié)的核心內(nèi)容。col代表X軸,pag代表Y軸,zk代表顯示相對應(yīng)的字庫,/因為是彩屏,不存在反顯或者正顯,顯示之前要先設(shè)置一下想要顯示內(nèi)容的顏色即可。void hz_display2424(unsigned cha

15、r col, unsigned char pag,const unsigned char  *zk);void init_lcd();/初始化LCD屏unsigned char GpioData;     / 液晶驅(qū)動程序用到的全局變量unsigned char BitData;      / 液晶驅(qū)動程序用到的全局變量const unsigned char Set_F500=4,0x83,0x00,0xf5,0x00;  /一下為配置驅(qū)動芯片寄存器的一些參數(shù),照抄即可,不用

16、過問具體含義const unsigned char Set_F504=4,0x83,0x04,0xf5,0x04;  const unsigned char Set_F505=4,0x83,0x05,0xf5,0x80;  const unsigned char Set_F6C4=4,0x83,0xc4,0xf6,0x10;  const unsigned char Set_F080=4,0x83,0x80,0xf0,0xfc;  const unsigned char Set_F08E=4,0x83,0x8e,0

17、xf0,0x32; const unsigned char Set_F090=4,0x83,0x90,0xf0,0x12;const unsigned char Set_F091=4,0x83,0x91,0xf0,0x26;  const unsigned char Set_F092=4,0x83,0x92,0xf0,0x1f;  const unsigned char Set_F094=4,0x83,0x94,0xf0,0x0a; const unsigned char Set_F095=4,0x83,0x95,0xf0,0x06;

18、  const unsigned char Set_F096=4,0x83,0x96,0xf0,0x06;  const unsigned char Set_8F=7,0x8f,0x69,0x45,0x61,0x67,0x6c,0x65;const unsigned char Set_F240=4,0x83,0x40,0xf2,0x00; const unsigned char Set_F241=4,0x83,0x41,0xf2,0x3f; /補充說明:吳堅鴻程序風格是這樣的,凡是字庫內(nèi)容,如果是字符,則前綴用zf,然后緊/跟著點陣數(shù)

19、,接著下劃線,最后緊跟顯示的字符。如果有重復(fù)的,則多加一個序列號標識。如果是漢字,則前綴用hz,其它的一樣。const unsigned char zf816_V=/從取模軟件中復(fù)制的字庫,橫向取模,字節(jié)正序/*-  文字:  V  -*/*-  宋體12;  此字體下對應(yīng)的點陣為:寬x高=8x16   -*/0x00,0x00,0x00,0xE7,0x42,0x42,0x44,0x24,0x24,0x28,0x28,0x18,0x10,0x10,0x00,0x00,;con

20、st unsigned char zf816_5=/*-  文字:  5  -*/*-  宋體12;  此字體下對應(yīng)的點陣為:寬x高=8x16   -*/0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,;const unsigned char hz1616_hong=/*-  文字:  鴻  -*/*-&#

21、160; 宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   -*/0x40,0x20,0x20,0x40,0x20,0xFC,0x0E,0xC4,0x84,0xA4,0x54,0xA4,0x54,0x8C,0x24,0x80,0x24,0xFE,0x26,0x02,0xD8,0x02,0x43,0xFA,0x40,0x02,0x40,0x02,0x40,0x0A,0x00,0x04,;const unsigned char hz1616_ge=/*-  文字:  哥  -*/

22、*-  宋體12;  此字體下對應(yīng)的點陣為:寬x高=16x16   -*/0x00,0x00,0x7F,0xFC,0x00,0x10,0x1F,0x90,0x10,0x90,0x1F,0x90,0x10,0x90,0x00,0x04,0xFF,0xFE,0x00,0x10,0x1F,0x90,0x10,0x90,0x1F,0x90,0x10,0x90,0x00,0x50,0x00,0x20,;const unsigned char hz2424_hong=/*-  文字:  鴻 

23、60;-*/*-  宋體18;  此字體下對應(yīng)的點陣為:寬x高=24x24   -*/0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xC0,0x08,0x00,0x80,0x0C,0x01,0x00,0x00,0x17,0xF8,0x03,0xFC,0x18,0x44,0x44,0x98,0x24,0x44,0xD0,0x34,0x44,0x10,0x14,0x44,0x10,0x08,0x44,0x70,0x08,0x44,0x20,0x08,0x44,0x04,0x08,0x57,0xFC,0x

24、08,0xE0,0x0C,0x33,0x00,0x0C,0x10,0x00,0x6C,0x10,0x3F,0x98,0x10,0x00,0x08,0x10,0x00,0x08,0x18,0x00,0xF8,0x18,0x00,0x30,0x00,0x00,0x00,;const unsigned char hz2424_ge=/*-  文字:  哥  -*/*-  宋體18;  此字體下對應(yīng)的點陣為:寬x高=24x24   -*/0x00,0x00,0x00,0x00,0x0

25、0,0x00,0x00,0x00,0x10,0x1F,0xFF,0xF8,0x00,0x00,0x40,0x02,0x08,0x40,0x03,0xF8,0x40,0x02,0x08,0x40,0x02,0x08,0x40,0x03,0xF8,0x40,0x00,0x00,0x40,0x00,0x00,0x0C,0x1F,0xFF,0xF0,0x00,0x00,0x40,0x07,0xF8,0x40,0x06,0x08,0x40,0x06,0x08,0x40,0x06,0x08,0x40,0x07,0xF8,0x40,0x06,0x08,0x40,0x00,0x00,0x40,0x00,0x0

26、3,0xC0,0x00,0x00,0xC0,0x00,0x00,0x00,;/主程序main()            ADCON0=0x00;      ADCON1=0x0f;                               /全部為數(shù)字信號    AD

27、CON2=0xa1;                               /右對齊    RBPU=0;    SSPEN=0;                          &

28、#160;        /決定RA5不作為串口    TRISD=0x00;  /配置驅(qū)動液晶IO口為輸出    TRISC4=0;    TRISC5=0;    TRISC3=0;    TRISB2=0;    TRISB1=0;    /補充說明,以上的內(nèi)容為寄存器配置,每種不同的單片機會有點差異,    /大家不用過度關(guān)注以上寄存器的配置,只要知

29、道有這么一回事即可      init_lcd();   /初始化液晶屏    screen_clear ();/清空整屏顯示內(nèi)容,相當于把整屏涂上白色背景    /左邊,綠顏色,16X16的漢字,鴻哥V5,X軸的范圍是0到319    SetFgColor(GREEN);  /設(shè)置字體為綠顏色    hz_display1616(0, 0,hz1616_hong);     hz_display1616(

30、16, 0,hz1616_ge);     zf_display816(32, 0,zf816_V);     zf_display816(40, 0,zf816_5);     /右邊,黃顏色,24X24的漢字,鴻哥,X軸的范圍是0到319    SetFgColor(YELLOW);  /設(shè)置字體為黃顏色    hz_display2424(310, 0,hz2424_hong);     hz_display2

31、424(334, 0,hz2424_ge);     while(1)               CLRWDT(); /喂看門狗,大家不用過度關(guān)注此行   /-時序延時子程序-void delay(unsigned int t)   unsigned int i;   unsigned int j;   for(i=0;i<t;i+)    

32、;     for(j=0; j<109; j+)                  asm("nop");         /*-清空屏幕的內(nèi)容,實際上相當于整屏涂上白色背景-*/void screen_clear ()   SetFgColor(WHITE);  /先設(shè)置將要顯示的白顏色   Fil

33、l_Rect(0,0,319,239); /填充一個320X240的白色矩形,相當于清屏void SDIN_0()   /液晶驅(qū)動程序的一部分,不用知道具體含義,照抄就行   GpioData=GpioData&0xf7;void SDIN_1()   GpioData=GpioData|0x08;void SCLK_0()   GpioData=GpioData&0xfb;void SCLK_1()   GpioData=GpioData|0x04;void SENA_0()&

34、#160;  GpioData=GpioData&0xfd;void SENA_1()   GpioData=GpioData|0x02;/-寫命令到LCD,,驅(qū)動液晶程序的一部分-void write_com(unsigned char cmdcode)    A1_dr = 0;                         LCDBUS = cmdcode; 

35、  _CS_dr = 0;                    _WR_dr = 0;    _WR_dr = 1;    _CS_dr = 1;                /-一次寫4個字節(jié)的包裹命令到LCD,,驅(qū)動液晶程序的一部分-void write_com_pkg(const unsigned

36、char *pkg)    uchar i;    for(i=*pkg;i;i-)                       A1_dr = 0;            LCDBUS = *(+pkg);           _CS_dr=0;&

37、#160;           _WR_dr=0;           _WR_dr=1;           _CS_dr=1;         A1_dr = 1;     LCDBUS = 1;         &

38、#160;         _CS_dr = 0;     _WR_dr = 0;    _WR_dr = 1;   _CS_dr = 1;  /-設(shè)置顯示的顏色,在顯示字體或者任何點陣前,必須先設(shè)置將要顯示的顏色,驅(qū)動液晶程序的一部分-void SetFgColor(uint color)    uchar Buffer4;    Buffer0=3; Buffer1=0x20; Buffer2=colo

39、r; Buffer3=color>>8;    write_com_pkg(Buffer);/畫直線,原廠配套的演示驅(qū)動程序,不是本節(jié)的重點,x1,y1為直線的起點坐標,x2,y2為直線的終點坐標,void Draw_Line(uint x1,uint y1,uint x2,uint y2)    uchar Buffer10;    Buffer0=9;    Buffer1=0x24;    Buffer2=x1; Buffer3=x1>>8;   

40、; Buffer4=y1; Buffer5=y1>>8;    Buffer6=x2; Buffer7=x2>>8;    Buffer8=y2; Buffer9=y2>>8;    write_com_pkg(Buffer);    delay(20);    delay(20);/畫矩形,原廠配套的演示驅(qū)動程序,不是本節(jié)的重點,x1,y1為矩形的起點坐標,x2,y2為矩形對角的終點坐標,void Draw_Rect(uint x1,uint y1,uint

41、 x2,uint y2)    uchar Buffer10;    Buffer0=9;    Buffer1=0x26;    Buffer2=x1; Buffer3=x1>>8;    Buffer4=y1; Buffer5=y1>>8;    Buffer6=x2; Buffer7=x2>>8;    Buffer8=y2; Buffer9=y2>>8;    write_com_

42、pkg(Buffer);    delay(20);    delay(20);/畫填充矩形,原廠配套的演示驅(qū)動程序,不是本節(jié)的重點,x1,y1為矩形的起點坐標,x2,y2為矩形對角的終點坐標,void Fill_Rect(uint x1,uint y1,uint x2,uint y2)    uchar Buffer10;    Buffer0=9;    Buffer1=0x27;    Buffer2=x1; Buffer3=x1>>8;  

43、60; Buffer4=y1; Buffer5=y1>>8;    Buffer6=x2; Buffer7=x2>>8;    Buffer8=y2; Buffer9=y2>>8;    write_com_pkg(Buffer);    delay(20);    delay(20);/顯示一個基本單位-在任意一個位置顯示一個點,正是本節(jié)苦苦尋找的東西,本節(jié)的核心內(nèi)容/x1和y1是要顯示的某個具體點的坐標位置,我們是根據(jù)這個基本點來編寫我們的各種不同字體的程

44、序void dwg_pixel(uint x1,uint y1)    uchar Buffer6;    Buffer0=5;    Buffer1=0x23;    Buffer2=x1; Buffer3=x1>>8;    Buffer4=y1; Buffer5=y1>>8;    write_com_pkg(Buffer);/配置液晶內(nèi)部驅(qū)動寄存器的函數(shù),不是本節(jié)重點,在初始化里照抄即可void SdRegVal(uchar RegAdd, u

45、char RegDat)   uchar i, Buffer5;   BitData=(RegAdd<<2)+3;            for(i=0; i<8; i+)                        SENA_0();       

46、  SCLK_0();         if(BitData&0x80)=0x80)                     SDIN_1();                  else        

47、0;            SDIN_0();                  Buffer0=4; Buffer1=0x83; Buffer2=0x41; Buffer3=0xf2; Buffer4=GpioData; write_com_pkg(Buffer);         SCLK_1();    

48、;           Buffer0=4; Buffer1=0x83; Buffer2=0x41; Buffer3=0xf2; Buffer4=GpioData; write_com_pkg(Buffer);         SCLK_0();           Buffer0=4; Buffer1=0x83; Buffer2=0x41; Buffer3=0xf2; Buffer4=

49、GpioData; write_com_pkg(Buffer);             BitData=BitData<<1;      BitData=RegDat;    for(i=0; i<8; i+)                      SENA_0();

50、0;     SCLK_0();      if(BitData&0x80)=0x80)               SDIN_1();            else               SDIN_0();   

51、         Buffer0=4; Buffer1=0x83; Buffer2=0x41; Buffer3=0xf2; Buffer4=GpioData; write_com_pkg(Buffer);        SCLK_1();                Buffer0=4; Buffer1=0x83; Buffer2=0x41; Buffer3=0xf

52、2; Buffer4=GpioData; write_com_pkg(Buffer);      SCLK_0();          Buffer0=4; Buffer1=0x83; Buffer2=0x41; Buffer3=0xf2; Buffer4=GpioData; write_com_pkg(Buffer);          BitData=BitData<<1;    

53、       SENA_1();       Buffer0=4; Buffer1=0x83; Buffer2=0x41; Buffer3=0xf2; Buffer4=GpioData; write_com_pkg(Buffer);/顯示8X16的字符函數(shù),本節(jié)的核心內(nèi)容。col代表X軸,pag代表Y軸,zk代表顯示相對應(yīng)的字庫,/因為是彩屏,不存在反顯或者正顯,顯示之前要先設(shè)置一下想要顯示內(nèi)容的顏色即可。void zf_display816(unsigned char col, unsigne

54、d char pag,const unsigned char  *zk)   unsigned char j=0,i=0,k=0;   unsigned char zf_temp=0;   for(j=0;j<16;j+)  /此處j代表Y軸的數(shù)據(jù),也就是顯示第幾行了,一個8X16字符只占用16行         for(i=0;i<1;i+) /此處i代表X軸的數(shù)據(jù),一行8個點,共1個字節(jié),每發(fā)送一個字節(jié)的顯示數(shù)據(jù),都要把

55、這個字節(jié)分解成8個點依次顯示               zf_temp=zkj*1+i;  /發(fā)送顯示的字節(jié)數(shù)據(jù),一行1個字節(jié),因此1*j         for(k=0;k<8;k+)  /把一個字節(jié)分解成8個點,一個點一個點來顯示                  &

56、#160;  if(zf_temp&0x80)=0x80)                           dwg_pixel(col+i*8+k,pag+j);  /顯示一個點                       &#

57、160;zf_temp=zf_temp<<1;                  /顯示16X16的漢字函數(shù),本節(jié)的核心內(nèi)容。col代表X軸,pag代表Y軸,zk代表顯示相對應(yīng)的字庫,/因為是彩屏,不存在反顯或者正顯,顯示之前要先設(shè)置一下想要顯示內(nèi)容的顏色即可。void hz_display1616(unsigned char col, unsigned char pag,const unsigned char  *zk)  

58、0;unsigned char j=0,i=0,k=0;   unsigned char zf_temp=0;   for(j=0;j<16;j+)  /此處j代表Y軸的數(shù)據(jù),也就是顯示第幾行了,一個16X16漢字只占用16行         for(i=0;i<2;i+) /此處i代表X軸的數(shù)據(jù),一行16個點,共2個字節(jié),每發(fā)送一個字節(jié)的顯示數(shù)據(jù),都要把這個字節(jié)分解成8個點依次顯示         &#

59、160;     zf_temp=zkj*2+i;  /發(fā)送顯示的字節(jié)數(shù)據(jù),一行2個字節(jié),因此2*j         for(k=0;k<8;k+)  /把一個字節(jié)分解成8個點,一個點一個點來顯示                     if(zf_temp&0x80)=0x80)   

60、0;                       dwg_pixel(col+i*8+k,pag+j);  /顯示一個點                        zf_temp=zf_temp<<1;      

61、            /顯示24X24的漢字函數(shù),本節(jié)的核心內(nèi)容。col代表X軸,pag代表Y軸,zk代表顯示相對應(yīng)的字庫,/因為是彩屏,不存在反顯或者正顯,顯示之前要先設(shè)置一下想要顯示內(nèi)容的顏色即可。void hz_display2424(unsigned char col, unsigned char pag,const unsigned char  *zk)   unsigned char j=0,i=0,k=0;   unsigned char

62、zf_temp=0;   for(j=0;j<24;j+)  /此處j代表Y軸的數(shù)據(jù),也就是顯示第幾行了,一個24X24的漢字只占用24行         for(i=0;i<3;i+) /此處i代表X軸的數(shù)據(jù),一行24個點,共3個字節(jié),每發(fā)送一個字節(jié)的顯示數(shù)據(jù),都要把這個字節(jié)分解成8個點依次顯示               zf_temp=zkj*3+i;  /發(fā)送顯示的字節(jié)數(shù)據(jù),一行3個字節(jié),因此3*j         for(k=0;k<8;k+)  /把一個字節(jié)分解成8個點,一個點一個

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論