《单片机原理及应用课程设计12864点阵LCD的显示.doc》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计12864点阵LCD的显示.doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理及应用课程设计12864点阵LCD的显示单片机原理及应用课程设计题目 12864点阵LCD的显示 院系 信息学院 专业 通信工程 姓名 XXX 学号 XXXXX 指导老师 XXX 报告日期 2009.09.10 1 题目:12864点阵LCD的显示2 原理简述12864点阵液晶显示模块(LCM)就是由128*64个液晶显示点组成的一个128列64行的阵列。每个显示点对应一位二进制数,1表示亮,0表示灭。存储这些点阵信息的RAM称为显示数据存储器.要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。图形或汉字的点阵信息当然由自己设计,问题的关键就是显示点在液晶屏上的位置(行
2、和列)与其在存储器中的地址之间的关系。由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的6464液晶屏拼接而成,每半屏有一个512*8 bits显示数据RAM.左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择.(少数厂商为了简化用户设计,在模块中增加译码电路,使得12864液晶屏就是一个整屏,只需一个片选信号。)显示点在64*64液晶屏上的位置由行号(line,063)与列号(column,063)确定。512*8 bits RAM中某个存储单元的地址由页地址(Xpage,07)和列地址(Yaddress,063)确定.每个存
3、储单元存储8个液晶点的显示信息。为了使液晶点位置信息与存储地址的对应关系更直观关,将64*64液晶屏从上至下8等分为8个显示块,每块包括8行64列个点阵。每列中的8行点阵信息构成一个8bits二进制数,存储在一个存储单元中。(需要注意:二进制的高低有效位顺序与行号对应关系因不同商家而不同)存放一个显示块的RAM区称为存储页。即6464液晶屏的点阵信息存储在8个存储页中,每页64个字节,每个字节存储一列(8行)点阵信息。因此存储单元地址包括页地址(Xpage,07)和列地址(Yaddress,063).应用系统的基本原理外围设备器件工作原理12864点阵型LCD简介 12864是一种图形点阵液晶
4、显示器,它主要由行驱动器/列驱动器及12864全点阵液晶显示器组成。可完成图形显示,也可以显示84个(1616点阵)汉字.管脚号管脚名称LEVER管脚功能描述1VSS0电源地2VDD+5。0V电源电压3V0液晶显示器驱动电压4D/I(RS)H/LD/I=“H”,表示DB7DB0为显示数据D/I=“L”,表示DB7DB0为显示指令数据5R/WH/LR/W=“H”,E=“H数据被读到DB7DB0R/W=“L”,E=“HL”数据被写到IR或DR6EH/LR/W=“L,E信号下降沿锁存DB7DB0R/W=“H”,E=“HDDRAM数据读到DB7DB07DB0H/L数据线8DB1H/L数据线9DB2H/
5、L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15CS1H/LH:选择芯片(右半屏)信号16CS2H/LH:选择芯片(左半屏)信号17RETH/L复位信号,低电平复位18VOUT10VLCD驱动负电压19LED+-LED背光板电源20LED-LED背光板电源表1:12864LCD的引脚说明 在使用12864LCD前先必须了解以下功能器件才能进行编程。12864内部功能器件及相关功能如下:1。 指令寄存器(IR) IR是用于寄存指令码,与数据寄存器数据相对应。当D/I=0时,在E信号下降沿的作用下,指令码写入IR。2数据寄存
6、器(DR) DR是用于寄存数据的,与指令寄存器寄存指令相对应。当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。3忙标志:BF BF标志提供内部工作情况。BF=1表示模块在内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。 利用STATUS READ指令,可以将BF读到DB7总线,从检验模块之工作状态.4显示控制触发器DFF 此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY OFF),DDRAM的内容就显示在屏幕上,
7、DFF=0为关显示(DISPLAY OFF)。 DDF的状态是指令DISPLAY ON/OFF和RST信号控制的。5XY地址计数器 XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针. X地址计数器是没有记数功能的,只能用指令设置。 Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。6显示数据RAM(DDRAM) DDRAM是存储图形显示数据的。数据为1表示显示选择,数据为0表示显示非选择.DDRAM与地址和显示位置
8、的关系见DDRAM地址表。7Z地址计数器 Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。 Z地址计数器可以用指令DISPLAY START LINE预置。因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM共64行,屏幕可以循环滚动显示64行。12864LCD的指令系统及时序 该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种.其指令表如表2所示:指令名称控制信号控制代码R/WRSDB
9、7DB6DB5DB4DB3DB2DB1DB0显示开关0000111111/0显示起始行设置0011XXXXXX页设置0010111XXX列地址设置0001XXXXXX读状态10BUSY0ON/OFFRST0000写数据01写数据读数据11读数据表2:12864LCD指令表各功能指令分别介绍如下。 显示开/关指令 R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00000111111/0当DB01时,LCD显示RAM中的内容;DB00时,关闭显示。2、显示起始行(ROW)设置指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00011显示起始行(063)该指
10、令设置了对应液晶屏最上一行的显示RAM的行号,有规律地改变显示起始行,可以使LCD实现显示滚屏的效果。3、页(PAGE)设置指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00010111页号(07)显示RAM共64行,分8页,每页8行。4、列地址(Y Address)设置指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00001显示列地址(063)设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样MPU就可以用读、写指令读出该单元中的内容或向该单元写进一个字节数据.5、读状态指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB
11、1 DB010BUSY0ON/OFFREST0000该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下:BUSY:1内部在工作0-正常状态ON/OFF:1显示关闭0显示打开RESET:1复位状态0正常状态在BUSY和RESET状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作.6、写数据指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB001写数据 读数据指令 R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB011读显示数据 读、写数据指令每执行完一次读、写操
12、作,列地址就自动增一。必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。3 单片机应用系统软件设计源程序;*接口设置* RSEQUp1.5 RWEQUp1.4 E EQUP1.3 ;- COUNT EQU31H STORE EQU32H;-ORG0000HLJMPMAINORG0100H;-MAIN: MOV SP,#5FH LCALL DELAY1 NOP;*LCD初始化*LGS0: MOVA,34H;34H-扩充指令操作 LCALL SEND_I MOVA,#30H;30H-基本指令操作 LCALL SEND_I MOVA,01H;清除显示 LCAL
13、L SEND_I MOVA,#06H;指定在资料写入或读取时,光标的移动方向 LCALL SEND_I ;DDRAM 的地址计数器(AC)加1 MOVA,0CH;开显示,关光标,不闪烁 LCALL SEND_I;=;显示汉字和字符;加入80ms的延时,动态显示;=HAN_WR2: LCALL CLEAR_PHAN_WR2A: MOVDPTR,TAB1A;显示汉字和字符 MOVCOUNT,10H ;地址计数器设为16。 MOVA,#80H ;第一行起始地址 LCALL SEND_I LCALL QUSHUHAN_WR2B: MOVDPTR,TAB1B;显示汉字和字符 MOVCOUNT,10H ;
14、地址计数器设为16。 MOVA,90H ;第二行起始地址 LCALL SEND_I LCALL QUSHUHAN_WR2C: MOVDPTR,TAB1C;显示汉字和字符 MOVCOUNT,#10H ;地址计数器设为16. MOVA,88H ;第三行起始地址 LCALL SEND_I LCALL QUSHUHAN_WR2D: MOVDPTR,TAB1D ;显示汉字和字符 MOVCOUNT,10H ;地址计数器设为16。 MOVA,#98H ;第四行起始地址 LCALL SEND_I LCALL QUSHU LCALL DELAY LCALL CLEAR_P AJMP MAIN;=;清屏;=CLE
15、AR_P: MOVA,01H ;清屏 LCALL SEND_I MOVA,34H LCALL SEND_I MOVA,#30H LCALL SEND_I RET;=;查表取数据送显示;=QUSHU: CLRA MOVC A,A+DPTR ;查表取数据 LCALL SEND_D ;送显示 INCDPTR LCALL DELAY1 ;延时80ms, DJNZ COUNT,QUSHU RET;=;写数据子程序;RS=1,RW=0,E=高脉冲,D0D7=数据;=SEND_D: LCALLCHK_BUSY ;写数据子程序 SETBRS CLR RW MOV P0,A SETBE NOP NOP CLR
16、E RET;=;写指令子程序;RS=0,RW=0,E=高脉冲,D0-D7=指令码;=SEND_I: LCALL CHK_BUSY CLRRS CLRRW MOVP0,A SETB E NOP NOP CLRE RET;=;读数据子程序;RS=1,RW=1,E=H,D0D7=数据;=READ_D: LCALL CHK_BUSY ;读数据子程序 SETBRS SETBRW SETBE NOP MOVA,P0 CLRE MOVSTORE,A RET;=;测忙碌子程序;RS=0,RW=1,E=H,D0-D7=状态字;=CHK_BUSY: MOVP0,#0FFH ;测忙碌子程序 CLRRS SETBRW
17、 SETBE JBP0.7,$ CLRE RET;=;延时子程序;=DELAY: MOVR5,#16HDEL31: MOVR6,0FFHDEL32: MOVR7,#0FFHHDEL33: DJNZR7,HDEL33 DJNZR6,DEL32 DJNZR5,DEL31 RETDELAY1: MOVR6,200DEL41: MOVR7,200DEL42: DJNZR7,DEL42 DJNZR6,DEL41 RET;*TAB1:TAB1A: DB 单片课程设计 ;显示在第一行TAB1B: DB 指导老师:李烨 ;显示在第二行TAB1C: DB 李想 ;显示在第三行TAB1D: DB AP0605414 ;显示在第四行END5、结果 增加延时可以以动态方式显示。6、参考文献单片机课程设计指导,楼然苗,北京航空航天大学出版社C51单片机技术教程,田希挥,人民邮电出版社手把手教你学单片机,周兴华,北京航空航天大学出版社附A、原理图9