stm32单片机12864驱动 作者: 时间:2016-11-29 来源:网络 加入技术交流群 扫码加入和技术大咖面对面交流海量资料库查询 收藏 /****************************************************************************【功能说明】 初始化LCD子程序****************************************************************************/void LCD_Init(void){//端口配置LCD_Port_Config();//LCD复位LCD_Reset();//基本指令集 8位数据LCD_Write(LCD_Write_Con_Cmd,0x30);ST_Delay_Ms(1);//基本指令集 8位数据LCD_Write(LCD_Write_Con_Cmd,0x30);ST_Delay_Ms(1);//显示打开,光标关,反白关LCD_Write(LCD_Write_Con_Cmd,0x0C);ST_Delay_Ms(1);//清屏LCD_Clear();//DDRAM 的地址计数器(AC)加1LCD_Write(LCD_Write_Con_Cmd,0x06);}/******************************************************************************【功能说明】 显示十进制数入口参数 row: 行col: 列Dig_Data:显示的十进制数******************************************************************************/void LCD_Dis_Digital(u8 row, u8 col,u32 Dig_Data){u8 dd[11];u8 i,j=9;u32 temp;temp = Dig_Data;dd[10]=0;for(i=10;(i>j)&(i>0);i--){dd[i-1] = temp%10 + 0;temp=temp/10;if(temp) j--;}LCD_Dis_Str(row,col,&dd[i]);}/****************************************************************************【功能说明】 LCD显示边框 图形模式****************************************************************************/void LCD_Dis_Frame(void){u8 x,y;//LCD清除绘图RAMLCD_Clear_GDRAM();LCD_Write(LCD_Write_Con_Cmd,0x34);LCD_Write(LCD_Write_Con_Cmd,0x36);for(x=0;x<9;x += 8){for(y=0;y < 32;y++){//左竖LCD_Write(LCD_Write_Con_Cmd, y+0x80);//行地址LCD_Write(LCD_Write_Con_Cmd, x+0x80);//列地址LCD_Write(LCD_Write_Dis_Data,0x80);LCD_Write(LCD_Write_Dis_Data,0x00 );//右竖LCD_Write(LCD_Write_Con_Cmd, y+0x80);//行地址LCD_Write(LCD_Write_Con_Cmd, x+0x87);//列地址LCD_Write(LCD_Write_Dis_Data,0x00);LCD_Write(LCD_Write_Dis_Data,0x01);}}for(y=0;y<2;y++){for(x=0;x<8;x++){LCD_Write(LCD_Write_Con_Cmd, y*31+0x80);//行地址LCD_Write(LCD_Write_Con_Cmd, x+0x80+8*y);//列地址LCD_Write(LCD_Write_Dis_Data,0xff);LCD_Write(LCD_Write_Dis_Data,0xff);}}LCD_Write(LCD_Write_Con_Cmd,0x30);}/****************************************************************************【功能说明】 LCD清除全部绘图RAM GDRAM 64*32字节空间0 1 2****13 14 151****************2***********************************6263****************************************************************************/void LCD_Clear_GDRAM(void){u8 x,y;LCD_Write(LCD_Write_Con_Cmd,0x34);for(y=0;y<64;y++){for(x=0;x<16;x++){LCD_Write(LCD_Write_Con_Cmd, y+0x80);//行地址LCD_Write(LCD_Write_Con_Cmd, x+0x80);//列地址LCD_Write(LCD_Write_Dis_Data,0x00);LCD_Write(LCD_Write_Dis_Data,0x00);}}LCD_Write(LCD_Write_Con_Cmd,0x30);}/******************************************************************************【功能说明】 在指定行列显示自定义图形(定义为 64X8像素)【入口参数】 u8 row: 行坐标 取值范围(0-63)u8 col: 列坐标 取值范围(0-7)u8 row_Pixel: 行像素个数 取值范围(1-64)u8 col_Pixel: 列像素个数 取值范围(1-8)u8 *Dis_Data: 显示数据指针【注意事项】 : 行坐标加行偏移不能超过 63列坐标加列偏移不能超过 7******************************************************************************/void LCD_Dis_Graphics(u8 row, u8 col, u8 row_Pixel, u8 col_Pixel, u8 *Dis_Data){u8 r,c,r_count,c_count;//打开绘图模式LCD_Write(LCD_Write_Con_Cmd,0x34);LCD_Write(LCD_Write_Con_Cmd,0x36);for(r_count = row; r_count < row + row_Pixel; r_count++){if(r_count > 31) r = r_count - 32;else r = r_count;for(c_count = col; c_count < col + col_Pixel; c_count++){if(r_count > 31) c = c_count + 8;else c = c_count;LCD_Write(LCD_Write_Con_Cmd, r+0x80);//行地址LCD_Write(LCD_Write_Con_Cmd, c+0x80);//列地址LCD_Write(LCD_Write_Dis_Data,*Dis_Data++);LCD_Write(LCD_Write_Dis_Data,*Dis_Data++);}}LCD_Write(LCD_Write_Con_Cmd,0x30);}/******************************************************************************【功能说明】 在指定行列清除自定义图形(定义为 64X8像素)【入口参数】 u8 row: 行坐标 取值范围(0-63)u8 col: 列坐标 取值范围(0-7)u8 row_Pixel: 行像素个数 取值范围(1-64)u8 col_Pixel: 列像素个数 取值范围(1-8)【注意事项】 : 行坐标加行偏移不能超过 63列坐标加列偏移不能超过 7******************************************************************************/void LCD_Clear_Graphics(u8 row, u8 col, u8 row_Pixel, u8 col_Pixel){u8 r,c,r_count,c_count;//扩充指令LCD_Write(LCD_Write_Con_Cmd,0x34);for(r_count = row; r_count < row + row_Pixel; r_count++){if(r_count > 31) r = r_count - 32;else r = r_count;for(c_count = col; c_count < col + col_Pixel; c_count++){if(r_count > 31) c = c_count + 8;else c = c_count;LCD_Write(LCD_Write_Con_Cmd, r+0x80);//行地址LCD_Write(LCD_Write_Con_Cmd, c+0x80);//列地址LCD_Write(LCD_Write_Dis_Data,0x00);LCD_Write(LCD_Write_Dis_Data,0x00);}}LCD_Write(LCD_Write_Con_Cmd,0x30);} 上一页 1 2 下一页
评论