1602液晶显示器控制.docx
- 文档编号:25846122
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:27
- 大小:308.17KB
1602液晶显示器控制.docx
《1602液晶显示器控制.docx》由会员分享,可在线阅读,更多相关《1602液晶显示器控制.docx(27页珍藏版)》请在冰豆网上搜索。
1602液晶显示器控制
目录
第一章课程设计任务,要求和方案2
1.1课程设的计任务2
1.2课程设计要求2
1.3系统设计方案2
1.3.1P89V51RB1单片机3
1.3.2显示模块4
1.3.3实时时间计算模块5
1.3.4整体方案框图6
第二章系统硬件设计7
2.1LCD显示模块的设计7
2.2时间计算模块设计8
第三章系统软件设计9
3.11602液晶11条指令介绍9
3.2DS1302控制字的介绍13
3.3DS1302单字节读写时序介绍14
3.4DS1302操作指令介绍15
第四章课程设计心得体会16
参考文献16
附录17
附录一:
系统电路原理图17
附录二:
元器件清单(最小系统板除外)17
附录三:
源程序代码18
第一章课程设计任务,要求和方案
1.1课程设的计任务
通过对本课题的设计,进一步熟悉单片机控制系统,并了解系统设计的一般规律。
用P89V51RB2设计一个1602液晶显示器控制,实现数据的显示。
1.2课程设计要求
(1)设计一个1602液晶显示控制器,能够显示一定数字量的字母或数字。
(2)能够显示年月日和时分秒。
(3)写出详细的设计报告(含操作说明),给出全部电路和源程序。
1.3系统设计方案
本系统以P89V51RB2单片机为控制核心,通过与DS1302获取实时时间,并将得到的数据通过1602液晶显示出来。
因此本设计包含以下各单元模块:
P89V51RB2单片机控制模块、1602液晶显示模块、实时时间计算模块。
下面对各个模块逐一进行介绍:
1.3.1P89V51RB1单片机
1.P89V51RB2单片机概述
P89V51RB2是一款增强型80C51微控制器,包含16KB的Flash程序存储器和1024个字节的数据RAM.
P89V51RB2的典型特性是它的X2方式选项。
利用该特性,用户可以将编写的应用程序以传统的80C51时钟频率或X2方式的时钟频率运行,选择X2方式可在相同时钟频率下获得2倍的执行速度,这样还可以极大地降低电磁干扰。
Flash程序存储器支持并行编程和串行在系统编程(ISP)。
并行编程方式提供了高速的分组编程方式,可以节省成本和上市时间。
ISP编程方式不需要专用烧录器、所需外围电路简单、可靠性强,近年来得到了广泛的应用。
目前,许多新型的单片机均具有此功能。
P89V51RB2也可以采用在应用中编程,允许随时间对Flash程序存储器重新配置,即使是应用程序正在运行也不例外。
2.P89V51RB2单片机的特性
*80C51核心处理单元;
*5V的工作电压,操作频率为0~40MHz;
*16/32/64kB的片内Flash程序存储器,具有ISP和IAP功能;
*通过软件或ISP选择支持12时钟(默认)或6时钟模式;
*SPI(串行外围接口)和增强型UART;
*PCA(可编程计数器阵列),具有PWM和捕获/比较功能;
*4个8位I/O口,含有3个高电流P1口(每个I/O口的电流为16mA);
*3个16位定时器/计数器;
*可编程看门狗定时器(WDT);
*8个中断源,4个中断优先级;
*2个DPTR寄存器;
*低EMI方式(ALE禁能);
*兼容TTL和CMOS逻辑电平;
*掉电检测;
*低功耗模式
*掉电模式,外部中断唤醒;
*空闲模式;
*DIP40,PLCC44和TQFP44的封装。
1.3.2显示模块
1.1602液晶显示器概述
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用。
1602的驱动电路带有11条指令,可以很方便的控制液晶的现实效果如:
清屏、左移右移、光标显示。
而且1602显示的字符在下一条指令为到来之前不会改变,也就是能够维持显示的字符,1602液晶占用的系统资源也少。
2.1602技术参数、引脚和外形
(1)主要技术参数如表2-1
表2-1主要技术参数
显示容量
16×2个字符
芯片工作电压
4.5~5.5V
工作电流
2.0mA(5.0V)
模块最佳工作电压
5.0V
字符尺寸
2.95×4.35(W×H)mm
(2)芯片各引脚如下表2-2
表2-2引脚表格
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
DataI/O
2
VDD
电源正极
10
D3
DataI/O
3
VL
液晶显示偏压信号
11
D4
DataI/O
4
RS
数据/命令选择端(H/L)
12
D5
DataI/O
5
R/W
读/写选择端(H/L)
13
D6
DataI/O
6
E
使能信号
14
D7
DataI/O
7
D0
DataI/O
15
BLA
背光源正极
8
D1
DataI/O
16
BLK
背光源负极
(3)芯片引脚分布如图2.1
图2.1LCD1602引脚分布
(4)芯片外形尺寸如图2.2
图2.2LCD1602外形尺寸
1.3.3实时时间计算模块
1.DS1302简述
本课设用的是DS1302实时时间芯片。
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。
利用单片机强大的控制功能就可实现实时计时的功能,而且消耗的系统资源少,程序简单。
2.芯片引脚和功能特性
(1)引脚分布如图2.3
图2.3DS1302引脚分布
(2)芯片的功能特性
*时钟计数功能,可以对秒、分钟、小时、月、星期、年的计数。
年计数可达到2100年。
*有31*8位的额外数据暂存寄存器
*最少I/O引脚传输,通过三引脚控制
*工作电压:
2.0-5.5V
*工作电流小于320纳安(2.0V)
*读写时钟寄存器或内部RAM(31*8位的额外数据暂存寄存)可以采用单字节模式和突发模式
*8-pinDIP封装或8-pinSOICs
*兼容TTL(5.0V)
*可选的工业级别,工作温度-40–85摄氏度
*兼容DS1202较DS1202增加的功能:
1,可通过Vcc1进行涓流充电
2,双重电源补给
3,备用电源可采用电池或者超级电容(0.1F)
1.3.4整体方案框图
第二章系统硬件设计
2.1LCD显示模块的设计
1602液晶功耗较小可直接与单片机接口相接,电源直接与电源电路相接,使用单片机的P0口和P1口与1602进行通信。
1602的相应功能特性和引脚在前章一介绍。
1.1602液晶与单片机接口电路
图3.11602和单片机的接口电路
2.2时间计算模块设计
DS1302通过三根口线实现与单片机的通信,因DS1302功耗很小,即使电源掉电后通过3V的纽扣电池仍能维持DS1302精确走时.
DS1302的功能特性和引脚前章已经介绍
1.DS1302的工作过程
主要工作过程:
移位寄存器,控制逻辑,晶振,时钟和RAM。
在进行任何数据传输时,必须被制高电平(注意虽然将它置为高电平,内部时钟还是在晶振作用下走时的,此时,允许外部读写数据),在每个SCLK上升沿时数据被输入,下降沿时数据被输出,一次只能读写一位,适度还是写需要通过串行输入控制指令来实现(也是一个字节),通过8个脉冲便可读取一个字节从而实现串行输入与输出。
最初通过8个时钟周期载入控制字节到移位寄存器。
如果控制指令选择的是单字节模式,连续的8个时钟脉冲可以进行8位数据的写和8位数据的读操作,SCLK时钟的上升沿时,数据被写入DS1302,SCLK脉冲的下降沿读出DS1302的数据。
8个脉冲便可读写一个字节。
在突发模式,通过连续的脉冲一次性读写完7个字节的时钟/日历寄存器(注意时钟/日历寄存器要读写完),也可以一次性读写8~328位RAM数据(可按实际情况读写一定数量的位,不必全部读写,两者的区别)
2.DS1302与单片机的接口电路
图3.2DS1302与单片机的接口电路
系统软件设计
3.11602液晶11条指令介绍
1.清屏指令
功能:
<1>清除液晶显示器,即将DDRAM的内容全部填入“空白”的字符码20H;
<2>光标归位,即将光标撤回液晶显示屏的左上方;
<3>将地址计数器(AC)的值设为0;
2.光标归位指令
功能:
<1>把光标撤回到显示器的左上方;
<2>把地址计数器(AC)的值设置为0;
<3>保持DDRAM的内容不变;
3.输入模式设置指令
功能:
设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否
移动。
参数设定的情况如下所示:
位名 设置
I/D 0=写入新数据后光标左移 1=写入新数据后光标右移
S 0=写入新数据后显示屏不移动1=写入新数据后显示屏整体右移1个字
4.显示开关控制指令
功能:
控制显示器开/关、光标显示/关闭以及光标是否闪烁。
参数设定的情况如下:
位名 设置
D 0=显示功能关 1=显示功能开
C 0=无光标 1=有光标
B 0=光标不闪烁 1=光标闪烁
5.设定显示屏或光标移动方向指令
功能:
使光标移位或使整个显示屏幕移位。
参数设定的情况如下:
S/C R/L 设定情况
0 0 光标左移1格,且AC值减1
0 1 光标右移1格,且AC值加1
1 0 显示器上字符全部左移一格,但光标不动
1 1 显示器上字符全部右移一格,但光标不动
6.功能设定指令(非常重要的指令)
功能:
设定数据总线位数、显示的行数及字型。
参数设定的情况如下:
位名 设置
DL 0=数据总线为4位1=数据总线为8位
N 0=显示1行1=显示2行
F 0=5×7点阵/每字符 1=5×10点阵/每字符
7.设定CGRAM地址指令
功能:
设定下一个要存入数据的CGRAM的地址。
8.设定DDRAM地址指令
功能:
设定下一个要存入数据的CGRAM的地址。
9.读取忙信号或AC地址指令
功能:
<1>读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机
送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;
<2>读取地址计数器(AC)的内容。
10.数据写入DDRAM或CGRAM指令
功能:
<1>将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;
<2>将用户自己设计的图形存入CGRAM。
11.从CGRAM或DDRAM读出数据的指令
功能:
读取DDRAM或CGRAM中的内容。
基本操作时序:
读状态 输入:
RS=L,RW=H,E=H 输出:
DB0~DB7=状态字
写指令 输入:
RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码
输出:
无
读数据 输入:
RS=H,RW=H,E=H 输出:
DB0~DB7=数据
写数据 输入:
RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据
输出:
无
3.2DS1302控制字的介绍
控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6:
如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1(A4~A0):
指示操作单元的地址;
位0(最低有效位):
如为0,表示要进行写操作,为1表示进行读操作。
读数据:
读数据时在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,
读出的数据是从最低位到最高位。
写数据:
控制字总是从最低位开始输出。
在控制字指令输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入也是从最低位(0位)开始。
位0(最低有效位):
为1表示进行读操作。
如为0,表示要进行写操作,控制字后SCLK下降沿读数据SCLK上升沿写数据。
3.3DS1302的数据输入和输出控制
1.复位以及时钟控制:
所有的数据传输在RST置一时进行(反复强调),RST输入信号有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST为
高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK始终是输入端。
2.数据输入:
经过8个时钟周期的控制字节的输入,一个字节的输入将在下8个时钟周期的上升沿完成,数据传输从字节最低位开始。
3.数据输出:
经过8个时钟周期的控制读指令的输入,控制指令串行输入后,一个字节的数据将在下个8个时钟周期的下降沿被输出,注意第一位输出是在最后一位控制指令所在脉冲的下降沿被输出,要求RST保持位高电平。
3.3DS1302单字节读写时序介绍
DS1302的数据读写是通过I/O串行进行的。
当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作,以及操作的址。
第二个字节就是要读或写的数据了。
我们先看
单字节写:
在进行操作之前先得将CE(也可说是RST)置高电平,然后单片机将控制字的位0放到I/O上,当I/O的数据稳定后,将SCLK置高电平,DS1302检测到SCLK的上升沿后就将I/O上的数据读取,然后单片机将SCLK置为低电平,再将控制字的位1放到I/O上,如此反复,将一个字节控制字的8个位传给DS1302。
接下来就是传一个字节的数据给DS1302,当传完数据后,单片机将CE置为低电平,操作结束。
单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,SCLK还在高电平时,DS1302就将数据放到I/O上,单片机将SCLK置为低电平后数据锁存,单机机就可以读取I/O上的数据。
如此反复,将一个字节的数据读入单片机。
读与写操作的不同就在于,写操作是在SCLK低电平时单片机将数据放到IO上,当SCLK上升沿时,DS1302读取。
而读操作是在SCLK高电平时DS1302放数据到IO上,将SCLK置为低电平后,单片机就可从IO上读取数据
。
3.4DS1302操作指令介绍
操作说明:
1首先要通过8EH将写保护去掉,将日期,时间的初值写时各个寄存器。
2然后就可以对80H、82H、84H、86H、88H、8AH、8CH进行初值的写入。
同时也通过秒寄存器将位7的CH值改成0,这样DS1302就开始走时运了。
3将写保护寄存器再写为80H,防止误改写寄存器的值。
4不断读取80H-8CH的值,将它们格式化后显示到1602LCD液晶上
第四章课程设计心得体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近四星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
参考文献
[1]李广弟等单片机基础北京航空航天出版社,2001.7
[2]楼然苗等51系列单片机设计实例北京航空航天出版社,2003.3
[3]唐俊翟等单片机原理与应用冶金工业出版社,2003.9
[4]刘瑞新等单片机原理及应用教程机械工业出版社,2003.7
[5]吴国经等单片机应用技术中国电力出版社,2004.1
[6]李全利,迟荣强编著单片机原理及接口技术高等教育出版社,2004.1
[7]侯媛彬等,凌阳单片机原理及其毕业设计精选2006年,科学出版社
[8]罗亚非,凌阳十六位单片机应用基础2003年北京航空航天大学出版社
[9]北京北阳电子有限公司,061A凌阳单片机及其附带光盘2003年
[11]霍孟友等,单片机原理与应用,机械工业出版社,2004.1
[12]许泳龙等,单片机原理及应用,机械工业出版社,2005.1
附录
附录一:
系统电路原理图
附录二:
元器件清单(最小系统板除外)
序号
名称与规格
数量
序号
名称与规格
数量
1
电阻4.7K
2
4
变阻器10K
1
2
电容20pF
2
5
电阻1K
1
3
晶振32.768KHZ
1
6
PNP
1
附录三:
源程序代码
#include
#include
#defineucharunsignedchar
sbitsclk=P3^6;
sbitIO=P3^4;
sbitRS=P3^5;
sbitLCD_EA=P2^2;
sbitR_W=P2^1;
sbitR_S=P2^0;
sbitP3_7=P2^0;
sbitdate=P0^0;
uchartable[]="00:
00:
00";
uchartab[14]="2000-00-00";
ucharweek1[3]="Mon";
ucharweek2[3]="Tue";
ucharweek3[3]="Wed";
ucharweek4[3]="Thu";
ucharweek5[3]="Fri";
ucharweek6[3]="Sat";
ucharweek7[3]="Sun";
//ucharweek[2];
voiddelay(intn)
{ucharx,m;
for(x=0;x for(m=0;m } voidread_command(uchara) {R_S=0; R_W=0; P0=a; delay(10); LCD_EA=1; delay(10); LCD_EA=0; } voidread_data(ucharb) { R_S=1; R_W=0; P0=b; delay(5); LCD_EA=1; delay(5); LCD_EA=0; } voidchu_shi_hua() {P0=0; P3_7=0; read_command(0X38); read_command(0X0c); read_command(0X06); read_command(0x01); read_command(0x02); delay(20); } //往DS1302中写一字节数据 voidwrite_ds1302(ucharbyte) { uchari; sclk=0; delay (1); for(i=0;i<8;i++) { IO=byte&0x01; delay (1); sclk=1; delay (1); sclk=0; byte>>=1; } } //从ds1302中读一字节数据 ucharread_ds1302(void) { uchari; ucharback_data=0; delay (2); for(i=0;i<8;i++) { back_data>>=1; if(IO==1) back_data|=0x80; sclk=1; delay (1); sclk=0; delay (1); } return(back_data); } //向某一地址写一字节数据 voidwrite_byte(ucharadrss,uchardate) {RS=0; delay (1); sclk=0; delay (1); RS=1; delay (1); write_ds1302(adrss); write_ds1302(date); sclk=0; delay (1); RS=0; delay (1); RS=0; delay (1); } //从某一地址读一字节数据 ucharread_byte(ucharadrss) {uchar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1602 液晶显示器 控制