




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告题 目: 基于stm32的lcd的 设计 学生姓名: 学生学号: 系 别: 专 业: 届 别: 指导教师: 电子工程学院制基于stm32的lcd触摸屏驱动的设计学生:凤凰花指导教师:吴琰电子工程学院 电子信息科学与技术目录1 概述12 lcd液晶显示屏12.1 lcd液晶显示屏原理12.2 lcd液晶显示屏分类23触摸屏驱动原理概述23.1 电阻触摸屏工作原理23.2 触摸屏控制实现34 设计目标35 系统硬件设计35.1 stm32微处理器fsmc接口45.2 lcd液晶显示屏介绍65.3 触摸屏控制板86 系统软件设计116.1 系统软件结构116.2 头文件设计126.2 硬件初始化程序126.3 3寸lcd模块驱动程序186.4 触摸坐标获取程序256.5 lcd控制器控制程序287 总结错误!未定义书签。1 概述lcd液晶显示屏与触摸屏在嵌入式系统中的应用越来越普及。他们是非常简单、方便、自然的人机交互方式,目前广泛应用于便携式仪器、智能家电、掌上设备等领域。触摸屏与lcd液晶显示技术的紧密结合,成了主流配置。lcd液晶显示屏(lcd module , lcm)是一种将液晶显示器件、连接件、集成电路、pcb线路板、背光源以及结构件装配在仪器的组件。触摸屏技术在我国的应用时间不是太长,但它已经成长为人们最为接受的输入方式。利用这种技术人们只需触碰屏幕就可以对主机进行操作,是人机交互更为方便,直截了当。本文档是对lcd液晶显示屏和触摸屏驱动的设计做深入介绍。2 lcd液晶显示屏2.1 lcd液晶显示屏原理液晶(liquid crystal):是一种介于固态和液态之间的具有规则性分子排列,及晶体的光学各向异性的有机化合物,液晶在受热到一定温度的时候会呈现透明状的液体状态,而冷却则会出现结晶颗粒的混浊固体状态,因为物理上具有液体与晶体的特性,故称之为“液晶”。液晶显示器lcd(liquid crystal display):是新型平板显示器件。显示器中的液晶体并不发光,而是控制外部光的通过量。当外部光线通过液晶分子时,液晶分子的排列扭曲状态不同,使光线通过的多少就不同,实现了亮暗变化,可重现图像。液晶分子扭曲的大小由加在液晶分子两边的电压差的大小决定。因而可以实现电到光的转换。即用电压的高低控制光的通过量,从而把电信号转换成光像。2.2 lcd液晶显示屏分类(1) 位段型液晶显示模块位段型液晶显示模块是一种由位段型液晶显示器件与专用的集成电路组装成一体的功能部件。(2) 字符型液晶显示模块字符型液晶显示模块是由字符液晶显示器件与专用的行、列驱动器、控制器、必要的连接件以及结构件装配而成,可以显示数字和西文字符。(3) 图形点阵型液晶显示模块图形点阵型显示模块就是可以动态地显示字符和图片的lcd。图形点阵液晶模块的点阵像素连续排列,行和列在拍布中均没有空隔,不仅可以显示字符,还可以显示连续完整的图像。图形点阵型液晶显示模块有三种类型可供选择:行列驱动型,行列驱动控制型及行列控制型。2嵌入式和lcd的发展21嵌入式系统的概述 211嵌入式系统发展史 嵌入式系统虽然是近几年才风靡起来的,但是这个概念并非是新近才出现产物。从 20世纪70年代左右单片机的出现到今天各式各样的微控制器、嵌入式处理器大规模应用,嵌入式系统已经快有30多年的发展历史。【1】综合看嵌入式技术的发展,大致可以说经历了以下4个阶段: l 第一阶段是以单芯片为核心的可编程控制器的系统,同时也具有与伺服、监测、指示设备相配合的一些功能,应用在专业性强的工业控制系统中。而且这种系统一般没有操作系统的支持,同时通过汇编语言编程对系统进行直接控制。这一阶段系统主要特点是:系统结构和功能相对单一,存储容量较小,处理效率较低,几乎没有用户的接口。 l 第二阶段是以嵌入式cpu为基础、以简单操作系统为核心的嵌入式系统。 这一阶段系统的主要特点是:cpu种类繁多,通用性比较弱;系统开销小,效率高;操作系统达到了一定的兼容性和扩展性;应用软件较专业化,用户界面不够友好;主要用于控制系统负载的运行以及监控应用程序的运行。 l 第三阶段是以嵌入式操作系统为标志的嵌入式系统。这一阶段系统的主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理、多任务、设备支持、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口(api),开发应用程序简单;嵌入式应用软件丰富。l 第四阶段是以基于intemet为标志的嵌入式系统,这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于internet之外,但随着intemet的发展以及 intemet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与internet 的结合将代表着嵌入式技术的真正未来。 数字时代和信息时代的到来使嵌入式产品获得了巨大的历史发展机遇,为嵌入式市场展现了美好的前景,同时这也对嵌入式厂商提出了新的挑战。未来的嵌入式系统的发展趋势是: (1)网络互联成为了必然趋势。未来的嵌入式设备为了适应网络互联的要求,必须要在硬件上提供各种网络通讯的接口。软件方面内核要支持网络模块,甚至可以在设备上嵌入web浏览器,真正可以实现随时随地的用各种设备上网。 (2)精简系统内核、算法,降低功耗、软硬件的成本。未来嵌入式产品是软、硬件紧密结合的设备,为了降低功耗成本,需要尽量的精简系统内核,只保留和系统紧密相关的软、硬件,利用最少的资源来实现最适当的功能。 (3)提供友好的多媒体人机界面。嵌入式设备不仅能与用户亲密接触,最重要的因素就是能提供友好的用户界面。这就要求了软件设计要在多媒体技术、图形界面上多下功夫。 3 触摸屏驱动原理概述3.1 电阻触摸屏工作原理电阻触摸屏是采用电阻模拟量技术。它是一层玻璃作为基层,上面涂有一层透明氧化金属(ito氧化铟)导电层,再盖有一层玻璃或是外表面硬化处理的光滑的塑料层;内表面也涂有一层ito导电层。它们之间有许多细小的透明隔离点把两导电层隔开绝缘,每当有笔或是手指按下时,两导电层就相互接触。而形成电路。导电层的两端都涂有一条银胶,称为该工作面的一对电极。上下两个导电层一个是水平方向,一个是竖直方向,分别用来测量x和y的坐标位置。在水平面上的电极称为x+电极和x-电极,在竖直平面的电极称为y+电极和y-电极。工作时,两个电极根据测量需要提供参考电压或是作为测量端对接触点的位置进行测量。当测量接触点x坐标的时候,导电层上的x+电极和x-电极分别上参考电压和地;y电极不加电压,那么x电极间会形成均匀的电压分布,用y+电极作为测量点,得到的电压值通过a/d转换,就可对应地判断出接触点的x坐标。y坐标亦是类似,只需改成对y电极加电压而x电极不加电压即可。图1 电阻屏原理图212嵌入式系统定义及其构成 根据ieee(国际电气和电子工程师协会)从应用上定义为:嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置(原文为device used to controlmonitor,or assist the operation of equipment,machinery or plants)”。由此可以看出来嵌入式系统是软件和硬件的综合体,可以涵盖到机械等附属装置。目前,国内对嵌入式系统的普遍认同一个定义是:以计算机技术为基础、以应用为中心,软硬件可裁减,适应应用系统对功能、体积、可靠性、成本、功耗等严格要求的计算机系统【2】。 对嵌入式系统的定义可以从以下几方面来理解: (1) 嵌入式系统是面向产品、面向用户、面向应用的,嵌入式系统是和应用紧密结合的,它具有很强地专用性,必须要结合实际系统需求来进行合理的裁减。它的升级换代也是根据具体产品同步来进行的,因此嵌入式系统产品一旦进入了市场,一般都具有具有较长的生命周期。 (2) 嵌入式系统是将先进的计算机技术、半导体技术、电子技术等各个行业具体应用相结合的产物。这一点就决定了它是一个资金密集、高度分散、技术密集、高度分散、不断创新的知识集成系统。 (3)嵌入式系统必须能根据应用需要对软件、硬件进行裁减、扩展以满足应用系统的功能、成本、可靠性、体积等要求。为了提高系统可靠性和执行速度,嵌入式系统中的软件一般都固化在了存储器芯片或者单片机本身中,而不是储存在磁盘等载体中。目前的嵌入式系统的内核都只是一个几k到几十k的微核,能够非常顺利地按需求扩展功能。 一般而言,嵌入式系统的构架可以分成四个部分:存储器、处理器、输入/输出(i/o)和软件构成。嵌入式系统和一般的计算机处理系统不同,它不具备像硬盘那样的大容量存储介质,大多都使用eprom、e2prom或闪存(flash memory)来作为存储介质。由于大多数嵌入式设备的应用软件和操作系统都是紧密结合的,不加以区别,这也是嵌入式系统和windows系统最大的区别。213嵌入式系统的应用 嵌入式系统技术具有非常广泛的应用前景,其应用领域一般可以包括: (1)工业控制领域口1:作为32位的risc架构、基于arm核的微控制器芯片不但占据高端微控制器市场的很大部分市场份额,同时也在逐渐向低端微控制器应用领域方向扩展,目前已经有了大量的8位、16位、32位嵌入式微处理器应用在工业过程控制、电网安全、数控机床、电力系统、石油化工系统等领域。arm微控制器的低功耗、高性价比,向传统的8位16位微控制器提出了强烈挑战。 (2)信息家电领域:以后这将成为嵌入式最大的应用领域,冰箱、空调、电视等家用电器的网络化、智能化将引领人们的生活步入一个崭新的空间,可以利用电话线或者网络来对家电进行远程的控制。 (3)交通管理领域:在流量控制、车辆导航、信息监测与汽车服务等,嵌入式系统技术已经获得广泛的应用,内嵌gps模块、gsm模块的移动定位终端已经在各种运输业广泛应用。 (4)家庭智能管理系统:水、电和煤气等远程自动抄表,安全防火、防盗, 这将是嵌入式系统广泛应用的又一领域,它不仅能代替传统的人工检查,而且还能实现了更准确、速度更快、精度更高、更安全等性能。 (5)无线通讯领域:目前已有超过85的无线通讯设备采用arm技术,arm以其高性能和低成本,在该领域的地位日益巩固和稳定。 (6)消费类电子产品:arm技术在目前流行的手机、数字音频播放器、数字机顶盒和游戏机中得到了广泛采用。 (7)网络应用:伴随着宽带技术推广,采用arm技术的adsl芯片正逐步获得竞争优势。此外,arm在语音及视频处理上进行了优化和处理,并获得了广泛的支持,这也对dsp的应用领域提出了新的挑战。 (8)成像和安全产品:现在流行的数码相机和打印机中绝大部分都采用arm技术。手机中的32位sim智能卡也采用tarm技术陆。 除了这些以外,arm微处理器及技术还应用到很多不同的领域,并会在将来取得更加广泛的应用。 2.2 arm体系结构的发展 arm(advanced risc machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991年arm公 司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用arm技术知识产权(ip)核的微处理器,即我们通常所说的arm微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于arm技术的微处理器,其应用大概占据了32位risc微处理器75以上的市场份额,arm技术正在逐步渗透到我们生活的各个方面中。 目前,arm32位体系结构被公认是嵌入式应用领域领先的32位嵌入式risc微处理器结构。自诞生到现在,arm体系结构为了能够满足arm合作者以及设计领域的需求正在稳步发展,已经发展并定义了7个不同的版本,每一次arm体系结构的重大修改,都会添加成极为重要的技术。在体系结构作重大修改的期间,会添加新的性能来来作为体系结构的变体。arm的名字代表了系统结构上的提升,后面附加的关键字代表了体系结构的变体。 (1)v1版架构:该版架构只在原型机子arm1上出现过,没有用在商业产品上。采用的地址空间是26位,寻址空间则是64mbt。 (2)v2版架构:该版架构是对v1版架构进行了扩展,v2架构的arm处理器的指令结构进行了完善,例如:支持协处理器操作指令、增加了乘法指令、快速中断模式等,但该结构的处理器仍然是26位的地址空间。(3)v3版架构:对以前的arm体系结构作了很大的改动,例如:寻址空间增到32位(4gb);指令结构也比前两种有所完善,例如:增加了程序状态保存寄存器(spsr)、程序状态寄存器 (cpsr)、增加了中止和未定义2种处理器模式等。 (4)v4版架构:v4架构在v3版架构的基础上做了进一步的扩充,指令集中完善了软件中断swl指令的功能、增加了16位thumb指令集的读取和写入操作、增加了处理器系统模式等。v4版架构是目前应用比较多的arm系统结构,属于v4 体系结构的处理器的有arm7,arm8,arm9 ,strongarm。 (5)v5版架构:提升了arm和thumb指令的交互工作的能力,同时有了dsp 指令(v5e结构)、java指令(v5j结构支持),增加了带有链接和交换的转移blx指令。属于v5t体系结构的处理器(有arml0tdmi和xscale(intel公司产品)。属于v5te体系结构的处理器有arm9e、arm9es、arm946等pj。 (6)v6版架构:v6版架构与v5版架构相比 增加了多媒体指令、增加了高性能定点dsp功能、改进了的内存管理,使系统性能提高了30。属于v6体系结构的处理器的有armll。v6构体系结构包含arm体系结构中所有的四种特殊指令集:thumb指令,dsp指令,java指令,media指令。同时为了满足向后兼容,armv6也包括了army5的存储器管理和例外处理。这使得众多的第三方发展商能够利用现有的成果,支持软件和设计的复用。 (7)v7版架构:v7版架构arm是2005年发布的。它使用了能够带来更高性能、低功耗、高效率及代码密度大的thumb.2技术。它首次采用了强大的信号处理扩展集,对mp3等媒体编码提供了加速。 下一代体系结构的发展是由不断出现的新产品和变化的市场来推动的。关键的设计约束也是显而易见的,速度,功能,性能,功耗,面积和成本必须与每一种的应用需求相平衡。保证领先的性能/功耗。在过去是arm成功的基石所在,在将来的应用中它也是一个很重要衡量标准。但新的体系结构不能是想取代现存的体系结构,让它们变得多余。新的cpu核和衍生产品必须建立在这些结构之上,同时不断地与制造工艺保持同步。例如基于v4t体系结构的armttdmi核还在不断广泛被新产品所使用。 3.2 触摸屏控制实现对触摸屏的控制有专用的控制芯片。触摸屏的控制芯片主要完成两个任务:一是完成电极电压的切换,二是采集接触点处的电压值并实现a/d转换。触摸屏控制芯片主要由触摸检测部件和触摸屏控制器组成。触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置,接受位置信号后送至触摸屏控制器;而触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给mpu,同时它能接收mpu发来的命令并加以执行。4 设计目标基于stm32硬件开发平台与3寸液晶屏组成液晶显示与触摸屏人机交互系统。5 系统硬件设计本实验的主要硬件由stm32微处理器的fsmc接口,3寸屏时序转换板以及触摸屏控制板组成。图2 硬件系统结构图5.1 stm32微处理器fsmc接口fsmc模块能够与同步或异步的存储器和16位的pc存储器卡接口,它的主要作用是:将ahb传输信号转换到适当的外部设备协议,满足访问外部设备的时序要求,所有的外部存储器共享控制器输出的地址、数据和控制信号,每个外部设备可以通过一个唯一的片选信号加以区分,fsmc在任一时刻只访问一个外部设备。fsmc具有下列主要功能:(1)具有静态存储器接口的器件包括:静态随机存储器(sram);只读存储器(rom);nor闪存;psram(4个存储器块)。(2)两个nand闪存块,支持硬件ecc并可检测多达8k字节数据。(3)16位的pc卡。(4)支持对同步器件的成组(burst)访问模式,如nor闪存和psram8或16位数据总线。(5)每一个存储器块都有独立的片选控制,每一个存储器块都可以独立配置,时序可编程以支持各种不同的器件:等待周期可编程(多达15个周期);总线恢复周期可编程(多达15个周期);输出使能和写使能延迟可编程(多达15周期)(6)独立的读写时序和协议,可支持宽范围的存储器和时序psram和sram器件使用的写使能和字节选择输出。(6)将32位的ahb访问请求,转换到连续的16位或8位的,对外部16位或8位器件的访问具有16个字,每个字32位宽的写入fifo,允许在写入较慢存储器时释放ahb进行其它操作。在开始一次新的fsmc操作前,fifo要先被清空。通常在系统复位或上电时,应该设置好所有定义外部存储器类型和特性的fsmc寄存器,并保持它们的内容不变;当然,也可以在任何时候改变这些设置。fsmc包含四个主要模块:(1)ahb接口(包含fsmc配置寄存器)(2)nor闪存和psram控制器(3)nand闪存和pc卡控制器(4)外部设备接口fsmc框图如下:图3 fsmc接口结构框图当stm32微处理器使用fsmc接口模块来控制lcd液晶显示模块时,其接口信号用于驱动lcd的对应关系如表1:fsmc接口信号线lcd接口信号功能nexcsx片选nwrwrx写使能noe rdx读使能d15:0d15:0数据信号a25:0rs地址信号表1stm32微处理器使用fsmc接口模块与lcd英特尔8080(类似)接口示意图:图4 fsmc接口模块与lcd英特尔8080接口示意图5.2 lcd液晶显示屏介绍本实验的lcd液晶显示器采用宇顺公司的3寸彩色液晶屏s95361,分辨率为240*400。3tft显示屏焊接在奋斗显示转接板上,在屏上贴有触摸屏,通过40芯的接口与v5连接。40芯接口定义如下:图5 40芯接口40芯里包含了16位数据线,读写线,命令/数据控制线,片选线,lcd硬件复位线,背光控制线以及触摸控制线。奋斗板v3和mini就是通过这个接口来控制显示。 奋斗板mini和v3都是选用了具有16位fsmc接口stm32f103vet6作为mcu, fsmc接口也可以称为16位并行接口,时序同i8080接口。按照显示屏驱动电路lgdp5420的手册,为了达到色彩与显示效率的平衡,奋斗板采用了16位 64k色接口模式。图6 16位rgb真彩图在这个模式每个像素用5位红色6位绿色5位蓝色总共16位来表示, 根据分辨率,一帧图像占用400*240*2=192000字节。16位8080总线接口时序如下:图7 总线读写时序图5.3 触摸屏控制板tsc2046是一款四线制触摸屏控制器,内涵12位分辨率125khz转换速率逐步逼近型a/d转换器,它支持1.5v5.25v范围的低电压i/o口。tsc2046还具有一个片上2.5v的参考电压,可以用于辅助输入,电池监测,和温度测量模式。tsc2046芯片主要功能如下:(1)具有四线制触摸屏接口;(2)可单电源工作,工作电压范围2.2v至5.25v;(3)支持1.5v至5.25v的数字i / o口;(4)内部自带2.5v参考电压源;(5)能直接测量电源电压(0v至6v);(6)片上温度测量;(7)触摸压力测量;(8)具有3线制spi通信接口;(9)自动省电;(10)封装小,tssop-16,qfn-16封装,可在vfbga-48封装;其功能框图如图8:图8 tsc2046功能框图tsc2046最常用封装tssop-16引脚排列如图9所示,对应的引脚功能定义如表2所示:图9 tsc2046引脚排列图引脚号引脚名功能描述1vcc电源2,3x+,y+触摸屏正电极4,5x-,y-触摸屏负电极6gnd电源地7vbat 电池监控输入端。8aux辅助输入端。9vrefa/d参考电压输入10iovdd数字电源输入端。11penirq笔中断引脚,当有触摸事件发生时,向微控制器申请中断服务。12dout串行数据输出,用于输出转换后的触摸位置数据,12位工作方式下,最大为4095。13busy忙指示,低电平有效14din串行数据输入、其控制数据通过该引脚输入。15cs片选16dclk外部时钟输入引脚。表26 系统软件设计6.1 系统软件结构图10 系统软件结构本实验的触摸模块主要的软件设计任务按功能和层次可分为如下几个部分:1、ucos系统建立任务,包括主任务,用户界面任务,can报文接收任务等。2、ucgui图形用户界面程序,设计相关操作界面。3、中断服务程序,主要使用的中断处理函数为usb_hp_can_tx_irqhandler(),执行can总线接收的中断处理。4、硬件平台初始化程序,包括时钟,can模块,触摸屏等等的初始化。5、lcd的底层驱动函数。6.2 头文件设计本实验由于使用函数以及宏定义较多,自定义了头文件demo.hh。demo.h内容如下:#ifdef globals #define ext#else#define ext extern #endif#define led_on() gpio_setbits(gpiob, gpio_pin_5); /led1亮#define led_off() gpio_resetbits(gpiob, gpio_pin_5); /led1灭#define tp_cs() gpio_resetbits(gpiob,gpio_pin_7) /触摸spi片选允许#define tp_dcs() gpio_setbits(gpiob,gpio_pin_7) /触摸spi片选允许#define pen gpio_readinputdatabit(gpiob,gpio_pin_6) /触摸检测 #define red 0xf800#define green 0x07e0#define blue 0x001f #define bred 0xf81f#define gred 0xffe0#define gblue 0x07ff;#define black 0; fsmc接口的lcd初始化通过调用fsmc_lcd_init()函数实现信号引脚配置等功能。函数代码如下:/* 名 称:void fsmc_lcd_init(void)* 功 能:基于fsmc接口的16位tft接口初始化*/void fsmc_lcd_init(void) fsmc_norsraminittypedef fsmc_norsraminitstructure; fsmc_norsramtiminginittypedef p; gpio_inittypedef gpio_initstructure; rcc_ahbperiphclockcmd(rcc_ahbperiph_fsmc, enable); /使能fsmc接口时钟 gpio_initstructure.gpio_pin = gpio_pin_13; /背光控制 gpio_initstructure.gpio_mode = gpio_mode_out_pp; /通用推挽输出模式 gpio_initstructure.gpio_speed = gpio_speed_50mhz;/输出模式最大速度50mhz gpio_init(gpiod, &gpio_initstructure); gpio_setbits(gpiod, gpio_pin_13); /打开背光 gpio_initstructure.gpio_pin = gpio_pin_1; /tft 复位脚 gpio_initstructure.gpio_mode = gpio_mode_out_pp; /通用推挽输出模式 gpio_initstructure.gpio_speed = gpio_speed_50mhz; /输出模式最大速度50mhz gpio_init(gpioe, &gpio_initstructure); /* 启用fsmc复用功能, 定义fsmc d0-d15及nwe, noe对应的引脚 */ /* 设置 pd.00(d2), pd.01(d3), pd.04(noe), pd.05(nwe), pd.08(d13), pd.09(d14), pd.10(d15), pd.14(d0), pd.15(d1) 为复用上拉 */ gpio_initstructure.gpio_pin = gpio_pin_0 | gpio_pin_1 | gpio_pin_4 | gpio_pin_5 | gpio_pin_8 | gpio_pin_9 | gpio_pin_10 | gpio_pin_14 | gpio_pin_15; gpio_initstructure.gpio_speed = gpio_speed_50mhz; /最大速度50mhz gpio_initstructure.gpio_mode = gpio_mode_af_pp; /复用模式 gpio_init(gpiod, &gpio_initstructure); /* 设置 pe.07(d4), pe.08(d5), pe.09(d6), pe.10(d7), pe.11(d8), pe.12(d9), pe.13(d10), pe.14(d11), pe.15(d12) 为复用上拉 */ gpio_initstructure.gpio_pin = gpio_pin_7 | gpio_pin_8 | gpio_pin_9 | gpio_pin_10 | gpio_pin_11 | gpio_pin_12 | gpio_pin_13 | gpio_pin_14 | gpio_pin_15; gpio_init(gpioe, &gpio_initstructure); /* fsmc ne1 配置 pd7 */ gpio_initstructure.gpio_pin = gpio_pin_7; gpio_init(gpiod, &gpio_initstructure); /* fsmc rs配置 pd11-a16 */ gpio_initstructure.gpio_pin = gpio_pin_11 ; gpio_init(gpiod, &gpio_initstructure); p.fsmc_addresssetuptime = 0x02; p.fsmc_addressholdtime = 0x00; p.fsmc_datasetuptime = 0x05; p.fsmc_busturnaroundduration = 0x00; p.fsmc_clkdivision = 0x00; p.fsmc_datalatency = 0x00; p.fsmc_accessmode = fsmc_accessmode_b; fsmc_norsraminitstructure.fsmc_bank = fsmc_bank1_norsram1; fsmc_norsraminitstructure.fsmc_dataaddressmux = fsmc_dataaddressmux_disable; fsmc_norsraminitstructure.fsmc_memorytype = fsmc_memorytype_nor; fsmc_norsraminitstructure.fsmc_memorydatawidth = fsmc_memorydatawidth_16b; fsmc_norsraminitstructure.fsmc_burstaccessmode = fsmc_burstaccessmode_disable; fsmc_norsraminitstructure.fsmc_waitsignalpolarity = fsmc_waitsignalpolarity_low; fsmc_norsraminitstructure.fsmc_wrapmode = fsmc_wrapmode_disable; fsmc_norsraminitstructure.fsmc_waitsignalactive = fsmc_waitsignalactive_beforewaitstate; fsmc_norsraminitstructure.fsmc_writeoperation = fsmc_writeoperation_enable; fsmc_norsraminitstructure.fsmc_waitsignal = fsmc_waitsignal_disable; fsmc_norsraminitstructure.fsmc_extendedmode = fsmc_extendedmode_disable; fsmc_norsraminitstructure.fsmc_writeburst = fsmc_writeburst_disable; fsmc_norsraminitstructure.fsmc_readwritetimingstruct = &p; fsmc_norsraminitstructure.fsmc_writetimingstruct = &p; fsmc_norsraminit(&fsmc_norsraminitstructure); /* 使能fsmc bank1_sram 模式 */ fsmc_norsramcmd(fsmc_bank1_norsram1, enable); 6.3 3寸lcd模块驱动程序#include fsmc_sram.h#include font.h #include demo.h #define bank1_lcd_d (uint32_t)0x60020000) /disp data addr#define bank1_lcd_c (uint32_t)0x60000000) /disp reg addrvoid lcd_init(void);void lcd_wr_reg(unsigned int index);void lcd_wr_cmd(unsigned int index,unsigned int val);void lcd_wr_data(unsigned int val);void lcd_test(void);void lcd_clear(unsigned int p);void delay(_io uint32_t ncount);unsigned short lcd_rd_data(void);extern void lcd_rst(void);extern void delay(_io uint32_t ncount);void tft_clear(u8 x,u16 y,u8 len,u16 wid); void tft_drawpoint(u8 x,u16 y);void tft_showchar(u8 x,u16 y,u8 num);void tft_shownum(u8 x,u16 y,u32 num);void tft_showstring(u8 x,u16 y,const u8 *p);void tft_showbmp(u8 x,u16 y,u8 lenth,u16 wide,const u8 *p);u16 point_color=red; /默认红色 /* 名 称:lcd_wr_reg(unsigned int index)* 功 能:fsmc写显示器寄存器地址函数*/ void lcd_wr_reg(unsigned int index)*(_io uint16_t *) (bank1_lcd_c)= index; /* 名 称:void lcd_wr_cmd(unsigned int index,unsigned int val)* 功 能:fsmc写显示器寄存器数据函数*/ void lcd_wr_cmd(unsigned int index,unsigned int val)*(_io uint16_t *) (bank1_lcd_c)= index;*(_io uint16_t *) (bank1_lcd_d)= val;/* 名 称:unsigned short lcd_rd_data(void)* 功 能:fsmc读显示区16位数据函数*/ unsigned short lcd_rd_data(void)unsigned int a=0;a=*(_io uint16_t *) (bank1_lcd_d); /空操作a=*(_io uint16_t *) (bank1_lcd_d); /读出的实际16位像素数据 return(a);/* 名 称:lcd_wr_data(unsigned int val)* 功 能:fsmc写16位数据函数*/ void lcd_wr_data(unsigned int val) *(_io uint16_t *) (bank1_lcd_d)= val; void lcd_wr_data_8(unsigned int val)*(_io uint16_t *) (bank1_lcd_d)= val;/* 名 称:void delay(_io uint32_t ncount)* 功 能:延时函数*/ void delay(_io uint32_t ncount) for(; ncount != 0; ncount-);/* 名 称:void lcd_init(void)* 功 能:2.4 寸tft 初始化函数*/ void lcd_init(void)unsigned int i;/lcd_rst(); gpio_resetbits(gpioe, gpio_pin_1); /硬件复位 delay(0x1afff); gpio_setbits(gpioe, gpio_pin_1 ); delay(0x1afff);lcd_wr_cmd(0x0000, 0x00000); lcd_wr_cmd(0x0000, 0x00000);lcd_wr_cmd(0x0000, 0x00000);lcd_wr_cmd(0x0000, 0x00000);/time, 0010 ,mslcd_wr_cmd(0x0400, 0x06200);lcd_wr_cmd(0x0008, 0x00808);lcd_wr_cmd(0x0300, 0x00c00);/gammalcd_wr_cmd(0x0301, 0x05a0b);lcd_wr_cmd(0x0302, 0x00906);lcd_wr_cmd(0x0303, 0x01017);lcd_wr_cmd(0x0304, 0x02300);lcd_wr_cmd(0x0305, 0x01700
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实习生签约协议书
- 岗位劳动合同汇编二零二五年
- 二零二五版租赁院落合同
- 住宅铺位合同标准文本
- 房屋买卖协议合同书模板二零二五年
- 二零二五全新一部分股份转让协议
- 买卖楼房佣金合同样本
- 中标后实验设备合同样本
- 供热管网维护合同样本
- 个人采购材料合同样本
- 大健康特色产业园项目商业计划书
- 2025年上半年上海青浦新城发展(集团)限公司自主招聘9名易考易错模拟试题(共500题)试卷后附参考答案
- 墙纸墙布施工工艺标准化流程
- 水泥混凝土路面翻修施工方案详解
- 《射雕英雄传》好书读后感
- DB51T 2049-2015 建筑消防设施检测规范
- 【MOOC】风景背后的地貌学-华中师范大学 中国大学慕课MOOC答案
- 护理感动案例
- 2024版《安全生产法》考试题库附答案(共90题)
- 企业天然气转让协议书范文范本
- 玩具照相机细分市场深度研究报告
评论
0/150
提交评论