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

下載本文檔

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

文檔簡(jiǎn)介

1、第十六節(jié):液晶屏第三大類定律任意位置顯示一個(gè)點(diǎn)(彩色320240點(diǎn)陣屏)            第三大類定律:任意位置顯示一個(gè)點(diǎn)的類型。這類液晶屏在任意位置上以一個(gè)點(diǎn)為基本單位,因此X坐標(biāo)數(shù)值的最大范圍就直接是橫向上的點(diǎn)陣數(shù)減去一(因?yàn)閺牧汩_(kāi)始)。而Y坐標(biāo)數(shù)值的最大范圍就直接是縱向上的點(diǎn)陣數(shù)減去一(因?yàn)閺牧汩_(kāi)始)。(1)        開(kāi)場(chǎng)白:      這節(jié) 我以彩色320240點(diǎn)陣屏為例子,來(lái)繼續(xù)深入了解第三大類定律:任意位置顯示一

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

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

4、晶屏實(shí)際上就是由一塊彩色320240液晶屏組成的,沒(méi)有分屏合并的概念。彩色320240屏在橫向上是320個(gè)點(diǎn),縱向上是240個(gè)點(diǎn),也就是一個(gè)長(zhǎng)方形的屏。因?yàn)樗鼘儆诘谌箢惖钠?,所以X軸坐標(biāo)數(shù)值的最大范圍是320-1=319,而縱向坐標(biāo)數(shù)值的最大范圍是240-1=239. 正常的操作思路是這樣的,先設(shè)置要顯示的點(diǎn)的顏色,然后就顯示對(duì)應(yīng)的點(diǎn)。要顯示對(duì)應(yīng)的點(diǎn),只要在顯示子程序中發(fā)送X軸與Y軸的位置數(shù)據(jù),就相當(dāng)于顯示某個(gè)具體位置的點(diǎn)。                   &

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

6、0;   取模軟件是必須的,讀者可以在網(wǎng)上自己下載,資料很多。(2)功能需求:        在彩色320240屏上分別顯示8X16的字符,16X16的漢字,24X24的漢字。(3)硬件原理:彩屏不用可調(diào)電阻調(diào)對(duì)比度,其它的跟一般的單色屏差不多。模塊與背光的電源線接上5V,其它數(shù)據(jù)線跟單片機(jī)的IO口連接上。這個(gè)大家都懂。(4)源碼適合的單片機(jī):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/補(bǔ)充說(shuō)明:吳堅(jiān)鴻程序風(fēng)格是這樣的,凡是輸出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);/時(shí)序延時(shí)子程序void screen_clear ();/清空屏幕的內(nèi)容,實(shí)際上相當(dāng)于整屏涂上白色背景void SDIN_0();   /液晶驅(qū)動(dòng)程序的一部分,不用知道具體含義,照抄就行void SDIN_1();void SCLK_0();void SCLK_1();void SENA_0();void SENA

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

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

13、種不同字體的程序void dwg_pixel(uint x1,uint y1);void SdRegVal(uchar RegAdd, uchar RegDat);/配置液晶內(nèi)部驅(qū)動(dòng)寄存器的函數(shù),不是本節(jié)重點(diǎn),在初始化里照抄即可/顯示8X16的字符函數(shù),本節(jié)的核心內(nèi)容。col代表X軸,pag代表Y軸,zk代表顯示相對(duì)應(yīng)的字庫(kù),/因?yàn)槭遣势?,不存在反顯或者正顯,顯示之前要先設(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代表顯示相對(duì)應(yīng)的字庫(kù),/因?yàn)槭遣势?,不存在反顯或者正顯,顯示之前要先設(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代表顯示相對(duì)應(yīng)的字庫(kù),/因?yàn)槭遣势?,不存在反顯或者正顯,顯示之前要先設(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ū)動(dòng)程序用到的全局變量unsigned char BitData;      / 液晶驅(qū)動(dòng)程序用到的全局變量const unsigned char Set_F500=4,0x83,0x00,0xf5,0x00;  /一下為配置驅(qū)動(dòng)芯片寄存器的一些參數(shù),照抄即可,不用

16、過(guò)問(wèn)具體含義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; /補(bǔ)充說(shuō)明:吳堅(jiān)鴻程序風(fēng)格是這樣的,凡是字庫(kù)內(nèi)容,如果是字符,則前綴用zf,然后緊/跟著點(diǎn)陣數(shù)

19、,接著下劃線,最后緊跟顯示的字符。如果有重復(fù)的,則多加一個(gè)序列號(hào)標(biāo)識(shí)。如果是漢字,則前綴用hz,其它的一樣。const unsigned char zf816_V=/從取模軟件中復(fù)制的字庫(kù),橫向取模,字節(jié)正序/*-  文字:  V  -*/*-  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬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ù)字信號(hào)    AD

27、CON2=0xa1;                               /右對(duì)齊    RBPU=0;    SSPEN=0;                          &

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

29、道有這么一回事即可      init_lcd();   /初始化液晶屏    screen_clear ();/清空整屏顯示內(nèi)容,相當(dāng)于把整屏涂上白色背景    /左邊,綠顏色,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(); /喂看門(mén)狗,大家不用過(guò)度關(guān)注此行   /-時(shí)序延時(shí)子程序-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)容,實(shí)際上相當(dāng)于整屏涂上白色背景-*/void screen_clear ()   SetFgColor(WHITE);  /先設(shè)置將要顯示的白顏色   Fil

33、l_Rect(0,0,319,239); /填充一個(gè)320X240的白色矩形,相當(dāng)于清屏void SDIN_0()   /液晶驅(qū)動(dòng)程序的一部分,不用知道具體含義,照抄就行   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;/-寫(xiě)命令到LCD,,驅(qū)動(dòng)液晶程序的一部分-void write_com(unsigned char cmdcode)    A1_dr = 0;                         LCDBUS = cmdcode; 

35、  _CS_dr = 0;                    _WR_dr = 0;    _WR_dr = 1;    _CS_dr = 1;                /-一次寫(xiě)4個(gè)字節(jié)的包裹命令到LCD,,驅(qū)動(dòng)液晶程序的一部分-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è)置顯示的顏色,在顯示字體或者任何點(diǎn)陣前,必須先設(shè)置將要顯示的顏色,驅(qū)動(dòng)液晶程序的一部分-void SetFgColor(uint color)    uchar Buffer4;    Buffer0=3; Buffer1=0x20; Buffer2=colo

39、r; Buffer3=color>>8;    write_com_pkg(Buffer);/畫(huà)直線,原廠配套的演示驅(qū)動(dòng)程序,不是本節(jié)的重點(diǎn),x1,y1為直線的起點(diǎn)坐標(biāo),x2,y2為直線的終點(diǎn)坐標(biāo),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);/畫(huà)矩形,原廠配套的演示驅(qū)動(dòng)程序,不是本節(jié)的重點(diǎn),x1,y1為矩形的起點(diǎn)坐標(biāo),x2,y2為矩形對(duì)角的終點(diǎn)坐標(biāo),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);/畫(huà)填充矩形,原廠配套的演示驅(qū)動(dòng)程序,不是本節(jié)的重點(diǎn),x1,y1為矩形的起點(diǎn)坐標(biāo),x2,y2為矩形對(duì)角的終點(diǎn)坐標(biāo),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);/顯示一個(gè)基本單位-在任意一個(gè)位置顯示一個(gè)點(diǎn),正是本節(jié)苦苦尋找的東西,本節(jié)的核心內(nèi)容/x1和y1是要顯示的某個(gè)具體點(diǎn)的坐標(biāo)位置,我們是根據(jù)這個(gè)基本點(diǎn)來(lái)編寫(xiě)我們的各種不同字體的程

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ū)動(dòng)寄存器的函數(shù),不是本節(jié)重點(diǎn),在初始化里照抄即可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代表顯示相對(duì)應(yīng)的字庫(kù),/因?yàn)槭遣势?,不存在反顯或者正顯,顯示之前要先設(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ù),也就是顯示第幾行了,一個(gè)8X16字符只占用16行         for(i=0;i<1;i+) /此處i代表X軸的數(shù)據(jù),一行8個(gè)點(diǎn),共1個(gè)字節(jié),每發(fā)送一個(gè)字節(jié)的顯示數(shù)據(jù),都要把

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

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

57、160;zf_temp=zf_temp<<1;                  /顯示16X16的漢字函數(shù),本節(jié)的核心內(nèi)容。col代表X軸,pag代表Y軸,zk代表顯示相對(duì)應(yīng)的字庫(kù),/因?yàn)槭遣势粒淮嬖诜达@或者正顯,顯示之前要先設(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ù),也就是顯示第幾行了,一個(gè)16X16漢字只占用16行         for(i=0;i<2;i+) /此處i代表X軸的數(shù)據(jù),一行16個(gè)點(diǎn),共2個(gè)字節(jié),每發(fā)送一個(gè)字節(jié)的顯示數(shù)據(jù),都要把這個(gè)字節(jié)分解成8個(gè)點(diǎn)依次顯示         &#

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

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

61、            /顯示24X24的漢字函數(shù),本節(jié)的核心內(nèi)容。col代表X軸,pag代表Y軸,zk代表顯示相對(duì)應(yīng)的字庫(kù),/因?yàn)槭遣势?,不存在反顯或者正顯,顯示之前要先設(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ù),也就是顯示第幾行了,一個(gè)24X24的漢字只占用24行         for(i=0;i<3;i+) /此處i代表X軸的數(shù)據(jù),一行24個(gè)點(diǎn),共3個(gè)字節(jié),每發(fā)送一個(gè)字節(jié)的顯示數(shù)據(jù),都要把這個(gè)字節(jié)分解成8個(gè)點(diǎn)依次顯示               zf_temp=zkj*3+i;  /發(fā)送顯示的字節(jié)數(shù)據(jù),一行3個(gè)字節(jié),因此3*j         for(k=0;k<8;k+)  /把一個(gè)字節(jié)分解成8個(gè)點(diǎn),一個(gè)點(diǎn)一個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論