液晶显示设计与实现

上传人:cn****1 文档编号:571390562 上传时间:2024-08-10 格式:PPT 页数:53 大小:1.51MB
返回 下载 相关 举报
液晶显示设计与实现_第1页
第1页 / 共53页
液晶显示设计与实现_第2页
第2页 / 共53页
液晶显示设计与实现_第3页
第3页 / 共53页
液晶显示设计与实现_第4页
第4页 / 共53页
液晶显示设计与实现_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《液晶显示设计与实现》由会员分享,可在线阅读,更多相关《液晶显示设计与实现(53页珍藏版)》请在金锄头文库上搜索。

1、项目九项目九液晶显示设计与实现液晶显示设计与实现教学目的教学目的了解了解RT12864液晶屏结构液晶屏结构掌握掌握RT12864液晶屏工作原理液晶屏工作原理掌握掌握RT12864液晶屏与单片机的接口方法液晶屏与单片机的接口方法会利用会利用I/O口进行液晶显示电路设计口进行液晶显示电路设计进一步掌握液晶显示程序的设计方法进一步掌握液晶显示程序的设计方法9.1 RT12864阵列阵列液晶显示模块液晶显示模块9.1.1 认识认识RT12864液晶屏液晶屏LCD液晶显示的优点。液晶显示的优点。现在液晶显示广泛应用的领域。现在液晶显示广泛应用的领域。RT12864是一种将液晶显示器件、连接件、集成电是一

2、种将液晶显示器件、连接件、集成电路、路、PCB线路板、背光源、结构件装配在一起的组线路板、背光源、结构件装配在一起的组件。件。 160212864RT12864功能功能 nRT12864 系列是一种图形点阵型液晶显示模块。系列是一种图形点阵型液晶显示模块。n主要由行驱动器与列驱动器组成,可显示主要由行驱动器与列驱动器组成,可显示128(列)(列)64(行)点阵。(行)点阵。n可完成图形显示,也可显示可完成图形显示,也可显示32个(个(16*16点阵)汉字点阵)汉字n七条控制指令七条控制指令 ,与,与CPU接口采用接口采用8位数据总线并口输位数据总线并口输入输出方式。入输出方式。 LCD引脚引脚

3、RT12864液晶显示模块有液晶显示模块有20条引脚条引脚 VSS: 电源负端(电源负端(0V)VDD: 电源正端(电源正端(+5.0V) V0: LCD驱动电压(外接可调电阻,可调节对比度)驱动电压(外接可调电阻,可调节对比度)VOUT: LCD 驱动负电压输出端驱动负电压输出端LEDA: 背光电源正端(背光电源正端(+5.0V) LEDB: 背光电源负端(背光电源负端(0V)LCD引脚引脚RT12864液晶显示模块有液晶显示模块有20条引脚条引脚 RS: 数据数据指令选择:指令选择: (1)RS =1: 选择数据,指向数据寄存器;选择数据,指向数据寄存器; (2)RS =0: 选择指令,指

4、向地址计数器、指向指令寄存器。选择指令,指向地址计数器、指向指令寄存器。R/W: (1)R/W=1:当前是读操作;:当前是读操作; (2)R/W=0:当前是写操作:当前是写操作E: (1)E为高电平时进行读操作;为高电平时进行读操作; (2)R/WL:E为下降沿时进行写操作。为下降沿时进行写操作。LCD引脚引脚RT12864液晶显示模块有液晶显示模块有20条引脚条引脚 CS1:片选信号,左半屏片选信号,左半屏64 列选中(高电平有效)。列选中(高电平有效)。CS2:片选信号,右半屏片选信号,右半屏64 列选中(高电平有效)。列选中(高电平有效)。RST: 复位控制信号(低电平有效)复位控制信号

5、(低电平有效)LCD引脚引脚RT12864液晶显示模块有液晶显示模块有20条引脚条引脚 DB0DB7:数据总线数据总线引脚功能引脚功能 引脚号引脚号名称名称功能功能说明明1VSS电源源负端(端(0V)2VDD电源正端(源正端(+5.0V)3V0LCD驱动电压(外接可(外接可调电阻,可阻,可调节对比度)比度)4RS数据数据指令指令选择:(:(1)RS =1: 选择数据,指向数据寄存器;数据,指向数据寄存器; (2)RS =0: 选择指令,指向地址指令,指向地址计数器、指向数器、指向指令寄存器。指令寄存器。5R/W(1)R/W=1:读操作;操作;(2)R/W=0:写操作使能信号。:写操作使能信号。

6、6E(1)R/WH:E为高高电平平时读操作有效;操作有效;(2)R/WL:E为下降沿下降沿时写操作有效。写操作有效。714DB0 DB7数据数据总线15CS1片片选信号,左半屏信号,左半屏64 列列选中(高中(高电平有效)。平有效)。16CS2片片选信号,右半屏信号,右半屏64 列列选中(高中(高电平有效)。平有效)。17REST复位控制信号(低复位控制信号(低电平有效)平有效)18VOUTLCD 驱动负电压输出端出端19LEDA背光背光电源正端(源正端(+5.0V)20LEDK背光背光电源源负端(端(0V)9.1.2 RT12864内部结构内部结构 nIC2控制模块的右半屏,控制模块的右半屏

7、,IC1控制模块的左半屏。控制模块的左半屏。nIC1和和IC2为列驱动器;为列驱动器;nIC3为行驱动器。为行驱动器。n了解行、列驱动器所包含的主了解行、列驱动器所包含的主要功能器件,对模块编程非常要功能器件,对模块编程非常有利。有利。显示坐标关系显示坐标关系n指令寄存器(指令寄存器(IR ):): n当当D/I(RS )=0时,在时,在E信号下降沿的作用下,指令码写入信号下降沿的作用下,指令码写入IR。 n数据寄存器(数据寄存器(DR ):): n当当D/I (RS )=1时,在时,在E信号下降沿作用下,图形显示数信号下降沿作用下,图形显示数据写入据写入DR;n在在E信号高电平作用下由信号高

8、电平作用下由DR读到读到DB7DB0数据总线。数据总线。n忙标志忙标志BF: nBF=1时,此时模块不接受外部指和数据;时,此时模块不接受外部指和数据;nBF=0时,模块为准备状态,随时可接受外部指令和数据;时,模块为准备状态,随时可接受外部指令和数据;n利用利用STATUS READ指令,可以将指令,可以将BF读到读到DB7总线,从而总线,从而检验模块之工作状态。检验模块之工作状态。 主要功能器件主要功能器件主要功能器件主要功能器件n显示控制触发器显示控制触发器DFF: n此触发器是用于模块屏幕显示开和关的控制此触发器是用于模块屏幕显示开和关的控制nDFF=1为开显示为开显示nDFF=0为关

9、显示为关显示nXY地址计数器:地址计数器: nXY地址计数器是一个地址计数器是一个9位计数器位计数器n高高3位是位是X地址计数器,地址计数器,X地址计数器是没有记数功能的地址计数器是没有记数功能的n低低6位为位为Y地址计数器,地址计数器,Y地址计数器具有循环计数功能地址计数器具有循环计数功能n显示数据显示数据RAM(DDRAM ):): nDDRAM是存储图形显示数据的。是存储图形显示数据的。n数据为数据为1表示显示选择,数据为表示显示选择,数据为0表示显示非选择表示显示非选择。 9.1.3 控制指令及相应代码控制指令及相应代码 1.显示开关控制(显示开关控制(DISPLAY ON/OFF)

10、2.设置显示起始行(设置显示起始行(DISPLAY START LINE) 3.设置页地址(设置页地址(SET PAGE “X ADDRESS”) 4.设置设置Y地址(地址(SET Y ADDRESS) 5.读状态(读状态(STATUS READ) 6.写显示数据(写显示数据(WRITE DISPLAY DATE) 7.向向LCD发送命令发送命令 1. 显示开关控制显示开关控制显示开关控制命令字格式如下:显示开关控制命令字格式如下:D=1:开显示(:开显示(DISPLAY ON),即显示器可以进行各种显示操作;),即显示器可以进行各种显示操作;D=0:关显示(:关显示(DISPLAY OFF)

11、,即不能对显示器进行各种显示操作。),即不能对显示器进行各种显示操作。RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011111D显示开关控制相应代码显示开关控制相应代码 void Set_OnOff(uchar onoff) onoff=0x3e | onoff; /0011 111x Writ_Comd(onoff); 2. 设置显示起始行设置显示起始行设置显示起始行命令字格式如下:设置显示起始行命令字格式如下:指定显示屏从指定显示屏从DDRAM中哪一行开始显示数据,起始行的地址可以是中哪一行开始显示数据,起始行的地址可以是063的的任意一行。任意一行。RSR/WDB7D

12、B6DB5DB4DB3DB2DB1DB00011显示起始行(示起始行(063)设置显示起始行相应代码设置显示起始行相应代码 void Set_StartLine(uchar startline) /063 startline=startline & 0x3f; startline=startline | 0xc0; /1100 0000 Writ_Comd(startline); 3. 设置页地址设置页地址设置页地址命令字格式如下:设置页地址命令字格式如下:所谓页地址就是所谓页地址就是DDRAM的行地址,的行地址,8行为一页,模块共行为一页,模块共64行(即行(即8页)页) 页地址由本指令或页

13、地址由本指令或RST信号改变复位后页地址为信号改变复位后页地址为0RSR/WDB7DB6DB5DB4DB3DB2DB1DB00010111X: 0-7设置页地址相应代码设置页地址相应代码 void Set_Line(uchar line) line=line & 0x07; / 0=line=7 line=line|0xb8; /1011 1xxx Writ_Comd(line); 4. 设置设置Y地址地址设置设置Y地址命令字格式如下:地址命令字格式如下:此指令的作用是将此指令的作用是将Y地址送入地址送入Y地址计数器,作为地址计数器,作为DDRAM的的Y地址指针。地址指针。在对在对DDRAM进

14、行读写操作后,进行读写操作后,Y地址指针自动加地址指针自动加1,指向下一个,指向下一个DDRAM单元。单元。RSR/WDB7DB6DB5DB4DB3DB2DB1DB00001Y地址(地址(063)设置设置Y地址相应代码地址相应代码 void Set_Column(uchar column) column=column & 0x3f; / 0=column=63 column=column | 0x40; / 01xx xxxx Writ_Comd(column); 5. 读状态读状态读状态命令字格式如下:读状态命令字格式如下:当当R/W=1和和RS=0时,在时,在E信号为信号为“H”的作用下,

15、状态分别输出到数据总线的作用下,状态分别输出到数据总线(DB7DB0)的相应位。的相应位。各位状态如下:各位状态如下:BUSY: 1为忙;为忙;0为空闲。为空闲。RST: 1为复位;为复位;0为正常。为正常。ON/OFF:1为显示开;为显示开;0为显示关。为显示关。 RSR/WDB7DB6DB5DB4DB3DB2DB1DB001BUSY0ON/OFFRST00005. 读状态相应代码读状态相应代码读状态相应代码读状态相应代码void Check_Busy(void) uchar dat; RS=0; RW=1; Do DataPort=0x00; EN=1; /在在E为高电平时读操作有效为高电

16、平时读操作有效 dat=DataPort;/读读LCD状态状态 EN=0; dat=0x80 & dat; /仅当第仅当第7位为位为0时才可操作时才可操作(判别判别busy信号信号) while(!(dat=0x00);/直到不忙结束循环直到不忙结束循环6. 写显示数据写显示数据写入要显示的内容,写显示数据命令字格式如下:写入要显示的内容,写显示数据命令字格式如下:此指令是把要显示的数据写入相应的此指令是把要显示的数据写入相应的DDRAM单元,单元,Y地址指针自动加地址指针自动加1。RSR/WDB7DB6DB5DB4DB3DB2DB1DB010显示数据(示数据(dat)写显示数据相应代码写显示

17、数据相应代码void Write_Dat(uchar dat) Check_Busy();/要确认其在不忙时才可要确认其在不忙时才可写数据写数据 RW=0;RS=1; DataPort=dat; EN=1; EN=0;/写数据写数据7. 向向LCD发送命令发送命令写命令字格式如下:写命令字格式如下:RSR/WDB7DB6DB5DB4DB3DB2DB1DB000命令字(命令字(commandcommand)向向LCD发送命令相应代码发送命令相应代码void Writ_Comd(uchar command) Check_Busy();/要确认其在不忙时才可要确认其在不忙时才可写命令写命令 RW=0

18、;RS=0; DataPort=command; EN=1; EN=0; /写命令写命令 9.2 RT12864液晶液晶显示模块程序设计显示模块程序设计液晶显示程序设计液晶显示程序设计1.LCD接口定义接口定义2.定义字符显示数据结构定义字符显示数据结构3.LCD驱动函数驱动函数I.选择屏幕函数选择屏幕函数Select_Screen( uchar screen )II.清屏函数清屏函数LCD_Clr( uchar sreen )III.初始化函数初始化函数LCD_Init( void )IV.显示汉字字符函数显示汉字字符函数 Display(uchar screen,uchar page,uc

19、har column,uchar number)V.显示数字和字母字符函数显示数字和字母字符函数 Displayen(uchar screen,uchar page,uchar column,uchar number)LCD接口定义接口定义#define DataPort P0 / LCD数据线数据线D0-D7 sbit RS=P20; / 数据数据指令指令 选择选择 RS sbit RW=P21; / 读读写写 选择选择 sbit EN=P22; / 读读写使能写使能 sbit cs1=P23; / 片选片选1 sbit cs2=P24; / 片选片选2 sbit RST=P25;定义字符显

20、示数据结构定义字符显示数据结构显示汉字字符数组显示汉字字符数组uchar code Hzk=/*- 文字文字: 电电 -*/*- 宋体宋体12; 此字体下对应的点阵为:宽此字体下对应的点阵为:宽x高高=16x16 -*/0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00;0x000 12 3 4 5 6 7 8 9 1011121

21、314150x000xF80x480x480x480x480xFF0x480x480x480x480xF80x000x000x00上半屏上半屏0x000x000x0F0x040x040x040x040x3F0x440x440x440x440x4F0x400x700x00下半屏下半屏定义字符显示数据结构定义字符显示数据结构显示字母和数字字符数组显示字母和数字字符数组uchar code Ezk=/*- 文字文字: Q -*/*- 宋体宋体12; 此字体下对应的点阵为:宽此字体下对应的点阵为:宽x高高=8x16 -*/0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,

22、0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00;字模提取工具字模提取工具输入字符输入字符如:大家好如:大家好字模提取工具字模提取工具输入完成后输入完成后按按Ctrl+Enter字模提取工具字模提取工具选择取模方式选择取模方式字模提取工具字模提取工具选择选择C51格式格式字模提取工具字模提取工具生成字模生成字模LCD驱动函数驱动函数选择屏幕函数选择屏幕函数Select_Screen( uchar screen )void Select_Screen(uchar screen) switch(screen) case 0: cs1=1; cs2=1; break;

23、case 1: cs1=1; cs2=0; break; case 2: cs1=0; cs2=1; break; LCD驱动函数驱动函数清屏函数清屏函数LCD_Clr( uchar sreen )void LCD_Clr(uchar screen) unsigned char i,j; Select_Screen(screen); for(i=0;i8;i+) Set_Line(i); for(j=0;j128;j+) Write_Dat(0x00); LCD驱动函数驱动函数初始化函数初始化函数LCD_Init( void )void LCD_Init(void) uchar i=250;

24、/延时延时while(i-);Select_Screen(0);Set_OnOff(0); /关显示关显示LCD_Clr(0); /清屏清屏Select_Screen(0);Set_OnOff(1); /开显示开显示Select_Screen(0);Set_StartLine(0); /开始行开始行:0LCD驱动函数驱动函数显示汉字字符函数显示汉字字符函数void Display(uchar screen,uchar page,uchar column,uchar number)int i;/screen选屏参数,选屏参数,pagr选页参数,选页参数,column选列参数,选列参数,numbe

25、r选第几汉字选第几汉字输输Select_Screen (screen);column=column&0x3f;Set_Line(page); /写上半页写上半页Set_Column(column); /控制列控制列for(i=0;i16;i+) /控制控制16列的数据输出列的数据输出Write_Dat(Hzki+32*number); /i+32*number汉字的前汉字的前16个数据输出个数据输出Set_Line(page+1); /写下半页写下半页Set_Column(column); /控制列控制列 for(i=0;i16;i+) /控制控制16列的数据输出列的数据输出Write_Dat

26、(Hzki+32*number+16);/i+32*number+16汉字的后汉字的后16个数据输出个数据输出 LCD驱动函数驱动函数显示字母和数字字符函数显示字母和数字字符函数void Displayen(uchar screen,uchar page,uchar column,uchar number)int i;/screen选屏参数,选屏参数,pagr选页参数,选页参数,column选列参数,选列参数,number选第几汉字选第几汉字输输Select_Screen (screen);column=column&0x3f;Set_Line(page); /写上半页写上半页Set_Colu

27、mn(column); /控制列控制列for(i=0;i8;i+) /控制控制8列的数据输出列的数据输出Write_Dat(Ezki+16*number); /i+16*number字符的前字符的前8个数据输出个数据输出Set_Line(page+1); /写下半页写下半页Set_Column(column); /控制列控制列 for(i=0;i8;i+) /控制控制8列的数据输出列的数据输出Write_Dat(Ezki+16*number+8);/i+16*number+8字符的后字符的后8个数据输出个数据输出 9.3 RT12864液晶液晶显示字符显示字符RT12864液晶显示字符液晶显示

28、字符工作任务:工作任务:利用利用RT12864液晶显示专业,姓名,学号;液晶显示专业,姓名,学号;格式:格式:专业:专业:XXXXX姓名:姓名:XXX学号:学号:XXXXXXXXXXRT12864液晶液晶电路设计电路设计XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/I

29、NT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51CS11CS22GND3VCC4V05RS6R/W7E8DB09DB110DB211DB312DB413DB514DB615DB716RST17-Vout18LCD1AMPIRE128X64234567891RP1RESPACK-8RT12864液晶液晶程序设计程序设计#include #include #define uint unsign

30、ed int#define uchar unsigned char#define DataPort P0 /LCD12864数据线数据线sbit BF=P07; sbit RS=P22; / 数据数据指令指令 选择选择sbit RW=P21; / 读读写写 选择选择sbit EN=P20; / 读读写使能写使能sbit cs1=P23; / 片选片选1sbit cs2=P24; / 片选片选2 uchar code Hzk=;uchar code Ezk=;RT12864液晶液晶程序设计程序设计/*状态检查,状态检查,LCD是否忙是否忙*/void Check_Busy(void) uchar

31、 dat; RS=0; RW=1; do DataPort=0x00; EN=1; /在在E为高电平时读操作有效为高电平时读操作有效 dat=DataPort; /读读LCD状态状态 EN=0; dat=0x80 & dat; /仅当第仅当第7位为位为0时才可操作时才可操作(判别判别busy信号信号) while(!(dat=0x00);/直到不忙结束循环直到不忙结束循环RT12864液晶液晶程序设计程序设计/*写命令到写命令到LCD中中*/void Writ_Comd(uchar command) Check_Busy();/要确认其在不忙时才可写命令要确认其在不忙时才可写命令 RW=0;R

32、S=0; DataPort=command; EN=1; EN=0; /写命令写命令 /*开关显示,开关显示,0x3f是开显示,是开显示,0x3e是关显示是关显示*/void Set_OnOff(uchar onoff) onoff=0x3e | onoff; /0011 111x Writ_Comd(onoff); RT12864液晶液晶程序设计程序设计/*设定显示开始行,设定显示开始行,0xc0是行的首地址是行的首地址*/void Set_StartLine(uchar startline) /063 startline=startline & 0x3f; startline=startl

33、ine | 0xc0; /1100 0000 Writ_Comd(startline); /*设置页设置页 0xb8是页的首地址是页的首地址*/void Set_Line(uchar line) line=line & 0x07; / 0=line=7 line=line|0xb8; /1011 1xxx Writ_Comd(line); RT12864液晶液晶程序设计程序设计/*设定列地址设定列地址-Y 0-63 ,0x40是列的首地址是列的首地址*/void Set_Column(uchar column) column=column & 0x3f; / 0=column=63 colum

34、n=column | 0x40; / 01xx xxxx Writ_Comd(column); /*写显示数据写显示数据 */void Write_Dat(uchar dat) Check_Busy();/要确认其在不忙时才可写数据要确认其在不忙时才可写数据 RW=0;RS=1; DataPort=dat; EN=1; EN=0;/写数据写数据RT12864液晶液晶程序设计程序设计/*选择屏幕选择屏幕screen: 0-全屏全屏,1-左屏左屏,2-右屏右屏*/void Select_Screen(uchar screen) switch(screen) case 0: cs1=1; cs2=1

35、; break; case 1: cs1=1; cs2=0; break; case 2: cs1=0; cs2=1; break; RT12864液晶液晶程序设计程序设计/*清屏清屏screen: 0-全屏全屏,1-左屏左屏,2-右右*/void LCD_Clr(uchar screen) unsigned char i,j; Select_Screen(screen); for(i=0;i8;i+) Set_Line(i); for(j=0;j128;j+) Write_Dat(0x00); RT12864液晶液晶程序设计程序设计/*初始化初始化LCD*/void LCD_Init(voi

36、d) uchar i=250; /延时延时while(i-);Select_Screen(0);Set_OnOff(0); /关显示关显示LCD_Clr(0); /清屏清屏Select_Screen(0);Set_OnOff(1); /开显示开显示Select_Screen(0);Set_StartLine(0); /开始行开始行:0RT12864液晶液晶程序设计程序设计/*显示全角汉字显示全角汉字*/void Display(uchar screen,uchar page,uchar column,uchar number)int i;Select_Screen (screen);colum

37、n=column&0x3f;Set_Line(page); /写上半页写上半页Set_Column(column); /控制列控制列for(i=0;i16;i+) /控制控制16列的数据输出列的数据输出 Write_Dat(Hzki+32*number); Set_Line(page+1); /写下半页写下半页Set_Column(column); /控制列控制列 for(i=0;i16;i+) /控制控制16列的数据输出列的数据输出Write_Dat(Hzki+32*number+16); RT12864液晶液晶程序设计程序设计/*显示半角汉字和数字和字母显示半角汉字和数字和字母*/void

38、 Displayen(uchar screen,uchar page,uchar column,uchar number)int i;Select_Screen (screen);column=column&0x3f;Set_Line(page); /写上半页写上半页Set_Column(column); /控制列控制列for(i=0;i8;i+) /控制控制8列的数据输出列的数据输出Write_Dat(Ezki+16*number); Set_Line(page+1); /写下半页写下半页Set_Column(column); /控制列控制列 for(i=0;i8;i+) /控制控制8列的数

39、据输出列的数据输出Write_Dat(Ezki+16*number+8); RT12864液晶液晶程序设计程序设计/*主函数主函数*/void main() uint i; LCD_Init();/初始初始12864 LCD_Clr(0);/清屏清屏 Set_StartLine(0);/显示开始行显示开始行 while(1) for(i=0;i4;i+) Display(2,0,i*16,i);_nop_(); Display(1,0,i*16,i+4); _nop_(); RT12864液晶液晶程序设计程序设计for(i=0;i3;i+)Display(2,0+2,i*16,i+8);_nop_(); for(i=0;i8;i+)Displayen(2,0+2+2,i*8,i);_nop_(); for(i=0;i2;i+)Displayen(1,0+2+2,i*8,i+8);_nop_();

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号