实验实训教程_单片机应用技术2.1v第13单元使用595驱动lcd_第1页
实验实训教程_单片机应用技术2.1v第13单元使用595驱动lcd_第2页
实验实训教程_单片机应用技术2.1v第13单元使用595驱动lcd_第3页
实验实训教程_单片机应用技术2.1v第13单元使用595驱动lcd_第4页
实验实训教程_单片机应用技术2.1v第13单元使用595驱动lcd_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第13单元使用595驱动LCD液晶目 标掌握使用595进行IO扩展以驱动LCD液晶按照实验1的步骤搭建好硬件平台,然后按照本实验步骤的硬件连接进行接线,使用STC-ISP软件下载“LCD液晶595驱动包outLcdWith595.hex”到单片机中,便可观察到如下实验现象,实验效果图见实验步骤中的操作演示。使用595驱动LCD液晶,在其上显示图片、字母和汉字。 实验目标实验原理一、74HC595概述 在实验12中已经对74HC595进行了详细介绍,这里只简单回顾一下。74HC595的内部结构如下图所示实验原理二、液晶显示概述 在实验8中也已经对液晶显示进行了详细介绍,这里只简单回顾一下。DDR

2、AM地址映像表见下表 实验原理三、12864的驱动电路 在实验12中数码管的7 4HC595驱动电路图中J11通过短接线与3.3V相连,J12和J16接数码管的位选端(这里改接12864的控制端),J10接数码管的段选端(这里改接12864的数据端),J10上连接的电阻为段码的限流电阻,J21接74HC595的信号端。 实验原理 在实验8中12864的驱动电路在实验8中12864的驱动电路如下图所示,DB7DB0为12864的数据端,剩下的可看作12864的控制端,电位器R3用于调节12864屏幕的对比度,Q1等构成了12864的背光驱动电路。 实验原理四、液晶显示与PC机的通讯协议 在本实验

3、中,可以使用串口调试助手发送命令控制液晶的操作,通讯协议与实验8几乎是一样的,命令码也有0 x00(行显示)、0 x43(清屏)、0 x46(满屏),但没有0 x44(画一个点),这是因为画一个点需要对液晶做读操作,而使用595来驱动12864是无法对12864做读操作的。当然,也可以在单片机的RAM中为12864建立一个的缓存(12864/8=1024个字节,即1KB),通过修改这个缓存中的数据再将这个缓存写入12864也是可以实现画一个点的。 实验步骤1、设备连接在实验12中扩展板J12-S2与数码管的S2(这里改接12864的RS脚)相连,以此类推.分别改接12864的RW脚、E脚、CS

4、1脚、CS2脚、RST脚和BL脚;扩展板J10-D1与数码管的A段(这里改接12864的D0脚)相连,与此类推;扩展板的J21-3、J21-2、J21-1分别与单片机的P3.5、P3.6、P3.7;扩展板的J11短接。 实验步骤2、实验操作按照实验1的步骤搭建好硬件平台,然后按照本实验步骤的硬件连接进行接线,使用STC-ISP软件下载“LCD液晶595驱动包outLcdWith595.hex”到单片机中,除了可以显示“程序流程图”中的效果图之外,还可以使用STC-ISP软件中的串口助手来调试程序。根据前面介绍的“液晶显示与PC机的通讯协议”可以知道,让PC机通过串口发送形如“FE 0A 10

5、00 01 01 04 00 0F F0 FF E2”的命令,液晶会在第1行第1列显示其中接收到的数据“00 0F F0 FF”,同时单片机返回“FE 04 10 00 00 EC”应答信息。与前面的实验7一样,在使用串口助手之前,也需要做好相应的设置。让PC机通过串口发送形如“FE 03 10 43 AA”的命令,可以清除液晶的显示;让PC机通过串口发送形如“FE 03 10 46 A7”的命令,可以让液晶满屏显示。实验步骤3、程序流程图本实验要实现的效果是先逐行显示,再显示一幅图片,然后显示Ascii字符,最后显示汉字,主程序流程图如下图所示。 实验步骤4、代码分析 代码结构本实验对应的例

6、程如下图所示,其中app文件夹用于存放Main.c和Lcd的应用程序等,drv文件夹用于存放74HC595、LCD和定时器的驱动程序等,out文件夹用于存放工程编译时生成的中间文件和可执行程序等,project文件夹用于存放工程文件,public文件夹存放公用程序,si文件夹用于存放source insight工程文件。 实验步骤本实验对应的例程在Keil中打开如下图所示,app组用于存放Main.c和Lcd的应用程序等,drv组用于存放Lcd、74HC595和定时器的驱动程序等。 本实验是液晶显示有关的实验,我们只关注Main.c和Lcd的应用程序LcdDisp.c、Lcd的驱动程序Ocm1

7、2864.c和74HC595的驱动程序74HC595.c这四个.c文件,其它程序文件可以不去了解其细节。 实验步骤 代码分析A、主程序Main.c的代码与实验8的几乎一样,只是液晶没有画一个点的操作。 主程序Main.c注释说明:在Main.c中最上面是整个程序的说明,在其它.c中最上面是这个文件对外提供的接口说明。在Main.c中右边是语句的注释,要求整齐划一。 主程序Main.c命名说明:同样要考虑变量命名、常量命名、管脚命名、函数命名等。 主程序Main.c头文件说明:在Main.c中调用了Lcd_Init()、Lcd_Clr()、Lcd_DispOneRow()、Disp_16x8()

8、、Disp_16x16()、Lcd_Full()和Draw Dot_12864()等多个函数,其中Lcd_Init()、Lcd_Clr()、Lcd_DispOneRo w()、Lcd_Full()和DrawDot_12864()源代码位于Lcd的驱动程序Ocm1286 4.c中,其声明位于Ocm12864.h中,而Disp_16x8()和Disp_16x16()源代码位于Lcd的应用程序LcdDisp.c中,其声明位于LcdDisp.h中。实验步骤B、Lcd应用程序LcdDisp.c的代码与在实验8的完全一样,没有做任何修改。C、Lcd应用程序LcdDisp.h的代码与在实验8的完全一样,没有

9、做任何修改。D、Lcd驱动程序Ocm12864.c的代码就是把直接操作Ocm12864管脚的代码进行替换,改成利用74HC595操作Ocm12864的管脚,其余的代码不用修改,只是少了画一个点的函数。E、Lcd驱动程序Ocm12864.h的代码与在实验8的完全一样,没有做任何修改。 F、74HC595驱动程序74HC595.h的代码在实验12的基础上进行了修改,包括四个函数,其中第一个函数用于将缓存(可用变量或数组等表示)输出到74HC595的输出脚,第二个函数对Lcd的控制脚缓存置1,第三个函数对Lcd的控制脚缓存清0,第四个函数用于设置Lcd的数据脚缓存。 实验步骤#include Glo

10、bal.h#include sbit HC595_SI = P35;sbit HC595_SHCP = P36;sbit HC595_STCP = P37;int8u dh = 0 x00, dl;#define _NOP_()void Hc595_Out(void) int8u i; int16u dout; dout = (dh8) | dl; HC595_STCP = 0; HC595_SHCP = 0;实验步骤for(i=0; i16; i+) /串行移位输出 HC595_SHCP = 0; if( dout & 0 x8000 ) HC595_SI = 1; else HC595_S

11、I = 0; _NOP_(); HC595_SHCP = 1 /上升沿移入数据 _NOP_(); dout = dout1; /准备移入下一位实验步骤HC595_SHCP = 0; HC595_STCP = 1; /输出锁存 _NOP_(); _NOP_(); HC595_STCP = 0;void Hc595_DhSetBit(int8u x) dh |= (0 x01x);void Hc595_DhClrBit(int8u x) dh &= (0 x01x);实验步骤void Hc595_DlSetVal(int8u x) dl = x; G、Lcd74HC595程序74HC595.h的代

12、码 void Hc595_Out(void);void Hc595_DhSetBit(int8u x);void Hc595_DhClrBit(int8u x);void Hc595_DlSetVal(int8u x); 1、更换显示的图片根据图13.5给出的接线图进行硬件连接。使用PcToLcd2002对图片进行取模,打开“LCD液晶595驱动包projectLcdWith595.uvopt”工程,在Image.h中将生成的图片字模替换“code unsigned char Image_User1024 =”数组中的元素。然后编译、下载,最后看看图片是否能正常显示。2、更换显示的起始ASCI

13、I字符根据图13.5给出的接线图进行硬件连接。打开“LCD液晶595驱动包projectLcdWith595.uvopt”工程,在Main.c中将“uiChar = 0;”改成“uiChar = 33;”,表示从“A”开始显示,见Font.h中的AsciiTable数组。然后编译、下载,最后看看ASCII字符的显示是否正常。拓展实验3、 更换显示的汉字根据图13.5给出的接线图进行硬件连接。使用PcToLcd2002对要显示的汉字取模,比如“中国梦”。打开“LCD液晶595驱动包projectLcdWith595.uvopt”工程,在Font.h中“unsigned char code Asc

14、iiTable=”的前面添加刚才生成的汉字字模。在Main.c中找到如下语句。 for( uiRow=0; uiRow4; uiRow+ ) /4.显示 16*16 汉字 Disp_16x16( uiRow*2, uiCol, xin ); /显示汉字新 Disp_16x16( uiRow*2, uiCol+16, da ); /显示汉字大 Disp_16x16( uiRow*2, uiCol+32, lu ); /显示汉字陆 Disp_16x16( uiRow*2, uiCol+48, jiao ); /显示汉字教 Disp_16x16( uiRow*2, uiCol+64, yu ); /显示汉字育 uiCol += 12; 拓展实验将上面的语句替换成如下的语句。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论