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

12864液晶经典驱动程序,一看就懂,有详细的注释(C语言编写,不看后悔)

来源:用户分享 时间:2025/7/9 15:48:32 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

这个程序写得很好,自己也是看的别人写的很好的程序,但是它代码不够完整,注释不详细,经过自己的修改加以完善。另外我发现很多的测试代码都没有附上测试代码效果图,在本人的代码下面有自己拍的效果图,填补不足之处。 自己在找资料的过程中花掉很多的财富值,如果大家看得起该代码请评五分加以下载,在下感激不尽!

/******************************************* 程序名称:12864液晶经典驱动程序(带中文字库) 功能:12864测试程序 修改作者:王程

修改时间:2014年2月5日23:22:32

********************************************/ #include

#define uchar unsigned char #define uint unsigned int // P0 为数据口

sbit LCD_RS=P2^0; //数据、命令选择端口 sbit LCD_RW=P2^1; //液晶读写控制 sbit LCD_EN=P2^2; //液晶使能控制

sbit PSB = P2^4; //模式选择 1为并行 0为串行

sbit RES = P2^5; //复位端口低电平复位,上电之前进行复位,为了稳定! unsigned char code DAT[] = \我爱我家\测试显示的汉字 ,下面的A为测试显示的英文

/******************************************* 函数名称:Delay_1ms (晶振为12M) 功能:延时约1ms的时间 参数:无 返回值:无

********************************************/ void delay_1ms(uint x) { uinti,j; for(j = 0;j

/******************************************* 函数名称:write_cmd

功能:向液晶中写控制命令 参数:cmd--控制命令 返回值:无

********************************************/ voidwrite_cmd(ucharcmd) {

ucharlcdtemp = 0; LCD_RS=0; LCD_RW=1;

do //经典判忙方式,精简 {

LCD_EN=1; delay_1ms(2); lcdtemp = P0; LCD_EN=0;

}

while(lcdtemp& 0x80); LCD_RW=0; P0 = cmd; LCD_EN=1;

delay_1ms(5); LCD_EN=0; }

/******************************************* 函数名称:write_data

功能:向液晶中写显示数据 参数:dat--显示数据 返回值:无

********************************************/ void write_data(uchardat) {

ucharlcdtemp = 0;

LCD_RS=0;

LCD_RW=1;

do //经典判忙方式 {

LCD_EN=1;

delay_1ms(2); lcdtemp = P0;

LCD_EN=0; }

while(lcdtemp& 0x80); LCD_RS=1; LCD_RW=0;

P0 = dat; LCD_EN=1;

delay_1ms(5); LCD_EN=0; }

/******************************************* 函数名称:lcd_int

功能:初始化液晶模块 参数:无 返回值:无

********************************************/ voidlcd_int(void) {

delay_1ms(40); //大于40MS的延时程序 PSB=1; //设置为8BIT并口工作模式 delay_1ms(1); //延时 RES=0; //复位 delay_1ms(1); //延时

RES=1; //复位置高 delay_1ms(10); write_cmd(0x30); //基本指令集 delay_1ms(5); write_cmd(0x30); //基本指令集 delay_1ms(5);

write_cmd(0x08); // 地址归位 delay_1ms(5); write_cmd(0x10); //光标设置 delay_1ms(5);

write_cmd(0x0c); //整体显示打开,游标关闭 delay_1ms(5);

write_cmd(0x01); //清除显示 delay_1ms(5);

write_cmd(0x06); //游标右移 delay_1ms(5);

write_cmd(0x80); //设定显示的起始地址 delay_1ms(5); }

函数名称:main

功能:测试1602初始化函数模块 参数:无 返回值:无

********************************************/ void main() { uchar i; char *a = DAT;//使用指针,指向字符串地址

lcd_int(); write_data('A'); //每个显示都是用的两个字节,必须写两次 write_data(' ');//再写一次,不然乱显示(如果不加就再显示一个别的字母) for(i=0;i<8;i++) { write_data(*a); //将地址当作数据传给12864 a++; //一个汉字传送两次,因为一个汉字占用两个字节,两次传完 } write_cmd(0x90);//一行显示八个汉字,第一行0x80-87,第二行0x90开始 a = DAT; for(i=0;i<8;i++) { write_data(*a); a++; } while(1); //停住,不然重复的初始化显示,作为测试用 }

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

代码测试效果图片两两张 由于曝光度影响,拍了两张

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

12864液晶经典驱动程序,一看就懂,有详细的注释(C语言编写,不看后悔).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2v9tc2ugqq208bi78dt9_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top