本文对基于FPGA的液晶显示控制系统的设计与实现进行了研究。设计中从LCD技术参数着手,通过对显示驱动系统结构与工作原理的研究,设计出显示控制系统的框图及各功能模块的VHDL程序,通过单片机系统配置FPGA芯片,控制lcd显示相应的汉字和图形。lcd显示控制系统由显示控制电路、显示驱动电路和相关外围辅助电路组成。显示控制电路从电路中各个功能模块所需要的控制时序信号出发,通过对其工作过程的研究,设计出控制器、RAM控制器等各功能模块。显示驱动电路从LCD工作所需要的扫描时序信号出发,设计出时序发生电路等各功能模块。所有的VHDL程序通过了MAX+PLUS—II软件实现编译及仿真后,在实际的硬件中调试通过。
上传时间: 2013-04-24
上传用户:asasasas
本文研究特种LCD的图像处理方法和FPGA实现方案,并研制出基于FPGA的若干实际应用系统,有效地解决目前存在的问题。本文主要研究内容为: (1)给出一种基于彩色空间变换的色彩调整方法,在YCrCb空间内实现亮度和色度分离,避免了RGB空间两者同时变化造成偏色和失真的现象,并在FPGA内采用流水线结构改进3阶矩阵运算的逻辑结构,节省出2/3的逻辑资源,提高了模块的最高运行速度。 (2)研究利用FPGA实现图像实时缩放处理的方法,选择能够满足特种LCD要求的双线性插值法作为研究对象,实时计算插值系数dx和dy,并采用流水线结构进行插值计算,仅使用FPGA中的3个双端口RAM来缓冲图像数据,没有外扩大容量帧存储器,降低了成本,提高特种LCD的系统兼容性。 (3)设计一种针对特种LCD更为简捷、有效的隔行转逐行扫描的实现方案,即利用图像实时缩放的方法,把一场图像缩放到LCD的分辨率,实现复合视频图像在LCD的“满屏”显示,改善现有特种LCD在显示隔行扫描的复合视频信号时,遇到图像信息丢失或显示效果不佳的问题。 (4)设计出一种基于字符和位图的数字OSD控制核,合理使用分布式RAM和块RAM两种逻辑资源来存储字符和位图信息,OSD图像由数字逻辑自动合成,编程简单灵活,使特种LCD的参数调整更加方便。 (5)研制成功基于FPGA的特种lcd显示控制板,能显示三种分辨率640×480,800×600,1024×768的图像信号;支持宽范围的亮度、对比度、显示位置等参数的实时调整,并提供全功能的透明OSD菜单进行指示。 (6)研制成功基于FPGA的特种LCD图像调节板,用于对某型号机载特种LCD进行改造,增加宽范围的亮度、对比度、图像显示位置的实时调整功能,提供无信号输入检测与OSD指示功能,提高图像显示的性能,通过了环境温度试验与性能测试,并已装机。 (7)研制成功基于DSP和FPGA的图像采集显示板,实现了对全分辨率复合视频信号进行25帧/秒的实时采集和显示,在DSP内使用“三帧”轮换的图像数据缓冲方法提高了系统的实时处理能力,使之能够完成一定复杂度的实时图像处理。
上传时间: 2013-06-12
上传用户:ivan-mtk
显示技术被定义为新世纪世界朝阳产业之一。几十年来,LED显示技术成为一项使用最广泛和最普及的技术,由于其极高的性价比、高亮度、主动发光等特性,使得LED构成的大屏幕已经被广泛的应用于车站、码头、广场等各种场合以及各企事业单位,成为各单位、部门很好的信息发布与交流工具。传统的显示技术以简单的8位或者16位单片微控制器为核心,其运算速度、内存容量、存储空间和通讯方式等方面存在着很大的局限性,很难实现高难度图文动态特技显示和高灰度级显示,并且无法满足信息容量大和处理速度很高的场所。 本文在分析LED显示控制原理、灰度级实现以及彩色显示实现原理的基础上,制定了ARM+FPGA的LED点阵显示控制方案,采用三星公司S3C2410芯片上的lcd显示接口,设计了显示数据重组、非线性占空比γ反校正等逻辑,结合FPGA技术实现了高性能的LED点阵显示控制;同时研究了嵌入式Linux操作系统,在实验基础上详细论述基于Linux操作系统的帧缓存设备模块加载模式下的控制技术,并开发基于ARM平台的LED显示屏播放以及管理应用程序。 本文的创新之处在于提出并系统研究了改善LED显示效果的数据重组技术以及非线性占空比下的γ反校正技术,并通过软硬件调试系统达到预期显示效果。
上传时间: 2013-04-24
上传用户:xymbian
在当前的数字信息技术和网络技术高速发展的后PC时代,嵌入式系统技术已经广泛地渗透到人们生活的各个方面。由于嵌入式系统的交互性比较强,液晶屏做为输出设备对汉字显示又尤为重要,但很多关于嵌入式系统开发、应用的教材中,对于液晶屏的程序设计也只是初始化和测试的编程,没有进一步的应用开发。所以选择了该毕业设计题目,以完善液晶屏的汉字显示功能。 在选定了毕业设计题目之后,随着开发研究的不断深入,主要完成了以下工作: 首先,对三种常用的嵌入式操作系统进行了分析比较,对项目开发是否选用操作系统提出了自己的见解,结合本次毕业设计的实际应用,选择了不使用操作系统而是利用Bootloader引导的方法。 其次,选定硬件开发系统后,把单片机的传统调试方法与ARM的边界扫描技术进行了分析比较,并在实际应用开发中采用了边界扫描技术。 再次,由于在C语言程序运行前需要加入一些必要的初始化代码,于是又完成了对44binit.s初始化程序的分析与设计。 最后,在编写汉字显示程序时,采用了读取字库法显示汉字方案和读取字模数据输出汉字方案分别实现了液晶屏的汉字显示,并取得了良好的效果。 本文不但说明了如何利用ARM处理器实现液晶屏的汉字显示,还讲述了开发ARM处理器应用程序的一个完整的过程。随着嵌入式技术的不断普及,对ARM处理器的学习、应用、开发都有一定的帮助作用。
上传时间: 2013-04-24
上传用户:cuiqiang
如今IC设计进入了SOC(System-on-chip)设计时代。SOC是指在单一芯片上集成了微控制器、数字信号处理器、存储器、I/O接口等,可以实现信号采集、转换、存储、处理等功能的芯片。SOC设计是基于IP可重用性的设计过程。现在已有不少公司成功地开发了各种SOC总线规范,以便于IP核的可复用性设计。其中,ARM公司开发的AMBA(Advanced Microcontroller Bus Arehitecture)规范已经成为嵌入式应用的行业标准。嵌入式SOC芯片广泛应用于消费电子产品中,近年来随着彩屏手机、PDA等移动终端的普及,液晶电视等平板显示器件的推广,液晶显示器已经逐渐取代CRT成为主流的显示器件。LCD Driver IC作为液晶显示器的重要部件,需求量也日益增大。嵌入式液晶显示系统的设计是当今SOC设计中不可缺少的部分,而基于AMBA总线规范的lcd显示系统更是具备良好的性能和较大的潜力。 本文提出了一种基于AMBA总线规范的彩色TFT-LCD数字图像显示解决方案,硬件设计上包括APB存储接口模块、LCD控制模块,并用VHDL硬件描述语言进行了功能仿真,采用Mentor公司Modelsim5.8完成了系统功能验证;软件设计上完成了基于SAMSUNG公司S6D0110 TFT-LCD驱动芯片的测试程序的编写和系统测试。本设计不需要掌握TFT-LCD内部构造,复杂的内部驱动原理,只需要掌握AMBA总线规范和LCD的MPU并行接口时序,采用本课题设计出的lcd显示控制模块简单实用,便于推广应用。 本课题基于Xilinx公司的VirtexⅡ FF1152 PROTO开发平台完成了软件调试,实现了TFT-LCD图像显示。调试结果表明硬件和软件设计正确且取得了较为满意的结果。
上传时间: 2013-06-02
上传用户:小枫残月
本文对基于FPGA的液晶显示控制系统的设计与实现进行了研究。设计中从LCD技术参数着手,通过对显示驱动系统结构与工作原理的研究,设计出显示控制系统的框图及各功能模块的VHDL程序,通过单片机系统配置FPGA芯片,控制lcd显示相应的汉字和图形。lcd显示控制系统由显示控制电路、显示驱动电路和相关外围辅助电路组成。显示控制电路从电路中各个功能模块所需要的控制时序信号出发,通过对其工作过程的研究,设计出控制器、RAM控制器等各功能模块。显示驱动电路从LCD工作所需要的扫描时序信号出发,设计出时序发生电路等各功能模块。所有的VHDL程序通过了MAX+PLUS—II软件实现编译及仿真后,在实际的硬件中调试通过。
上传时间: 2013-05-24
上传用户:portantal
IAR的proj。 主控芯片stm32,实现示波器功能,带lcd显示的源码
上传时间: 2013-06-10
上传用户:lw4463301
基于S51单片机数据采集系统设计,串口通信,lcd显示
标签: 温湿度采集
上传时间: 2013-06-25
上传用户:GavinNeko
温度用lcd显示
上传时间: 2013-10-19
上传用户:panjialaodi
附件为:LCD12864显示汉字和数字的程序与电路 /* 自定义延时子函数 */ void delayms(uchar z) { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /* 判断LCD忙信号状态 */ void buys() { int dat; RW=1; RS=0; do { P0=0x00; E=1; dat=P0; E=0; dat=0x80 & dat; } while(!(dat==0x00)); } /* LCD写指令函数 */ void w_com(uchar com) { //buys(); RW=0; RS=0; E=1; P0=com; E=0; } /* LCD写数据函数 */ void w_date(uchar date) { //buys(); RW=0; RS=1; E=1; P0=date; E=0; } /* LCD选屏函数 */ void select_screen(uchar screen) { switch(screen) { case 0: //选择全屏 CS1=0; CS2=0; break; case 1: //选择左屏 CS1=0; CS2=1; break; case 2: //选择右屏 CS1=1; CS2=0; break; /* case 3: //选择右屏 CS1=1; CS2=1; break; */ } } /* LCDx向上滚屏显示 */ void lcd_rol() { int x; for(x=0;x<64;x++) { select_screen(0); w_com(0xc0+x); delayms(500); } } /* LCD清屏函数:清屏从第一页的第一列开始,总共8页,64列 */ void clear_screen(screen) { int x,y; select_screen(screen); //screen:0-选择全屏,1-选择左半屏,2-选择右半屏 for(x=0xb8;x<0xc0;x++) //从0xb8-0xbf,共8页 { w_com(x); w_com(0x40); //列的初始地址是0x40 for(y=0;y<64;y++) { w_date(0x00); } } } /* lcd显示汉字字库函数 */ void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-3,mun:显示第几个汉字的参数 int a; mun=mun*32; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } } /* lcd显示字符字库函数 */ void lcd_display_zifuk(uchar screen,uchar page,uchar col,uchar mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数 int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } } /* lcd显示数字字库函数 */ void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数 int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } } /* LCD初始化函数 */ void lcd_init() { w_com(0x3f); //LCD开显示 w_com(0xc0); //LCD行初始地址,共64行 w_com(0xb8); //LCD页初始地址,共8页 w_com(0x40); //LCD列初始地址,共64列 } /* lcd显示主函数 */ void main() { //第一行 int x; lcd_init(); //LCD初始化 clear_screen(0); //LCD清屏幕 lcd_display_shuzi(1,0,4,5); //lcd显示数字 lcd_display_shuzi(1,0,5,1); //lcd显示数字 lcd_display_hanzi(1,0,3,0); //lcd显示汉字 lcd_display_hanzi(2,0,0,1); //lcd显示汉字 //LCD字符汉字 lcd_display_hanzi(2,0,1,2); //lcd显示汉字 //第二行 lcd_display_zifuk(1,1,2,0); //lcd显示字符 lcd_display_zifuk(1,1,3,0); //lcd显示字符 lcd_display_zifuk(1,1,4,0); //lcd显示字符 lcd_display_zifuk(1,1,5,4); //lcd显示字符 lcd_display_shuzi(1,1,6,8); //lcd显示字符 lcd_display_shuzi(1,1,7,9); //lcd显示字符 lcd_display_shuzi(2,1,0,5); //lcd显示字符 lcd_display_shuzi(2,1,1,1); //lcd显示字符 lcd_display_zifuk(2,1,2,4); lcd_display_zifuk(2,1,3,1); lcd_display_zifuk(2,1,4,2); lcd_display_zifuk(2,1,5,3); //第三行 for(x=0;x<4;x++) { lcd_display_hanzi(1,2,x,3+x); //lcd显示汉字 } for(x=0;x<4;x++) { lcd_display_hanzi(2,2,x,7+x); //lcd显示汉字 } //第四行 for(x=0;x<4;x++) { lcd_display_zifuk(1,3,x,5+x); //lcd显示汉字 } lcd_display_shuzi(1,3,4,7); lcd_display_shuzi(1,3,5,5); lcd_display_shuzi(1,3,6,5); lcd_display_zifuk(1,3,7,9); lcd_display_shuzi(2,3,0,8); lcd_display_shuzi(2,3,1,9); lcd_display_shuzi(2,3,2,9); lcd_display_shuzi(2,3,3,5); lcd_display_shuzi(2,3,4,6); lcd_display_shuzi(2,3,5,8); lcd_display_shuzi(2,3,6,9); lcd_display_shuzi(2,3,7,2); while(1); /* while(1) { // LCD向上滚屏显示 lcd_rol(); } */ }
上传时间: 2013-11-08
上传用户:aeiouetla