STM32F4_LCD12864串行并行驱动程序合集(4)

2019-03-27 20:23

{ 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++) //上半屏 {


STM32F4_LCD12864串行并行驱动程序合集(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:如何挽救出轨的老婆老婆果然没有经受住“七年之痒”

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: