系列单片机最小标准系统液晶显示.docx

上传人:b****6 文档编号:8871924 上传时间:2023-02-02 格式:DOCX 页数:19 大小:222.13KB
下载 相关 举报
系列单片机最小标准系统液晶显示.docx_第1页
第1页 / 共19页
系列单片机最小标准系统液晶显示.docx_第2页
第2页 / 共19页
系列单片机最小标准系统液晶显示.docx_第3页
第3页 / 共19页
系列单片机最小标准系统液晶显示.docx_第4页
第4页 / 共19页
系列单片机最小标准系统液晶显示.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

系列单片机最小标准系统液晶显示.docx

《系列单片机最小标准系统液晶显示.docx》由会员分享,可在线阅读,更多相关《系列单片机最小标准系统液晶显示.docx(19页珍藏版)》请在冰豆网上搜索。

系列单片机最小标准系统液晶显示.docx

系列单片机最小标准系统液晶显示

 

《创新设计报告》

基于51系列单片机最小系统的液晶显示

学院:

机电与自动化学院

专业班级:

电气自动化技术0802

学生姓名:

刘刚

学生学号:

20082822077

指导教师:

姚裕安

同组设计者:

吴勇

(课程设计时间:

2011年03月03日——2011年03月13日)

华中科技大学武昌分校

 

目录

1.设计题目…………………………………………………………………02

2.设计任务及要求……………………………………………………02

3.系统硬件电路设计…………………………………………………………02

3.1设计电路原理图…………………………………………………………02

3.2主要元器件清单…………………………………………………………03

3.3OMC12864-4(T6963c)的简介…………………………………………03

4.系统软件设计………………………………………………………………05

4.1程序流程图………………………………………………………………05

4.2子程序功能介绍…………………………………………………………06

4.3完整程序及其功能注释…………………………………………………06

5.系统调试故障分析…………………………………………………………12

6.调试结果与设计任务分析…………………………………………………13

7.课设收获与建议……………………………………………………………13

参考文献………………………………………………………………………13

1.设计题目

基于51单片机最小系统板实现“液晶显示汉字、数字、英文”

2.设计任务及要求

任务:

最小系统板实现“液晶显示汉字、数字、英文”;

要求:

对液晶显示操作技能训练;学会运用Protell软件;

绘制软件流程图、编写并调试程序、详细注释软件功能;

对系统性能指标进行分析并提出改进方案;

作品演示与讲解(硬件、软件、调试、改进、)

3系统硬件电路设计(含文字介绍、电路原理图)

3.1用Protell软件绘制电路原理图采用的是直接访问方式。

如图

(1)

直接访问方式是把内置T6963C控制器的液晶显示模块作为存储器或I/O设备直接挂在计算机的总线上。

模块的数据线接计算机的数据总线上,片选及寄存器选择信号线由算机的地址总线提供,读和写操作由计算机的读写操作信号控制。

(1)

(1)中的引脚说明OCM12864-4与STC89C52RC接口:

P0.0-0.7<==========>D0-7GND<==========>/CE

P3.7<==========>/RDVCC<==========>/RESET

P3.6<==========>/WRGND<==========>FG

P2.0<==========>C/D

3.2本设计所要用到的主要元器件:

金鹏OMC12864-4液晶显示模块(主控芯片T6963C);JZ-M2单片机最小系统(采用STC89C52RC51系列单片机);

3.3关于OMC12864-4(T6963c)的简介

3.3.1管脚定义见下表

(1):

(1)

3.3.2关于主控芯片T6963C说明:

结构特点:

内藏T6963C的液晶显示模块上已经实现了T6963C与行、列驱动器及显示缓冲区RAM的接口,同时也已用硬件设置了液晶屏的结构(单双屏、数据传输方式、显示窗口长度、宽度等等。

我们常用的液晶显示模块一般都是单屏结构,因此我们这里只讨论单屏结构的液晶显示模块。

内藏T6963C的单屏结构点阵图形液晶显示模块的方框图如图

(2):

(2)

►T6963C是点阵式液晶图形显示控制器它能直接与8位微处理器接口;

►T6963C的字符字体可由硬件或软件设置,其字体有4种5X8、6X8、7X8、8X8;

►T6963C的占空比可从1/16到1/128;

►T6963C可以图形方式、文本方式及图形和文本合成方式进行显示,以及文本方式下的特征显示,还可以实现图形拷贝操作等等;

►T6963C具有内部字符发生器CGROM,共有128个字符。

T6963C可管理64K显示缓冲区及字符发生器CGRAM,并允许MPU随时访问显示缓冲区,甚至可以进行位操作。

3.3.3主控芯片T6963C指令说明:

如表

(2)

命令

代码(bin)

代码(hex)

参数D1

参数D2

功能

Status

S0-S7

-

-

读状态

RegSeting

00100001

21H

XAddress

yAddress

设光标指针

00100010

22H

偏移量

00H

设偏移量寄存器

00100100

24H

低位地址

高位地址

设地址指针

SetControl

Word

01000000

40H

低位地址

高位地址

设文字区起始地址

01000001

41H

字节数

00H

设文字区宽度

01000010

42H

低位地址

高位地址

设图形区起始地址

01000011

43H

字节数

00H

设图形区宽度

Modeset

1000*000

80H/88H

OR

*=0内部字符发生器

*=1外部字符发生器

1000*001

81H/89H

XOR

1000*011

83H/8BH

AND

1000*100

84H/8CH

文字属性

 

DisplayMolde

10010000

90H

显示关

1001xx10

92H

光标显示,闪烁关

1001xx11

93H

光标显示,闪烁开

100101xx

94H

文字开,图形关

100110xx

98H

文字关,图形开

100111xx

9BH

文字开,图形开

CursorPattern

10100D2-0

A0H-A8H

光标高度

DataAuto

Read/write

10110000

B0H

设置数据自动写

10110001

B1H

设置数据自动读

10110010

B2H

退出自动读写

 

Data

Read/write

11000000

C0H

显示数据

写数据,地址指针自加1

11000001

C1H

-

读数据,地址指针自加1

11000010

C2H

显示数据

写数据,地址指针自减1

11000011

C3H

-

-

读数据,地址指针自减1

11000100

C4H

显示数据

-

写数据,地址指针不变

11000101

C5H

-

-

读数据,地址指针不变

Screenpeek

11100000

E0H

-

-

屏幕读取

Screencopy

11101000

E8H

-

-

屏幕复制

Bit

Set/reset

11110xxxx

-

-

BitClear

11111xxxx

-

-

BitSet

(2)

4.系统软件设计(含程序流程图,子程序功能介绍、程序功能注释)

4.1程序流程图,如图(3)

N

Y

图(3)

4.2子程序功能介绍

LCD_Write_Data()写数据子

LCD_Write_Command0()写无参数命令字

LCD_Write_Command1()写单参数命令字

LCD_Write_Command2()写双参数命令子

voidLCD_T6963_Ini()液晶模块初始化工作

voidLCD_Fill_All()LCD填充.对LCD的空间填入同一个数据

LCD_Dis_Chi()在主函数中,只要调用这几个函数,就能实现显示的文字显示

LCD_Dis_Str()能利用T9693C内部字符发生器CGROM,在液晶屏上显示西文数组

LCD_Mak_Cgr()创建CGRAM,CGRAM中包含能用文本方式显示的自定义字符

LCD_DIS_CHI()利用CGRAM自定字符,以文本方式形式输出

4.3完整程序及其功能注释

********************************************

说明:

本程序为T6963C的驱动

功能:

能对OMC12864-4液晶模块硬件进行定义;定义了对液晶模块最层的操作函数,

如:

读状态字函数,读数据函数,写无参数命令字函数,写单参数命令字函数,

字双参数命令字函数,写数据函数

时间:

2011/01/010修改时间:

2011/01/12

作者:

HUSTWbwuyong

***************************************************/

/*说明:

本程序主要用来进行文本显示,实现的功能有:

显示英文数组,中文数组,

在主函数中可以直接调用的函数有:

T6963C初始化程序,液晶屏清零程序

显示英文数组,中文数组.实现了程序的封装.

修改日间:

2011/01/12

T6963C命令的定义

********************************************************************/

//指针设置指令

#defineLCD_CUR_POS0X21//光标位置设置(只有设置到有效显示地址并打开显示才看到),双参数(D1水平位置,D2垂直位置)

#defineLCD_CGR_POS0X22//CGRAM偏置地址设置(用来增加自己的符号),双参数(D1低5位有效,D2=00)

#defineLCD_ADR_POS0x24//地址指针位置(设置读写操作打针)

//显示区域设置指令

#defineLCD_TXT_STP0X40//文本区首址(从此地址开始向屏幕左上角显示字符)

#defineLCD_TXT_WID0X41//文本区宽度(设置显示宽度,N/6式N/8,其中N为X轴的点数)

#defineLCD_GRH_STP0X42//图型区首址(从此地址开始向屏幕左上角显示点,((有等进一步确认))为文本方式显示时,显示为文本显示特性

#defineLCD_GRH_WID0X43//图形区宽度(设置显示宽度,N/6式N/8,其中N为X轴的点数)

//显示方式设置指令,当CG(D3)为0启用CGROM

#defineLCD_MOD_OR0X80//显示方式:

逻辑或

#defineLCD_MOD_XOR0X81//显示方式:

逻辑异或

#defineLCD_MOD_AND0x83//显示方式:

逻辑与

#defineLCD_MOD_TCH0x84//显示方式:

文本

//显示开关设置指令,(D0,D1,D2,D3)=1/0<==========>(光标闪烁,光标显示,文本显示图形显示)启用/禁用

#defineLCD_DIS_SW0x90//显示开关设置

//光标开头设置指令

#defineLCD_CUR_SHP0xA0//光标型形状选择:

0xA0-0xA7代表光标占的行数

//自动读写设置指令

#defineLCD_AUT_WR0xB0//自动写设置

#defineLCD_AUT_RD0xB1//自动读设置

#defineLCD_AUT_OVR0xB2//自动读写结束

//数据一次读写设置指令

#defineLCD_INC_WR0xC0//数据一次写,地址加1

#defineLCD_INC_RD0xC1//数据一次读,地址加1

#defineLCD_DEC_WR0xC2//数据一次写,地址减1

#defineLCD_DEC_RD0xC3//数据一次读,地址减1

#defineLCD_ZER_WR0xc4//数据一次写,地址不变

#defineLCE_ZER_RD0xc5//数据一次读,地址不变

//屏读设置指令

#defineLCD_SCN_RD0xE0//屏读,屏读只能在图形显示区内;该指令是把屏上的内容取出来作为数据使用.

//屏拷贝

#defineLCD_SCN_CP0xE8//屏拷贝,该指令将屏上当前地址指针(图形)处开妈的一行合成显示内容拷贝到相对应的图形显示区的一级单元

//位操作指令

#defineLCD_BIT_OP0xFF//该指令可将显示缓冲区单无的某位清零或置位.D0-D1--定义D0-D7位;D3--1为置位,D3--0为复位

unsignedcharxdataLCD_DAT_ADD_at_0x8000;//C/D-P2.0

unsignedcharxdataLCD_COM_ADD_at_0x8100;//C/D-P2.0

/***********************************************************************

函数名称:

LCD_Write_Data()

功能:

写数据子程序,将数据输入T6963C

入口参数:

data想要写入的数据

出口参数:

说明:

在写命令之前,状态位D0(STA0),D1(STA1)必须全为1

***********************************************************************/

voidLCD_Write_Data(unsignedchardata1)

{

while(((LCD_COM_ADD)&0x03)!

=0x03);

LCD_DAT_ADD=data1;

}

/***********************************************************************

函数名称:

LCD_Write_Command0()

功能:

写无参数命令字程序,将T6963C对应的指令写入,没有参数

入口参数:

commond想要写入的命令字

出口参数:

说明:

在写命令之前,状态位D0(STA0),D1(STA1)必须全为1

***********************************************************************/

voidLCD_Write_Command0(unsignedcharcommand)

{

while(((LCD_COM_ADD)&0x03)!

=0x03);

LCD_COM_ADD=command;

}

/***********************************************************************

函数名称:

LCD_Write_Command1()

功能:

写单参数命令字程序,将T6963C对应的指令写入

入口参数:

commond想要写入的命令字

出口参数:

说明:

先送数据,再送命令字

***********************************************************************/

voidLCD_Write_Command1(unsignedcharcommand,unsignedchardata1)

{

LCD_Write_Data(data1);

LCD_Write_Command0(command);

}

/***********************************************************************

函数名称:

LCD_Write_Command2()

功能:

写双参数命令子程序,将T6963C对应的指令写入

入口参数:

commond想要写入的命令字

出口参数:

说明:

先送数据,再送命令字

***********************************************************************/

voidLCD_Write_Command2(unsignedcharcommand,unsignedchardata1,unsignedchardata2)

{

LCD_Write_Data(data1);

LCD_Write_Data(data2);

LCD_Write_Command0(command);

}

/************************************************************************

函数名称:

LCD_T6963_Ini()

功能:

液晶模块初始化工作

入口参数:

出口参数:

说明:

初始化工作的主要要完成对文本方式的RAM起始地址的设定,文本模式的显示

宽度,图形方式的RAM的起始地址,以及其宽度;设置显示方式等工作.

**************************************************************************/

voidLCD_T6963_Ini(void)

{

LCD_Write_Command2(LCD_TXT_STP,0x00,0x00);//设置文本方式RAM起始地址

LCD_Write_Command2(LCD_TXT_WID,0x20,0x00);//设置文本方式的宽度,宽度为N/6或N/8)

LCD_Write_Command2(LCD_GRH_STP,0x00,0x08);//设置图形方式RAM起始地址

LCD_Write_Command2(LCD_GRH_WID,0x20,0x00);//设置图形方式的宽度,宽度为N/6或N/8)

LCD_Write_Command0(LCD_CUR_SHP|0x08);//设置光标的形状

LCD_Write_Command0(LCD_MOD_OR);//设置显示方式为逻辑或方式

LCD_Write_Command0(LCD_DIS_SW|0x94);//设置文本显示方式

}

/***************************************************************************

函数名称:

LCD_Fill_All()

功能:

LCD填充.对LCD的空间填入同一个数据

入口参数:

dat

出口参数:

说明:

填充,主要可用来对液晶进行清屏,只对其填入使屏为白的字就行了

****************************************************************************/

voidLCD_Fill_All(unsignedchardat)

{

unsignedinti;

LCD_Write_Command2(LCD_ADR_POS,0x00,0x00);//置地址指针

LCD_Write_Command0(LCD_AUT_WR);//自动写

for(i=0;i<32767;i++)

{

while((LCD_COM_ADD&0x08)!

=0x08)

{

LCD_DAT_ADD=dat;//写数据

}

}

LCD_Write_Command0(LCD_AUT_OVR);//自动写关

LCD_Write_Command2(LCD_ADR_POS,0x00,0x00);//重置地址指针

}

/***************************************************************************显示英文数组

函数名称:

LCD_Dis_Str()

功能:

能利用T9693C内部字符发生器CGROM,在液晶屏上显示西文数组

入口参数:

x,y,*wordcode,*wordattr,wordlongth

出口参数:

说明:

x,y对应是字符在屏上的字符坐标

****************************************************************************/

LCD_Dis_Str(unsignedcharx,unsignedchary,unsignedchar*wordcode,unsignedchar*wordattr,unsignedcharwordlongth)

{

unsignedchari,xlable,ylable;

unsignedintdataadd;

dataadd=y*30+x;

xlable=dataadd&0xff;

ylable=dataadd/256;//计算字符RAM的地址

LCD_Write_Command0(LCD_DIS_SW|0x08);//设置设置显示方式

LCD_Write_Command0(LCD_DIS_SW|0x02);

LCD_Write_Command0(0X8c);//设置为文本特征显示方式

LCD_Write_Command2(LCD_ADR_POS,(xlable+0),(ylable+0));//设置地址

for(i=0;i

{

LCD_Write_Command1(LCD_INC_WR,wordcode[i]);

}

LCD_Write_Command2(LCD_ADR_POS,0x00,0x08);//写字符对应的特征位

for(i=0;i

{

LCD_Write_Command1(LCD_INC_WR,wordattr[i]);

}

}

/*********************************************************************************建立CGRAM

函数名称:

LCD_Mak_Cgr()

功能:

创建CGRAM,CGRAM中包含能用文本方式显示的自定义字符

入口参数:

cgramnum

出口参数:

说明:

在CGRAM中写入字符点阵

*******************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1