1)&0XFF); } }
void LCD_Display_Dir(u8 dir) {
if(dir==0) {
//竖屏
lcddev.dir=0; //竖屏 lcddev.width=240; lcddev.height=320;
if(lcddev.id==0X9341||lcddev.id==0X6804) {
lcddev.wramcmd=0X2C; lcddev.setxcmd=0X2A; lcddev.setycmd=0X2B; if(lcddev.id==0X6804) { }
lcddev.width=320; lcddev.height=480;
} }
else {
//横屏
lcddev.dir=1; //横屏 lcddev.width=320; lcddev.height=240;
44
}
if(lcddev.id==0X9341) {
lcddev.wramcmd=0X2C; lcddev.setxcmd=0X2A; lcddev.setycmd=0X2B;
} }
LCD_Scan_Dir(DFT_SCAN_DIR); //默认扫描方向
void LCD_DrawPoint(u16 x,u16 y,u16 c) { }
u16 LCD_ReadPoint(u16 x,u16 y) {
u16 r=0,g=0,b=0;
if(x>=lcddev.width||y>=lcddev.height)return 0; //超过了范围,直接返回
LCD_SetCursor(x,y);
//设置光标位置
LCD_WriteRAM_Prepare(); //开始写入GRAM LCD->LCD_RAM=c;
LCD_SetCursor(x,y);
if(lcddev.id==0X9341)LCD_WR_REG(0X2E);//9341/6804/3510 发送读GRAM指令
//dummy Read
if(LCD->LCD_RAM)r=0; Delay(2);
r=LCD->LCD_RAM; //实际坐标颜色
45
if(lcddev.id==0X9341) { }
}
b=b;//防止编译器报警 return g; Delay(2); b=LCD->LCD_RAM; g=r&0XFF; g<<=8;
//9341/NT35310/NT35510要分2次读出
//对于9341,第一次读取的是RG的值,R在前,G在后,各占8位
void LCD_DisplayOn(void)//开显示 { }
void LCD_DisplayOff(void)//关显示 { }
void LCD_Clear(u16 color) {
/* 开背光 */
GPIO_SetBits(GPIOB, GPIO_Pin_0);
/*关背光 */
GPIO_ResetBits(GPIOB, GPIO_Pin_0);
u32 index=0;
u32 totalpoint=lcddev.width; totalpoint*=lcddev.height;
//得到总点数
LCD_SetCursor(0x00,0x0000); //设置光标位置 LCD_WriteRAM_Prepare();
//开始写入GRAM
46
}
for(index=0;index LCD->LCD_RAM=color; void LCD_DrawxXx(u32 x ,u32 y,u16 backColor,u16 color,const u8 *ch ,u16 size_bits,u16 size_line) { int x0,y0; u32 dat; int i; for(y0=0;y0 { //0x10,0x02 0x1000 | 0x02 = 0x1002 节 { dat = *ch++; for(x0=0;x0<8;x0++) //换列 { //画点 if(dat&0x80) //从最高开描点,只须判断一位 LCD_DrawPoint(x+(x0+i*8),y+y0,color); //描字符颜色 //汉字宽度为16,由两个字节组成一个16位数据 for(i=0;i else { } LCD_DrawPoint(x+(x0+i*8),y+y0,backColor); //描背景颜色 47 } } } } dat<<=1; //将次高位,提升为最高位 void Draw_Text_8_16_Str(u32 x,u32 y,u16 backColor,u16 color,const unsigned char *chs) { } } chs+=2; if ((*chs == hz_index[i*2]) && (*(chs+1) == hz_index[i*2+1])) { } LCD_DrawxXx(x,y,backColor,color,&hz[32*(i)],16,16); x +=16; break; u32 i=0; while (*chs != '\\0') { if (*chs > 0xa0) { for (i=0 ;i < GB16_NUM();i++) { if(x>235){x=0;y=y+16;} //汉字内码都是大于0xa0 48