{ LCD_Write_Byte(*str,1); str++; } //Locked flag recovery LCD12864_LockedFlag = 0; }
/**********************************************************
* 函数功能 ---> LCD显示字符串 * 入口参数 ---> x:行 * y:列
* *str:要显示的字符串 * len:显示的长度 * 返回数值 ---> none
* 功能说明 --->可以从显示数组的任意位置starsum开始显示len长度的字符串 **********************************************************/ void Display_String1(u8 x,u8 y,u8 *str,u8 starsum,u8 len) { u8 i; //Locked flag check if(LCD12864_LockedFlag==1)return; else LCD12864_LockedFlag = 1; LCD_Set_xy(x,y); //设置显示地址 for(i = starsum;i < starsum + len;i++) { LCD_Write_Byte(str[i],1); } //Locked flag recovery LCD12864_LockedFlag = 0; }
/********************************************************** * 函数功能 ---> Clear GDRAM of LCD12864 * 入口参数 ---> none * 返回数值 ---> none * 功能说明 ---> none
**********************************************************/ void ClearGDRAM(void) { u8 x,y; for(y=0;y<64;y++)
for(x=0;x<16;x++) { LCD_Write_Byte(0x34,0); LCD_Write_Byte(0x80+y,0); //Row address LCD_Write_Byte(0x80+x,0); //Line address LCD_Write_Byte(0x30,0); LCD_Write_Byte(0x00,1); LCD_Write_Byte(0x00,1); } }
/********************************************************** * 函数功能 ---> Display Exposure Time * 入口参数 ---> ExpTime:Exposure time
* InversePos:Inverse position
* 返回数值 ---> none * 功能说明 ---> none
**********************************************************/ void DisplayExposureTime(u16 ExpTime,u8 InversePos) { u8 i; u8 tempH,tempL; LCD_Write_Byte(0x34,0); //Open expansion instruction LCD_Write_Byte(0x36,0); //Open drawing function //One hundred thousand and ten thousand tempH = ExpTime/100000; tempL = ExpTime/10000; for(i=0;i<16;i++) { LCD_Write_Byte(0x80+i,0); //Row address LCD_Write_Byte(0x8B,0); //Line addres if(InversePos==1) LCD_Write_Byte(~ASCII_Table[tempH*16+i],1); else LCD_Write_Byte(ASCII_Table[tempH*16+i],1); if(InversePos==2) LCD_Write_Byte(~ASCII_Table[tempL*16+i],1); else LCD_Write_Byte(ASCII_Table[tempL*16+i],1); }
//Thousand and hundred tempH = ExpTime/1000; tempL = ExpTime/100; for(i=0;i<16;i++)
{ LCD_Write_Byte(0x80+i,0); //Row address LCD_Write_Byte(0x8C,0); //Line addres if(InversePos==3) LCD_Write_Byte(~ASCII_Table[tempH*16+i],1); else LCD_Write_Byte(ASCII_Table[tempH*16+i],1); if(InversePos==4) LCD_Write_Byte(~ASCII_Table[tempL*16+i],1); else LCD_Write_Byte(ASCII_Table[tempL*16+i],1); } //decade and single tempH = ExpTime/10; tempL = ExpTime; for(i=0;i<16;i++) { LCD_Write_Byte(0x80+i,0); //Row address LCD_Write_Byte(0x8D,0); //Line addres if(InversePos==5) LCD_Write_Byte(~ASCII_Table[tempH*16+i],1); else LCD_Write_Byte(ASCII_Table[tempH*16+i],1); if(InversePos==6) LCD_Write_Byte(~ASCII_Table[tempL*16+i],1); else LCD_Write_Byte(ASCII_Table[tempL*16+i],1); } LCD_Write_Byte(0x30,0); }
/********************************************************** * 函数功能 ---> Display collection number * 入口参数 ---> ColNum:collection number * InversePos:Inverse position * 返回数值 ---> none * 功能说明 ---> none
**********************************************************/ void DisplayCollectNum(u16 ColNum,u8 InversePos) { u8 i; u8 tempH,tempL; LCD_Write_Byte(0x34,0); //Open expansion instruction
LCD_Write_Byte(0x36,0); //Open drawing function
//Thousand and hundred tempH = ColNum/1000; tempL = ColNum/100; for(i=0;i<16;i++) { LCD_Write_Byte(0x90+i,0); //Row address LCD_Write_Byte(0x8D,0); //Line addres if(InversePos==1) LCD_Write_Byte(~ASCII_Table[tempH*16+i],1); else LCD_Write_Byte(ASCII_Table[tempH*16+i],1); if(InversePos==2) LCD_Write_Byte(~ASCII_Table[tempL*16+i],1); else LCD_Write_Byte(ASCII_Table[tempL*16+i],1); } //decade and single tempH = ColNum/10; tempL = ColNum; for(i=0;i<16;i++) { LCD_Write_Byte(0x90+i,0); //Row address LCD_Write_Byte(0x8E,0); //Line addres if(InversePos==3) LCD_Write_Byte(~ASCII_Table[tempH*16+i],1); else LCD_Write_Byte(ASCII_Table[tempH*16+i],1); if(InversePos==4) LCD_Write_Byte(~ASCII_Table[tempL*16+i],1); else LCD_Write_Byte(ASCII_Table[tempL*16+i],1); } LCD_Write_Byte(0x30,0); }
/********************************************************** * 函数功能 ---> LCD写入GDRAM绘图 * 入口参数 ---> x:行 * y:列
* width:显示图片的宽度 * hieght:显示图片的高度 * *bmp:要显示的字符串
* dis_mode:显示模式,是半屏显示还是全屏显示 * 0:半屏显示。1:全屏显示 * 返回数值 ---> none * 功能说明 ---> none
**********************************************************/
void Display_GDRAM(u8 x,u8 y,u8 width,u8 height,const u8 *bmp,u8 dis_mode) { u8 i,j,k; u8 base_x,base_y; //起始坐标 //Locked flag check
if(LCD12864_LockedFlag==1)return; else LCD12864_LockedFlag = 1;
/******全屏绘图显示******/ if(dis_mode) { switch(x) { case 1: base_y = One_LineAddress + y; break; case 2: base_y = Two_LineAddress + y; break; case 3: base_y = Three_LineAddress + y; break; case 4: base_y = Four_LineAddress + y; break; default: break; }
LCD_Write_Byte(MPU_8bit_Expansion_Draw_Close,0); //扩充指令 LCD_Write_Byte(MPU_8bit_Expansion_Draw_Open,0); //打开绘图功能 for(j = 0;j < height;j++) //32 { LCD_Write_Byte(base_y + j,0); //写入行号,即第几行开始 LCD_Write_Byte(One_LineAddress,0); //横坐标的第几个字节开始写 for(i = 0;i < width;i++) //上半屏 {