1602的使用方法及3个代码.docx

上传人:b****5 文档编号:5774887 上传时间:2023-01-01 格式:DOCX 页数:14 大小:1.02MB
下载 相关 举报
1602的使用方法及3个代码.docx_第1页
第1页 / 共14页
1602的使用方法及3个代码.docx_第2页
第2页 / 共14页
1602的使用方法及3个代码.docx_第3页
第3页 / 共14页
1602的使用方法及3个代码.docx_第4页
第4页 / 共14页
1602的使用方法及3个代码.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

1602的使用方法及3个代码.docx

《1602的使用方法及3个代码.docx》由会员分享,可在线阅读,更多相关《1602的使用方法及3个代码.docx(14页珍藏版)》请在冰豆网上搜索。

1602的使用方法及3个代码.docx

1602的使用方法及3个代码

1.接口信号说明

1602型液晶接口信号说明如表7.2.1所示

2.主要技术参数(见表7.2.2)

3.基本操作时序

4.RAM地址映射图

控制器内部有80B的RAM缓冲区,对应关系如图7.2.1所示。

当我们向图7.2.1中的00-0F、40-4F地址中的任一处写入显示数据时,液晶都可立即显示出来,当写入10-27或50-67地址处时,必须通过移屏指令将他们移入可显示区域方可正常显示,滚动显示字符就是利用这个特性。

5.状态字说明表(见表7.2.3)

注意:

原则上每次对控制器进行读/写操作之前,都必须进行读写检测,确保STA7为0.实际上,由于单片机的操作慢于液晶控制器的反应速度,因此可以不进行读/写检测,或只进行短暂的延时即可。

6.数据指针设置

控制器内部设有一个数据地址指针,用户可以通过它们访问内部的全部80B的RAM,如图7.2.4所示。

7.其他设置(见表7.2.5)

8.初始化设置

(1)显示模式初始化设置(见表7.2.6)

(2)显示开/关及光标设置(见表7.2.7)

9.写操作时序(见图7.2.2)

分析操作时序图可操作1602液晶的流程如下:

(1)通过RS确定是写数据还是写命令,写命令包括使液晶的光标显示/不显示、光标闪烁/不闪烁、需/不需要移屏、在液晶的什么位置显示,等等。

写数据是指要显示什么内容。

(2)读/写控制设置为写模式,即低电平。

(3)将数据或命令送达数据线上。

(4)将E一个高脉冲将数据送入液晶控制器,完成写操作。

1602显示数字程序(显示1,2,3,4,5)

/*程序功能:

在1602液晶上显示12345*/

#include

typedefunsignedcharuchar;

typedefunsignedintuint;

sbitbeep=P1^5;//定义蜂鸣器端口

sbitLCD_RS=P2^6;

sbitLCD_RW=P2^5;

sbitLCD_EP=P2^7;

ucharcodetable[]={"12345"};

voiddelay(uintxms)

{//延时函数

uinti,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

voidlcd_wcmd(ucharcmd)

{//写入指令数据到LCD

LCD_RS=0;

LCD_RW=0;

LCD_EP=0;

P0=cmd;

delay(10);

LCD_EP=1;

delay(10);

LCD_EP=0;

}

voidlcd_wdata(uchardat)

{//写入字符显示数据到LCD

LCD_RS=1;

LCD_RW=0;

LCD_EP=0;

P0=dat;

delay(10);

LCD_EP=1;

delay(10);

LCD_EP=0;

}

voidlcd_init()//LCD初始化设定初始化函数

{

lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据

delay

(1);

lcd_wcmd(0x0c);//设置开显示,不显示光标

delay

(1);

lcd_wcmd(0x06);//写一个字符后地址指针加1

delay

(1);

lcd_wcmd(0x01);//显示清0,数据指针清0

delay

(1);

}

voidmain()

{

uchari;

beep=0;//蜂鸣器默认处于开启状态,所以关闭它

lcd_init();//LCD初始化

delay(10);

lcd_wcmd(0x80);//设置显示位置为第一行的第1个字符

while(table[i]!

='\0')

{//显示字符"12345"

lcd_wdata(table[i]);

i++;

delay(200);//控制两字之间显示速度

}

while

(1);

}

字样滚动显示程序

/*程序功能:

在1602液晶上滚动显示字样*/

#include

typedefunsignedcharuchar;

typedefunsignedintuint;

sbitbeep=P1^5;//定义蜂鸣器端口

sbitLCD_RS=P2^6;//数据/命令选择端(H/L)

sbitLCD_RW=P2^5;//读写选择端(1/0)

sbitLCD_EP=P2^7;//使能信号

ucharcodetable1[]={"Hellotoworld"};

ucharcodetable2[]={"Hellotolife"};

voiddelay(uintxms)

{//延时函数

uinti,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

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

/*

/*写指令数据到LCD

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。

/*

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

voidlcd_wcmd(ucharcmd)

{//写入指令数据到LCD

//while(lcd_bz());

LCD_RS=0;

LCD_RW=0;

LCD_EP=0;

P0=cmd;

delay

(1);

LCD_EP=1;

delay

(1);

LCD_EP=0;

}

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

/*

/*写显示数据到LCD

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。

/*

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

voidlcd_wdata(uchardat)

{//写入字符显示数据到LCD

//while(lcd_bz());

LCD_RS=1;

LCD_RW=0;

LCD_EP=0;

P0=dat;

delay

(1);

LCD_EP=1;

delay

(1);

LCD_EP=0;

}

voidlcd_init()//LCD初始化设定初始化函数

{

lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据

delay

(1);

lcd_wcmd(0x0c);//设置开显示,不显示光标

delay

(1);

lcd_wcmd(0x06);//写一个字符后地址指针加1

delay

(1);

lcd_wcmd(0x01);//显示清0,数据指针清0

delay

(1);

}

voidmain()

{

uchari;

beep=0;//蜂鸣器默认处于开启状态,所以关闭它

lcd_init();//LCD初始化

delay(10);

while

(1)

{

lcd_wcmd(0x01);//清屏

i=0;

lcd_wcmd(0x80+0x10);//第1行第17列(屏幕之外,不显示)

while(table1[i]!

='\0')//写入Hellotoworld

{

lcd_wdata(table1[i]);

i++;

}

i=0;

lcd_wcmd(0x80+0x50);//第1行第17列(屏幕之外,不显示)

while(table2[i]!

='\0')//写入Hellotolife

{

lcd_wdata(table2[i]);

i++;

}

i=0;

for(i=0;i<30;i++)//向左移动30格

{

lcd_wcmd(0x18);//全屏字符同时左移一格,写在屏幕外的字符慢慢显示出来

delay(800);//控制移动时间

}

}

}

综合实验三:

按键控制1602显示

/*此程序功能:

按下4个按键可在1602液晶上显示不同字样*/

#include//52系列单片机头文件

typedefunsignedcharuchar;

typedefunsignedintuint;

sbitLCD_RS=P2^6;//数据/命令选择端(H/L)

sbitLCD_RW=P2^5;//读写选择端(1/0)

sbitLCD_EP=P2^7;//使能信号

sbitkey1=P3^2;//定义按键端口

sbitkey2=P3^3;

sbitkey3=P3^4;

sbitkey4=P3^5;

sbitbeep=P1^5;//定义蜂鸣器端口

ucharcodetable1[]={"YouPressKey1"};

ucharcodetable2[]={"YouPressKey2"};

ucharcodetable3[]={"YouPressKey3"};

ucharcodetable4[]={"YouPressKey4"};

uchari;

voiddelay(uintxms)

{//延时函数

uinti,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

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

/*

/*写指令数据到LCD

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。

/*

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

voidlcd_wcmd(ucharcmd)

{//写入指令数据到LCD

LCD_RS=0;

LCD_RW=0;

LCD_EP=0;

P0=cmd;

delay

(1);

LCD_EP=1;

delay

(1);

LCD_EP=0;

}

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

/*

/*写显示数据到LCD

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。

/*

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

voidlcd_wdata(uchardat)

{//写入字符显示数据到LCD

LCD_RS=1;

LCD_RW=0;

LCD_EP=0;

P0=dat;

delay

(1);

LCD_EP=1;

delay

(1);

LCD_EP=0;

}

voidlcd_init()//LCD初始化设定初始化函数

{

lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据

delay

(1);

lcd_wcmd(0x0c);//设置开显示,不显示光标

delay

(1);

lcd_wcmd(0x06);//写一个字符后地址指针加1

delay

(1);

lcd_wcmd(0x01);//显示清0,数据指针清0

delay

(1);

}

voidkeyscan()//按键扫描,根据扫描到的不同按键在1602上显示不同字样

{

if(key1==0)

{

delay(10);//利用软件延时坚决按键过程中的抖动问题

lcd_wcmd(0x01);//清屏

if(key1==0)

{

while(!

key1);//等待按键释放

i=0;

lcd_wcmd(0x80);//第1行第1列

while(table1[i]!

='\0')//按键1对应的字样

{

lcd_wdata(table1[i]);

i++;

}

}

}

if(key2==0)

{

delay(10);//延时消抖

lcd_wcmd(0x01);//清屏

if(key2==0)

{

while(!

key2);

i=0;

lcd_wcmd(0x80+0x40);//第2行第1列

while(table2[i]!

='\0')//按键1对应的字样

{

lcd_wdata(table2[i]);

i++;

}

}

}

if(key3==0)

{

delay(10);

lcd_wcmd(0x01);//清屏

if(key3==0)

{

while(!

key3);

i=0;

lcd_wcmd(0x80);//第1行第1列

while(table3[i]!

='\0')//按键1对应的字样

{

lcd_wdata(table3[i]);

i++;

}

}

}

if(key4==0)

{

delay(10);

lcd_wcmd(0x01);//清屏

if(key4==0)

{

while(!

key4);

i=0;

lcd_wcmd(0x80+0x40);//第2行第1列

while(table4[i]!

='\0')//按键1对应的字样

{

lcd_wdata(table4[i]);

i++;

}

}

}

}

voidmain()

{

lcd_init();//LCD初始化

beep=0;//蜂鸣器默认是开启的,所以先关闭蜂鸣器

while

(1)

{

keyscan();//调用键盘扫描函数

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1