点阵式上滚屏课程设计.docx
- 文档编号:23928028
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:35
- 大小:127.59KB
点阵式上滚屏课程设计.docx
《点阵式上滚屏课程设计.docx》由会员分享,可在线阅读,更多相关《点阵式上滚屏课程设计.docx(35页珍藏版)》请在冰豆网上搜索。
点阵式上滚屏课程设计
成绩评定表
学生姓名
班级学号
专业
计算机科学与技术
课程设计题目
点阵式液晶上滚屏设计
评
语
组长签字:
成绩
日期
2013年1月11日
课程设计任务书
学院
信息学院
专业
计算机科学与技术
学生姓名
班级学号
课程设计题目
点阵式液晶上滚屏设计
实践教学要求与任务:
利用51单片机+12864点阵液晶显示器设计汉字滚屏(上滚)系统,滚动周期小于5秒。
完成以下设计环节:
1)使用AltiumDesinger或Protel99SE开发工具,设计电路原理图与PCB制板图。
2)使用Uvision2开发平台,采用C语言或汇编语言设计软件程序。
3)使用PROTEUS仿真软件,设计仿真原理图并运行软件程序,完成系统仿真。
工作计划与进度安排:
第18周:
布置课程设计任务,查阅资料,分组设计,实验室组装与调试。
第20周:
调试,验收,答辩,编写课程设计报告。
指导教师:
2012年12月20日
专业负责人:
2012年12月20日
学院教学副院长:
2012年12月20日
目录
1点阵式液晶屏工作原理1
1.1液晶屏显示原理1
1.212864LCD工作原理2
2仿真电路图设计5
2.1仿真电路图5
2.2电路原理图7
3程序及流程图7
3.1程序:
7
3.2程序部分流程图:
12
4运行与结果17
5心得体会18
6参考文献18
1点阵式液晶屏工作原理
1.1液晶屏显示原理
液晶显示的原理是利用液晶的物理特性,即当通电时导通,排列变的有秩序,使光线容易通过;不通电时排列混乱,阻止光线通过。
让液晶如闸门般地阻隔或让光线穿透。
从技术上简单地说,液晶面板包含了两片相当精致的无钠玻璃素材,称为Substrates,中间夹著一层液晶。
当光束通过这层液晶时,液晶本身会排排站立或扭转呈不规则状,因而阻隔或使光束顺利通过。
大多数液晶都属于有机复合物,由长棒状的分子构成。
在自然状态下,这些棒状分子的长轴大致平行。
将液晶倒入一个经精良加工的开槽平面,液晶分子会顺着槽排列,所以假如那些槽非常平行,则各分子也是完全平行的。
通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
液晶显示的分类方法有很多种,通常可按其显示方式分为段式LCD、字符式LCD、点阵式LCD等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(SimpleMatrix)和主动矩阵驱动(ActiveMatrix)三种。
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。
这就是LCD显示的基本原理。
字符的显示用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。
这样一来就组成某个字符。
但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
例如本题中的几个汉字显示代码如下:
0x20,0x20,0x24,0x24,0x24,0x24,0xBF,0x64,0x24,0x34,0x28,0x24,0x22,0x20,0x20,0x00,
0x10,0x08,0x04,0x02,0x3F,0x45,0x44,0x44,0x42,0x42,0x42,0x41,0x78,0x00,0x00,0x00,
表示为“老”
0x00,0xFC,0x00,0x00,0xFF,0x00,0x02,0xE2,0x22,0x22,0xFE,0x22,0x22,0xE2,0x02,0x00,
0x00,0x87,0x40,0x30,0x0F,0x00,0x00,0x1F,0x00,0x00,0xFF,0x08,0x10,0x0F,0x00,0x00,
表示为“师”
0x20,0x10,0x08,0xFC,0x23,0x10,0x88,0x67,0x04,0xF4,0x04,0x24,0x54,0x8C,0x00,0x00,
0x40,0x30,0x00,0x77,0x80,0x81,0x88,0xB2,0x84,0x83,0x80,0xE0,0x00,0x11,0x60,0x00,
表示为“您”
0x40,0x40,0x44,0x44,0x54,0x64,0x45,0xC6,0x44,0x64,0x54,0x44,0x44,0x40,0x40,0x00,
0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,
表示为“辛”
0x84,0x84,0x84,0x84,0x9F,0x84,0x84,0xF4,0x84,0x84,0x9F,0x84,0x84,0x84,0x84,0x00,
0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x47,0x44,0x44,0x44,0xFC,0x00,0x00,0x00,0x00,
表示为“苦”
0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xE2,0x22,0x12,0x0A,0x06,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
表示为“了”
1.212864LCD工作原理
12864概述:
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
基本特性:
(1)、低电源电压(VDD:
+3.0--+5.5V)
(2)、显示分辨率:
128×64点(3)、内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)(4)、内置128个16×8点阵字符(5)、2MHZ时钟频率(6)、显示方式:
STN、半透、正显(7)、驱动方式:
1/32DUTY,1/5BIAS(8)、视角方向:
6点(9)、背光方式:
侧部高亮白色LED,功耗仅为普通LED的1/5—1/10(10)、通讯方式:
串行、并口可选(11)、内置DC-DC转换电路,无需外加负压(12)、无需片选信号,简化软件设计(13)、工作温度:
0℃-+55℃,存储温度:
-20℃-+60℃
控制器接口信号说明:
1、RS,R/W的配合选择决定控制界面的4种模式:
RS
R/W
功能说明
L
L
MPU写指令到指令暂存器(IR)
L
H
读出忙标志(BF)及地址记数器(AC)的状态
H
L
MPU写入数据到数据暂存器(DR)
H
H
MPU从数据暂存器(DR)中读出数据
2、E信号
E状态
执行动作
结果
高——>低
I/O缓冲——>DR
配合/W进行写数据或指令
高
DR——>I/O缓冲
配合R进行读数据或指令
低/低——>高
无动作
指令说明
模块控制芯片提供两套控制命令,基本指令和扩充指令如下:
指令表1:
(RE=0:
基本指令)
指
指令码
功能
令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清除
显示
0
0
0
0
0
0
0
0
0
1
将DDRAM填满"20H",并且设定DDRAM的地址计数器(AC)到"00H"
地址
归位
0
0
0
0
0
0
0
0
1
X
设定DDRAM的地址计数器(AC)到"00H",并且将游标移到开头原点位置;这个指令不改变DDRAM的内容
显示状态开/关
0
0
0
0
0
0
1
D
C
B
D=1:
整体显示ON
C=1:
游标ON
B=1:
游标位置反白允许
进入点
设定
0
0
0
0
0
0
0
1
I/D
S
指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位
游标或显示移位控制
0
0
0
0
0
1
S/C
R/L
X
X
设定游标的移动与显示的移位控制位;这个指令不改变DDRAM的内容
功能
设定
0
0
0
0
1
DL
X
RE
X
X
DL=0/1:
4/8位数据
RE=1:
扩充指令操作
RE=0:
基本指令操作
设定CGRAM
地址
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
设定CGRAM地址
设定DDRAM
地址
0
0
1
0
AC5
AC4
AC3
AC2
AC1
AC0
设定DDRAM地址(显示位址)
第一行:
80H-87H
第二行:
90H-97H
读取忙标志和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值
写数据到RAM
1
0
数据
将数据D7——D0写入到内部的RAM(DDRAM/CGRAM/IRAM/GRAM)
读出RAM的值
1
1
数据
从内部RAM读取数据D7——D0
(DDRAM/CGRAM/IRAM/GRAM)
指令表2:
(RE=1:
扩充指令)
指
指令码
功能
令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
待命
模式
0
0
0
0
0
0
0
0
0
1
进入待命模式,执行其他指令都棵终止
待命模式
卷动地址开关开启
0
0
0
0
0
0
0
0
1
SR
SR=1:
允许输入垂直卷动地址
SR=0:
允许输入IRAM和CGRAM地址
反白
选择
0
0
0
0
0
0
0
1
R1
R0
选择2行中的任一行作反白显示,并可决定反白与否。
初始值R1R0=00,第一次设定为反白显示,再次设定变回正常
睡眠
模式
0
0
0
0
0
0
1
SL
X
X
SL=0:
进入睡眠模式
SL=1:
脱离睡眠模式
扩充
功能
设定
0
0
0
0
1
CL
X
RE
G
0
CL=0/1:
4/8位数据
RE=1:
扩充指令操作
RE=0:
基本指令操作
G=1/0:
绘图开关
设定绘图RAM
地址
0
0
1
0
AC6
0
AC5
0
AC4
AC3
AC3
AC2
AC2
AC1
AC1
AC0
AC0
设定绘图RAM
先设定垂直(列)地址AC6AC5…AC0
再设定水平(行)地址AC3AC2AC1AC0
将以上16位地址连续写入即可
备注:
当IC1在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。
2仿真电路图设计
2.1仿真电路图
点阵式液晶显示屏与8051单片机管脚连接如下:
第1脚:
GND接地;
第2脚:
VCC接5v电源;
第3脚:
DB7~DB0接8051芯片的P0.7~P0.0口;
第4脚:
CS1接8051芯片的P2.3;CS3接8051芯片的P2.4口;
第5脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
接8051芯片的P2.0口;
第6脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
接8051芯片的P2.1口;
第7脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
接8051芯片的P2.2口;
第8脚:
/PES为复位信号,V0为可调;
接完图像如下:
图2.1仿真电路图
2.2电路原理图
图2.2电路原理图
3程序及流程图
3.1程序:
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineDATAP0//LCD12864数据线
sbitRS=P2^2;//数据\指令选择
sbitRW=P2^1;//读\写选择
sbitEN=P2^0;//读\写使能
sbitcs1=P2^4;//片选1
sbitcs2=P2^3;//片选2
/**********定义中文字库************/
//字体取模时的选项设置为:
点阵格式为阴码,取模方式为列行式,取模走向为逆向,文字大小为宽x高=16x16
ucharcodeHzk[]={
/*--文字:
老--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x20,0x20,0x24,0x24,0x24,0x24,0xBF,0x64,0x24,0x34,0x28,0x24,0x22,0x20,0x20,0x00,
0x10,0x08,0x04,0x02,0x3F,0x45,0x44,0x44,0x42,0x42,0x42,0x41,0x78,0x00,0x00,0x00,
/*--文字:
师--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x00,0xFC,0x00,0x00,0xFF,0x00,0x02,0xE2,0x22,0x22,0xFE,0x22,0x22,0xE2,0x02,0x00,
0x00,0x87,0x40,0x30,0x0F,0x00,0x00,0x1F,0x00,0x00,0xFF,0x08,0x10,0x0F,0x00,0x00,
/*--文字:
您--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x20,0x10,0x08,0xFC,0x23,0x10,0x88,0x67,0x04,0xF4,0x04,0x24,0x54,0x8C,0x00,0x00,
0x40,0x30,0x00,0x77,0x80,0x81,0x88,0xB2,0x84,0x83,0x80,0xE0,0x00,0x11,0x60,0x00,
/*--文字:
辛--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x40,0x40,0x44,0x44,0x54,0x64,0x45,0xC6,0x44,0x64,0x54,0x44,0x44,0x40,0x40,0x00,
0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,
/*--文字:
苦--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x84,0x84,0x84,0x84,0x9F,0x84,0x84,0xF4,0x84,0x84,0x9F,0x84,0x84,0x84,0x84,0x00,
0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x47,0x44,0x44,0x44,0xFC,0x00,0x00,0x00,0x00,
/*--文字:
了--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xE2,0x22,0x12,0x0A,0x06,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
/*状态检查,LCD是否忙*/
voidCheckState()
{
uchardat;//状态信息(判断是否忙)
RS=0;//数据\指令选择,D/I(RS)="L",表示DB7∽DB0为显示指令数据
RW=1;//R/W="H",E="H"数据被读到DB7∽DB0
do{
DATA=0x00;
EN=1;//EN下降源
_nop_();//一个短延时
dat=DATA;
EN=0;
dat=0x80&dat;//仅当第7位为0时才可操作(判别busy信号)
}while(!
(dat==0x00));
}
/*写命令到LCD中*/
SendCommandToLCD(ucharcom)
{
CheckState();//状态检查,LCD是否忙
RS=0;//向LCD发送命令。
RS=0写指令,RS=1写数据
RW=0;//R/W="L",E="H→L"数据被写到IR或DR
DATA=com;//com:
命令
EN=1;
_nop_();
_nop_();
EN=0;//EN下降源
}
/*设置页0xb8是页的首地址*/
voidSetLine(ucharpage)
{
page=0xb8|page;//10111xxx0<=page<=7设定页地址--X0-7,8行为一页64/8=8,共8页
SendCommandToLCD(page);
}
/*设定显示开始行,0xc0是行的首地址*/
voidSetStartLine(ucharstartline)
{
startline=0xc0|startline;//11000000
SendCommandToLCD(startline);//设置从哪行开始:
0--63,一般从0行开始显示
}
/*设定列地址--Y0-63,0x40是列的首地址*/
voidSetColumn(ucharcolumn)
{
column=column&0x3f;//column最大值为64,越出0= column=0x40|column;//01xxxxxx SendCommandToLCD(column); } /*开关显示,0x3f是开显示,0x3e是关显示*/ voidSetOnOff(ucharonoff) { onoff=0x3e|onoff;//0011111x,onoff只能为0或者1 SendCommandToLCD(onoff); } /*写显示数据*/ voidWriteByte(uchardat) { CheckState();//状态检查,LCD是否忙 RS=1;//RS=0写指令,RS=1写数据 RW=0;////R/W="L",E="H→L"数据被写到IR或DR DATA=dat;//dat: 显示数据 EN=1; _nop_(); _nop_(); EN=0;//EN下降源 } /*选择屏幕screen: 0-全屏,1-左屏,2-右屏*/ voidSelectScreen(ucharscreen) { switch(screen) {case0: cs1=0;//全屏显示 _nop_();_nop_();_nop_(); cs2=0; _nop_();_nop_();_nop_(); break; case1: cs1=0;//左显示屏 _nop_();_nop_();_nop_(); cs2=1; _nop_();_nop_();_nop_(); break; case2: cs1=1;//右显示屏 _nop_();_nop_();_nop_(); cs2=0; _nop_();_nop_();_nop_(); break; } } /*清屏screen: 0-全屏,1-左屏,2-右*/ voidClearScreen(ucharscreen) { uchari,j; SelectScreen(screen); for(i=0;i<16;i++)//控制页数0-7,共8页 { SetLine(i); SetColumn(0); for(j=0;j<64;j++)//控制列数0-63,共64列 { WriteByte(0x00);//写点内容,列地址自动加1 } } } /*延时程序*/ voiddelay(uintz) { uinti,j; for(i=0;i for(j=0;j<110;j++); } /*初始化LCD*/ voidInitLCD() { CheckState(); SelectScreen(0); SetOnOff(0);//关显示 SelectScreen(0); SetOnO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 阵式 上滚屏 课程设计