座(外设之液晶显示器LCD).ppt

上传人:壹****1 文档编号:571319018 上传时间:2024-08-10 格式:PPT 页数:40 大小:1.66MB
返回 下载 相关 举报
座(外设之液晶显示器LCD).ppt_第1页
第1页 / 共40页
座(外设之液晶显示器LCD).ppt_第2页
第2页 / 共40页
座(外设之液晶显示器LCD).ppt_第3页
第3页 / 共40页
座(外设之液晶显示器LCD).ppt_第4页
第4页 / 共40页
座(外设之液晶显示器LCD).ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《座(外设之液晶显示器LCD).ppt》由会员分享,可在线阅读,更多相关《座(外设之液晶显示器LCD).ppt(40页珍藏版)》请在金锄头文库上搜索。

1、2012年大学生电子竞赛培训讲座五外设之液晶显示器南京师范大学电气与自动化工程学院 高翔讲座内容LCD的应用LCD的原理LCD的使用(MSP430如何与12864交换数据)LCD的应用一数据显示应用二图形显示应用三菜单应用三补充子菜单LCD的原理LCD液晶显示器12864:128*64个点(分辨率)LCD的分类字符型内部含有字库,字符、汉字的显示依赖字库实现。点阵型内部没有字库,所有显示数据依赖用户自己写入。点阵型12864在点阵型LCD上显示一幅图片或是字符,如上图所示,只需黑色的部分点亮,空白的点置0即可。可以将LCD看成128*64个LED灯来帮助理解。(1)无显示的12864(2) 显

2、示一幅图片LCD12864LCD显示推理过程一幅画面128*64个点内部128*64 bit的DDRAM(显示数据RAM)并行通信程序本质单片机通过并行通信向LCD内部的DDRAM中写入想要显示的数据LCD实时根据DDRAM中的数据更新显示DDRAM地址图片显示简单来说,主要分为两步:1)将一幅图片转化为一系列二进制数据2)将数据按字节(8位)写入液晶对应的DDRAM,12864的DDRAM有128*8=1024个地址,只需将图片转化的数据按字节写入这其对应的DDRAM地址即可。字符显示同图片一样,汉字、字符也是由一个个点组成。上图中,汉字为16*16点阵,ASCII码为8*16点阵,字体大小

3、可以根据需要改变。每8个点组成1个字节,所以一个汉字(ASCII)由16*2(8*2)个字节数据组成,字符显示原理与图片一致,只需将字符代码写入相应DDRAM地址。LCD的使用(硬件)1)使能E2)片选CS1(左半屏)、CS2(右)高有效3)命令/数据选择RS(0命令,1数据)4)读/写选择R/W(0写,1读)5)数据总线DB0DB76)负压产生和负压输入(对比度)调整7)复位RST8)电源与地和背景光电源硬件接线图LCD的使用(软件)初始化字符的显示Ascii(1字节)、汉字(2字节)图片的显示大小不超过128*64(1024字节)实时数据的显示一般每采集N个数据显示一次,N128LCD的初

4、始化初始化的工作主要有:打开显示确定起始行(DDRAM与LCD的对应关系)确定DDRAM的指针起始位置页地址0-7列地址0-127命令寄存器一命令寄存器二字符显示过程准备工作(1)使用取模软件获得汉字或ascii码的字模;(2)明确该汉字在LCD上显示位置页地址0-7列地址0-15软件流程(3)将页、列地址写入LCD的命令寄存器,以确定指针位置(4)将字符对应的字模数据写入对应的DDRAM图片的显示准备工作(1)使用取模软件获得图片的数据;(2)明确该图片在LCD上显示位置起始位置(x,y)图片大小(x1,y1)软件流程(3)图片显示顺序为从左到右,从上到下,每次显示一页(8行)(4)每次换行

5、、换屏都需通过写入页、列地址重新定义指针位置,每次写完指针自动加1(5)将数据写入对应的DDRAMN个实时数据显示准备工作(1)写一函数实现对DDRAM中任一页、任一列写入一个字节数据软件(2)作N次循环,每次显示一个数据(3)根据数据,确定其在DDRAM中的地址 页地址 列地址(4)将该数据写入DDRAM对应地址空间总结无论是显示字符、图片还是显示实时采集数据,其实质都是一样:确定它们在DDRAM中的位置将它们对应的字模数据写入DDRAM中实例分析底层程序(涉及硬件)(1)查忙(2)写数据( )读数据(不常用,一般不需)(3)写命令软件对外接口程序(属于顶层,不涉及硬件)(4)初始化(5)清

6、屏(6)连续显示汉字或ASCII码(7)显示图片(8)显示实时数据曲线 (9)折线图预定义(硬件接口)#define Port_IO; P10SEL = 0x00; P9SEL &= 0x2F;#define Lcd_Data P10OUT /P1.0P1.7#define Lcd_Data_IN P10IN /P1.0P1.7#define SetE P9OUT |= BIT0 / E=1,-P3.0#define ClrE P9OUT &= BIT0 / E=0,#define SetRW P9OUT |= BIT1 / RW=1,-P3.1#define ClrRW P9OUT &= B

7、IT1 / RW=0,#define SetDI P9OUT |= BIT2 / DI=1,-P3.2#define ClrDI P9OUT &= BIT2 / DI=0,#define SetCS1 P9OUT |= BIT3 /CS1=1,-P3.3#define ClrCS1 P9OUT &= BIT3 /CS1=0,#define SetCS2 P9OUT |= BIT4 /CS2=1,-P3.4#define ClrCS2 P9OUT &= BIT4 /CS2=0,#define Data_IN P10DIR = 0x00#define Data_OUT P10DIR = 0xFF#

8、define Ctrl_OUT P9DIR |= 0x2F#define Left 0#define Right 1点阵型12864指令表(1)查忙void CheckBusy(uchar side) uchar buf=0xFF; Data_IN; _Nop(); ClrE; SetRW; /1_read,0_write ClrDI; /1_data,0_cmd while(buf) if(side = 0) SetCS1;ClrCS2; /enable CS1 _Nop();_Nop(); /delay 1us befor and after setE SetE; _Nop(); buf=

9、Lcd_Data_IN; Else ClrCS1;SetCS2; /enable CS2 _Nop();_Nop(); /delay 1us befor and after setE SetE; _Nop(); buf=Lcd_Data_IN; buf&=0x80; ClrE; Data_OUT;(2)写数据void WriteData(uchar dat,uchar side) CheckBusy(side); ClrE; ClrRW;SetDI; Lcd_Data=dat; if(side=Left) SetCS1; ClrCS2; else ClrCS1; SetCS2; _Nop();

10、 /delay 1us befor and after setE SetE;_Nop(); ClrE; (3)写命令void WriteCmd(uchar cmd,uchar side) CheckBusy(side); ClrE; ClrRW; /1_read,0_write ClrDI;/1_data,0_cmd Lcd_Data=cmd; if(side=Left) SetCS1; /left ClrCS2; else ClrCS1; /right SetCS2; _Nop(); /delay 1us befor and after setE SetE;_Nop(); ClrE;(4)初

11、始化void Lcd_Init() Port_Init();/显示开 WriteCmd(0x3F,Left); WriteCmd(0x3F,Right);/起始行 WriteCmd(0xC0,Left); WriteCmd(0xC0,Right);/起始x,y坐标(0,0) WriteCmd(0xB8,Left); WriteCmd(0xB8,Right); WriteCmd(0x40,Left); WriteCmd(0x40,Right);void Port_Init(void) Port_IO; Ctrl_OUT; Data_OUT;(5)清屏void Lcd_Clear(void) uc

12、har i,j;for(i=0;i8;i+)WriteCmd(0xB8+i,Left);WriteCmd(0xB8+i,Right);WriteCmd(0x40,Left);WriteCmd(0x40,Right);for(j=0;j64;j+)WriteData(0,Left);WriteData(0,Right);(6)连续显示字符关键在于区分ASCII码和汉字ASCII都小于0xA0汉字的第一个字节必然大于或等于0xA0Ascii码注意其字库数组里数据的顺序汉字的字模应定义为一结构体结构体包含两部分汉字的内码(2字节)汉字的字模数据(32字节)16*16大小显示步骤分2步根据汉字内码在字

13、库中查找汉字的位置(数组编号)根据该编码得到汉字的字模,并将这些字模写入LCD的DDRAM小结液晶显示器的重要特点使用之前必须初始化初始化!当要显示新的数据时,应考虑是否需要清屏,合理使用清屏程序很重要。LCD显示内容与DDRAM中的数据一一对应,你不清屏,LCD上面就会一直显示字模软件的作用将要显示的图片、汉字、ASCII码转化为12864可以辨认的二进制数据。举例:“南”的字模为:0x04,0xE4,0x24,0x24,0x64,0xA4,0x24,0x3F,0x24,0xA4,0x64,0x24,0x24,0xF6,0x24,0x00,0x00,0xFF,0x00,0x09,0x09,0

14、x09,0x09,0x7F,0x09,0x09,0x09,0x49,0x80,0x7F,0x00,0x00取模软件的使用一、参数设置1.LCD显示方式XY地址计数器从左到右、从上到下单字节数据格式纵向8点下高位2.字体格式汉字 or ASCII码字体类型和大小宋体16点阵Asc8X16E 参数设置如下图所示点击参数确认取模软件的使用(续)二、输入所要转化的数据(1)汉字直接在对话框中输入汉字点击“输入字串”按钮即可(2)ASCII码直接点击右边的蓝色ASCII码按钮,就可生成所有ASCII码字模取模软件的使用(续2)(3)图片保证图片像素小于128 64Bmp格式点击载入图片按钮选择图片点击数

15、据保存总结与任务理解12864是如何显示字符和图形的;知晓单片机与12864的硬件连接;明白如何通过总线操作实现单片机与12864之间数据与命令的交换;参考12864的命令字进行软件编程;学会如何使用取字模软件;作业,又见作业结合zlg7290,要求按下“A”显示你组所在三人的姓名,学号按下“B”显示一副图片(任意)按下“C”显示2个周期的正弦波“lcd.c”写一显示128个数据的函数无返回值、形参为数据(0-4095)的首地址Void Data_Display(unsigned int *dat)“main.c”定义大小为128的UINT型数组,并初始化Unsigned int display_data128;初始化为2个周期的正弦波数据(04095)“main.c”以该数组为实参,调用该函数显示波形Data_Display(display_data);

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

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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