液晶显示广告牌的设计课程设计.docx

上传人:b****1 文档编号:1447405 上传时间:2022-10-22 格式:DOCX 页数:16 大小:163.33KB
下载 相关 举报
液晶显示广告牌的设计课程设计.docx_第1页
第1页 / 共16页
液晶显示广告牌的设计课程设计.docx_第2页
第2页 / 共16页
液晶显示广告牌的设计课程设计.docx_第3页
第3页 / 共16页
液晶显示广告牌的设计课程设计.docx_第4页
第4页 / 共16页
液晶显示广告牌的设计课程设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

液晶显示广告牌的设计课程设计.docx

《液晶显示广告牌的设计课程设计.docx》由会员分享,可在线阅读,更多相关《液晶显示广告牌的设计课程设计.docx(16页珍藏版)》请在冰豆网上搜索。

液晶显示广告牌的设计课程设计.docx

液晶显示广告牌的设计课程设计

 

 

液晶显示广告牌的设计

1技术要求

在日常生活中,经常可见各种广告牌,本设计要求利用单片机控制液晶显示屏显示相关的信息,需完成下列任务:

(1)利用LCD显示某一条固定语句;

(2)能够通过按键对固定语句的显示方式进行修改,比如按一次按键,显示的字符少一个,一直到最后所有字符完全消失;或者按一次按键所有字符显示的位置左移一格等。

2设计方案及原理

让LCD显示固定语句在C语言环境下只需将字符串直接赋给LCD即可,让LCD显示的字符方式进行修改就得给LCD传递相关指令。

第一步利用LCD显示某一条固定语句。

LCD显示字符的时候,是一个一个字符显示,显示一个字符后,光标加一或减一表示下一个字符显示的位置。

因此显示固定语句的时候,我们可以先将固定语句存在一个字符串数组,光标操作为当写一个字符后地址指针加一。

选择好初始地址后,利用一个循环结构程序将整个字符串数组内容显示出来。

第二步让LCD显示的字符串显示方式进行修改。

鉴于LCD自身就能将字符串以不同方式的显示出来,因此我们只需将对应指令语句传递给LCD即可,通过外部按键产生中断,让LCD来响应对应指令语句。

方案流程图如图1所示。

 

 

 

图1程序流程图

 

3实现方案

3.1LM016L基本资料

3.1.1引脚说明

LM016L为字符型液晶显示器LCD,其图形符号、引脚及属性如图2所示。

引脚说明如下:

①数据线D7~D0

②控制线(有3根:

RS、RW、E)

③1根地线Vss

④一根电源线(VDD)

 

图2LCD图形符号和引脚

3.1.2LM016L属性及RAM地址:

LM016L的属性设置如下:

①每行的字符数为16,行数为2;

②时钟为250KHz;

③行1的字符地址为80H~8FH

④行2的字符地址为C0H~CFH

3.1.3基本操作时序

其具体时序见表1。

 

表1LM016L信号真值表

RS

R/W

E

功能

0

0

下降沿

写指令代码

0

1

高电平

读忙标志和AC值

1

0

下降沿

写数据

1

1

高电平

读数据

3.1.4LCD指令集

(1)清屏指令

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

0

0

1

功能:

<1>清除液晶显示器,即将DDRAM的内容全部填入“空白”的字符码20H;

<2>光标归位,即将光标撤回液晶显示屏的左上方;

<3>将地址计数器(AC)的值设为0。

(2)光标归位指令

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

0

1

*

功能:

<1>把光标撤回到显示器的左上方;

<2>把地址计数器(AC)的值设置为0;

<3>保持DDRAM的内容不变

(3)输入模式指令设置

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

1

I/D

S

功能:

设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。

其中:

I/D=1:

数据读、写操作后,AC自动增一;

I/D=0:

数据读、写操作后,AC自动减一;

S=1:

数据读、写操作,画面平移;

S=0:

数据读、写操作,画面不动。

(4)显示开关控制指令

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

1

D

C

B

功能:

控制显示器开/关、光标显示/关闭以及光标是否闪烁。

其中:

D表示显示开关:

D=1为开,D=0为关;

C表示光标开关:

C=1为开,C=0为关;

B表示闪烁开关;B=1为开,B=0为关。

(5)设定显示屏或光标移动方向指令

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

1

S/C

R/L

*

*

功能:

使光标移位或使整个显示屏幕移位。

其中:

S/C=1:

画面平移一个字符位;

S/C=0:

光标平移一个字符位;

R/L=1:

右移;

R/L=0:

左移。

(6)功能设定指令

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

1

DL

N

F

*

*

功能:

设定数据总线位数、显示的行数及字型。

其中:

DL=1,8位数据接口;DL=0,4位数据接口;

N=1,两行显示;N=0,一行显示;

F=1,5×10点阵字符;F=0,5×7点阵字符。

(7)设定DDRAM地址指令

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

A6

A5

A4

A3

A2

A1

A0

功能:

设定下一个要存入数据的CGRAM的地址。

(8)读取忙信号或AC地址指令

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

1

BF

AC6

AC5

AC4

AC3

AC2

AC1

AC0

功能:

<1>读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;

<2>读取地址计数器(AC)的内容。

(9)数据写入DDRAM或CGRAM指令

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

0

数据

功能:

<1>将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;

<2>将用户自己设计的图形存入CGRAM。

(10)从CGRAM或DDRAM读出数据的指令

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

1

数据

功能:

读取DDRAM或CGRAM中的内容。

3.1.5控制器接口时序说明

3.1.5.1读操作时序

 

图3读操作时序

 

3.1.5.2写操作时序

图4写操作时序

3.2硬件连接图

了解完LM016L基本资料,现在我们可以将LCD与单片机接在一起。

实现方案时,将89C51单片机的P1口与LCD数据口连接起来,P3口接液晶控制端口及按键。

具体的硬件连接图如图5所示。

图5液晶广告牌硬件设计图

4源程序代码

#include

#include//库函数头文件,代码中引用了_nop_()函数

//定义控制信号端口

sbitRS=P3^0;//P3.0

sbitRW=P3^1;//P3.1

sbitE=P3^2;//P3.2

intjishu=0;

//声明调用函数

voidlcd_w_cmd(unsignedcharcom);//写命令字函数

voidlcd_w_dat(unsignedchardat);//写数据函数

unsignedcharlcd_r_start();//读状态函数

voidint1();//LCD初始化函数

voiddelay(unsignedchart);//可控延时函数

voiddelay1();//软件实现延时函数,5个机器周期

voidmain()//主函数

{

unsignedcharlcd[]="iamthebestonemeibangsiweite";

unsignedcharlcd1[]="iamyuyangyifromwhut";

unsignedchari;

EA=1;//全局中断开

EX1=1;//外部中断0开

IT1=1;//边沿触发,IT1=0表示电平触发

P1=0xff;//送全1到P0口

int1();//初始化LCD

delay(255);

lcd_w_cmd(0x80);//设置显示位置

delay(255);

for(i=0;i<36;i++)//显示字符串

{

lcd_w_dat(lcd[i]);

delay(200);

}

lcd_w_cmd(0xc0);//设置显示位置

delay(255);

for(i=0;i<25;i++)//显示字符串

{

lcd_w_dat(lcd1[i]);

delay(200);

}

while

(1){

switch(jishu){

case0:

for(i=0;i<1;i++)//闪烁

{

lcd_w_cmd(0x08);

delay(200);

lcd_w_cmd(0x0d);

delay(200);

}

break;

case1:

for(i=0;i<1;i++)//左移

{

lcd_w_cmd(0x1c);

delay(200);

}

break;

case2:

for(i=0;i<1;i++)//右移

{

lcd_w_cmd(0x18);

delay(200);

}

break;

}

}

}

voidISR_Key(void)interrupt2using1

{

jishu++;

jishu=jishu%3;

}

//函数名:

delay

//函数功能:

采用软件实现可控延时

//形式参数:

延时时间控制参数存入变量t中

//返回值:

voiddelay(unsignedchart)

{

unsignedcharj,i;

for(i=0;i

for(j=0;j<50;j++);

}

//函数名:

delay1

//函数功能:

采用软件实现延时,5个机器周期

//形式参数:

//返回值:

voiddelay1()

{

_nop_();

_nop_();

_nop_();

}

//函数名:

int1

//函数功能:

lcd初始化

//形式参数:

//返回值:

voidint1()

{

lcd_w_cmd(0x3c);//设置工作方式

lcd_w_cmd(0x0d);//设置光标

lcd_w_cmd(0x01);//清屏

lcd_w_cmd(0x06);//设置输入方式

lcd_w_cmd(0x80);//设置初始显示位置

}

//函数名:

lcd_r_start

//函数功能:

读状态字

//形式参数:

//返回值:

返回状态字,最高位

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

当前位置:首页 > 自然科学 > 化学

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

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