用C51实现对LCD显示屏M12864-7A7的显示驱动

时间: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-),男,吉林白山人,沈阳大学工程师。

上一篇:谈对锅炉自动控制技术的分析 下一篇:网络时代下新经济财税工作的挑战与对策