77范文网 - 专业文章范例文档资料分享平台

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

来源:网络收集 时间:2019-06-17 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

LCD_Delay();LCD_Delay();LCD_Delay(); LCD_SCL = 0; dat <<= 1; //左移一位,先发的是高位 } LCD_Delay();LCD_Delay();LCD_Delay(); LCD_SCL = 0; LCD_Delay();LCD_Delay();LCD_Delay(); //等待硬件反应(等待数据发送完全) } /********************************************************** 据

* 函数功能 ---> LCD写入一个字节命令或者数据 * 入口参数 ---> dat:要写入的命令或者数据

* ord:命令或者数据判断为。0为命令,1为数

* 返回数值 ---> none * 功能说明 ---> none

**********************************************************/ void LCD_Write_Byte(u8 dat,u8 ord) { u8 tem; u8 i,j;

tem = dat & 0xf0; //先发送高4位 LCD12864_Start((ord << 1) | 0xf0); //置RW为“0”、RS为“ord”并启动串行传输为数据格式 for(j = 0;j < 2;j++) //一个字节数据或者命令分两次发送 { 化 LCD_Delay();LCD_Delay();LCD_Delay(); 放上数据,屏蔽低4位

LCD_SCL = 0; //允许数据线电平变

for(i = 0;i < 8;i++) { if(tem & 0x80) LCD_SDA = 1; //

else LCD_SDA = 0;

LCD_Delay();LCD_Delay();LCD_Delay();

}

LCD_SCL = 0;

tem <<= 1; //左移一位,先

LCD_SCL = 1; //发送数据,上升

沿有效 LCD_Delay();LCD_Delay();LCD_Delay(); 发的是高位

tem = (dat << 4) & 0xf0; //发完高4位,再次发送低4位 } LCD_Delay();LCD_Delay();LCD_Delay(); LCD_SDA = 0; LCD_Delay();LCD_Delay();LCD_Delay(); LCD_SCL = 0; LCD_Delay();LCD_Delay();LCD_Delay(); LCD_CS = 0; LCD_Delay();LCD_Delay();LCD_Delay(); //等待硬件反应(等待数据发送完全) } //========================================================= #endif #endif

//=========================================================

/**********************************************************

* 函数功能 --->设置LCD显示位置

* 入口参数 ---> x:行,取值范围:1 ~ 4 * y:列,取值范围:0 ~ 7 * 返回数值 ---> none * 功能说明 ---> none

**********************************************************/ void LCD_Set_xy(u8 x,u8 y) { switch(x) { case 1: LCD_Write_Byte((One_LineAddress + y),0); //写入操作地址 break; case 2:

case 3: case 4: default:

LCD_Write_Byte((Two_LineAddress + y),0); //写入操作地址 break;

LCD_Write_Byte((Three_LineAddress + y),0); break;

//写入操作地址

LCD_Write_Byte((Four_LineAddress + y),0); //写入操作地址 break;

LCD_Write_Byte((One_LineAddress + y),0); //写入操作地址 break; } }

/********************************************************** * 函数功能 --->写入自定义字符到LCD的CGRAM * 入口参数 ---> *data_code:写入的数组 * 返回数值 ---> none * 功能说明 ---> none

**********************************************************/ void LCD_Write_CGRAM_ALL(const u8 *data_code) { u8 i; LCD_Write_Byte(0x34,0); //打开字符扩展指令 LCD_Write_Byte(0x02,0); //SR=0,允许输入 LCD_Write_Byte(0x30,0); //恢复基本指令 LCD_Write_Byte(0x40,0); //CGRAM地址 for(i = 0;i < CGRAM_Value;i++) { LCD_Write_Byte(data_code[i*2],1); LCD_Write_Byte(data_code[i*2+1],1); } }

/********************************************************** * 函数功能 ---> Modify the character content of the first CGRAM space * 入口参数 ---> *data_code:写入的数组 * 返回数值 ---> none * 功能说明 ---> none

**********************************************************/ void LCD_Write_CGRAM_ONE(const u8 *data_code,u8 add_h,u8 add_l) { u8 i; //Locked flag check if(LCD12864_LockedFlag==1)return;

else LCD12864_LockedFlag = 1; LCD_Write_Byte(0x34,0); //打开字符扩展指令 LCD_Write_Byte(0x02,0); //SR=0,允许输入 LCD_Write_Byte(0x30,0); //恢复基本指令 LCD_Write_Byte(0x40,0); //CGRAM地址 if(add_l==0) { for(i = 0;i < 16;i ++) { CGROM_Code[i*2] = data_code[i*2]; CGROM_Code[i*2+1] = data_code[i*2+1]; } } else if(add_l==2) { for(i = 0;i < 16;i ++) { CGROM_Code[i*2+32] = data_code[i*2]; CGROM_Code[i*2+33] = data_code[i*2+1]; } } else if(add_l==4) { for(i = 0;i < 16;i ++) { CGROM_Code[i*2+64] = data_code[i*2]; CGROM_Code[i*2+65] = data_code[i*2+1]; } } else if(add_l==6) { for(i = 0;i < 16;i ++) { CGROM_Code[i*2+96] = data_code[i*2]; CGROM_Code[i*2+97] = data_code[i*2+1]; } } for(i = 0;i < CGRAM_Value;i++) { LCD_Write_Byte(CGROM_Code[i*2],1); LCD_Write_Byte(CGROM_Code[i*2+1],1);

} //Locked flag recovery LCD12864_LockedFlag = 0; }

/********************************************************** * 函数功能 --->显示一个CGRAM内容 * 入口参数 ---> x:行 * y:列

* add_h:CGRAM高位地址 * add_l:CGRAM低位地址 * 返回数值 ---> none * 功能说明 ---> none

**********************************************************/ void Display_CGRAM(u8 x,u8 y,u8 add_h,u8 add_l) { //Locked flag check if(LCD12864_LockedFlag==1)return; else LCD12864_LockedFlag = 1;

LCD_Set_xy(x,y); //设置显示地址 LCD_Write_Byte(add_h,1); LCD_Write_Byte(add_l,1); //Locked flag recovery LCD12864_LockedFlag = 0; }

/********************************************************** * 函数功能 ---> LCD显示字符串 * 入口参数 ---> x:行 * y:列

* *str:要显示的字符串 * len:显示的长度 * 返回数值 ---> none

* 功能说明 --->可以从显示数组的任意位置starsum开始显示len长度的字符串 **********************************************************/ void Display_String(u8 x,u8 y,u8 *str,u8 len) { //Locked flag check if(LCD12864_LockedFlag==1)return; else LCD12864_LockedFlag = 1; LCD_Set_xy(x,y); //设置显示地址 while(len--)

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库STM32F4_LCD12864串行并行驱动程序合集(3)在线全文阅读。

STM32F4_LCD12864串行并行驱动程序合集(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/663204.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: