时间:2022-08-10 09:22:53
摘要:本文介绍了采用C51编程对LCD显示屏M12864-7A7的驱动。并给出部分电路原理图以及C51编写的嵌入式程序代码。
关键词:C51;M12864-7A7;KS0108
中图分类号:TN873+.93文献标识码:A文章编号:1007-9599 (2010)03-0096-02
LCD display with C51 to realize the display driver M12864-7A7
Wang Zhanhai
(Shenyang University,ShenYang110044,China)
Abstract: The paper introduces the C51 programming, which drives LCD display screen M12864-7A7, and points out part of circuit theory diagram and inserted programming code.
Keywords: C51;M12864-7A7;KS0108
随着科技不断发展,工业设备中使用的小型LCD显示屏的外观和显示效果也得到了很大的提高,本文介绍一款非常实用的LCD显示屏M12863-7A7的使用方法,这里采用目前较为流行的C51语言进行编程,该程序可读性好,便于个性化修改,可移植性强,具有一定实用价值。
一、M12864-7A7LCD液晶显示屏介绍
显示角度:6点钟直视;
STN正视反射模式;
显示颜色:黄绿底兰字;
点阵:128点X64点;
点尺寸:0.36(W)X0.36(H)(mm);
点距:0.40(W)X0.40(H)(mm);
二、KS0108控制器介绍
KS0108 液晶显示控制驱动器是一种带有驱动输出的图形液晶显示控制器,它可以直接与8位微处理器相连。
KS0108与微处理器接口信号
三、C51 应用程序
显示控制程序:
//初始化=============================================
void lcd_init(void)
//设置显示起始行为第一行
writecl(0xc0);writecr(0xc0);
//开显示设置
writecl(0x3f);writecr(0x3f);
}
//清屏==============================================
void lcd_clear(void)
{
uchar linpage,linbyte;
uchar linpage1;
for(linpage=1;linpage
{
linpage1=linpage|0x0b8;
writecl(linpage1);writecr(linpage1);
writecl(0x40);writecr(0x40);
for(linbyte=1;linbyte
{
writedl(0x00); writedr(0x00);
}
}
}
//=====================================================
void writecl(uchar commm)//写指令代码左
{
uchar readlin5;
csa=1;csb=0;rs=0;rw=1;
wait6:lcdaddr=0xff;e08=1;readlin5=lcdaddr;e08=0;readlin5=readlin5&0x80;
if(readlin5==0x80)
{goto wait6;}
rw=0;
lcdaddr=commm;e08=1;e08=0;
}
//=====================================================
void writedl(uchar datatoo)//写显示数据左
{
uchar readlin4;
csa=1;csb=0;rs=0;rw=1;
wait5:lcdaddr=0xff;e08=1;readlin4=lcdaddr;e08=0;readlin4=readlin4&0x80;
if(readlin4==0x80)
{goto wait5;}
rs=1;rw=0;lcdaddr=datatoo;e08=1;e08=0;
}
//=====================================================
void writecr(uchar commm)//写指令代码右
{
uchar readlin2;
csa=0;csb=1;rs=0;rw=1;
wait3:lcdaddr=0xff;e08=1;readlin2=lcdaddr;e08=0;readlin2=readlin2&0x80;
if(readlin2==0x80)
{goto wait3;}
rw=0;lcdaddr=commm;e08=1;e08=0;
}
//=====================================================
void writedr(uchar datatoo)//写显示数据右
{
uchar readlin1;
csa=0;csb=1;rs=0;rw=1;
wait2:lcdaddr=0xff;e08=1;readlin1=lcdaddr;e08=0;readlin1=readlin1&0x80;
if(readlin1==0x80)
{goto wait2;}
rs=1;rw=0;lcdaddr=datatoo;e08=1;e08=0;
}
//=====================================================
/*西文写入
参数:uchar pagen:页号(0x00--0x07)
uchar colun:起始列(0x00--0x7f) 0---127(0--191 only 19264)
uchar ncode:数字代码(0x00--0x09对应BCD数字0--9)
uchar fonte:字体代码0x00--6x8点阵,0x80--8x8点阵
*/
void writexw(uchar pagen,uchar colun,uchar ncode,uchar fonte)
{略}
//=====================================================
/* 中文写入
uchar hzpage //页地址
uchar wcol //起始列
uchar *hzaddr//取点阵开始地址,代码数组起始地址。
uchar starhzad //从第starhzad个汉字开始显示.
uchar hzcount //连续显示的字数
*/
void writezw(uchar hzpage,uchar wcol,uchar *hzaddr,uchar starhzad,uchar hzcount)
{略}
四、结束语
由于不同的应用选用的微控制器也不相同,所以这里给出的程序要根据不同的具体应用加以修改,本人应用的Syncmos SM系列单片机SM59264硬件连接采用间接访问方式,已经调试通过。
参考文献:
[1]李华,MCS-51系列单片机实用接口技术[M].北京:航空航天大学出版社,1999.8
[2]王建校,杨建国,宁改娣,危建国.51系列单片机及C51程序设计[M].北京:科学出版社,2002
[3]马忠梅,马岩,张凯,籍顺心.单片机的C语言应用程序设计[M].北京:航空航天大学出版社,1997.3
[4]杨振江,杜铁军,李群.流行单片机实用子程序及应用实例[M].西安:西安电子科技大学出版社,2002.7
作者简介:
王战海(1971-),男,吉林白山人,沈阳大学工程师。