单片机课程设计报告LCD1602字符液晶滚动演示程序.docx
- 文档编号:11620541
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:16
- 大小:1.17MB
单片机课程设计报告LCD1602字符液晶滚动演示程序.docx
《单片机课程设计报告LCD1602字符液晶滚动演示程序.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告LCD1602字符液晶滚动演示程序.docx(16页珍藏版)》请在冰点文库上搜索。
单片机课程设计报告LCD1602字符液晶滚动演示程序
单片机原理与应用
综合实验报告
LCD1602字符液晶滚动演示程序
专业班级:
姓 名:
学号:
时间:
指导教师:
2012年05月23日
LCD1602字符液晶滚动演示程序
摘要:
本设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机89C51,采用的液晶显示器是LCD1602,主要用来显示字母、数字、符号,滚屏、左右移动以及实时控制功能。
同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程。
本设计还介绍了显示原理、硬件电路和软件部分的设计原理。
关键词:
1602液晶显示器89C51单片机并行通信
1引言:
液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等许多其它显示器无法相比的优点。
近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。
液晶显示器分为字符型LCD显示模块和点阵型LCD显示模块。
字符型LCD是一种用5×7点阵图形来显示字符的液晶显示器。
点阵型液晶可显示用户自定义的任意符号和图形,并可卷动显示,它作为便携式单片机系统人机交互界面的重要组成部分被广泛应用于实时检测和显示的仪器仪表中。
支持汉字显示的点阵型液晶在现代单片机应用系统中是一种十分常用的显示设备,汉字BP机、手机上的显示屏就是点阵型LCD。
点阵型LCD是现代单片机应用系统中最常用的人机交互界面之
利用单片机控制液晶显示系统的原理,完成单片机液晶显示系统的设计,我希望能够触类旁通,灵活应用其他型号的液晶显示控制器。
将来如果有机会从事这方面的工作,要运用的液晶显示控制器不一定是KS0108,但这次毕业设计中学到的东西为此打下了良好的基础,相信自己能做好这方面的工作。
2总体设计方案
2.1设计思路
2.1.1本设计主要是通过控制89C51单片同的引脚来控制LCD1602显示给定的符号、字母、数字,以及控制显示内容的垂直移动和水平移动。
由于LCD1602的字符有相应的字符代码,不用编写字库,因此在设计时对方案的选择就只考虑单片机与显示器的数据传送类型,即串行通信和并行通信。
(1)方案确立:
方案一:
串行通信
串行通信是反映一个数据的所有位按一定的顺序和方式,一位一位地通过串行输入/输出口进行传送。
由于串行通信是数据的逐位顺序传送,在进行通信时,只需一根传输线,其传送的数据位多且通信距离长。
串行通信方式如图1所示。
方案二:
并行通信
采用并行传送方式在微机与外部设备之间进行数据传送的接口叫并行接口。
主要特点:
一是同时并行传送的二进位数就是数据宽度;二是在计算机与外设间采用应答式的联络信号来协调双方的数据操作。
传送的数据位1-128位,一般为8位。
单片机与外部设备之间也通常采用8位并行I/O接口进行短距离的通信其传输距离近,传送方式单一,每次传送一个字或一个字节。
并行通信方式如图2所示。
图1串行通信方式图2并行通信方式
由于本设计的传输距离不远,所用I/O口不多,所以方案二既可满足课程设计的基本要求又能充分发挥其优势,电路简单,易控制,所以采用该方案。
2.2设计方框图
图3系统总体方框图
3设计原理分析
本设计主要是通过控制89C51单片同的引脚来控制LCD1602显示给定的符号、字母、数字,以及控制显示内容的垂直移动和水平移动。
在控制LCD1602过程中主要是通过LCD1602显示模指令和单片机的中断嵌套来实现的。
由于在编程时最主要的就是使用LCD1602显示模指令来实现写指令和写数据功能,所以下面我给出其显示模指令集、写操作时序及RAM地址映射。
LCD1602显示模指令集:
(1)清屏
功能:
清DDROM值和AC值
(2)归位
功能:
光标复位,光标返回到地址00H
(3)输入方式设置
功能:
设置光标,画面移动方式。
其中:
I/D=1:
数据读写操作后,AC自加一;
I/D=0:
数据读写操作后,AC自减一;
S=1:
数据读写操作,画面平移;
S=0:
数据读写操作,画面不动;
(4)显示开关控制
功能:
设置显示、光标和闪烁开关。
其中:
D表示显示开关,D=1为开,D=0为关;
C表示光标开关,C=1为开,C=0为关;
B表示闪烁开关,B=1为开,B=0为关。
(5)光标、画面位移
功能:
光标、画面移动。
其中:
S/C=1画面移动一个字符位;
S/C=0光标移动一个字符位;
R/L=1:
右移;R/L=0左移。
(6)功能设置
功能:
工作方式设置(初始化指令)。
其中:
DL=1,8位数据接口;
DL=0,4位数据接口;
N=1,两行显示;N=0,一行显示;
F=1,5*10点阵显示;F=0,5*7点阵显示。
(7)CGRAM地址设置
功能:
设置CGRAM地址,A5~A0=0~3FH。
(8)DDRAM地址设置
功能:
设置DDRAM地址。
其中:
N=0,一行显示A6~A0=0~4FH;
N=1两行显示,首行A6~A0=0~2FH,次行A6~A0=40~67H。
(9)读BF及AC值
功能:
读忙BF和地址计数器AC的值。
其中:
BF=1:
忙,BF=0:
准备好。
此时AC值意义为最近一次地址设置(CGRAM或DDRAM)定义。
(10)写数据
功能:
根据最近设置的地址性质,数据写入CGRAM或DDRAM中。
(11)读数据
功能:
根据最近设置的地址性质,从CGRAM或DDRAM数据读出。
图4写操作时序
图5RAM地址映射
3.1时钟电路的设计
在引脚XTAL1和XTAL2外接晶体振荡器或陶瓷谐振振荡器,构成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自积振荡,并产生振荡时钟脉冲。
晶振通常选用12MHZ或11.0592MHZ,如图4所示。
振荡周期:
晶振的振荡周期,又称时钟周期,为最小的时序单位。
状态周期:
振荡频率经单片机内的二分频器分频后提供给片内CPU的时钟周期。
因此一个状态周期包含2个振荡周期。
机器周期:
1个机器周期由6个状态周期12个振荡周期组成,是计算机执行一种基本操作的时间单位。
指令周期:
执行一条指令所需的时间。
一个指令周期由1-4个机器周期组成,依据指令不同而不同。
图4晶振
3.2控制电路的设计
如图5所示,按键k3、k2、k1分别接单片机的P3.2、P3.3、P3.4。
按键k3为暂停/继续按钮,按键k2为自动垂直滚动按钮,k1为自动水平滚动按钮。
图5控制电路
4结束语
为期一周的课程设计已经结束,在这几天的学习、设计、及电路搭建过程中我感触颇深,使我对抽象的理论有了具体的认识。
通过对函数信号发生器的设计,熟悉了常用的仪器仪表,并且检验了大学三年的学习成果,进一步加深了我对专业知识的了解和认识以及动手的能力。
虽然在这次设计中对于所学知识的运用和衔接还不够熟练,作品完成的还不是很出色。
但是我将在以后的工作和学习中继续努力,不断完善。
参考文献
[1] 林立.单片机原理用应用——基于Proteus和KeilC.北京:
电子工业出版社,2009
[2] 阎石.数字电子技术基础(第三版).北京:
高等教育出版社,1989
[3] 李继凯.现代电子技术工程设计与实践北京:
化学工业出版社,2010
附录
#include
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
ucharcodetable[]="ILIKEDANGPIANJI!
";
ucharcodetable1[]="YANGHAOSHENGDIANZI10-2BAN32";
ucharcodetable2[]="TONGZHI";
ucharcodetable3[]="1.DIANZIZHUAN";
ucharcodetable4[]="2.YEKAOSHIYU";
ucharcodetable5[]="3.SHILIUZHOU";
ucharcodetable6[]="4.XINGQIYIYU";
ucharcodetable7[]="5.2A703JINGXING";
ucharcodetable8[]="HUANYING";
sbitlcden=P2^2;
sbitlcdrs=P2^0;
sbitk3=P3^2;
ucharnum,time;//定义两个全局变量
voiddelay(uintz)//延时函数
{
ucharx,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
voidwrite_com(ucharcom)//写指令函数
{
lcdrs=0;
P0=com;
delay(50);
lcden=1;
delay(50);
lcden=0;
}
voidwrite_date(uchardate)//写数据函数
{
lcdrs=1;
P0=date;
delay
(1);
lcden=1;
delay
(1);
lcden=0;
}
voidinit()//初始化函数
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x80);
write_com(0x01);
}
voidint0()interrupt0//外部中断0,实现暂停
{
EA=0;
delay(10);
if(k3)
while(k3);
else
EA=1;
}
voidint1()interrupt2//外部中断1,实现垂直移动
{
for(time=3;time>0;time--)//内容垂直移动三次
{
init();
write_com(0x80);//从第一行开头开始写入数据
for(num=0;num<20;num++)
{
write_date(table2[num]);
delay(20);
}
write_com(0x80+0x40);//从第二行开头开始写入数据
for(num=0;num<34;num++)
{
write_date(table3[num]);
delay(20);
}
write_com(0x01);//清屏
write_com(0x80);//将第二行的上移到第一行
for(num=0;num<20;num++)
{
write_date(table3[num]);
delay(20);
}
write_com(0x80+0x40);//在第二行开头写入新内容,以下依此类推
for(num=0;num<34;num++)
{
write_date(table4[num]);
delay(20);
}
write_com(0x01);
write_com(0x80);
for(num=0;num<20;num++)
{
write_date(table4[num]);
delay(20);
}
write_com(0x80+0x40);
for(num=0;num<34;num++)
{
write_date(table5[num]);
delay(20);
}
write_com(0x01);
write_com(0x80);
for(num=0;num<20;num++)
{
write_date(table5[num]);
delay(20);
}
write_com(0x80+0x40);
for(num=0;num<34;num++)
{
write_date(table6[num]);
delay(20);
}
}
}
voidkt0()interrupt1//定时/计数器中断扩展为外部中断,实现水平移动
{
for(time=3;time>0;time--)//内容水平移动三次
{
init();
write_com(0x80+0x06);//在第一行指定位置写入数据
for(num=0;num<34;num++)
{
write_date(table[num]);
delay(0);
}
write_com(0x80+0x46);//在第三行指定位置写入数据
for(num=0;num<34;num++)
{
write_date(table1[num]);
delay(0);
}
for(num=0;num<40;num++)//整屏移动
{
write_com(0x1c);
delay(200);
}
}
}
voidmain()
{while
(1)
{
PX0=1;//设置外部中断0为高优先级
EX0=1;//允许外部中断0打开
EX1=1;//允许外部中断1打开
EA=1;//允许总中断控制打开
TMOD=0x06;//设置定时/计数器中断0,扩展为外部中断
TH0=0xFF;
TL0=0xFF;
TCON=0x10;
ET0=1;
init();//初始化
for(num=0;num<20;num++)//写入开始时显示的内容
{
write_date(table8[num]);
delay
(1);
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告 LCD1602 字符 液晶 滚动 演示 程序