课程设计说明书12864LCD显示汉字.docx
- 文档编号:27386855
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:21
- 大小:347.31KB
课程设计说明书12864LCD显示汉字.docx
《课程设计说明书12864LCD显示汉字.docx》由会员分享,可在线阅读,更多相关《课程设计说明书12864LCD显示汉字.docx(21页珍藏版)》请在冰豆网上搜索。
课程设计说明书12864LCD显示汉字
课程设计说明书12864LCD显示汉字(总19页)
一.课程设计目的
二.设计要求
三.课程设计报告内容
3.1系统设计思路与框图
3.2整体方案设计
3.2.2液晶12864LCD
3.2.4总成电路介绍
四.具体功能程序及硬件实现
4.1软件程序部分的编写
4.2软件仿真运行
五参考文献
一.课程设计目的
嵌入式课程设计是配合其理论课程而设立的设计性实践课程。
其教学目的和任务是:
使学生在学习专业技术基础和主要专业课程的基础上,学习和掌握嵌入式系统技术的基本知识和方法,培养学生综合运用所学的专业基础理论、基本技能和专业知识分析问题和解决工程设计问题的能力,培养学生调查研究,查阅技术文献、资料、手册,进行程序设计、电路图纸绘制及编写技术文件的基本能力。
本次设计本人主要是做液晶汉字显示的设计,其目的要求有以下两点:
初步掌握液晶屏的使用及其电路设计方法。
掌握液晶显示汉字及图形的方法与程序设计。
二.设计要求
在*****液晶显示屏上第一行第一列开始显示“名字:
”,第二行第一列开始显示“班级:
”,第三行第一列开始显示“学号:
”。
使用proteus仿真软件,处理器任选(51单片机、ARM处理器皆可),绘制电路原理图,通过使用128x64点阵液晶屏进行电路设计,掌握液晶屏作为人机接口界面的设计方法,并编写程序实现。
三.课程设计报告内容
本次仿真设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS—51单片机都种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。
3.1系统设计思路与框图
图-1设计流程图
图-2系统设计框图
3.2整体方案设计
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。
其发展趋势不外乎以下几个方面:
1、多功能
单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。
比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器---看家狗)、高速I/O口及计数器的捕获/比较逻辑等。
有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。
例如,有的芯片以51内核为核心,集成了USB控制器、SMARTCARD接口、MP3解码器、CAN或者I*I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。
2、高效率和高性能
为了提高执行速度和执行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:
单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。
由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。
使用高级语言可以降低开发难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。
3、低电压和低功耗
单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。
由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。
这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。
4、低价格
单片机应用面广,使用数量大,带来的直接好处就是成本的降低。
目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。
AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大。
AT89C51结构
1、四个8位通用I/O端口,对应引脚P0、P1、P2和P3;
2、两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)
3、一个串行通信接口;(SCON,SBUF)
4、一个中断控制器;(IE,IP)
3.2.2液晶12864LCD
12864中文/图形点阵液晶显示模块可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能。
提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口。
所有的功能,包含显示RAM,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块。
内置2M-位中文字型ROM(CGROM)总共提供8192个中文字型(16x16点阵),16K-位半宽字型ROM(HCGROM)总共提供126个符号字型(16x8点阵),64x16-位字型产生RAM(CGRAM),另外绘图显示画面提供一个64x256点的绘图区域(GDRAM),可以和文字画面混和显示。
提供多功能指令:
画面清除(Displayclear)、光标归位(Returnhome)、显示打开/关闭(Displayon/off)、光标显示/隐藏(Cursoron/off)、显示字符闪烁(Displaycharacterblink)、光标移位(Cursorshift)显示移位(Displayshift)、垂直画面旋转(Verticallinescroll)、反白显示(By_linereversedisplay)、待命模式(Standbymode)等。
主要参数:
1、工作电压(VDD):
4.8~5.2V。
2、逻辑电平:
2.7~5.5V。
3、LCD驱动电压(Vo):
0~7V。
4、工作温度(Ta):
0~55℃(常温)/-20~70℃(宽温)保存温度(Tstg):
-10~65℃(常温)/-30~80℃(宽温)。
1.引脚功能
引脚符号
状态
引脚名称
功能
,
输入
芯片片选端,都是低电平有效
CS1=0开左屏幕,CS1=1关左屏幕
CS2=0开右屏幕,CS2=1关右屏幕
RS
输入
数据/命令选择信号
RS=1为数据操作,RS=0为写指令或读状态
RW
输入
读写选择信号
R/W=1为读选通,R/W=0为写选通
E
输入
读写使能信号
在E下降沿,数据被锁存(写)入液晶,在E高电平期间,数据被读出
DB0—DB7
三态
数据总线
数据或指令的传送通道
输入
复位信号,低电平时复位
复位时,关闭液晶显示,使显示起始行为0,
可以跟单片机的复位引脚RST相连,也可以直接接VCC,使之不起作用
V0
液晶显示器驱动电压
-Vout
-10V
LCD驱动负电压
此块液晶含有两个液晶驱动器,每块驱动器都控制64*64个点,分为左右两个屏幕显示,总共为128*64个点(即有128×64个点)。
这就是为什么AMPIRE128*64有CS1和CS2两个片选端的原因。
此液晶有8页,一页有8行点阵点,左右各64列,共128列。
如下图所示:
2.LCD12864中的几条重要指令
(一)行(line)设置命令:
由此可见显示的起始行地址为0XC0,共64行,有规律地改变起始行号,可以实现滚屏效果。
(二)页(page)设置指令:
起始页地址为0XB8,因为液晶有64行点,分为8页,每页就有8行点。
(三)列(column)地址设置指令
每块驱动器的列地址都是从0X40到0X7F,共64列,所以此液晶共有128列点。
(四)读状态指令
(五)cs1和cs2的屏幕选择说明
(一)复位电路
单片机的复位是由外部的复位电路来实现的。
复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
上电复位:
上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。
上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。
为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。
复位电路
上电自动复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
(二)时钟电路
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
常用的时钟电路有两种方式:
一种是内部时钟方式,另一种为外部时钟方式。
本文用的是内部时钟方式。
时钟电路
AT89—C51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。
3.2.4总成电路介绍
由以上对电路的总成设计,我们选取了AT89C51单片机LGM128641BS1R液晶作为我们此次设计的电子元器件。
此外,相较于系统设计框图在液晶显示模块控制芯片的调控上,对复位引脚处以简单开关复位电路控制,而电压地VSS及LCD的操作电压以变阻器控制。
四.具体功能程序及硬件实现
4.1软件程序部分的编写
汉字液晶显示工作原理:
液晶显示器的屏幕是靠无数个小灯泡来显示图象的,就像是普通灯泡,排满几平米然后点亮相应的灯泡就能在高出看出你想要的字或图形.液晶显示器道理和这个一样,就是无数个小的灯炮排满屏幕的,只是这个小灯泡只有零点几毫米甚至微米的面积.根据这一原理,我们可以通过对液晶显示器的点阵的通电的排列使得各个液晶亮与灭来实现液晶的规律性的显示。
对于本次设计,第一行第一列开始显示“名字:
”,第二行第一列开始显示“班级:
”,第三行第一列开始显示“学号:
”。
故此,编程如下:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
//下面是汉字点阵数据,一个汉字有32字节数据组成
unsignedcharcodeming[]=//名
{
0x00,0x20,0x20,0x10,0x08,0x14,0x67,0x84,0x44,0x24,0x14,0x0C,0x00,0x00,0x00,0x00,
0x04,0x04,0x04,0x02,0xFE,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,
};
unsignedcharcodezi[]=//字
{
0x10,0x0C,0x04,0x24,0x24,0x24,0x25,0x26,0xA4,0x64,0x24,0x04,0x04,0x14,0x0C,0x00,
0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
};
unsignedcharcodeban[]=//班
{
0x84,0x84,0xFC,0x84,0x84,0x00,0xF8,0x00,0xFF,0x00,0x84,0x84,0xFC,0x84,0x84,0x00,
0x10,0x30,0x1F,0x08,0x88,0x42,0x21,0x18,0x07,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,
};
unsignedcharcodeji[]=//级
{
0x20,0x30,0xAC,0x63,0x30,0x00,0x02,0x02,0xFE,0x02,0x02,0x62,0x5A,0xC6,0x00,0x00,
0x22,0x67,0x22,0x12,0x12,0x40,0x30,0x8F,0x80,0x43,0x2C,0x10,0x2C,0x43,0x80,0x00,
};
unsignedcharcodexue[]=//学
{
0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,
};
unsignedcharcodehao[]=//号
{
0x80,0x80,0x80,0xBE,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xBE,0x80,0x80,0x80,0x00,
0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x44,0x84,0x44,0x3C,0x00,0x00,0x00,0x00,
};
unsignedcharcodefu[]=//冒号
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00
};
sbitCS1=P2^0;//片选1,低电平有效,CS1=0开左屏幕,CS1=1关左屏幕
sbitCS2=P2^1;//片选2,低电平有效,CS2=0开右屏幕,CS2=1关右屏幕
sbitRS=P2^2;//数据,指令选择信号,RS=1为数据操作,RS=0为写指令或读状态(一般为读忙标志)
sbitRW=P2^3;//读写选择信号,RW=1为读选通,RW=0为写选通
sbitEN=P2^4;//读写使能信号
voidbusy()//忙检测函数
{P0=0X00;//这句不能少
RS=0;
RW=1;
EN=1;
while(P0&0X80);//P0&0X80结果为真则一直执行空操作,也就是说P0&0X80为0则结束循环
EN=0;
}
voidwcmd(ucharcmd)
{busy();//每次写入指令或数据之前都进行忙检测
RS=0;
RW=0;
P0=cmd;
EN=1;_nop_();_nop_();//在EN下降沿写入数据和指令
EN=0;
}
voidwdata(uchardat)//写命令和写数据只在RS=0或RS=1上不同,其余都相同
{busy();
RS=1;
RW=0;
P0=dat;
EN=1;_nop_();_nop_();//在EN下降沿写入数据和指令
EN=0;
}
voidset_page(ucharpage)//设置页,12864LCD共有8页,每页有8行点阵点。
{page=0xb8|page;//首页地址为0XB8
wcmd(page);//page取值范围为0~7,表示第1到8页
}
voidset_line(ucharline)//设置显示的起始行,共有0——63行,一般从0行开始显示
{line=0xc0|line;//起始行地址0XC0
wcmd(line);//line取值范围为0~63,表示第1到64行
}
voidset_column(ucharcolumn)//设置显示的列
{
column=column&0x3f;//列的最大值为0X3F,即64
column=0x40|column;//列的首地址为0X40,
wcmd(column);//column的取值范围为0~63,共64列
}
voidset_onoff(ucharonoff)//设置显示开关,onoff取值为0或1
{onoff|=0x3e;//0X3E是关显示,0X3F是开显示
wcmd(onoff);//所以若onoff为0,则表示关显示,onoff为1,则表示开显示
}
voidselect_screen(ucharscreen)//选屏,screen取值范围为0,1,2
{switch(screen)
{case0:
CS1=0;CS2=0;break;//全屏
case1:
CS1=0;CS2=1;break;//左半屏
case2:
CS1=1;CS2=0;break;//右半屏
default:
break;
}
}
voidclear_screen(ucharscreen)//清屏
{uchari,j;
select_screen(screen);//先选屏
for(i=0;i<8;i++)//控制页数0——7,共8页
{set_page(i);//设置页
set_column(0);//设置列,每页都从第1列开始,共64列
for(j=0;j<64;j++)//控制列数0——63,共64列
wdata(0x00);//写入0,列地址指针会自动加1
}
}
voidinit()//LCD初始化
{busy();//忙检测
select_screen(0);//选屏,全屏
set_onoff(0);//关显示
select_screen(0);//选屏,全屏
set_onoff
(1);//开显示
select_screen(0);//选屏,全屏
clear_screen(0);//清屏
set_line(0);//起始行:
0
}
voidshow(ucharscreen,ucharpage,ucharcolumn,uchar*p)//显示一个汉字,一个汉字有32字节数据
{uchari;//screen表示选择屏幕,page表示页,column表示列,*p表示汉字的数组
select_screen(screen);//选屏
set_page(page);//设置页,写上半页
set_column(column);//设置列
for(i=0;i<16;i++)//控制16列的数据输出
wdata(p[i]);//汉字的上半部分
set_page(page+1);//写下半页
set_column(column);//控制列
for(i=0;i<16;i++)//控制16列的数据输出
wdata(p[i+16]);//汉字的下半部分
}
voidmain()
{init();//LCD初始化
clear_screen(0);//清屏
set_line(0);//显示开始行
//1表示左屏显示,0表示从0页开始显示。
因为一页只有8行点,
//而显示一个汉字需要16行点(整屏有64行点),所以显示一个汉字需要2页
//第0页显示“欢”字的上半部分,第1页显示“欢”汉字的下半部分
//2*16表示从第32列开始显示,前面空出0~31列(即2鲋幕茅
show(2,0,0*16,ming);//名
//1表示左屏显示,0表示从0页开始显示
//3*16表示从第48列开始显示,前面空出0~477列(即3个褐幕茅
show(2,0,1*16,zi);//字
//2表示右屏显示,0表示从0页开始显示
show(2,0,2*16,fu);//0*16表示从第0列开始显示(即第一个褐幕茅
show(2,2,0*16,ban);//班
//1*16表示从第16列开始显示,前面空出0~15列(即一个汉字的位置)
show(2,2,1*16,ji);//级
show(2,2,2*16,fu);
//左屏开,从第3页(共8页)第0列开始显示,即第3,4页显示”伊人憔悴XX空间“几个字
show(2,4,0*16,xue);//学
show(2,4,1*16,hao);//号
show(2,4,2*16,fu);
while
(1);
}
4.2软件仿真运行
对所写软件进行认真细致检查,确认无误后,把程序写入到AT89C51单片机内,并通过protues仿真软件进行仿真试运行。
如有错误的地方,其检测系统会提示错误点,则我们需要进一步调试。
若无误,则可以完成本次实验设计任务。
运行如下:
五参考文献
[1]钟承尧.严世胜.单片机汉字显示系统的设计[J].学术探讨应用技术与研究,2006:
70-71.
[2]张洪润.单片机应用设计200例.下(第一版).北京航空航天大学出版社,2006.
[3]彭伟.单片机C语言程序设计实训100例:
基于8051+Proteus仿真北京:
电子工业出版社,2009.06
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 说明书 12864 LCD 显示 汉字