单片机控制LCD液晶显示器含程序docx.docx
《单片机控制LCD液晶显示器含程序docx.docx》由会员分享,可在线阅读,更多相关《单片机控制LCD液晶显示器含程序docx.docx(16页珍藏版)》请在冰豆网上搜索。
单片机控制LCD液晶显示器含程序docx
液晶显示器
1.实验目的:
1.了解全点阵图形LCD的结构和原理掌握在MSP43上如何使用外设。
2.了解LCD显示器的工作原理、种类(笔段型、点阵字符型、点阵图形)及主要性能指标。
3.掌握图形点阵LCD的编程使用方法;理解LCD显示模块命令的种类、功能及使用方法。
4.了解LCD字符生成软件的使用方法(见附录)。
2.实验内容:
1.在LCD上显示Hello和中文字“南京工业大学”。
2.通过键盘控制Hello或者中文字符在LCD上左右、上下移动。
3.学会使用字符生成软件来实现任意字符代码的生成和显示。
4.其他另外可以实现的目标:
使字符在按键没有松动的情况下连续移动;实现字符的循环移动,即当字符串移动到边界时仍可以移动,显示不完的部分从另一边显示出来。
3.实验原理:
1.图形点阵式液晶原理
液晶是一种具有规则性分子排列的有机化合物,它既不是液体也不是固体,而是介于固态和液态之间的物质。
液晶具有电光效应和偏光特性,这是它能用于显示的主要原因。
常用的液晶显示器可分成3类,分别是扭曲向列型
(TwistedNematic)、超扭曲向列型(SuperTN)和彩色薄膜型。
字符点阵式属于扭曲向列型LCD
典型的字符点阵式液晶显示器是由控制器、驱动器、字符发生器ROM
字符发生器RAM和液晶屏组成,字符由5*7点阵或5*10点阵组成。
一般结果如图一所示:
8
图一128x64点阵图形液晶模块方框示意图
此次实验所用的LCD型号是RT12864CT12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128*64全点阵液晶显示器组成。
可完成图形显
示,也可以显示8*4个(
16*16)汉字。
管脚号
管脚名称
LEVER
管脚功能描述
1
VSS
0
电源地
2
VDD
+5.0V
电源电压
3
V0
-
液晶显示器驱动电压
4
D/I(RS)
H/L
D/I=“H”
,表示DB"DB0为显示数据
D/I=“L”
,表示DB"DB0为显示指令数据
5
R/W
H/L
R/W=“H”
E=“H'数据被读到DB"DB0
R/W=“L”
E=“H-L”数据被写到IR或DR
6
E
H/
R/W=“L”
,E信号下降沿锁存DB7"DB0
R/W=“H”
E=“H'DDRAM数据读DB"DB0
7
DB0
H/L
数据线
8
DB1
H/L
数据线
9
DB2
H/L
数据线
10
DB3
H/L
数据线
11
DB4
H/L
数据线
12
DB5
H/L
数据线
13
DB6
H/L
数据线
14
DB7
H/L
数据线
15
CS1
H/L
H:
选择芯片(右半屏)信号
16
CS2
H/L
H:
选择芯片(左半屏)信号
17
RET
H/L
复位信号
低电平复位
18
VOUT
-10V
LCD驱动负电压
19
LED+
LED背光板电源
表1:
12864LCD勺引脚说明
128x64点阵图形液晶模块的内部结构可分为三个部分:
LCD控制器,LCD驱动器,LCD显示装置。
应注意的是,无背光液晶模块同EL、LED背光的液晶模块内部结构有较大的区别,特别注意第19、20脚的供电来源及相关参数,如图二所示:
图2128x64点阵图形液晶模块的内部结构
12864LCD的指令系统及时序:
该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。
其指令表如表2所示:
指令名称控制信号控制代码
R/W
RS
DB7
DB6
DB5
DB4DB3DB2DB1
DB0
显示开关
0
0
0
0
1
11
1
1
1/0
显示起始行设置
0
0
1
1
X
XX
X
X
X
页设置
0
0
1
0
1
11
X
X
X
列地址设置
0
0
0
1
X
XX
X
X
X
读状态
1
0
BUSY
0
ON/OFFRST0
0
0
0
写数据
0
1
写数据
读数据
1
1
读数据
表2:
12864LCD指令表
2.MCI与LCD键盘连接电路图:
LCD的7—14引脚分别连接到149的44—51引脚(P5口),其他引脚2号引脚连接到J28排线上(与5V电源接通给LCD供电)、1--GND4—36、5—37、6—38、15—39、16—42、17—43;18接滑动变阻器R10(调节LCD的亮度)。
键盘连接省略。
3.LCD显示流程图:
4.实验步骤和结果:
通过调试可以正确的显示“Hello”或者“南京工业大学”,中英文字符的切换需要通过程序修改才能实现(可以试着用中断来实现),比较繁琐。
同时通过键盘来实现字符在LCD屏幕上的上下左右的移动。
5.附录:
1.字模软件使用方法:
首先打开“PCtoLCD2002.exe',显示界面如下图7所示:
瞬PCtoLCD2002^^-•■・丨三旦X
文件(F)為辑旧撞式Q远项(O)舸助(H)
修改点陆大小
盍丹亭点纸大小;15X16
图8
字符软件设置界面
接着在左下方空白
格子里输入要显示字符,点击“生成字模”,变会出现对
应的字符编码,复制到程序中编译即可
2.程序(键盘扫描函数省略):
/*****************************************************************************
*文件名称:
main.c
*文件说明根据键盘的控制,移动字符串"Hello"或者"南京工业大学",行列键盘的"7"用于字符串左移,"8"用于字符串下移,"9"用于字符串右移,"5"用于字符串上移。
按键每按一下向各自的方向移动一个点阵的位置。
******************************************************************************/
#defineMSP430F149_H0#include
#ifndefLCD_IN_USE
#include"lcd.c"
#endif
#ifndefKEY_BOARD#include"keyboard12.c"
#endif#defineTOP0//
#defineBOTTOM64//
#defineLEFT0//
竖直方向零点
竖直方向坐标最大值
水平方向坐标最小值
水平方向坐标最大值
字符串的长度
#defineRIGHT128//#defineEN_WIDTH40//HellovoiddrawStr(unsignedcharx,unsignedchary);
voidop_Select(charOP);
unsignedcharshowData[]={//16*8点阵的“Hello
0x08,0x20,0xF8,0x3F,0x08,0x21,0x00,0x01,
0x00,0x01,0x08,0x21,0xF8,0x3F,0x08,0x20,/*"H",0*/
0x00,0x00,0x00,0x1F,0x80,0x22,0x80,0x22,
0x80,0x22,0x80,0x22,0x00,0x13,0x00,0x00,/*"e",1*/
0x00,0x00,0x08,0x20,0x08,0x20,0xF8,0x3F,
0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"l",2*/
0x00,0x00,0x08,0x20,0x08,0x20,0xF8,0x3F,
0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"l",3*/
0x00,0x00,0x00,0x1F,0x80,0x20,0x80,0x20,
0x80,0x20,0x80,0x20,0x00,0x1F,0x00,0x00,/*"o",4*/
};
unsignedcharshowData_1[]={//16*16点点阵的"南京工业大学“
0x04,0x00,0xE4,0xFF,0x24,0x00,0x24,0x08,0x64,0x09,0xA4,0x09,0x24,0x09,0x3F,0x7F,
0x24,0x09,0xA4,0x09,0x64,0x09,0x24,0x48,0x24,0x80,0xE4,0x7F,0x04,0x00,0x00,0x00,/*"南",0*/
0x04,0x00,0x04,0x40,0x04,0x20,0xE4,0x1B,0x24,0x02,0x24,0x42,0x25,0x82,0x26,0x7E,0x24,0x02,0x24,0x02,0x24,0x02,0xE4,0x0B,0x04,0x10,0x04,0x60,0x04,0x00,0x00,0x00,/*"京",1*/0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0xFC,0x3F,
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x00,0x20,0x00,0x00
0x00,0x40,0x10,0x40,0x60,0x40,0x80,0x43,0x00,0x40,0xFF,0x7F,0x00,0x40,0x00,0x40,
0x00,0x40,0xFF,0x7F,0x00,0x42,0x00,0x41,0xC0,0x40,0x30,0x40,0x00,0x40,0x00,0x00,/*"业",3*/
0x20,0x80,0x20,0x80,0x20,0x40,0x20,0x20,0x20,0x10,0x20,0x0C,0x20,0x03,0xFF,0x00,
0x20,0x03,0x20,0x0C,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x80,0x20,0x80,0x00,0x00
0x40,0x04,0x30,0x04,0x11,0x04,0x96,0x04,0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E
0x90,0x06,0x90,0x05,0x98,0x04,0x14,0x04,0x13,0x04,0x50,0x04,0x30,0x04,0x00,0x00,/*"学",5*/
};
constunsignedcharmapTbl[]=
{
0x01,0x03,0x07,0x0f,
0x1f,0x3f,0x7f,0xff
};
显示字符串的X位置
显示字符串的Y位置
字符串的宽度
unsignedcharpx,//
py,//
width;//
voidmain()
WDT