人人范文网 范文大全

LCD电子广告屏

发布时间:2020-03-03 06:25:47 来源:范文大全 收藏本文 下载本文 手机版

LCD电子广告屏设计

一、设计目的

为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。

1、通过本设计,使学生综合运用《单片机技术原理与应用》、《DSP原理与 用》《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。

2、学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完 整的实用程序,并仿真运行,保证设计的正确性。

3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器 件、布线、编程、调试、撰写报告等。

二.设计内容

1、设计要求

单片机控制的LCD 1602的电子广告牌

用单片机控制字符型LCD 1602显示字符信息“Hello everyone!”和“Welcome to Harbin”。 字符信息“Hello everyone!”、“Welcome to Harbin”分别从LCD 1602右侧第一行、第一行滚动移入,然后再从左侧滚动移出,循环显示。

2、设计思路

液晶模块用命令控制显示由模块本身已经给出,AVR、LCD 的VSS、VDD、VEE 不需连接,默认VSS=0V、VDD=5V、VEE= -5V、GND=0V,液晶模块与单片机的连接不采用添加多个与非门的方式,而采用更直接、清晰的方式,使WR、RD直接与LCD的R/W、RS相连,使能端与P3^5相连,由软件给出下降沿。

3、功能说明

1) 给LCD写命令、送数据等均需要进行选中寄存器、发送命令或数据代码、使能端有效等过程,若逐一写出会使程序混乱冗长,因此将写命令、写数据、初始化等分别封装在子函数中,方便随时调用。

2) 为实现滚动显示,使用命令打开整体显示移动。

3) 显示字母只需将相应的ASCII代码发送给LCM即可,将需要显示的字符直 接设为数组中的元素,显示时逐一写入液晶。

4) 若数组中只有相应的字符,显示的末尾会出现预料之外的字符,因此加入足 够的空格避免这种现象发生。

5) 为实现循环不断显示的功能,只需将函数整体放入while(1)中即可,但应注 意下一次循环开始前将DDRAM的地址回复为第一行。

四.实验原理图

三、硬件电路元件介绍

1、AT89C51单片机:

AT89C51是一种低电压、高性能CMOS 8位微处理器,它自带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory),俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪存存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C系列单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。它的部分引脚功能介绍如下。

P0口:P0口为一个8位漏级开路双向I/O口。当P1口的管脚第一次写1时,被定义为高阻输入。P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输出,由于外部下拉为低电平,它将输出电流。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

2、液晶模块

液晶模块简单点说就是屏+背光板+PCB板+铁框。

电力终端、仪器仪表等的显示部件就是液晶模块,其地位相当于CRT中的显像管。

其它部分包括电源电路,信号处理电路等,当然还有外壳什么的。

模块主要分为屏和背光灯组件。两部分被组装在一起,但工作的时候是相互独立的(即电路不相关)。

液晶显示的原理是背光灯组件发出均匀的面光,光通过液晶屏传到我们的眼睛里。屏的作用就是按像素对这些光进行处理,以显示图像。

3、排阻

排阻,是一排电阻的简称,就是若干个参数完全相同的电阻,它们的一个引脚都连到一起,作为公共引脚,其余引脚正常引出。 。内存在处理、传输数据时会产生大小不一的工作电流。而在内存颗粒走线的必经之处安装一排电阻,则能够帮助内存起到稳压作用,让内存工作更稳定。从而提升内存的稳定性,增强内存使用寿命。

四、软件部分的程序流程图

五、源程序清单

C语言程序: #include

#define uchar unsigned char #define uint unsigned int #define LCDPORT P0 uchar code tab[]=\"Hello everyone! \";

uchar code tab1[]=\"Welcome to Harbin \"; //字符后面加若干个空格,防止滚动显示时出现不该出现的字符

sbit LCDE=P3^5; sbit LCDRW=P3^6; sbit LCDRS=P3^7;

void WriteCMD(uchar);

//定义写命令函数

void init();

//定义初始化函数

void WriteData(uchar);

//定义写数据函数

void Delay();

//定义延迟函数

五、源程序清单

C语言程序:

#include

#define uchar unsigned char #define uint unsigned int

#define LCDPORT P0 uchar code tab[]=\"Hello everyone!

\";

uchar code tab1[]=\"Welcome to Harbin

\"; //字符后面加若干个空格,防止滚动显示时出现不该出现的字符

sbit LCDE=P3^5; sbit LCDRW=P3^6; sbit LCDRS=P3^7; void WriteCMD(uchar);

//定义写命令函数

void init();

//定义初始化函数

void WriteData(uchar);

//定义写数据函数

void Delay();

//定义延迟函数 void mydelay(int);

void main()

{ uint i;

//定义无符号整形变量

init();

//液晶模块的初始化

while(1)

//使之一直进行滚动显示程序,不断循环

{ for(i=0;i

WriteData(tab[i]);

//显示第一行字符

mydelay(50);

//每显示一个字符后停留一会,越过液晶的“忙”状态

}

mydelay(50);

WriteCMD(0x01);

//清屏,准备进行下一行显示

WriteCMD(0x80+0x40+15);//改变DDRAM的地址,更改为第二行末尾,从此处开始进入字符

for(i=0;i

//开始输入第二行字符

{ WriteData(tab1[i]);

mydelay(50);

}

mydelay(50);

WriteCMD(0x01);

WriteCMD(0x80+15);

//DDRAM的地址改回第一行,准备 进入下一次循环,显示重新开始

} }

void Delay()

{

uint uiCount;

for(uiCount=0;uiCount

void WriteCMD(uchar Command)

//写命令函数,用于修改液晶的状态 寄存器

{ Delay();

//先延时,越过液晶“忙”状态

LCDE=1;

//使能端先置1

LCDRS=0;

//设置RS为0,打开指令寄存器

LCDRW=0;

//设置为写寄存器状态

LCDPORT=Command;

//输出命令

LCDE=0;

//使能端由1变0,出现下降沿有效,执行命令

}

void WriteData(uchar dat)

//写数据函数,用于提供液晶的显示 的字符

{

Delay();

LCDE=1;

//把LCD改为写入数据状态 LCDRS=1;

LCDRW=0;

LCDPORT=dat;

//再输出数据

LCDE=0;

//使能端有效,显示数据 }

void init()

//初始化程序,模块化使程序更清晰

{

LCDRW=0;

LCDE=0;

WriteCMD(0x38);

//设置双行显示、8位数据接口

WriteCMD(0x0c);

//设置整体显示开、光标关、字符不闪烁

WriteCMD(0x07);

//设置为增量方式,整体显示移动开

WriteCMD(0x01);

//清屏

WriteCMD(0x80+15);

//设置字符进入屏幕的初始位置 } void mydelay(int x) {

int i,j;

for(i=x;i>0;i--)

for(j=255;j>0;j--); }

六、仿真调试

1、软件调试

借助 Keil 和 Proteus进行单片机系统软硬件的开发、运行、仿真。 由

Keil 软件集成文件管理编译环境,编译 C 语言源程序,下载、运行、调试,连接和定位目标文件和库,创建 HEX 文件,调试目标程序。利用Proteus 完成硬件设计仿真平台,实现硬件原理图的连接,并将hex文件与89c51同频,下载运行,仿真实现。

2、仿真调试

在将电路按原理图连接好之后,通过89c51将由Keil产生的hex文件下载到单片机内。运行调试,观察液晶模块上字幕的显示,符合实验设计要求。

3、难点与解决思路

设计过程中遇到程序设计问题,网上找到视频教程学习程序的编写,以及查阅C语言课本得以解决。调试过程中发现液晶不显示,电路高低电平不符合规律现象,通过检查和改变线路部分连接解决了问题。

七、课设体会

过本次实验我们认识到了单片机的应用,并掌握了单片机的构造成分,液晶模块的应用领域。而通过自己的实际动手操作,实际查书找资料提高了自己的动手实践能力和知识的储备和应用能力,认识自己的不足并加以改正,增加字自己的成就感,为以后的工作和学习打好坚实的基础。

七、参考文献

【1】《单片机原理及应用》

主编

李建忠

【2】高锋《单片微型计算机原理与接口技术》

科学出版社

【3】朱清慧、张凤蕊、翟天嵩、王志奎

《Proteus教程——电子线路设计、制板与仿真》,清华大学出版社出版

【4】李全钊、迟荣强 ,《单片机原理及接口技术》,高等教育出版社出版

【5】李学礼,《基于Proteus的80C51单片机实例教程》,电子工业出版社出版

【6】周向红,《51系列单片机应用与实践教程》,北京航空航天大学出版社出版 【7】《单片机应用及技术》,电子工业出版社

【8】Proteus

入门教程

S3c2410 LCD驱动学习心得

小议LCD显示器优缺点

S3C2410 LCD驱动学习心得6

S3C2410 LCD驱动学习心得4

LCD Engineer、手机 LCD 工程师岗位职责

八扇屏

说屏

说屏

说屏

说屏

LCD电子广告屏
《LCD电子广告屏.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档