44780 16x2 字符液晶屏驱动演示程序总线方式

来源:本站
导读:目前正在解读《44780 16x2 字符液晶屏驱动演示程序总线方式》的相关信息,《44780 16x2 字符液晶屏驱动演示程序总线方式》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《44780 16x2 字符液晶屏驱动演示程序总线方式》的详细说明。

44780 16x2 字符液晶屏驱动演示程序总线方式

连接线图:LCM-------51 LCM-------51 LCM--------51

DB0-----P0.0 DB4-----P0.4 RW-------P2.0

DB1-----P0.1 DB5-----P0.5 RC-------P2.1

DB2-----P0.2 DB6-----P0.6 E--------P2.7 =>74ls00+wr+rd

DB3-----P0.3 DB7-----P0.7 VLCD接1K2电阻到GND

[注]:AT89C51的晶振频率为12MHz

//#pragma src// 产生汇编文件

#include <reg51.h>

#include<intrins.h>

变量类型标识的宏定义

#defineUchar unsigned char

#define Uint unsigned int

LCM1602A端口地址定义

char xdata Lcd1602CmdPort _at_ 0x7cff;//E=1 RS=0 RW=0

char xdata Lcd1602WdataPort _at_ 0x7eff;//E =1 RS=1 RW=0

char xdata Lcd1602StatusPort _at_ 0x7dff;//CS=1 RS=0 RW=1

#define Busy0x80 // 忙判别位

code char exampl[]="For an example. - By xiaoqin";

void Delay400Ms(void);

void Delay5Ms(void);

void LcdWriteData( char dataW );

void LcdWriteCommand( Uchar CMD,Uchar AttribC );

void LcdReset( void );

void Display( Uchar dd );

void DispOneChar(Uchar x,Uchar y,Uchar Wdata);

void ePutstr(Uchar x,Uchar y, Uchar code *ptr);

测试主程序

void main(void)

{

Uchar temp;

Delay400Ms();// 启动时必须的延时,等待lcm进入工作状态

LcdReset(); // 这也是必需的....初始化

temp = 32;

ePutstr(0,0,exampl);// 上面一行显示一个预定字符串

Delay400Ms(); // 保留显示内容

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

Delay400Ms();

while(1)

{

temp &= 0x7f;// 只显示ASCII字符

if (temp<32)temp=32;// 屏蔽控制字符,不予显示

Display( temp++ );

Delay400Ms();

}

}

显示字符串

void ePutstr(Uchar x,Uchar y, Uchar code *ptr) {

Uchar i,l=0;

while (ptr[l] >31){l++;};

for (i=0;i<l;i++) {

DispOneChar(x++,y,ptr[i]);

if ( x == 16 ){

x = 0; y ^= 1;

}

}

}

演示一行连续字符串,配合上位程序演示移动字串

void Display( Uchar dd ) {

Uchar i;

for (i=0;i<16;i++) {

DispOneChar(i,1,dd++);

dd &= 0x7f;

if (dd<32) dd=32;

}

}

显示光标定位

void LocateXY( char posx,char posy) {

Uchar temp;

temp = posx & 0xf;

posy &= 0x1;

if ( posy )temp |= 0x40;

temp |= 0x80;

LcdWriteCommand(temp,0);

}

按指定位置显示数出一个字符

void DispOneChar(Uchar x,Uchar y,Uchar Wdata) {

LocateXY( x, y );// 定位显示地址

LcdWriteData( Wdata );// 写字符

}

初始化程序, 必须按照产品资料介绍的初始化过程进行

void LcdReset( void ) {

LcdWriteCommand( 0x38, 0);// 显示模式设置(不检测忙信号)

Delay5Ms();

LcdWriteCommand( 0x38, 0);// 共三次

Delay5Ms();

LcdWriteCommand( 0x38, 0);

Delay5Ms();

LcdWriteCommand( 0x38, 1);// 显示模式设置(以后均检测忙信号)

LcdWriteCommand( 0x08, 1);// 显示关闭

LcdWriteCommand( 0x01, 1);// 显示清屏

LcdWriteCommand( 0x06, 1);// 显示光标移动设置

LcdWriteCommand( 0x0c, 1);// 显示开及光标设置

}

写控制字符子程序: E=1 RS=0 RW=0

void LcdWriteCommand( Uchar CMD,Uchar AttribC ) {

if (AttribC) while( Lcd1602StatusPort & Busy );// 检测忙信号?

Lcd1602CmdPort = CMD;

}

当前位置写字符子程序: E =1 RS=1 RW=0

void LcdWriteData( char dataW ) {

while( Lcd1602StatusPort & Busy );// 检测忙信号

Lcd1602WdataPort = dataW;

}

// 短延时

void Delay5Ms(void)

{

Uint i = 5552;

while(i--);

}

//长延时

void Delay400Ms(void)

{

Uchar i = 5;

Uint j;

while(i--)

{

j=7269;

while(j--);

};

}

提醒:《44780 16x2 字符液晶屏驱动演示程序总线方式》最后刷新时间 2024-03-14 01:07:40,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《44780 16x2 字符液晶屏驱动演示程序总线方式》该内容的真实性请自行鉴别。