基于stc89c52单片机,lcd1602液晶用c

基于stc89c52单片机,lcd1602液晶用c

//////1062/////////

void ydelay(uint x)//延时

{

uint a,b;

for(a=x;a>0;a--)

for(b=10;b>0;b--);

}

void write_com(uchar com)//写命令

{

P0=com;

lcwr=0;

lcrs=0;

lcden=0;

ydelay(10);

lcden=1;

ydelay(10);

lcden=0;

lcwr=1;

}

void write_date(uchar date)//写数据

{

P0=date;

lcwr=0;

lcrs=1;

lcden=0;

ydelay(10);

lcden=1;

ydelay(10);

lcden=0;

lcwr=1;

}

void init1602()//初始化

{

write_com(0x38);//设置显示模式

ydelay(20);

write_com(0x0c);//开显示

ydelay(20);

write_com(0x06);//指针和光标自动加一

ydelay(20);

write_com(0x01);//清屏指令

ydelay(20);

}

具体要显示什么,自己可以按照上面的程序写

有关单片机1602液晶显示汉字并且右移的题目,急急急!!!!

这个问题并不难,如果你对单片机有点了解的话,看一下1602的说明书就会明白。

下面我给你一个参考程序

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit E=P2^7; //1602使能引脚

sbit RW=P2^6; //1602读写引脚,读为高,写位低

sbit RS=P2^5; //1602数据命令选择引脚,数据为高,指令为低

uchar num;

//延时函数,延时del*1ms

void delay(int del)

{

int x,y;

for(x=0;x<del;x++)

for(y=0;y<110;y++);

}

//写命令

void write_com(uchar com)

{

P0=com;

RS=0;

RW=0;

E=0;

delay(5);

E=1;

delay(5);

}

//写数据

void write_data(uchar date)

{

P0=date;

RS=1;

RW=0;

E=0;

delay(5);

E=1;

delay(5);

}

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

1602初始化函数

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

void init()

{

write_com(0x01);

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x80);

}

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

* 名称 : L1602_string(uchar hang,uchar lie,uchar *p)

* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示ab cd ef ,调用该函数如下

L1602_string(1,5,ab cd ef;)

* 输入 : 行,列,需要输入1602的数据

* 输出 : 无

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

void write_string(uchar hang,uchar lie,uchar *p)

{

uchar a;

if(hang == 1) a = 0x80+0x10;

if(hang == 2) a = 0xc0+0x10;

a = a + lie - 1;

write_com(a);

while(1)

{

if(*p == '\0') break;

write_data(*p);

delay(20);

p++;

}

}

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

主函数

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

void main()

{

uint i;

init();

write_string(1,1,NAME:MIKE ); //照此输入你想写的数据,注意不得长于16个字符

write_string(2,1,NUMBER:023);//照此输入你想写的数据,注意不得长于16个字符

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

{

write_com(0x18);

delay(1000); //移动速度调节

}

while(1);

}

程序中是由右向左逐个显示。1602连线如图。

如果不明白程序的意思,推荐一个视频学习。

看第十一讲。

上一篇:下一篇:液晶显示器检测软件
下一篇:上一篇:返回栏目

相关推荐