19264液晶屏程序测试单片机源程序如下:
- #include <reg52.h>
- #include <intrins.h>
- #include <Ctype.h>
- /* 按键*/
- sbit key=P2^4;
- /*19264引脚定义*/
- sbit cs1=P1^1;
- sbit reset=P1^0;
- sbit rs=P2^0;
- sbit sclk=P2^6;
- sbit sid=P2^5;
- sbit Rom_SCK=P1^3;
- sbit Rom_OUT=P1^4;
- sbit Rom_IN=P1^5;
- sbit Rom_CS=P1^2;
- /* */
- #define uchar unsigned char
- #define uint unsigned int
- #define ulong unsigned long
- uchar code ascii_table_5x8[95][5];
- uchar code bmp1[];
- uchar code z[];
- uchar code k[];
- uchar code y[];
- uchar code b[];
- uchar code yi[];
- //LCD模块 写指令
- void transfer_command(int data1)
- {
- char i;
- cs1=0;
- rs=0;
- for(i=0;i<8;i++)
- {
- sclk=0;
- if(data1&0x80) sid=1;
- else sid=0;
- sclk=1;
- data1=data1<<=1;
- }
- cs1=1;
- }
- //写数据到LCD模块
- void transfer_data(int data1)
- {
- char i;
- cs1=0;
- rs=1;
- for(i=0;i<8;i++)
- {
- sclk=0;
- if(data1&0x80) sid=1;
- else sid=0;
- sclk=1;
- data1=data1<<=1;
- }
- cs1=1;
- }
- //??
- void delay(int i)
- {
- int j,k;
- for(j=0;j<i;j++)
- for(k=0;k<110;k++);
- }
- void waitkey()
- {
- //repeat:
- if(key==1)while(key==1); //等待按键,如果没按就一直循环等待,或用while(key==1)不用goto也可
- if(key==0)while(key==0);
- else delay(400);
- }
- //LCD 初始化
- void initial_lcd()
- {
- reset=0; //地点评复位
- delay(100);
- reset=1; //复位完毕
- delay(100);
- transfer_command(0xe2); //软复位
- delay(500);
- transfer_command(0x2f); //打开内部生压
- delay(500);
- transfer_command(0x81); //微调对比度
- transfer_command(0x45); //对比度值0x00~0xFF
- transfer_command(0xeb); //1/9 偏压比(bias)
- transfer_command(0xc4); //?????:???? oxc2
- transfer_command(0xa0); //?????:????
- transfer_command(0xaf); //开显示
- }
- void lcd_address(uchar page,uchar column)//行 列
- {
- column=column-1; //????????1 ?,?LCD ??IC ???0 ?????????1.
- page=page-1;
- transfer_command(0xb0+page); //?????????8 ???????64 ????8 ???????????1 ?,?LCD ??IC ???0 ?,???????1
- transfer_command(((column>>4)&0x0f)+0x10); //???????4 ?
- transfer_command(column&0x0f); //???????4 ?
- }
- //????
- void clear_screen()
- {
- unsigned char i,j;
- for(i=0;i<9;i++)
- {
- lcd_address(1+i,1);
- for(j=0;j<192;j++)
- {
- transfer_data(0x00);
- }
- }
- }
- void display_graphic_192x64(uchar *dp)
- {
- uchar i,j;
- for(i=0;i<9;i++)
- {
- lcd_address(1+i,1);
- for(j=0;j<192;j++)
- {
- transfer_data(*dp);
- dp++;
- }
- }
- }
- void display_graphic_32x32(uchar page,uchar column,uchar *dp)
- {
- uchar i,j;
- for(j=0;j<4;j++)
- {
- lcd_address(page+j,column);
- for (i=0;i<31;i++)
- {
- transfer_data(*dp); //????LCD,?????8 ???????????1
- dp++;
- }
- }
- }
- //??16x16 ????????????16x16 ???????
- void display_graphic_16x16(uchar page,uchar column,uchar *dp)
- {
- uchar i,j;
- for(j=0;j<2;j++)
- {
- lcd_address(page+j,column);
- for (i=0;i<16;i++)
- {
- transfer_data(*dp); //????LCD,?????8 ???????????1
- dp++;
- }
- }
- }
- //?? 8x16 ?????ASCII, ?8x16 ????????????
- void display_graphic_8x16(uchar page,uchar column,uchar *dp)
- {
- uchar i,j;
- for(j=0;j<2;j++)
- {
- lcd_address(page+j,column);
- for (i=0;i<8;i++)
- {
- transfer_data(*dp); //????LCD,?????8 ???????????1
- dp++;
- }
- }
- }
- void display_string_5x8(uint page,uint column,uchar reverse,uchar *text)
- {
- uchar i=0,j,k,data1;
- while(text[i]>0x00)
- {
- if((text[i]>=0x20)&&(text[i]<=0x7e))
- {
- j=text[i]-0x20;
- lcd_address(page,column);
- for(k=0;k<5;k++)
- {
- if(reverse==1) data1=~ascii_table_5x8[j][k];
- else data1=ascii_table_5x8[j][k];
- transfer_data(data1);
- }
- if(reverse==1) transfer_data(0xff);
- else transfer_data(0x00);
- i++;
- column+=6;
- }
- else
- i++;
- }
- }
- void send_command_to_ROM( uchar datu )
- {
- uchar i;
- for(i=0;i<8;i++ )
- {
- if(datu&0x80)
- Rom_IN = 1;
- else
- Rom_IN = 0;
- datu = datu<<1;
- Rom_SCK=0;
- Rom_SCK=1;
- }
- }
- /****??????IC ?????????(1 ???)***/
- static uchar get_data_from_ROM( )
- {
- uchar i;
- uchar ret_data=0;
- Rom_SCK=1;
- for(i=0;i<8;i++)
- {
- Rom_OUT=1;
- Rom_SCK=0;
- ret_data=ret_data<<1;
- if( Rom_OUT )
- ret_data=ret_data+1;
- else
- ret_data=ret_data+0;
- Rom_SCK=1;
- }
- return(ret_data);
- }
- /*?????(addrHigh:?????,addrMid:?????,addrLow:?????)?????DataLen ???
- ???? pBuff ???*/
- /*????*/
- void get_n_bytes_data_from_ROM(uchar addrHigh,uchar addrMid,uchar addrLow,uchar *pBuff,uchar DataLen )
- {
- uchar i;
- Rom_CS = 0;
- cs1=1;
- Rom_SCK=0;
- send_command_to_ROM(0x03);
- send_command_to_ROM(addrHigh);
- send_command_to_ROM(addrMid);
- send_command_to_ROM(addrLow);
- for(i = 0; i < DataLen; i++ )
- *(pBuff+i) =get_data_from_ROM();
- Rom_CS = 1;
- }
- /******************************************************************/
- ulong fontaddr=0;
- void display_GB2312_string(uchar y,uchar x,uchar *text)
- {
- uchar i= 0;
- uchar addrHigh,addrMid,addrLow ;
- uchar fontbuf[32];
- while((text[i]>0x00))
- {
- if(((text[i]>=0xb0) &&(text[i]<=0xf7))&&(text[i+1]>=0xa1))
- {
- /*????(GB2312)?????IC ????????????:*/
- /*Address = ((MSB - 0xB0) * 94 + (LSB - 0xA1)+ 846)*32+ BaseAdd;BaseAdd=0*/
- /*????8 ???????????,????????*/
- fontaddr = (text[i]- 0xb0)*94;
- fontaddr += (text[i+1]-0xa1)+846;
- fontaddr = (ulong)(fontaddr*32);
- addrHigh = (fontaddr&0xff0000)>>16; /*????8?,?24?*/
- addrMid = (fontaddr&0xff00)>>8; /*????8?,?24?*/
- addrLow = fontaddr&0xff; /*????8?,?24?*/
- get_n_bytes_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,32 );/*?32 ??????,??
- "fontbuf[32]"*/
- display_graphic_16x16(y,x,fontbuf);/*?????LCD?,y ????,x ????,fontbuf[]?
- ??*/
- i+=2;
- x+=16;
- }
- else if((text[i]>=0x20) &&(text[i]<=0x7e))
- {
- unsigned char fontbuf[16];
- fontaddr = (text[i]- 0x20);
- fontaddr = (unsigned long)(fontaddr*16);
- fontaddr = (unsigned long)(fontaddr+0x3b7c0);
- addrHigh = (fontaddr&0xff0000)>>16;
- addrMid = (fontaddr&0xff00)>>8;
- addrLow = fontaddr&0xff;
- get_n_bytes_data_from_ROM(addrHigh,addrMid,addrLow,fontbuf,16 );/*?16 ??????,??
- "fontbuf[32]"*/
- display_graphic_8x16(y,x,fontbuf);/*??8x16?ASCII??LCD?,y ????,x ????,
- fontbuf[]???*/
- i+=1;
- x+=8;
- }
- else
- i++;
- }
- }
- void main(void)
- {
- initial_lcd();
- clear_screen(); //clear all dots
- display_string_5x8(1,1,0,"welcome use");
- display_graphic_32x32(3,10,z);
- display_graphic_32x32(3,45,k);
- display_graphic_32x32(3,80,y);
- display_graphic_32x32(3,115,b);
- display_graphic_32x32(3,150,yi);
- display_string_5x8(8,157,0,"key in");
- waitkey();
- while(1)
- {
-
- // clear_screen();
- display_graphic_192x64(bmp1);
- display_string_5x8(1,1,1," IAP15W4K58S4 ");display_string_5x8(1,120,1,"Step shaking");
- display_string_5x8(3,1,0," Select>>>>");
- display_string_5x8(3,100,1,"1.Mode 1");
- display_string_5x8(4,100,0,"2.Mode 2" );
- display_string_5x8(5,100,0,"3.Mode 3");
- display_string_5x8(6,100,0,"4.Mode 4");
- display_string_5x8(7,100,0,"5.Mode 5");
- display_string_5x8(8,1,1,"Make By KBQ in WWW house");
- waitkey();
-
- // clear_screen();
- display_graphic_192x64(bmp1);
- display_GB2312_string(1,1,"JLX19264G-333,带中文字库");
- display_GB2312_string(3,1,"16X16简体汉字库,或8X16点");
- display_GB2312_string(5,1,"阵ASCII,或5x8点阵ASCII码");
- display_GB2312_string(7,1,"{<!@#$%^&*()_-+]/;.,?[>}");
- waitkey();
- }
- }
- uchar code ascii_table_5x8[95][5]={
- /*??ASCII ??:5x8 ??*/
- 0x00,0x00,0x00,0x00,0x00,//- - //space
- 0x00,0x00,0x4f,0x00,0x00,//-!-
- 0x00,0x07,0x00,0x07,0x00,//-"-
- 0x14,0x7f,0x14,0x7f,0x14,//-#-
- 0x24,0x2a,0x7f,0x2a,0x12,//-$-
- 0x23,0x13,0x08,0x64,0x62,//-%-
- 0x36,0x49,0x55,0x22,0x50,//-&-
- 0x00,0x05,0x07,0x00,0x00,//-'-
- 0x00,0x1c,0x22,0x41,0x00,//-(-
- 0x00,0x41,0x22,0x1c,0x00,//-)-
- 0x14,0x08,0x3e,0x08,0x14,//-*-
- 0x08,0x08,0x3e,0x08,0x08,//-+-
- 0x00,0x50,0x30,0x00,0x00,//-,-
- 0x08,0x08,0x08,0x08,0x08,//---
- 0x00,0x60,0x60,0x00,0x00,//-.-
- 0x20,0x10,0x08,0x04,0x02,//-/-
- 0x3e,0x51,0x49,0x45,0x3e,//-0-
- 0x00,0x42,0x7f,0x40,0x00,//-1-
- 0x42,0x61,0x51,0x49,0x46,//-2-
- 0x21,0x41,0x45,0x4b,0x31,//-3-
- 0x18,0x14,0x12,0x7f,0x10,//-4-
- 0x27,0x45,0x45,0x45,0x39,//-5-
- 0x3c,0x4a,0x49,0x49,0x30,//-6-
- 0x01,0x71,0x09,0x05,0x03,//-7-
- 0x36,0x49,0x49,0x49,0x36,//-8-
- 0x06,0x49,0x49,0x29,0x1e,//-9-
- 0x00,0x36,0x36,0x00,0x00,//-:-
- 0x00,0x56,0x36,0x00,0x00,//-;-
- 0x08,0x14,0x22,0x41,0x00,//-<-
- 0x14,0x14,0x14,0x14,0x14,//-=-
- 0x00,0x41,0x22,0x14,0x08,//->-
- 0x02,0x01,0x51,0x09,0x06,//-?-
- 0x32,0x49,0x79,0x41,0x3e,//-@-
- 0x7e,0x11,0x11,0x11,0x7e,//-A-
- 0x7f,0x49,0x49,0x49,0x36,//-B-
- 0x3e,0x41,0x41,0x41,0x22,//-C-
- 0x7f,0x41,0x41,0x22,0x1c,//-D-
- 0x7f,0x49,0x49,0x49,0x41,//-E-
- 0x7f,0x09,0x09,0x09,0x01,//-F-
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
19264测试.rar
(41.87 KB, 下载次数: 116)
|