//LCM resolution:240x320, //driver IC:ST7789V, #include #include //液晶屏IC所需要的信号线的接口定义 sbit cs1=P3^5; sbit reset=P3^3; sbit rs=P3^0; sbit sclk=P3^4; sbit sid=P3^2; sbit IM1=P3^6; sbit IM2=P3^7; sbit key=P2^0; //P2.0口与GND之间接一个按键 /*写指令到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; } //连写2个字节(即16位)数据到LCD模块 void transfer_data_16(uint data_16bit) { transfer_data(data_16bit>>8); transfer_data(data_16bit); } void delay(long i) { int j,k; for(j=0;j0x00) { if((text[i]>=0x20)&&(text[i]<=0x7e)) { j=text[i]-0x20; lcd_address(x,y,8,16); for(k=0;k<16;k++) { mono_transfer_data_16(ascii_table_8x16[j*16+k],font_color,back_color); //?a??"ascii_table_8x16[]"?a??êy×é?ú"ASCII_TABLE_5X8_8X16_horizontal.h"à? } x+=8; i++; } else i++; } } void display_string_16x16(int x,int y,uchar *text,int font_color,int back_color) { uchar i,j,k; uint address; j = 0; while(text[j] != '\0') //'\0' 字符串结束标志 { i = 0; address = 1; while(Chinese_horizontal_text_16x16[i] > 0x7e) // >0x7f即说明不是ASCII码字符 { if(Chinese_horizontal_text_16x16[i] == text[j]) { if(Chinese_horizontal_text_16x16[i + 1] == text[j + 1]) { address = i * 16; break; } } i += 2; } if(y > 320) { y=0; x+=16; } if(address != 1)// 显示汉字 { lcd_address(x,y,16,16); for(i=0;i<2;i++) { for(k = 0; k <16; k++) { mono_transfer_data_16(Chinese_horizontal_code_16x16[address],font_color,back_color); address++; } } j+=2; } else //显示空白字符 { lcd_address(x,y,16,16); for(i = 0; i <2; i++) { for(k = 0; k < 16; k++) { mono_transfer_data_16(0x00,font_color,back_color); } } j+=2; } x=x+16; } } //显示32x32点阵的单色的图像 void disp_32x32(int x,int y,char *dp,int font_color,int back_color) { int i,j; lcd_address(x,y,32,32); for(i=0;i<32;i++) { for(j=0;j<4;j++) { mono_transfer_data_16(*dp,font_color,back_color); dp++; } } } //显示一幅彩图 void display_image(int x,int y,uchar *dp) { uchar i,j,k=0; lcd_address(x,y,120,160); for(i=0;i<120;i++) { for(j=0;j<160;j++) { transfer_data(*dp); //传一个像素的图片数据的高位 dp++; transfer_data(*dp); //传一个像素的图片数据的低位 dp++; } } } void main(void) { P1M1=0x00; P1M0=0x00; //P1配置为准双向 P2M1=0x00; P2M0=0x00; //P2配置为准双向 P3M1=0x00; P3M0=0x00; //P3配置为准双向 IM1=1; //IM1=0、IM2=0并行接口;IM1=1、IM2=1串行接口 IM2=1; lcd_initial(); while(1) { display_color(blue); disp_32x32(40+32*0,8,jing_32x32,white,blue); disp_32x32(40+32*1,8,lian_32x32,white,blue); disp_32x32(40+32*2,8,xun_32x32,white,blue); disp_32x32(40+32*3,8,dian_32x32,white,blue); disp_32x32(40+32*4,8,zi_32x32,white,blue); display_string_16x16(24,56,"深圳市晶联讯电子有限公司",white,blue); display_string_16x16(48,88,"型号",white,blue); disp_string_8x16(80,88,":JLX240-00303-BN",white,blue); display_string_16x16(48,120,"视窗",white,blue); disp_string_8x16(80,120,":36.7x48.9mm",white,blue); display_string_16x16(48,152,"驱动",white,blue); disp_string_8x16(80,152,"IC:ST7789V",white,blue); display_string_16x16(0,184,"经营宗旨:制造高品质产品及服务",white,blue); display_string_16x16(0,216,"质量方针:客户至上,质量保证",white,blue); display_string_16x16(79,236,"持续改进,服务到位",white,blue); display_string_16x16(0,270,"经营目标:做最好的液晶模块厂家",white,blue); display_string_16x16(79,292,"做客户信得过的企业",white,blue); Switch(); display_image(0,0,pic1); display_image(120,0,pic1); display_image(0,160,pic1); display_image(120,160,pic1); Switch(); display_color(0xf800); Switch(); display_color(0x07e0); Switch(); display_color(0x001f); Switch(); display_black(); Switch(); display_color(0xffff); Switch(); } }