学习液晶屏的一些体会

上传人:枫** 文档编号:499075676 上传时间:2022-10-27 格式:DOC 页数:20 大小:76KB
返回 下载 相关 举报
学习液晶屏的一些体会_第1页
第1页 / 共20页
学习液晶屏的一些体会_第2页
第2页 / 共20页
学习液晶屏的一些体会_第3页
第3页 / 共20页
学习液晶屏的一些体会_第4页
第4页 / 共20页
学习液晶屏的一些体会_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《学习液晶屏的一些体会》由会员分享,可在线阅读,更多相关《学习液晶屏的一些体会(20页珍藏版)》请在金锄头文库上搜索。

1、在这先深呼吸一口气先,学了两个星期的液晶屏,总算能把液晶屏当成一种显示来使用了。算然说不是用的很牛,但是普通的显示数码、字母、图片,还是可以滴会了这些,后面的还难吗!讲一下本人学习的经历吧!毕竟这才是大家所关注的,因为我们可以通过别人的学习经验与自己的进行对比,学习别人更加好的经验。和大家一样,初学液晶一般都是把配套的例程烧到ST中,然后看现象,然后就是在源程序中修改一些东西,看是否能够实现。改到后面的时候,就觉得很没趣,因为东西是别人的,总不能随心所欲的把自己想要显示的一些东西显示在液晶屏上,多多少少会受一些限制。于是就萌生了自己写液晶驱动代码,但是看过液晶源驱动的朋友就发现里面都是一大堆的

2、16进制代码,怎么看也不懂!于是就复制驱动源程序到自己的工程上!毕竟液晶屏上显示一些东西自己才有成就嘛,但是当复制好,写好自己显示字符或者汉字的程序时,才发现一大推错误!于是一狠心就把整个源程序复制,这是它又能正常显示!呵呵呵。其实本人觉得这是一个过程,是初学者都要经历的一个过程。好了!废话了那么多,下面才是最关键的地方:我们知道,商家的开发板一般都可以驱动很多种不同控制器的液晶,所以为了增强程序的移植性,他都会设置好几种芯片驱动程序(本人用的是红牛板),至少红牛是,最让人郁闷的是他的程序代码中的函数名称都是用同一种驱动芯片的名字来命名,让初学者误认为就是这一种芯片控制器,但实际上却不是,看下

3、面一段程序:/* 名 称:void ili9320_SetCursor(u16 x,u16 y)* 功 能:设置屏幕座标* 入口参数:x 行座标* y 列座标* 出口参数:无* 说 明:* 调用方法:ili9320_SetCursor(10,10);*/_inline void ili9320_SetCursor(u16 x,u16 y) if(DeviceCode=0x8989) LCD_WriteReg(0x004e,y); /行 LCD_WriteReg(0x004f,0x13f-x); /列 else if(DeviceCode=0x9919) LCD_WriteReg(0x004e,

4、x); /行 LCD_WriteReg(0x004f,y); /列 else LCD_WriteReg(0x20,x); /行 LCD_WriteReg(0x21,y); /列 虽然函数_inline void ili9320_SetCursor(u16 x,u16 y)是以ILI9320驱动命名的,但是里面却是可以实现好几种不同的控制器的液晶显示所以一定要小心,用之前一定要用仿真器仿真一下,看程序往哪里跑,来确定自己液晶屏是哪一种控制器驱动的。到这会有朋友问,液晶屏的外表一样,驱动也一样吧?如果这样想你就错了,我就是曾经这样想,才白白浪费了我一个星期的时间,到后面才发现自己的控制芯片是另外一

5、种,想死的心都有了!在这就不废话那么多了!要学液晶就要配合手册来学,一个个寄存器的去配置,其实也不难,难的是你看不懂洋文,总想找中文资料却找不到。教大家一个方法,就是用有道词典,不懂哪里点哪里!下面是本人写的程序,液晶控制芯片是SSD1298,尺寸:320*240:。与大家分享一下,希望写得不好的地方,高手点评一下,低手学习一下(包括本人):#includestm32f10x.h#includeSSD1289.h#includeChar8X16.h#includeChar12X24.h#includeChar20X40.h#includeChar24X48.h#includeziku_X_.h

6、#includeChina32.h/*函数描述:函数的声明或者宏定义*参数输入:无*参数输出:无*函数说明:(LCD_TypeDef *) LCD_BASE)表示将LCD_BASE看成是一个指针,然后对其强制类型转换 0x指向内存的一个地址,从此地址开始赋值。例如:LCD.LCD_REG=0x202是指 将0x202存放在0x6C000000所指向的内存中,是给LCD_REG赋值,但不是什么偏移地址。*/ LCD is connected to the FSMC_Bank1_NOR/SRAM4 and NE4 is used as ship select signal#define LCD_B

7、ASE (u32)(0x | 0x0C000000)#define LCD (LCD_TypeDef *) LCD_BASE)/*函数描述:数据命令结构体的初始化*参数输入:无*参数输出:无*函数说明:*/typedef struct vu16 LCD_REG; /SSD1289写命令 vu16 LCD_RAM; /SSD1289写数据 LCD_TypeDef;/*函数名称: LCD_writeReg *函数描述: 写寄存器函数 *参数输入: u8 LCD_Reg:写寄存器地址 u16 LCD_RegValue:写数据 *参数输出: 无*返回值: 无*函数说明:*函数的调用:LCD_write

8、Reg(0x0020,256)*/void LCD_WriteReg(u8 LCD_Reg,u16 LCD_RegValue) /* Write 16-bit Index, then Write Reg */ LCD-LCD_REG = LCD_Reg; /0x /* Write 16-bit Reg */ LCD-LCD_RAM = LCD_RegValue;/*函数名称: LCD_ReadReg *函数描述: 读寄存器函数 *参数输入: 无 *参数输出: u8 LCD_Reg:写寄存器地址*返回值: u16 LCD_RegValue*函数说明: 写寄存器地址,读回该地址的数据*函数的调用:

9、Value=LCD_ReadReg()*/u16 LCD_ReadReg(u8 LCD_Reg) /* Write 16-bit Index (then Read Reg) */ LCD-LCD_REG = LCD_Reg; LCD-LCD_RAM; /* Read 16-bit Reg */ return (LCD-LCD_RAM);/*函数名称: LCD_WriteRAM_Prepare *函数描述: 开始写GGRAM信号 *参数输入: 无*参数输出: 无*返回值: 无*函数说明: *函数的调用: LCD_WriteRAM_Prepare()*/void LCD_WriteRAM_Prepare(void) LCD-LCD_REG = R34; /0x22/*函数名称: LCD_WriteRAM *函数描述: 写数据到GGRAM*参数输入: 无*参数输出: 无*返回值: 无*函数说明: - RGB_Code: the pixel color in RGB mode (5-6-5). 像素填充模式为:5-6-5模式*函数的调用:*/void LCD_WriteRAM(u16 RGB_Code) /* Write 16-bit GRAM Reg */ LCD-LCD_RAM = RGB_Code;/*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

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