LCD1602设计说明书Word文档下载推荐.docx
《LCD1602设计说明书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《LCD1602设计说明书Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
设计答辩负责人签字:
年月日
摘要
本文讲述的是一种基于AT89S52单片机实现控制的LCD液晶显示屏。
硬件系统由单片机系统和液晶显示系统组成,液晶显示系统由主控模块和LCD液晶显示模块接口电路组成,主控模块负责接收单片机字模数据并控制各显示模块工作,控制LCD液晶显示屏显示。
本实验系统分为单片机系统和液晶显示屏两部分。
单片机系统负责接收计算机所编辑的数据,通过接口完成单片机与PC机之间的数据传送,而计算机(即PC机),主要完成显示内容的编辑、字符码的查找、字符数据的发送等工作。
LCD显示屏包括主控制模块和LCD液晶显示模块。
主控制模块负责接收单片机发送过来的字模数据文件,并且协调各个LCD液晶显示模块工作,LCD液晶显示模块主要是接收主控制模块的数据和将数据送LCD液晶显示屏显示,为了方便系统的扩展,各模块之间采用串行口接收数据,并且接到系统串行总线上。
本系统主要是实现单片机与液晶显示模块之间的接口技术,可以采用间接控制方式完成。
将液晶显示模块接口与单片机系统板中的某个并行I/O接口连接,计算机通过对该I/O接口的操作间接的实现对模块的控制。
关键词:
AT89S52LCD液晶显示
目录
概述……………………………………………………………………1
1)系统背景………………………………………………………1
2)LCD在大屏幕显示中的应用…………………………………1
一、设计内容及要求…………………………………………………2
二、系统总体设计……………………………………………………2
三、系统硬件的简介…………………………………………………2
四、电路原理图的设计………………………………………………4
五、PCB板的设计……………………………………………………5
六、PCB制作(打印腐蚀焊接)……………………………………6
七、结论与心得………………………………………………………6
八、参考文献…………………………………………………………7
概述
1.1系统背景
液晶显示器件在中国已有二十余年的发展历史。
二十余年来,液晶显示器件从实验室走向大规模生产集团,形成了独立的产业部门。
现在,液晶显示几乎已经应用于生产,生活的各个领域,人们几乎时时处处都要与这一神奇而又普通的面孔打交道。
液晶显示是集单片机技术、微电子技术、信息处理于一体的新型显示方式。
由于液晶显示器具有低压低功耗,显示信息量大易于彩色化,无电磁辐射,长寿命,无污染等特点。
LCD是目前显示产业中发展速度最快,市场应用最广的显示器件,成为众多显示媒体中的佼佼者,在越来越多的领域中发挥作用,是目前显示器件中一个理想的选择。
1.2LCD在大屏幕显示中的应用
大屏幕显示的应用范围极广,随着社会发展,公众生活的加强,人们对能够面向广大公众传递信息的显示装置越来越感到必需。
使用液晶投影显示大屏幕,不仅有投影仪,指挥用大屏幕,还有液晶投影彩色电视。
它可以用一个体积很小的系统装置,实现100英寸以上的非常漂亮的大屏幕电视显示。
它与传统的显示媒体相比,具有分辨率极高,透过性好,显示内容丰富,彩色易于控制等优点。
随着计算机技术及电子通信技术的发展,LCD显示屏作为一种新的传媒工具,现已经应用到商业、军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业,大到几十平方米的大屏幕,小到家庭影院用的图文显示屏,以及政府部门应用的电子黑板,证券、银行等部门用的信息数字混合屏。
LCD显示屏带来广泛的社会效益和经济效益,具有良好的发展前景。
一、设计内容及要求
本设计选择AT89S52为核心控制元件,要求通过128*64LCD模块与单片机的接口,能显示数字(如时间)、字符(如英文holle)、汉字(如“机电工程系”)和图形等。
二、系统总体设计
液晶显示的原理是利用液晶的物理特性,即当通电时导通,排列变化的有秩序,使光线容易通过;
不通电时排列混乱,阻止光线通过。
让液晶如闸门般地阻隔或让光线穿透。
从技术上简单地说,液晶面板包含了两片相当精致的无钠玻璃素材,称为Substrates,中间夹着一层液晶。
当光束通过这层液晶时,液晶本身会排排站立或呈不规则状,因面阻隔或使光束顺利通过。
大多数液晶都属于有机复合物,将液晶倒入一个经精良加工的开槽平面,液晶分子会顺着槽排列,所以假如那些槽非常平等,则各分子也是完全平等的。
通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出文字、图形等。
系统硬件电路设计
(1)单片机采用MCS51系列
(2)键盘为4×
4行列式键盘
(3)3个LED管,显示输入的数字。
系统软件设计
(1)键盘管理程序(包括键扫描、键处理程序)。
(2)LED动态显示程序。
(3)发送和接收程序
三、系统硬件的简介
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
如右图5所示:
数码管显示工作原理
每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。
图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。
共阴极数码管是一类数字形式的显示屏,通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
LED简介
LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
图2.7(a)是共阴和共阳极数码管的内部电路图,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将"
b"
和"
c"
段接上正电源,其它端接地或悬空,那么"
段发光,此时,数码管显示将显示数字“1”。
而将"
a"
、"
d"
e"
g"
段都接上正电源,其它引脚悬空,此时数码管将显示“2”。
其它数字的显示原理与此类同。
LED的7段数码管利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。
在这次的设计中采用的均是共阴极的LED显示,当I/O口输出为高电平的时候,对应段就被点亮。
LED数码管的结构图如图2.7(b)所示。
四、电路原理图的设计
电路原理图:
原理图的设计包括有电路原理的设计和电路电电元器件的选择等过程,在设计原理图时,电元器件的选择和其原理图标识相对应。
在此阶段根据产品电路框图画出具体的原理图,将电路系统具体化从而决定电路的结构和PCB的布线规模。
五、PCB板的设计
1.PCB设计的一些要求:
1)板子尺寸:
100X150。
2)安全距离:
焊盘与焊盘之间、焊盘与线条之间的距离,设定为0.3mm。
3)走线方向,垂直与水平,这两个方向的更换要用45度的过度,这个过度的长度不需要很大,但是要有,否则可能出现信号的掉失等现象。
4)走线宽度,一般信号线:
0.3mm,电源线:
0.35mm。
5)布铜区域定义为机械层的区域:
布铜的层为底层。
2.PCB的转换
原理图画好之后需要将元件封装以及元件的连接信息载入PCB环境,将元件网络表和元件封装信息直接发送到PCB设计环境中去,然后进行一系列的整理。
3、元件布局
元件封装被传到PCB设计环境中之后,要根据产品的机壳形状、面板结构、电磁兼容规范、电气布局的合理性要求、PCB层叠结构等特点对元件进行布局摆放。
4、PCB布线
元件布局好之后需要将PCB中根据网络表生成的预拉线进行实线填充,这个填充的线在成PCB上就是一个铜箔线,PCB布线的合理性将直接影响板子的质量好坏。
布线如下图所示:
六、PCB制作(打印腐蚀焊接)
PCB布线完毕之后,经过认真检查,待AltiumDesignerwinter软件产生报告显示无误后,就可以进PCB板的制作了,具体步骤如下:
1、打磨
2、打印图纸
3、转印电路图
4、腐蚀
5、钻孔
6、焊接
七、结论与心得
通过这次课程设计,在老师悉心指导及小组成员的积极配合下,使我们在动手、思考和解决问题的能力得了极大的提高,同时,并认识到对单片机方面的知识知道的掌握不到位,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。
损耗了过多的内存资源。
我们觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,对知识使用有了更多的认识。
两个星期的课程设计,过程曲折可谓一语难尽。
在此期间我们也失落过,也曾一度热情高涨。
从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无穷。
我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。
某个人的离群都可能导致导致整项工作的失败。
做课程设计只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。
团结协作是我们实习成功的一项非常重要的保证。
而这次实习也正好锻炼我们这一点,这也是非常宝贵的。
这次课程设计终于顺利完成了,通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,遇到各种各样的问题,充分发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
但是,最后在老师的辛勤指导下,终于游逆而解。
同时,在老师的身上我们学也到很多实用的知识,在次我们表示感谢!
同时,对小组的所有同学和各位指导老师辛勤再次表示忠心的感谢!
八、参考文献
附录:
程序编写
主函数
#include"
mkey.h"
//矩阵键盘和数码管头文件
smg.h"
externuchartable_1602[14];
//外部声明数组
uchara;
//1602中的变量a,b
ucharb=1;
//
ucharnum_main,num;
//num_main为键盘按下后返回的值,num为定时器中断中的变量
voidmain()
{
//定时器中断0方式1,定时10ms
TMOD=0x01;
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
EA=1;
ET0=1;
TR0=1;
//开定时器中断
while
(1)
{
num_main=keyscan();
//返回键值
if(num_main<
=9)
{
display_smg(num_main);
display_smg_yiwei(0);
//显示方式0数码管显示
}
else
display_smg_yiwei
(1);
//显示方式1LCD1602显示
/*if(num_main==10)
init();
//逐字显示
//display_smg_yiwei
(1);
write_com(0x80);
//delay_1602(20);
for(a=0;
a<
14;
a++)
{
write_date(table_1602[a]);
delay_1602(20);
}
//while(num_main==10);
if(num_main==11)
//向上显示
write_com(0x80);
write_date(table_1602[a++]);
if(a==14)a=0;
write_com(0x80+0x40);
write_date(table_1602[b++]);
if(b==15)b=1;
delay_1602(500);
//while(num_main==11);
if(num_main==12)
//向左显示
write_com(0x80+0x10);
delay_1602(50);
15;
write_date(table_1602[a]);
delay_1602(40);
write_com(0x18);
delay_16021(300);
//while(num_main==12);
}*/
//display_smg(num_main);
}
}
voidT0_time()interrupt1
num++;
if(num==20)
if(num_main==10)//第十个键被按下(按键从一到十六)
init();
//逐字显示
//display_smg_yiwei
(1);
write_com(0x80);
//delay_1602(20);
for(a=0;
{
delay_1602(20);
}
//while(num_main==10);
}
if(num_main==11)//第十一个键被按下
//向上显示
write_date(table_1602[a++]);
if(a==14)a=0;
write_com(0x80+0x40);
write_date(table_1602[b++]);
if(b==15)b=1;
delay_1602(500);
//while(num_main==11);
if(num_main==12)//第十二个键被按下
//向左显示
write_com(0x80+0x10);
delay_1602(50);
write_date(table_1602[a]);
delay_1602(40);
write_com(0x18);
delay_16021(300);
//while(num_main==12);
4*4键盘检测程序,按下键后相应的代码显示在数码管上
#include<
reg52.h>
1602.h"
#defineucharunsignedchar
#defineuintunsignedint
voiddelay_key(uchar);
//延时函数
ucharkeyscan();
//键盘扫描函数
voiddelay_key(uchari)
ucharj,k;
for(j=i;
j>
0;
j--)
for(k=125;
k>
k--);
ucharkeyscan()
uchartemp,key;
uchara,b=1;
//第一行
P3=0xfe;
temp=P3;
temp=temp&
0xf0;
if(temp!
=0xf0)
delay_key(10);
temp=P3;
switch(temp)
case0xee:
key=1;
break;
case0xde:
key=2;
case0xbe:
key=3;
case0x7e:
key=4;
while(temp!
temp=temp&
//display_smg(key);
//display_smg_yiwei(0);
//第二行
P3=0xfd;
switch(temp)
case0xed:
key=5;
break;
case0xdd:
key=6;
case0xbd:
key=7;
case0x7d:
key=8;
while(temp!
//display_smg(key);
//第三行
P3=0xfb;
if(temp!
delay_key(10);
if(temp!
temp=P3;
switch(temp)
case0xeb:
key=9;
break;
case0xdb:
key=10;
case0xbb:
key=11;
case0x7b:
key=12;
while(temp!
temp=temp&
/*if(key==10)
init();
//逐字显示
//display_smg_yiwei
(1);
write_com(0x80);
delay_1602(20);
for(a=0;
{
write_date(table_1602[a]);
delay_1602(20);
}
if(key==11)
//向上显示
write_com(0x80);
write_date(table_1602[a++]);
if(a==14)a=0;
write_com(0x80+0x40);
write_date(table_1602[b++]);
if(b==15)b=1;
delay_1602(200);