|
- #include "LCD.h"
- unchar code tab1[]={
- "成都市飛宇達(dá)中文字庫(kù)液晶模塊"
- "支持文字與繪圖兩種混和顯示模式 "
- "支持2 Page 顯示模式(And, Or, Nor, Xor) "
- "內(nèi)建兩個(gè)顯示 RAM,可做成4 灰階的顯示效果"
- "內(nèi)建中文字庫(kù)儲(chǔ)存7602個(gè)標(biāo)準(zhǔn)GB碼的簡(jiǎn)體中文"
- "提供全角(16x16)與半角(8x16) 文字顯示模式"
- "內(nèi)建8x8 鍵盤(pán)掃瞄界面(Key Scan) "
- "光標(biāo)、反白、閃爍功能,光標(biāo)高度與寬度可調(diào)"
- "支持屏幕水平卷動(dòng)及垂直卷動(dòng)功能 "
- "內(nèi)建512Byte SRAM 可自行造字 "
- "提供中/英文文字對(duì)齊功能 "
- "顯示字型可放大到32x32、48x48 或64x64 "
- "支持可將字型由ROM 直接讀出使用 "
- "內(nèi)建粗體字形與行距設(shè)定 "
- "內(nèi)建10-Bit ADC 支持觸控屏幕應(yīng)用 "
- };
- unchar d,h,m,s,n;
- unchar xHzTable1[64];
- //定義中文字庫(kù)
- unchar code HZTable1[32]={
- 0x02,0x00,0x02,0x00,0x02,0x04,0x7F,0xFE,0x04,0x40,0x04,0x40,0x04,0x4C,0x0C,0x70,
- 0x0A,0x40,0x0A,0xA0,0x10,0xA0,0x11,0x10,0x22,0x18,0x24,0x0E,0x48,0x04,0x00,0x00,
- };//灰
- unchar code HZTable2[32]={
- 0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x2F,0xFC,0x22,0x20,0x23,0xE0,
- 0x20,0x00,0x27,0xF8,0x22,0x10,0x21,0x20,0x20,0xC0,0x41,0x30,0x46,0x0E,0x98,0x04,
- };//度
- unchar code HZTable3[32]={
- 0x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x04,0x40,0x04,0x40,
- 0x44,0x48,0x24,0x48,0x14,0x50,0x14,0x60,0x04,0x40,0xFF,0xFE,0x00,0x00,0x00,0x00,
- };//顯
- unchar code HZTable4[32]={
- 0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,
- 0x11,0x20,0x11,0x10,0x21,0x08,0x41,0x0C,0x81,0x04,0x01,0x00,0x05,0x00,0x02,0x00,
- }; //示
- //$$$$$$$$$$$$
- unchar LCD_CmdRead(unchar Addr)
- {
- unchar Data;
- cs1=0;
- rs=1;
- rd=1;
- BUS=Addr;
- wr=0;
- wr=1;
- BUS=0XFF;
- rs=0;
- wr=1;
- rd=1;
- rd=0;
- Data=BUS;
- return Data;
- }
- //$$$$$$$$$$$$
- void LCD_CmdWrite(unchar cmdaddr)//8080
- { cs1=0;
- rd=1;
- rs=1;
- BUS=cmdaddr;
- wr=0;
- wr=1;
- cs1=1;
- }
- //$$$$$$$$$$$$
- void LCD_DataWrite(unchar wrdata)
- {
- while(busy==0);
- cs1=0;
- rd=1;
- rs=0;
- BUS=wrdata;
- wr=0;
- wr=1;
- cs1=1;
- }
- ///////////////////////////////////////////
- void No_Snow_Mode(void)
- {
- unchar temp;
- temp=LCD_CmdRead(MISC);
- temp&=0x7f;
- LCD_CmdWrite(MISC);
- LCD_DataWrite(temp);
- }
- ///////////////////////////////////////////
- void Snow_Mode(void)
- {
- unchar temp;
- temp=LCD_CmdRead(MISC);
- temp|=0x80;
- LCD_CmdWrite(MISC);
- LCD_DataWrite(temp);
- }
- //******************X,Y坐標(biāo)定位******************
- void LCD_GotoXY(unchar xx,unchar yy)
- { LCD_CmdWrite(CURX);
- LCD_DataWrite(xx);
- LCD_CmdWrite(CURY);
- LCD_DataWrite(yy);
- }
- //***********存取DDRAM2*******************************
- void Access_Page2(void)
- {
- unchar temp;
- temp=LCD_CmdRead(MAMR);
- temp &=0xfe;
- temp |=0x02;
- LCD_CmdWrite(MAMR);
- LCD_DataWrite(temp);
- }
- //$$$$$$$$$$$$
- void displays(unchar *m)
- {
- unint iiii=0,pppp=0,c=0,eeee=0;
- Snow_Mode();
- LCD_CmdWrite(WLCR);
- LCD_DataWrite(0x04);
- LCD_CmdWrite(CURX);
- LCD_DataWrite(0x00);
- LCD_CmdWrite(CURY);
- LCD_DataWrite(0x00);
- LCD_CmdWrite(MWCR);
- for(eeee=0;eeee<3;eeee++)
- {
- c=0;
- for(iiii=0;iiii<80;iiii++)
- {
- for(pppp=0;pppp<40;pppp++)
- {
- LCD_DataWrite(m[c++]);
- }
- }
- }
- }
- //$$$$$$$$$$$$
- void lcd_grayscale_mode()
- {
- unchar temp;
- temp=LCD_CmdRead(MAMR);
- temp&=0x8f;
- temp|=0x03;
- LCD_CmdWrite(MAMR);
- LCD_DataWrite(temp);
- }
- //$$$$$$$$$$$$
- void display_gray(unchar x,unsigned char y,unchar *m)
- {
- unchar temp_x,temp_y;
- unint iiii=0,jjjj=0,c=0;
- temp_x=x;temp_y=y;
- Snow_Mode();
- LCD_CmdWrite(WLCR);
- LCD_DataWrite(0x04);
- lcd_grayscale_mode();
- for(iiii=0;iiii<128;iiii++)
- {
- LCD_GotoXY(temp_x,temp_y+iiii);
- LCD_CmdWrite(0xb0);
- for(jjjj=0;jjjj<40;jjjj++)
- {
- LCD_DataWrite(m[c++]);
- }
- }
- }
- ///////////////////////////////////////////
- void HzConvert(unchar *Hztable0,unchar *Hztable,unint number)
- //Hztable0為待轉(zhuǎn)換的數(shù)據(jù)地址,Hztable為轉(zhuǎn)換過(guò)后的數(shù)據(jù)地址,number為轉(zhuǎn)換數(shù)據(jù)字節(jié)數(shù)
- {
- unchar i=0,j=0,tem;
- unint temp=0x0;
- for(j=0;j<number;j++)
- {
- tem=0x80;
- temp=0;
- for(i=8;i>0;i--)
- {
- if(Hztable0[j]&tem)
- {
- temp|=0x03<<(i*2-2);
- }
- tem=tem>>1;
- }
- Hztable[j*2]=(temp>>8)&0xff;
- Hztable[j*2+1]=temp&0xff;
- }
- }
- //$$$$$$$$$$$$灰度模式下顯示一個(gè)漢字
- //x:0~39; y:0~239
- void HzDisplayOne(unchar x,unchar y,unchar *m)
- {
- unchar temp_x,temp_y;
- unint iiii=0,jjjj=0,c=0;
- temp_x=x;temp_y=y;
- Snow_Mode();
- LCD_CmdWrite(WLCR);
- LCD_DataWrite(0x04);
- lcd_grayscale_mode();
- for(iiii=0;iiii<16;iiii++)
- {
- LCD_GotoXY(temp_x,temp_y+iiii);
- LCD_CmdWrite(0xb0);
- for(jjjj=0;jjjj<4;jjjj++)
- {
- LCD_DataWrite(m[c++]);
- }
- }
- }
- ///////////////////////////////////////////一行顯示4個(gè)漢字(在灰度模式下)
- //start_x:0~39;start_y:0~239;
- void writelinhz(unchar start_x,unchar start_y)
- {
- HzConvert(HZTable1,xHzTable1,32);
- HzDisplayOne(start_x,start_y,xHzTable1);
- start_x+=2;
- if(start_x>39)
- {
- start_y+=40;
- start_x=0;
- }
- HzConvert(HZTable2,xHzTable1,32);
- HzDisplayOne(start_x,start_y,xHzTable1);
- start_x+=2;
- if(start_x>39)
- {
- start_y+=40;
- start_x=0;
- }
- HzConvert(HZTable3,xHzTable1,32);
- HzDisplayOne(start_x,start_y,xHzTable1);
- start_x+=2;
- if(start_x>39)
- {
- start_y+=40;
- start_x=0;
- }
- HzConvert(HZTable4,xHzTable1,32);
- HzDisplayOne(start_x,start_y,xHzTable1);
- start_x+=2;
- if(start_x>39)
- {
- start_y+=40;
- start_x=0;
- }
- }
-
- ///////////////////////////////////////////
- void lcd_inital()
- {
- LCD_CmdWrite(WLCR); //[00H] , Default --> 0x00
- LCD_DataWrite(0x04); //屏幕顯示開(kāi)啟 disp_off輸出high
- LCD_CmdWrite(MISC); //[01H] , Default --> 0x00
- LCD_DataWrite(0x08);
- LCD_CmdWrite(ADSR); //[03H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(INTR); //[0FH] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(WCCR); //[10H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(CHWI); //[11H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(MAMR); //[12H] , Default --> 0x11
- LCD_DataWrite(0x11);
- LCD_CmdWrite(AWRR); //[20H] , Default --> 0x27
- LCD_DataWrite(39);
- LCD_CmdWrite(DWWR); //[21H] , Default --> 0x27
- LCD_DataWrite(39);
- LCD_CmdWrite(AWBR); //[30H] , Default --> 0xEF
- LCD_DataWrite(239);
- LCD_CmdWrite(DWHR); //[31H] , Default --> 0xEF
- LCD_DataWrite(239);
- LCD_CmdWrite(AWLR); //[40H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(AWTR); //[50H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(CURX); //[60H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(BGSG); //[61H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(EDSG); //[62H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(CURY); //[70H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(BGCM); //[71H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(EDCM); //[72H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(BTMR); //[80H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(ITCR); //[90H] , Default --> 0x00 需要調(diào)整
- LCD_DataWrite(0x80);
- LCD_CmdWrite(PNTR); //[E0H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(FNCR); //[F0H] , Default --> 0x00
- LCD_DataWrite(0x00);
- LCD_CmdWrite(FVHT); //[F1H] , Default --> 0x00
- LCD_DataWrite(0x00);
- }
- /////////////////清屏子程序//////////////////////////
- void clear(void)
- {
- No_Snow_Mode();
- LCD_CmdWrite(WLCR);
- LCD_DataWrite(0x04); //選擇繪圖模式
- LCD_CmdWrite(PNTR);
- LCD_DataWrite(0x00);
- LCD_CmdWrite(FNCR);
- LCD_DataWrite(0xa8);
- Snow_Mode();
- }
- //////////////全部顯示子程序///////////////////////
- void display_all()
- {
- No_Snow_Mode();
- LCD_CmdWrite(WLCR);
- LCD_DataWrite(0x04); //選擇繪圖模式
- LCD_CmdWrite(PNTR);
- LCD_DataWrite(0xff); //全部填0xff
- LCD_CmdWrite(FNCR);
- LCD_DataWrite(0xa8);
- Snow_Mode();
- }
- //////////////裝配測(cè)試用///////////////////////////
- void display_snows(unchar dat1,unchar dat2)
- {
- unsigned int iiii=0,pppp=0;
- Snow_Mode();
- LCD_CmdWrite(WLCR);
- LCD_DataWrite(0x04); //選擇繪圖模式
- LCD_CmdWrite(CURX);
- LCD_DataWrite(0x00); //設(shè)定X坐標(biāo)位置
- LCD_CmdWrite(CURY);
- LCD_DataWrite(0x00); //設(shè)定Y坐標(biāo)位置
- LCD_CmdWrite(MWCR);
- for(iiii=0;iiii<120;iiii++)
- {
- for(pppp=0;pppp<40;pppp++)
- {
- LCD_DataWrite(dat1);
- }
- for(pppp=0;pppp<40;pppp++)
- {
- LCD_DataWrite(dat2);
- }
- }
- }
- /////////////顯示一行邊框//////////////////////////////////
- void display_kuang(void)
- {
- unsigned int n0,n1;
- Snow_Mode();
- LCD_CmdWrite(WLCR);
- LCD_DataWrite(0x04);
- LCD_CmdWrite(CURX);
- LCD_DataWrite(0x00);
- LCD_CmdWrite(CURY);
- LCD_DataWrite(0x00);
- LCD_CmdWrite(MWCR);
- for(n0=0;n0<40;n0++)
- LCD_DataWrite(0xff);
- for(n0=0;n0<(238);n0++)
- {
- for(n1=0;n1<40;n1++)
- {
- if (n1==0) LCD_DataWrite(0x80);
- else if (n1==39) LCD_DataWrite(0x01);
- else LCD_DataWrite(0x00);
- }
- }
- for(n0=0;n0<40;n0++)
- LCD_DataWrite(0xff);
- }
- /////////////顯示中文字庫(kù)和字符////////////////////
- void display_word(unchar code *cha, unint count )
- {
- unint iiii=0;
- No_Snow_Mode();
- LCD_CmdWrite(WLCR);
- LCD_DataWrite(0x0c);
- LCD_CmdWrite(CURX);
- LCD_DataWrite(0x00);
- LCD_CmdWrite(CURY);
- LCD_DataWrite(0x00);
- LCD_CmdWrite(MWCR);
- for(iiii=0;iiii<count;iiii++)
- {
- LCD_DataWrite(*cha);
- ++cha;
- }
- }
- /////////////在指定的坐標(biāo)處顯示字符串////////////////////
- void LCD_ShowStr(unchar xx,unchar yy,unchar *text)
- {
- No_Snow_Mode();
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
|
-
-
-
lcd320240資料和程序.7z
2020-10-14 17:43 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
1.5 MB, 下載次數(shù): 38, 下載積分: 黑幣 -5
包含資料,程序
評(píng)分
-
查看全部評(píng)分
|