1 / 14
文档名称:

LCD显示实验.pdf

格式:pdf   大小:1,263KB   页数:14页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

LCD显示实验.pdf

上传人:1781111**** 2024/5/11 文件大小:1.23 MB

下载得到文件列表

LCD显示实验.pdf

相关文档

文档介绍

文档介绍:该【LCD显示实验 】是由【1781111****】上传分享,文档一共【14】页,该文档可以免费在线阅读,需要了解更多关于【LCD显示实验 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..单片机实验报告班级:姓名:学号:指导教师::..实验三LCD显示实验(2学时)一、实验目的:学****液晶显示的编程方法,了解液晶显示模块的工作原理。掌握液晶显示模块与单片机的接口方法。学****和掌握8255扩展通用I/O的方法。基于扩展I/O口,实现LCD显示器的控制。二、实验设备:CPU挂箱、8031CPU模块三、实验内容:在掌握8255扩展I/O口的基础上,实现LCD的显示,并显示“中北大学1105064102姓名”。。四、实验原理说明LCD显示电路点阵式LCD显示电路是在系统板上***电正式液晶显示模块,模块的数据线、状态、控制线都通过插孔引出。可直接与系统相连。1、OCMJ2×8液晶模块介绍及使用说明OCMJ中文模块系列液晶显示器内含GB231216*16点阵国标一级简体汉字和ASCII8*8(半高)及8*16(全高)点阵英文字库,用户输入区位码或ASCII码即可实现文本显示。也可用作一般的点阵图形显示器之用。提供位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示。完:..全兼容一般的点阵模块。OCMJ中文模块系列液晶显示器可以实现汉字、ASCII码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。本系列模块具有上/下/左/右移动当前显示屏幕及清除屏幕的命令。一改传统的使用大量的设置命令进行初始:..引名称方向说明引脚名称方向说明脚1VLED+I背光源正极(LED+5V)8DB1I数据12VLED-I背光源负极(LED-OV)9DB2I数据23VSSI地10DB3I数据34VDDI(+5V)11DB4I数据45REQI请求信号,高电平有效12DB5I数据5应答信号=1:已收到数据并正在处理中6BUSYO13DB6I数据6=0:模块空闲,可接收数据7DB0I数据014DB7I数据71)表—1:OCMJ2X8(128X32)引脚说明化的方法,OCMJ中文模块所有的设置初始化工作都是在上电时自动完成的,实现了“即插即用”。同时保留了一条专用的复位线供用户选择使用,可对工作中的模块进行软件或硬件强制复位。规划整齐的10个用户接口命令代码,非常容易记忆。标准用户硬件接口采用REQ/BUSY握手协议,简单可靠。硬件接口接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY高电平(BUSY=1)表示OCMJ忙于内部处理,不能接收用户命令;BUSY低电平(BUSY=0)表示OCMJ空闲,等待接收用户命令。发送命令到OCMJ可在BUSY=0后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ信号(REQ=1)通知OCMJ请求处理当前数据线上的命令或数据。OCMJ模块在收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低:..(BUSY=0?),如果BUSY=0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节,模块在接收到最后一个字节后才开始执行整个命令的内部操作,因此,最后一个字节的应答BUSY高电平(BUSY=1)持续时间较长,具体的时序图和时间参数说明查阅相关手册。:..用户命令用户通过用户命令调用OCMJ系列液晶显示器的各种功能。命令分为操作码及操作数两部分,操作数为十六进制。共分为3类10条。分别是:3、显示一)、字符显示命1、显示国标汉2、显示8X8ASCII字8X16ASCII字令:字;符;符;二)、图形显示命4、显示位点阵;5、显示字节点阵;令:三)、屏幕控制命6、清屏;7、上移;8、下移;令:9、左移;10、右移;(以下所示取值范围分别为:2X8、4X8、5X10的取值范围)1)显示国标汉字命令格式:F0XXYYQQWW该命令为5字节命令(,Ts2=),其中XX:为以汉字为单位的屏幕行坐标值,取值范围00到07、02到09、00到09YY:为以汉字为单位的屏幕列坐标值,取值范围00到01、00到03、00到04:..QQWW:坐标位置上要显示的GB2312汉字区位码2)显示8X8ASCII字符命令格式:F1XXYYAS该命令为4字节命令(,Ts2=),其中XX:为以ASCII码为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13YY:为以ASCII码为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4FAS:坐标位置上要显示的ASCII字符码3)显示8X16ASCII字符命令格式:F9XXYYAS该命令为4字节命令(,Ts2=),其中XX:为以ASCII码为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13YY:为以ASCII码为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4FAS:坐标位置上要显示的ASCII字符码4)显示位点阵命令格式:F2XXYY该命令为3字节命令(,Ts2=),其中XX:为以1*1点阵为单位的屏幕行坐标值,取值范围00到7F、20到9F、00到9FYY:为以1*1点阵为单位的屏幕列坐标值,取值范围00到40、00到40、00到40:..5)显示字节点阵命令格式:F3XXYYBT该命令为4字节命令(,Ts2=),其中XX:为以1*8点阵为单位的屏幕行坐标值,取值范围00到0F、04到13、00到13YY:为以1*1点阵为单位的屏幕列坐标值,取值范围00到1F、00到3F、00到4FBT:字节像素值,0显示白点,1显示黑点(显示字节为横向)6)清屏命令格式:F4该命令为单字节命令(最大执行时间为11毫秒,Ts2=11mS),其功能为将屏幕清空。7)上移格式:F5令为单字节命令(最大执行时间为25毫秒,Ts2=25mS),其功能为将屏幕向上移一个点阵行。8)下移命令格式:F6该命令为单字节命令(最大执行时间为30毫秒,Ts2=30mS),其功能为将屏幕向下移动一个点阵行。9)左移命令格式:F7:..该命令为单字节命令(最大执行时间为12毫秒,Ts2=12mS),其功能为将屏幕向左移动一个点阵行。10)右移命令格式:F8该命令为单字节命令(最大执行时间为12毫秒,Ts2=12mS),其功能为将屏幕向右移动一个点阵行。显示窗口坐标关系以上列表为汉字、ASCⅡ码显示屏幕坐标(ASCⅡ码Y坐标一点阵坐标为准)。如显示图形点阵,则以128*64(OCMJ4X8)或128*32(OCMJ2X8)点阵坐标为准,可在屏幕任意位置显示。2、OCMJ2×8液晶模块外部连接原理图及接口说明:..3–478051与OCMJ4X8模块连接图模块上DB0~DB7插孔对应于位数据线;BUSY、REQ插孔分别对应于图中相应的引脚。五、实验步骤1、实验连线8255的PA0~PA7接DB0~DB7,PC7接BUSY,PC0接REQ,CS8255接CS0。2、,观察液晶的显示状态。六、程序框图开始初始化查表读数据NBUSY为0?Y数据输出REQ置位NBUSY为1?YREQ复位N数据读完?Y结束:..图11602液晶仿真图图21602LCD开发板显示图实验代码如下,LCD分为驱动接口层和App层,驱动接口实现传输指令和数据。Ap:..层利用Driver层实现的函数实现显示字符穿,数字等。最后主函数只需要调用App函数就可以,方便快捷,移植性强。只需改驱动就可以在其他平台·运行。LCD_Driver:voidLCD_WriteData(ucharWD)//写数据{while(LCD_CheckBusy()!=0);CE=0;RS=1;//选择数据RW=0;//选择写数据Delay_Us1;CE=1;Delay_Us1;LCDD(WD);//数据CE=0;}voidLCD_WriteInstruct(ucharIns)//写指令{while(LCD_CheckBusy()!=0);CE=0;RS=0;//选择指令RW=0;//选择写数据Delay_Us1;CE=1;Delay_Us1;LCDD(Ins);//数据CE=0;}bitLCD_CheckBusy(void)//检查忙{LCDD(0xff);//拉高做输入CE=0;RS=0;RW=1;Delay_Us1;CE=1;Delay_Us1;return(P2&BIT(7));:..LCD_App:voidLCD_Init(void)//初始化LCD{LCD_WriteInstruct(0x38);//设置接口方式LCD_WriteInstruct(0x06);LCD_WriteInstruct(0x0f);LCD_WriteInstruct(0x01);LCD_WriteInstruct(0x02);}voidLCD_WriteNum(ucharLineX,ucharBitX,ucharWD)//写1位数字{if(LineX==1){LCD_WriteInstruct(0x80+BitX);LCD_WriteData(0x30+WD);}else{LCD_WriteInstruct(0x80+0x40+BitX);LCD_WriteData(0x30+WD);}}voidLCD_WriteChar(ucharLineX,ucharBitX,ucharWD)//写ASCII{if(LineX==1){LCD_WriteInstruct(0x80+BitX);LCD_WriteData(WD);}else{LCD_WriteInstruct(0x80+0x40+BitX);LCD_WriteData(WD);}}voidLCD_WriteString(ucharLineX,ucharBitX,uchar*WD)//写字符串{{LCD_WriteChar(LineX,BitX++,*WD);WD++;}:..Main函数和键盘扫描带代码:voidmain(void){ucharDisplay_Num=0;ucharDisplay_Num1;LCD_Init();//分层实现主函数就是简洁明了hhhwhile(1){;}}八、实验步骤:(1)在proteus下新建一个工程;(2)按照原理图连接好仿真电路;(3),导入单片机;(4)运行程序,仿真,得出结果。九、实验中遇到的问题及解决方法:无法正常显示图像内容,位置显示错误(资料素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)