LCD1602显示模块.docx

上传人:b****8 文档编号:8902263 上传时间:2023-02-02 格式:DOCX 页数:8 大小:79.72KB
下载 相关 举报
LCD1602显示模块.docx_第1页
第1页 / 共8页
LCD1602显示模块.docx_第2页
第2页 / 共8页
LCD1602显示模块.docx_第3页
第3页 / 共8页
LCD1602显示模块.docx_第4页
第4页 / 共8页
LCD1602显示模块.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

LCD1602显示模块.docx

《LCD1602显示模块.docx》由会员分享,可在线阅读,更多相关《LCD1602显示模块.docx(8页珍藏版)》请在冰豆网上搜索。

LCD1602显示模块.docx

LCD1602显示模块

单片机C语言

程序设计报告

 

题目:

基于LCD1602的时间显示

 

姓名:

佚名

学号:

080211999

班级:

2011级电信2班

 

指导老师:

佚名

一、设计目的

1、学习单片机开发环境Keil的使用;

2、学习使用Proteus仿真软件进行仿真;

3、了解LCD1602的具体功能并会使用其实现一定功能.

二、设计内容

设计一个基于LCD1602的时间显示模块、要求显示出当前时间。

三、所需器件

硬件:

XP86型兼容机软件:

Proteus和Keil

四、关于LCD1602介绍

1、简介

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形.

2、主要引脚功能介绍

第4脚:

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

  

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作。

  

第6脚:

E(或EN)端为使能(enable)端.

3、其他引脚功能简介:

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

数据

3

VL

液晶显示偏压

11

D4

数据

4

RS

数据/命令选择

12

D5

数据

5

R/W

读/写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

15

BLA

背光源正极

8

D1

数据

16

BLK

背光源负极

 

五、Proteus仿真

LCD1602显示模块

 

时钟显示Proteus仿真结果

六、参考程序

#include

h〉

#include

#include〈absacc。

h〉

#definecom8155XBYTE[0xfd00]

#definePAP2

sbitRS=P3^0;

sbitRW=P3^1;

sbitEN=P3^2;

unsignedinthour=10,min=20,sec=2,cnt=0;

unsignedchartime[10]={’—','—',’:

',’—',’—',':

’,'—’,’—'};

unsignedcharcdoe[10]={’0’,'1’,'2’,’3','4','5',’6’,’7’,'8’,’9'};

voidtrans();

voiddelayms(unsignedint);

bitLCDBusy();

voidLCDWriteCMD(unsignedchar);

voidLCDWriteDAT(unsignedchar);

voidLCDInit();

voidLCDShowString(unsignedchar*,unsignedchar,unsignedchar);

voidmain()

IE=0X82;

TMOD&=0xf1;TMOD|=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

com8155=0x0f;

delayms(500);

LCDInit();

delayms(500);

TR0=1;

while

(1)

trans();

LCDShowString(time,4,1);

}

voidtrans()

{

if(sec〉59)

{

sec=0;

min+=1;

}

time[1]=cdoe[hour%10];

time[0]=cdoe[hour/10];

time[7]=cdoe[sec%10];

time[6]=cdoe[sec/10];

time[4]=cdoe[min%10];

time[3]=cdoe[min/10];

}

bitLCDBusy()

bitbusy;

EN=0;

RS=0;

RW=1;

PA=0xff;

_nop_();_nop_();_nop_();

EN=1;

_nop_();_nop_();_nop_();

busy=(bit)(PA&0x80);

EN=0;

returnbusy;

}

voidLCDWriteCMD(unsignedcharcmd)//向1602写指令函数

unsignedchari=0xff;//定义i

while(LCDBusy()&&i—-);//检测1602是否忙

EN=0;//EN脚送0

RS=0;//RS脚送0

RW=0;//RW脚送0

PA=cmd;//向1602送命令

_nop_();_nop_();_nop_();//nop延时

EN=1;//EN脚送1

_nop_();_nop_();_nop_();//nop延时

EN=0;//EN脚送0

}

voidLCDWriteDAT(unsignedchardat)//向1602写数据函数

{

unsignedchari=0xFF;//定义i

while(LCDBusy()&&i—-);//检测1602是否忙

EN=0;//EN脚送0

RS=1;//RS脚送1

RW=0;//RW脚送0

PA=dat;//向1602送数据dat

_nop_();_nop_();_nop_();//nop延时

EN=1;//EN脚送1

_nop_();_nop_();_nop_();//nop延时

EN=0;//EN脚送0

voidLCDInit()

{

LCDWriteCMD(0x38);//设置两行显示、字形5X7

LCDWriteCMD(0x08);//关闭显示功能

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

LCDWriteCMD(0x06);//设置输入模式

LCDWriteCMD(0x0C);//开启显示功能

}

voidLCDShowString(unsignedchar*dat,unsignedcharx,unsignedchary)//让1602显示一个字符串的函数的声明

{

unsignedchar*p=dat;//定义指针变量,并指向要显示的字符串

x|=y?

0xc0:

0x80;//将写第y行第x列转换为1602的指令

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

当前位置:首页 > 总结汇报 > 学习总结

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

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