单片机+LCD1602液晶显示字符串.docx
- 文档编号:8530790
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:12
- 大小:129.86KB
单片机+LCD1602液晶显示字符串.docx
《单片机+LCD1602液晶显示字符串.docx》由会员分享,可在线阅读,更多相关《单片机+LCD1602液晶显示字符串.docx(12页珍藏版)》请在冰豆网上搜索。
单片机+LCD1602液晶显示字符串
1602液晶显示字符串(附带程序)
(注意说明:
使用的实验板是郭天祥老师的52单片机板)
LCD1602
沖U耳◎一产■f、CX
编号
符号
引脚说明
编号
frfrezzi
付T
引脚说明
1
vss
电源地
9
02
DataI/O
2
VDD
电源正极
10
03
DataI/O
3
VL
液晶显示偏压信号
11
D-1
DataI/O
4
RS
数据倫令选择端(H/L)
12
D5
DataI/O
5
R/W
读f写选择端<H/L)
13
D6
DataI/O
6
E
使能信号
14
07
DataI/O
7
DO
Data1/0
15
BLA
背光源正极
8
DI
DataI/O
16
BLK
背光源负极
基本操作电路
「1读状态:
输入:
RS二L,般-H,E=H
输出:
DW左状态字
X2写指令;
输入:
RS=L,R*=L,D0「D7=指令码,E二高脉冲
输出:
无
1弋读数据;
输入;
RS二H.RW=H.E=H
输出:
D077二数据
L4写数据:
输入;
RS二H.RW=L.D0〜D7=数据.E二高脉冲
输出;
无
状态字说明
STA7
STA6
STA5
STA4
STA3
STA2
STA1
STAO
D7
D6
D5
D4
D3
D2
D1
D0
STAA6当前数据地址指针的数值
S"7读写操作使能T___0:
初始化相关指令的意思
显示模式设苦
指令码
功能
0
0
1
1
1
0
0
0
设青16X2显示.5X7点阵,8位数据接口
显示开关及光标设西
指令码
功能
0
0
0
0
1
D
G
D—1开显乔匚D—0关显示
G二1显示光标:
不显示光标
B二1光标闪烁iB=0光标不显不
0
0
0
0
0
1
N
S
N-1窖读或写一个字符后地址指针加—t且光标加一
N-0当读或写一个字符后地址指针减一,且光标减一
S=1当写一个字符,整屏显示左移(N=1)
读时序图
RS
R/W
E
DB0-DB7
lc
写时序图
要想通过1602液晶来显示你想要显示字符串,其实是很简单的,程序虽然有点长,但是都是按照步骤来的。
1602的五大步骤
第一个步骤:
检查LCD忙状态
lcd_busy为1时,忙,等待。
lcd-busy为0时,闲,可写指令与数据。
第二个步骤:
写指令数据到LCD
RS=L,RW=L,E=高脉冲,D0-D7二指令码。
第三个步骤:
写显示数据到LCD
RS=H,RW=L,E=高脉冲,D0-D7=数据。
第四个步骤:
设定显示位置
第五个步骤:
LCD初始化设定
只要这五步你弄懂了,什么样的字符串都可以按照你的方式显示。
至于这其中的步骤的具体的方式,我们就要参照1602的资料和时序图!
不过你大可不必,这份文档就足够了!
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitdula=P2A6;sbitwela=P2A7;
WLCOMETO"};{"JIANGGANHUA"};
NANCHANG"};
HANGKONGDX"};
sbitLCD_RS=P3A5;sbitLCD_RW=P3A6;sbitLCD_EN=P3A4;ucharcodedis1[]={"ucharcodedis2[]=ucharcodedis3[]={"ucharcodedis4[]={"voiddelay(intms)
{
inti;
while(ms--)
{
for(i=0;i<110;i++)
_nop_();
}
}bitlcd_busy()
{
bitresult;
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
_nop_();
_nop_();
_nop_();
_nop_();
result=(bit)(P0&0x80);
LCD_EN=0;
returnresult;
}
voidlcd_wcmd(ucharcmd)
{
while(lcd_busy());
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
_nop_();
_nop_();
P0=cmd;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN=1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN=0;
}
voidlcd_wdat(uchardat){
while(lcd_busy());
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN=1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN=0;
}
voidlcd_pos(ucharpos)
{
lcd_wcmd(pos|0x80);
}
voidlcd_init()
{
dula=0;
wela=0;lcd_wcmd(0x38);
delay(5);lcd_wcmd(0x38);
delay(5);lcd_wcmd(0x38);
delay(5);lcd_wcmd(0x0c);
//数据指针=80+地址变量
//16*2显示,5*7点阵,8位数据
//显示开,关光标
delay(5);lcd_wcmd(0x06);delay(5);lcd_wcmd(0x01);delay(5);
}
main()
{
uchari;delay(10);lcd_init();
//移动光标
//清除LCD的显示内容
//初始化LCD
while
(1)
{
lcd_wcmd(0x06);
lcd_pos(0);
i=0;
while(dis1[i]!
='\0')
{
lcd_wdat(dis1[i]);
i++;delay(50);
}
lcd_pos(0x40);
i=0;
while(dis2[i]!
='\0')
{
lcd_wdat(dis2[i]);
i++;
delay(50);
}
//向右移动光标//设置显示位置为第一行的第1个字符
//显示字符
//控制两字之间显示速度
//设置显示位置为第二行第1个字符
//显示字符"
//控制两字之间显示速度
lcd_wcmd(0x01);
delay(200);
lcd_wcmd(0x04);
lcd_pos(15);
i=0;
delay(50);
while(dis3[i]!
='\0')
//闪动二次
//清除LCD的显示内容
//控制转换时间
//向左移动光标//设置显示位置为第一行的第16个字符
lcd_wdat(dis3[i]);
i++;
delay(50);
}
lcd_pos(0x4F);
i=0;
while(dis4[i]!
='\0')
{
lcd_wdat(dis4[i]);
i++;
delay(50);
}
lcd_wcmd(0x01);
delay(100);
//控制两字之间显示速度
//设置显示位置为第二行的第
//显示字符"
//控制两字之间显示速度
//清除LCD的显示内容//控制转换时间
实验现象,1602液晶显示我在数组里设置的字符串!
739141300疑问解答!
16个字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 LCD1602 液晶显示 字符串