TFT显示图片的驱动函数

发布者:ph49635359最新更新时间:2015-10-16 来源: eefocus关键字:TFT  显示图片  驱动函数 手机看文章 扫描二维码
随时随地手机看文章
以下是TFT的驱动函数用来显示图片,之前要将图片进行取模并保存在一下数组中:

const unsigned  char code Image_pic[7128] = { };

然后只需修改程序中的红色字体的文字!

一定记住:使用TFT显示图片只需修改红黑色字体的文字,知道如何用即可,没有太大的必要亲自去写驱动函数!!!除非你有足够的精力逐句去理解,这对你也有好处.

 

#include
#include

#include "LCD.h"

#define  NOP()   _nop_()  

#define  TYPE_LCD_DATA  1
#define  TYPE_LCD_COMMAND 0

char code reserve[3]_at_ 0x3b; //保留0x3b开始的3个字节

#define  DATA   P0   //定义数据输入端口并行

sbit LCD_RST  = P2^7;
sbit LCD_RD   = P3^2;
sbit LCD_WR   = P3^3;
sbit LCD_RS   = P2^5;
sbit LCD_CS   = P2^6;

//以上红色字体是必须要针对实际的TFT接口连接情况进行修改的,此为应用的关键之处

uint colors[]=
{
  0xf800,0x07e0,0x001f,0xffe0,0x0000,0x07ff,0xf81f,0xffff
};


void delay_ms(uint ms)
{
  unsigned char k;

  while (ms--)
  {
    for (k = 0; k < 228; k++)
      ;
  }
}


void LCD_Write(uchar type, uint value) 
{
 LCD_CS = 0;
 LCD_RS  = type;      // 0: command    1: data
 
 LCD_WR  = 0;
 DATA  = (uchar)value;
 LCD_WR  = 1;
 LCD_CS = 1;
}


void LCD_Write_Data8(uchar value)    // color data
{
 LCD_CS = 0;
 LCD_RS  = 1;
 LCD_WR  = 0;
 DATA  = value;
 LCD_WR  = 1;
    LCD_CS = 1;
}

 


void LCD_Wirte_Data16(uint value)    // color data
{
 LCD_CS = 0;
    LCD_RS  = 1;
 LCD_WR  = 0;
 DATA  = (uchar)value;
 LCD_WR  = 1;
 LCD_WR  = 0;
 DATA  = (uchar)(value>>8) ;
 LCD_WR  = 1;
 LCD_CS = 1;
}



void Reg_Write(uint reg,uint value)
{
   LCD_Write(TYPE_LCD_COMMAND,reg);
   LCD_Write(TYPE_LCD_DATA,value);
}



void LCD_SetRamAddr(uint xStart, uint xEnd, uint yStart, uint yEnd)
{
   uint VerPos,HorPos,StartAddr;

   HorPos    = (uint)(xStart | (xEnd<<8));
   VerPos    = (uint)(yStart | (yEnd<<8));
   StartAddr = (uint)(xStart | (yStart<<8));
 
   Reg_Write(0x09, xStart);
   Reg_Write(0x10,yStart);
   Reg_Write(0x11,xEnd);
   Reg_Write(0x12,yEnd);
 
   Reg_Write(0x18, xStart);
   Reg_Write(0x19, yStart);
  
   LCD_Write(TYPE_LCD_COMMAND,0x22);  // 0x22
}

 



void LCD_init(void)
  uint num;
  
 Reg_Write(0x0001,0x0002);  //MODE_SEL1
 Reg_Write(0x0002,0x0012);   //MODE_SEL2
 Reg_Write(0x0003,0x0000);   //MODE_SEL3
 Reg_Write(0x0004,0x0010); //MODE_SEL3
 LCD_SetRamAddr(0,127, 0,159);
 for(num=20480;num>0;num--)
    LCD_Wirte_Data16(0xffff);
  
 Reg_Write(0x0005,0x0008);   //VCO_MODE 
 Reg_Write(0x0007,0x007f); //VCOMHT_CTRL
 Reg_Write(0x0008,0x0017);   //VCOMLT_CTRL     
 Reg_Write(0x0009,0x0000);   //write SRAM window start X point
 Reg_Write(0x0010,0x0000);   //write SRAM window start y point
 Reg_Write(0x0011,0x0083);   //write SRAM window end x point
 Reg_Write(0x0012,0x009f);   //write SRAM window end y point
 Reg_Write(0x0017,0x0000);   //SRAM contrl
 Reg_Write(0x0018,0x0000);   //SRAM x position
 Reg_Write(0x0019,0x0000);   //SRAM y position
 Reg_Write(0x0006,0x00c5);   //DAC_OP_CTRL2
 delay_ms(10); //延时

}


void  pic_play(uint Start_X, uint End_X,uint Start_Y,uint End_Y)
{
   uint num,m;
   uint dx,dy;

   dx = (End_X+1)-Start_X;                  //计算写入数据的总数
   dy = (End_Y+1)-Start_Y;
   num = dx*dy<<1;

   LCD_CS = 0;
   LCD_SetRamAddr(Start_X,End_X-1,Start_Y,End_Y-1) ;
   LCD_RS  = 1;


   for(m=0; m<7128; m++) 
   {  
      LCD_Write_Data8(Image_pic[m]);

   }
   LCD_CS = 1;

}



void  LCD_clear(uchar n)
{
   uint num;
  
   LCD_SetRamAddr(0,127, 0,159);//清屏函数

   for(num=20480;num>0;num--)          //160*128=20480
   {
     LCD_Wirte_Data16(colors[n]);//其实质是对每一个点进行设置!
   }
}

void main(void)

   P2 = 0xff;
   P0 = 0xff;//端口的初始化
    
    LCD_init();//屏幕初始化
    LCD_clear(6);//清屏

    pic_play(7,61,8,74);
    pic_play(68,122,8,74);
    pic_play(7,61,82,148);
    pic_play(68,122,82,148);

//设置显示图片的位置 
   while(1) ;
}

关键字:TFT  显示图片  驱动函数 引用地址:TFT显示图片的驱动函数

上一篇:8*8的点阵驱动程序
下一篇:TFT画线程序

推荐阅读最新更新时间:2024-03-16 14:36

2016年车载TFT-LCD面板出货量预测:七千万!
    根据NPD DisplaySearch 2012 车载显示报告Automotive Displays Report 指出,2012年应用于汽车导航和后座视频播放器等车载设备的TFT-LCD面板出货量年成长16%,为4千9百万片,并预计于2016年提高到7千万片。如此高成长并不奇怪,因为上班族每天在路上花费三个小时左右,而车载显示屏具备方便性、安全性以及功能性等优点,由此市场对车载面板的需求持续上升。   “消费者需求促使车载产品更智能且更高画质,”NPD DisplaySearch中小显示研究副总经理Hiroshi Hayase表示,“导航仪、音频显示屏、空调控制屏、后视显示屏、油表和时速表等为驾驶者提供了安全驾驶、油量、以
[汽车电子]
车用液晶面板的设计技巧及发展动向分析
前言    90年代内置TFT屏幕的汽车导航仪问世至今历经20年的发展,目前已经成为生活中随处可见的数字电子产品,日本地区超过70%的新车配备导航仪。 根据调查,多数日本人希望可以在车内收看电视,特别是支持地面数字电视、数字音响等功能的硬盘型导航仪,已经成为驱动导航仪购买意愿的主要因素。 欧洲地区配备汽车导航仪的汽车低于10%,它与导航仪内建各种娱乐功能的日系汽车截然不同,欧系汽车将人机界面(HMI)当作行车支持接口,以高级汽车为中心配备液晶显示器的车型非常多。 美国地区的情况又不一样,由于美国的道路规划非常有系统,只要依照街道名称、号码就可以到达目的地,因此对汽车导航仪的需求并不大,反而是全家长距
[汽车电子]
车用液晶面板的设计技巧及发展动向分析
stm32之TFT触摸屏(ILI9320):通过LCD_ShowChar显示的过程分析
使用TFT触摸屏时,想要对字符串,图形或者数字进行显示时,发现他们的库函数中都有一个最重要的函数LCD_ShowChar,貌似目前很少有人分析这个函数,虽然简单但是还是有点绕的。 先贴一下这个函数的代码,由于函数显示分为叠加显示和非叠加显示,原理类似,所以只分析非叠加方式的部分应该就都懂了。 void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode) { u8 temp,t1,t; u16 y0=y; u16 colortemp=POINT_COLOR; num=num-' ';//得到偏移后的值 if(!mode) //非叠加方式 {
[单片机]
stm32之<font color='red'>TFT</font>触摸屏(ILI9320):通过LCD_ShowChar<font color='red'>显示</font>的过程分析
浅谈STM32的FSMC的TFT笔记
1、FSMC初初了解: FSMC 包括4个模块: (1)AHB接口(包括FSMC配置寄存器) (2)NOR闪存和PSRAM控制器(驱动LCD的时候LCD就好像一个PSRAM的里面只有2个16位的存储空间,一个是DATA RAM 一个是CMD RAM) (3)NAND闪存和PC卡控制器 (4)外部设备接口 我们驱动TFT很明显用的是第二个模块:NOR闪存。 2、FSMC的外设地址选择 FSMC _Bank 用来选择外接存储器的地址,FSMC所控制的外存储器所映射的地址是0x6000 0000 ~ 0x9fff ffff 其中属于NOR FLASH 的是0x6000 0000 ~ 0x6fff f
[单片机]
全球大尺寸TFT LCD面板营业额在2014年二月触底
NPD DisplaySearch上海办公室,2014年3月31日---NPD DisplaySearch通过统计每个月的全球面板营收看出,大尺寸薄膜晶体管液晶显示(TFT LCD)行业最近几年正处于最具挑战的时期。根据NPD DisplaySearch最新出版的TFT LCD月度出货量报告Monthly TFT LCD Shipment Database显示,2014年大尺寸(9寸及以上)TFT LCD的营收在二月跌到了三年来的最低点,也是2011年以来第一次单月低于50亿美元,同比下降3%M/M,13%Y/Y。 图一, 全球大尺寸(9寸及以上)TFT LCD的月营收金额 来源:NPD DisplaySearch
[家用电子]
全球大尺寸<font color='red'>TFT</font> LCD面板营业额在2014年二月触底
用AT89C系列单片机实现5英寸TFT-LCD的遥控
LCD由于具有薄、轻及功耗低的特点,已广泛应用在计算机显示器、VCD显示板、便携式医疗设备等工业和民用领域。在这些产品中,应用单片机能大大地提高其智能性、易用性,给人们的生活带来舒适和方便。本文采用美国Atmel公司的单片机AT89C2051和AT89C51,为5英寸的TFT-LCD设计了遥控系统。该系统主要由遥控发射、遥控接受、TFT-LCD驱动电路3部分组成,可以遥控TFT-LCD的电源开关、亮度、色饱和度、对比度和音量,并具有扩展功能。 1   硬件设计 硬件总体设计框图如图1所示。 1.1 遥控发射电路设计 遥控发射电路由AT89C2051单片机、键盘、红外发射电路和电源组成。这里选用4×4键盘,用于控
[单片机]
水清木华发布09年TFT-LCD设备业30项排名
  市场调研机构水清木华日前发布了2009年全球TFT-LCD设备行业市场报告,报告中指出,从2009年1季度到2011年4季度,全球新投入的TFT-LCD生产线有三星的第二条8代线、LG的8代线、友达的一条7。5代线和一条8。5代线、奇美的一条8代线、群创的6代线、夏普的10代线、京东方的合肥6代线,IPSALPHA的8代线。此外,京东方在8月底宣布投资280亿人民币建设8代线,昆山龙飞光电投资33亿美元建设8。5代线,昆山龙腾光电32亿美元建设8代线,夏普南京建设8代线。同时还有不确定诸多8代线项目,包括苏州、广州等地。整个中国有近1000亿人民币准备投入在TFT-LCD生产线上。   TFT-LCD生产线投资中大约55%的
[半导体设计/制造]
水清木华发布09年<font color='red'>TFT</font>-LCD设备业30项排名
2010年全球手机面板市场可望成长14%
  根据DisplaySearch发布的报告,全球手机面板市场在去(2009)年度的成长只有4%,预测今年可望创造14%的佳绩,出货量可达16亿8000万。第一季手机面板出货由于季节性因素,比前一季减少10%,但比去年同期增加25%,达到3亿7050万;出货量的减少,再加上平均售价下跌4%,导致该季产值比前一季减少13%。另外,DisplaySearch估计第二季的出货量大约为4亿130万,比前一季增加9%,比去年同期增加8%;第三季可达4亿5180万,比前一季增加11%,比去年同期增加6%。   DisplaySearch指出,从各个技术的角度来看,LTPS TFT LCD在第一季成长7.7%,AMOLED成长8.5%,这两类
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved