XUEPENGBIN 发表于 2008-5-28 10:10:16

2.8"TFT LCD 驱动和序 小北在这里献丑了!

2.8"TFT LCD 驱动和序 小北在这里献丑了!
点击此处下载 ourdev_294994.rar(文件大小:54K) (原文件名:lil9200.rar)

new_friend 发表于 2008-5-28 10:16:37

有照片就好了,仅仅程序相信没有几个人会有兴趣看的./emotion/em025.gif

XUEPENGBIN 发表于 2008-5-28 11:43:52

效果是很好的,不过我们办公室没有相机。要不我一定让大家瞧瞧效果。

XUEPENGBIN 发表于 2008-5-28 12:12:05

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295274.jpg
(原文件名:图像028.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295275.jpg
(原文件名:图像074.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295276.jpg
(原文件名:图像080.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295277.jpg
(原文件名:图像093.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295278.jpg
(原文件名:图像094.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295279.jpg
(原文件名:图像095.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295280.jpg
(原文件名:图像096.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295281.jpg
(原文件名:图像097.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295282.jpg
(原文件名:图像098.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295283.jpg
(原文件名:图像099.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295284.jpg
(原文件名:图像100.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295285.jpg
(原文件名:图像101.jpg)

XUEPENGBIN 发表于 2008-5-28 12:14:11

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295286.jpg
(原文件名:图像102.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295287.jpg
(原文件名:图像103.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295288.jpg
(原文件名:图像104.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295289.jpg
(原文件名:图像105.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295290.jpg
(原文件名:图像106.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295291.jpg
(原文件名:图像107.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295292.jpg
(原文件名:图像108.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295293.jpg
(原文件名:图像110.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_295294.jpg
(原文件名:图像109.jpg)

XUEPENGBIN 发表于 2008-5-28 12:17:46

首先我要感谢http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=831085&bbs_page_no=1&bbs_id=9999 的《bozai 章其波》我是在他的程序基础上将十六位数据总线改成八位。也谢谢大家的共享资料。这个程序在GCC下完全通过。
我又该了一些函数现在将我改后的文件传上来。
点击此处下载 ourdev_295314.rar(文件大小:54K) (原文件名:lil9200.rar)

yzlyear 发表于 2008-5-28 12:22:12

不错

XUEPENGBIN 发表于 2008-5-28 12:22:50

驱动IC是 MEG32

mymach 发表于 2008-5-28 14:07:27

楼主屏从哪里买的?
看着不错!

XUEPENGBIN 发表于 2008-5-28 18:20:49

http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=823134&bbs_page_no=1&bbs_id=1011
从这个上边可以找到线索。

mymach 发表于 2008-5-28 19:30:06

谢了!!

TonyCai 发表于 2008-5-28 19:58:01

鼓励一下,LZ花了很多时间来做, 但要批评一下,照片质量不高,这个屏的将来销售是个重大影响

XUEPENGBIN 发表于 2008-5-28 20:25:25

呵呵,我今天终于搞出来了,只是传上来庆贺一下,没想到网友说要照片,我就从我同事那里借了手机拍了几张。不过在程序中关于图片显示的那部分,我用作者的原贴中的方法显示出来的图像很不清楚,后来在我做汉字显示时用到那个pgm_read_word()函数是发现这个函数取出来的一个字是高低颠倒的。unsigned char LCD_DrawPicture2(unsigned char startX, unsigned char startY, unsigned int *pic, unsigned char sizeX, unsigned char sizeY)
{
        unsigned int i,j,k ,l;

        if((startX+sizeX)>240 || (startY+sizeY)>320)return 1;

        for (j = 0; j<sizeY; j++)
        {
            LCD_Set_XY(startX,startY);
                LCD_Write_Start();
            for(i = 0; i<sizeX; i++)
            {   



                  k = pgm_read_word(pic++);
            l= k;
            k = k<<8;
                        l =l>>8;
                        k= k+l ;   
                        LCD_Write_Data(k);




            }
            startY++;//换行
        }
        LCD_Write_End();
        return 0;
}
我做了如下修改总算功夫不负有心人,图片正常显示了。还是个美女。
可惜没有相机要不也让大家看看。

XUEPENGBIN 发表于 2008-5-28 20:26:22

#include<avr/io.h>
#include<avr/pgmspace.h>
#include<util/delay.h>
#include "pic_temp.h"
#define NOP() asm("nop")

#define DATA_DDRDDRB
#define DATA_PORT PORTB
#define DATA_PINPINB

#define LCD_CS_DDRDDRA
#define LCD_CS_PORT PORTA
#define LCD_CS_PINPINA
#define LCD_CS_BIT0


#define LCD_RS_DDRDDRA
#define LCD_RS_PORT PORTA
#define LCD_RS_PINPINA
#define LCD_RS_BIT5


#define LCD_WR_DDRDDRA
#define LCD_WR_PORT PORTA
#define LCD_WR_PINPINA
#define LCD_WR_BIT1


#define LCD_RD_DDRDDRA
#define LCD_RD_PORT PORTA
#define LCD_RD_PINPINA
#define LCD_RD_BIT6

#define LCD_RST_DDRDDRA
#define LCD_RST_PORT PORTA
#define LCD_RST_PINPINA
#define LCD_RST_BIT2

#define LCD_CON_DDRDDRD
#define LCD_CON_PORT PORTD
#define DATA_INPUT() {\
                                                DATA_DDR = 0x00;\
                                                }
#define DATA_OUTPUT() {\
                                                DATA_DDR = 0xff;\
                                                }
#define LCD_CS_H() LCD_CS_PORT |= 1<<LCD_CS_BIT
#define LCD_CS_L() LCD_CS_PORT &= ~(1<<LCD_CS_BIT)

#define LCD_RS_H() LCD_RS_PORT |= 1<<LCD_RS_BIT
#define LCD_RS_L() LCD_RS_PORT &= ~(1<<LCD_RS_BIT)

#define LCD_WR_H() LCD_WR_PORT |= 1<<LCD_WR_BIT
#define LCD_WR_L() LCD_WR_PORT &= ~(1<<LCD_WR_BIT)

#define LCD_RD_H() LCD_RD_PORT |= 1<<LCD_RD_BIT
#define LCD_RD_L() LCD_RD_PORT &= ~(1<<LCD_RD_BIT)

#define LCD_RST_H()LCD_RST_PORT |= 1<<LCD_RST_BIT
#define LCD_RST_L()LCD_RD_PORT &= ~(1<<LCD_RST_BIT)


#define PORT_INI() {\
                                                DATA_INPUT();\
                                                LCD_CS_H();\
                                                LCD_RS_H();\
                                                LCD_WR_H();\
                                                LCD_RD_H();\
                                                LCD_RST_L();\
                                                LCD_CS_DDR |= 1<<LCD_CS_BIT;\
                                                LCD_RS_DDR |= 1<<LCD_RS_BIT;\
                                                LCD_WR_DDR |= 1<<LCD_WR_BIT;\
                                                LCD_RD_DDR |= 1<<LCD_RD_BIT;\
                                                LCD_RST_DDR |= 1<<LCD_RST_BIT;\
                                                }
const   charflash_array[]    PROGMEM = {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};

void LCD_WR_REG(unsigned char index,unsigned int val)
{
        LCD_CS_L();
        LCD_RS_L();
        DATA_OUTPUT();
        DATA_PORT = 0;
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        DATA_PORT = (unsigned char)index;
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        LCD_RS_H();
        DATA_PORT = (unsigned char)(val>>8);
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        DATA_PORT = (unsigned char)val;
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        LCD_CS_H();
}

unsigned int LCD_RD_REG(unsigned char index)
{
        unsigned int ret;
        LCD_CS_L();
        LCD_RS_L();
        DATA_OUTPUT();
        DATA_PORT = 0;
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        DATA_PORT = (unsigned char)index;
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        LCD_RS_H();
        DATA_INPUT();
        LCD_RD_L();
        NOP();
        NOP();
        ret = DATA_PIN;
        LCD_RD_H();
        ret <<= 8;
        LCD_RD_L();
        NOP();
        NOP();
        ret += DATA_PIN;
        LCD_RD_H();
        LCD_CS_H();
        return ret;
}

void LCD_Write_Start()
{
        LCD_CS_L();
        LCD_RS_L();
        DATA_OUTPUT();
        DATA_PORT = 0x00;
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        DATA_PORT = 0x22;
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        LCD_RS_H();
}

void LCD_Write_Data(unsigned int val)
{
        DATA_PORT = (unsigned char)val;
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        DATA_PORT = (unsigned char)(val>>8);
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
}

void LCD_Write_End()
{
        LCD_CS_H();
}

void LCD_Read_Start()
{
        LCD_CS_L();
        LCD_RS_L();
        DATA_OUTPUT();
        DATA_PORT = 0x00;
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        DATA_PORT = 0x22;
        LCD_WR_L();
        NOP();
        NOP();
        LCD_WR_H();
        LCD_RS_H();
        DATA_INPUT();
        LCD_RD_L();//dummy read
        NOP();
        LCD_RD_H();
        NOP();
        NOP();
}

unsigned int LCD_RD_DATA()
{
        unsigned int ret;
        LCD_RD_L();
        NOP();
        NOP();
        NOP();
        ret = DATA_PIN;
        LCD_RD_H();
        ret <<= 8;
        LCD_RD_L();
        NOP();
        NOP();
        ret += DATA_PIN;
        LCD_RD_H();
        NOP();
        NOP();
        return ret;       
}

void LCD_Read_End()
{
        LCD_CS_H();
}
void delay_Nms(unsigned int n)
{
        while(n--)_delay_ms(1);
}

#define Display_ON() LCD_WR_REG(0x07,0x0173)
#define Display_OFF() LCD_WR_REG(0x07,0x0000)

void LCD_Init()
{
        PORT_INI();

        LCD_RST_L();
        delay_Nms(10);
        LCD_RST_H();

        //delay 10ms
        delay_Nms(10);

        //initializing funciton 1
        LCD_WR_REG(0xe5,0x8000);
        LCD_WR_REG(0x00,0x0001);
        LCD_WR_REG(0x2b,0x0010);
        LCD_WR_REG(0x01,0x0100);
        LCD_WR_REG(0x02,0x0700);
        LCD_WR_REG(0x03,0x1230);
        LCD_WR_REG(0x04,0x0000);
        LCD_WR_REG(0x08,0x0202);
        LCD_WR_REG(0x09,0x0000);
        LCD_WR_REG(0x0a,0x0000);
        LCD_WR_REG(0x0c,0x0000);
        LCD_WR_REG(0x0d,0x0000);
        LCD_WR_REG(0x0f,0x0000);
        LCD_WR_REG(0x50,0x0000);
        LCD_WR_REG(0x51,0x00ef);
        LCD_WR_REG(0x52,0x0000);
        LCD_WR_REG(0x53,0x013f);
        LCD_WR_REG(0x60,0x2700);
        LCD_WR_REG(0x61,0x0001);
        LCD_WR_REG(0x6a,0x0000);
        LCD_WR_REG(0x80,0x0000);
        LCD_WR_REG(0x81,0x0000);
        LCD_WR_REG(0x82,0x0000);
        LCD_WR_REG(0x83,0x0000);
        LCD_WR_REG(0x84,0x0000);
        LCD_WR_REG(0x85,0x0000);
        LCD_WR_REG(0x90,0x0010);
        LCD_WR_REG(0x92,0x0000);
        LCD_WR_REG(0x93,0x0003);
        LCD_WR_REG(0x95,0x0110);
        LCD_WR_REG(0x97,0x0000);
        LCD_WR_REG(0x98,0x0000);

        //power setting function
        LCD_WR_REG(0x10,0x0000);
        LCD_WR_REG(0x11,0x0000);
        LCD_WR_REG(0x12,0x0000);
        LCD_WR_REG(0x13,0x0000);
        delay_Nms(200);
        LCD_WR_REG(0x10,0x17b0);
        LCD_WR_REG(0x11,0x0004);
        delay_Nms(50);
        LCD_WR_REG(0x12,0x013e);
        delay_Nms(50);
        LCD_WR_REG(0x13,0x1f00);
        LCD_WR_REG(0x29,0x000f);
        delay_Nms(50);
        LCD_WR_REG(0x20,0x0000);
        LCD_WR_REG(0x21,0x0000);

        //initializing function 2

        LCD_WR_REG(0x30,0x0204);
        LCD_WR_REG(0x31,0x0001);
        LCD_WR_REG(0x32,0x0000);
        LCD_WR_REG(0x35,0x0206);
        LCD_WR_REG(0x36,0x0600);
        LCD_WR_REG(0x37,0x0500);
        LCD_WR_REG(0x38,0x0505);
        LCD_WR_REG(0x39,0x0407);
        LCD_WR_REG(0x3c,0x0500);
        LCD_WR_REG(0x3d,0x0503);

        //display on
        LCD_WR_REG(0x07,0x0173);
        //Display_ON();
}


void LCD_Set_XY(unsigned int x, unsigned int y)
{
        LCD_WR_REG(0x20,x);
        LCD_WR_REG(0x21,y);
}

void LCD_Set_Window(unsigned int startX,unsigned int startY,unsigned int endX,unsigned int endY)
{
        LCD_Set_XY(startX,startY);
        LCD_WR_REG(0x50,startX);
        LCD_WR_REG(0x52,startY);
        LCD_WR_REG(0x51,endX);
        LCD_WR_REG(0x53,endY);       
}
//*************************************************************************************************************//
//***********该程序将一BYTE的数据写到LCD缓存中,有两个输入参数LINE_DATA为要显示的数据,COLOR为要显示的颜色*******//
void Write_Line (unsigned char Byte,unsigned int Color)
   {   
          unsigned char l,k;
      l = 0x80 ;
          LCD_Write_Start();
          for(k=0;k<8;k++)
               {
                   if (Byte & l) LCD_Write_Data(Color);
                   elseLCD_Write_Data(0xffff);
                   l = l >> 1   ;
               }
      }
//*************************************************************************************************************//
//***********该程序将一Word的数据写到LCD缓存中,有两个输入参数Word为要显示的数据,COLOR为要显示的颜色***********//
void Write_Word (unsigned int Word ,unsigned int Color)
   {
          unsigned int l;
          unsigned char k;
      l = 0x8000 ;
          LCD_Write_Start();
          for(k=0;k<16;k++)
               {
                   if (Word & l) LCD_Write_Data(Color);
                   elseLCD_Write_Data(0xffff);
                   l = l >> 1   ;
               }
      }
//*************************************************************************************************************//
//********************************//显示ASCII标准字符程序,颜色,X,Y 坐标//*******************************//
/*void Write_ASIIC (unsigned int Color ,unsigned char ASIIC_X ,unsigned char ASIIC_Y , unsigned char ASIIC )
   {
          unsigned char j;
      for(j=0;j<16;j++)
             { LCD_Set_XY( ASIIC_X*8, ASIIC_Y*16+j );
                   Write_Line (pgm_read_byte ( ASIIC_TEXT + ASIIC*16 + j),Color);
              }
      }
//*************************************************************************************************************/
//********************************//显示ASCII标准字符程序,颜色,X,Y 坐标//*******************************//
/*void Write_Hanzi (unsigned int Color ,unsigned char Hanzi_X ,unsigned char Hanzi_Y , unsigned int Hanzi )
   {
          unsigned char j;
      for(j=0;j<16;j++)
             { LCD_Set_XY( Hanzi_X*16, Hanzi_Y*16+j );
                   Write_Word (pgm_read_word ( GB_TEXT + Hanzi*32+j*2),Color);
              }
      }
//*************************************************************************************************************/
//***********************//在屏幕上Star_X,Star_Y开始的地方显示Size个Color颜色的ASCII字符//********************//
/*void Write_Text (unsigned int Color,unsigned char Star_X,unsigned char Star_Y , char *Text_Tab,unsigned int Size)
   {
           unsigned int i ;
           unsigned char j = 0;
           for(i=0;i<Size;i++)
           {
             Write_ASIIC (Color,Star_X,Star_Y,j);
               Star_X = Star_X + 1;
               if (Star_X > 29)
                  {
                       Star_X= 0 ;
             Star_Y= Star_Y + 1;
                       if (Star_Y > 19)
                          {
                               Star_Y = 0;
                                  }
                       }
          j = j+1;
                  if( j > 128) j = 0;
          }
          
          }
//************************************************************************************************************/
/*void Write_Wenben (unsigned int Color,unsigned char Star_X,unsigned char Star_Y , char *Text_Tab,unsigned int Size)
   {
           unsigned int i ;
           unsigned int j = 0;
           for(i=0;i<Size;i++)
           {
             Write_Hanzi (Color,Star_X,Star_Y,j);
               Star_X = Star_X + 1;
               if (Star_X > 14)
                  {
                       Star_X= 0 ;
             Star_Y= Star_Y + 1;
                       if (Star_Y > 19)
                          {
                               Star_Y = 0;
                                  }
                       }
          j = j+1;
                  if( j > 128) j = 0;
          }
          }
//*************************************************************************************************************/

//***********************************//人内存中读一片字模数据显示到屏幕上//************************************//
/*void ASIIC_Test (unsigned char *Table ,unsigned int Color)
{
unsigned char k,l,m;
   for ( k=0;k<20;k++ )
   {
       for ( l=0;l<30;l++ )
             {
              for ( m=0;m<16;m++ )
                {
                LCD_Set_XY( l*8, k*16+m );
                Write_Line (pgm_read_word(Table++ ),Color);
                   }
                   }
       }
}
//************************************************************************************************************/
//***************************////***************************//
void Write_Test (unsigned int Color ,unsigned char ASIIC_X ,unsigned char ASIIC_Y )
   {
          unsigned char j,k,l,ASIIC;
          ASIIC = 0Xc0;
          for (j=0;j<8;j++)
              {
                LCD_Set_XY( ASIIC_X*8, ASIIC_Y*16+j);
            l = 0x80 ;
                        LCD_Write_Start();
                for(k=0;k<8;k++)
                     { if (ASIIC & l) LCD_Write_Data(Color);
                          elseLCD_Write_Data(0xffff);
                                l = l >> 1   ;
                          }
            ASIIC =ASIIC>>1   ;
             }
          ASIIC = 0X03;
                   for (j=8;j<16;j++)
              {
                LCD_Set_XY( ASIIC_X*8, ASIIC_Y*16+j);
            l = 0x80 ;
                        LCD_Write_Start();
                for(k=0;k<8;k++)
                     { if (ASIIC & l) LCD_Write_Data(Color);
                          elseLCD_Write_Data(0xffff);
                                l = l >> 1   ;
                          }
            ASIIC =ASIIC<<1   ;
             }
      }

//LCD测试程序//*********************************************************************************
void LCD_test()
{
        unsigned int i,j,k;
        LCD_Set_XY (0x0000,0x0000);
        LCD_Write_Start();
        k = 0x0000;
        for(i=0;i<320;i++)
        {
                for(j=0;j<240;j++)
                {
               k = k+ 0x0001 ;
         LCD_Write_Data(k);
               
               }
        }
        LCD_Write_End();
}
void LCD_test1()
{
        unsigned int i,j,k;
        LCD_Set_XY (0x0000,0x0000);
        LCD_Write_Start();
        k = 0x0000;
        for(i=0;i<320;i++)
        {
                for(j=0;j<240;j++)
                {
         LCD_Write_Data(k);
               }
   k = k+0x000f;
        }
        LCD_Write_End();
}
void LCD_test2()
   {
       unsigned int k, i;
       unsignedchar j,l;
       LCD_Set_XY (0x0000,0x0000);
   LCD_Write_Start();
       k = 0;
        for(i=0;i<320;i++)
           {
                for(j=0;j<30;j++)
                   {
                      for(l=0;l<8;l++)
                         {
                      LCD_Write_Data(k);
                        }
            k = k+0X000f ;
                       }
             }
       }

void LCD_Test3 (void)
{
unsigned int Color = 0x0000 ;
unsigned char k,l,m;
for ( k=0;k<20;k++ )
   {
       for ( l=0;l<30;l++ )
             {
              for ( m=0;m<16;m++ )
                {
                LCD_Set_XY( l*8, k*16+m );
                Write_Line (0XFF ,Color);
                   }
          Color = Color + 0x00f;
                   }
       }
}
void LCD_Test4 (void)
{
unsigned int Color = 0x0000 ;
unsigned intl;
unsigned char k;
for ( k=0;k<30;k++ )
   {
       for ( l=0;l<320;l++ )
             {
                LCD_Set_XY( k*8, l );
                Write_Line (0XFF ,Color);
              }
          Color = Color + 0x00f;
       }
}
void LCD_Test5 (void)
{
unsigned int Color = 0x0000 ;
unsigned char k,l,m;
for ( k=0;k<20;k++ )
   {
       for ( l=0;l<15;l++ )
             {
              for ( m=0;m<16;m++ )
                  {
                          LCD_Set_XY (l*16,k*16+m);
                Write_Word (0Xffff ,Color);
                     }
                   Color = Color + 0x00f;
              }
      }
}
void LCD_test6(void)
{   unsigned char i,j,l ;
        unsigned int k;
        LCD_Set_XY (0x0000,0x0000);
        LCD_Write_Start();
        k = 0x0000;
        for(i=0;i<40;i++)
           {
          for( l=0;l<8;l++)
                   {
                  for(j=0;j<240;j++)
                     {
               LCD_Write_Data(k);
                     }
                  }
   k = k+0x000f;
        }
        LCD_Write_End();
}
void LCD_Test7 (void)
{
unsigned int Color = 0x0000 ;
unsigned char k,l,m;
for ( k=0;k<20;k++ )
   {
       for ( l=0;l<15;l++ )
             {
              for ( m=0;m<16;m++ )
             Write_Word (0Xffff ,Color);
                  }
   Color = Color + 0x00f;
       }
}
//*****************************************************************************************************************************************
/*
unsigned char LCD_DrawPicture(unsigned char startX, unsigned char startY, unsigned int *pic, unsigned char sizeX, unsigned char sizeY)
{
        unsigned int endX,endY;
        unsigned long totalPixels = (unsigned long)sizeX * (unsigned long)sizeY;
        endX = startX+sizeX-1;
        endY = startY+sizeY-1;
        if(endX>239 || endY>319)return 1;
        LCD_Set_Window(startX,startY,endX,endY);
        LCD_Write_Start();
        while(totalPixels--)LCD_Write_Data(pgm_read_word(pic++));
        LCD_Write_End();
        return 0;
}
*/
unsigned char LCD_DrawPicture2(unsigned char startX, unsigned char startY, unsigned int *pic, unsigned char sizeX, unsigned char sizeY)
{
        unsigned int i,j,k ,l;

        if((startX+sizeX)>240 || (startY+sizeY)>320)return 1;

        for (j = 0; j<sizeY; j++)
        {
            LCD_Set_XY(startX,startY);
                LCD_Write_Start();
            for(i = 0; i<sizeX; i++)
            {   
                  k = pgm_read_word(pic++);
            l= k;
            k = k<<8;
                        l =l>>8;
                        k= k+l ;   
                        LCD_Write_Data(k);
            }
            startY++;//换行
        }
        LCD_Write_End();
        return 0;
}

int main()
{   
    unsigned charLCD_X ,LCD_Y ,Again;
        unsigned int   Color = 0x000f ;
        Again = 200 ;
    LCD_CON_DDR= 0xff;
        LCD_CON_PORT = 0xfe ;
        LCD_Init();
while (1)
{
        LCD_test();
        delay_Nms(2000);
        delay_Nms(2000);
    LCD_test1();
        delay_Nms(2000);
        delay_Nms(2000);
        LCD_test2();
    delay_Nms(2000);
        delay_Nms(2000);
        LCD_Test3();
        delay_Nms(2000);
        delay_Nms(2000);
        LCD_Test4();
        delay_Nms(2000);
        delay_Nms(2000);
        Color = 0x0001 ;
        LCD_Test5();
        delay_Nms(2000);
        delay_Nms(2000);
        LCD_test6 () ;
        delay_Nms(2000);
        delay_Nms(2000);
        LCD_Test7();
        delay_Nms(2000);
        delay_Nms(2000);
        Color = 0x0001 ;
        for (LCD_Y = 0 ; LCD_Y<20 ; LCD_Y ++ )
             {
             for (LCD_X = 0 ; LCD_X<30 ; LCD_X ++ )
                     {
                Write_Test (Color,LCD_X,LCD_Y)   ;
                          Color = Color + 0x001f         ;   
                           }
                  }
    delay_Nms(2000);
        delay_Nms(2000);
    LCD_DrawPicture2(55,111,(unsigned int *)yemin,136,102);
    delay_Nms(2000);
        delay_Nms(2000);
        delay_Nms(2000);
        delay_Nms(2000);
    delay_Nms(2000);
        delay_Nms(2000);
        delay_Nms(2000);
        delay_Nms(2000);
       }
}

tftlcd 发表于 2008-6-13 16:24:26

牛 

thomasdu 发表于 2008-6-13 17:57:01

呵呵,顶顶,用得着的人看到了都流口水哈,但是我不流哈

ba1731 发表于 2008-6-14 13:39:36

不错不错。支持啦。我顶。。。。。。。。。。。

tftlcd 发表于 2008-6-15 21:00:42

借着打下广告噢,屏只剩8块了!!! http://shop35653190.taobao.com/

gaoqiru 发表于 2008-9-6 16:33:38

【13楼】 XUEPENGBIN 薛鹏斌
不知道是不是我眼睛有点毛病,每次你一发图片,我就晕图....

XUEPENGBIN 发表于 2008-9-6 17:43:47

太对不住大家了,没有相机,用手机照的!效果不是很好,还望大家见谅@!

thoro_avr 发表于 2008-9-6 21:57:25

up

xingzhang 发表于 2008-9-11 21:13:14

.

lcqqcl 发表于 2008-9-12 13:17:21

wuxinping 发表于 2010-2-9 14:49:40

很好   谢谢LZ共享

ringan865 发表于 2010-2-9 14:57:35

顶一下,多谢分享

hongyancl 发表于 2010-2-9 14:58:46

回复【楼主位】XUEPENGBIN 薛鹏斌
-----------------------------------------------------------------------

ju748 发表于 2010-2-9 15:01:14

多谢楼主分享

xiaobendan 发表于 2010-2-9 15:05:21

刷新一屏要多少时间?

bj-stm8 发表于 2010-2-9 17:52:53

好 非常好

vincent101 发表于 2010-2-10 12:50:06

好东西,顶一下~
顺便问下楼主,刷屏是不是很慢?

wllf123 发表于 2010-2-10 13:26:34

mark

zhiyuh 发表于 2010-3-14 04:14:19

mark

youki1234 发表于 2010-3-14 08:01:34

mark

vermon 发表于 2010-3-14 08:06:09

严重记号

sunjie718 发表于 2010-3-22 19:41:35

123

li252547281 发表于 2010-3-23 14:33:43

屏有字库?程序中不见码表?

armot 发表于 2010-4-17 09:08:45

楼主能 说一下你的 汉字的字模是怎么取的吗

hongyancl 发表于 2010-4-17 09:11:50

回复【3楼】XUEPENGBIN 薛鹏斌
-----------------------------------------------------------------------

ddddddddddd

smartzou 发表于 2010-4-17 09:17:11

mark

number007cool 发表于 2010-4-27 16:05:06

mark

zkf0100007 发表于 2010-4-27 16:10:52

楼主用的是五笔,呵呵

hy419556783 发表于 2010-5-7 18:53:57

http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_552205.jpg
(原文件名:未命名.jpg)
请问下,用了楼主的程序,为什么数据为0%?
请高手指教下

dengxiaofeng 发表于 2010-6-9 17:30:55

支持楼主!!!!

XUEPENGBIN 发表于 2010-6-11 07:56:50

回复【29楼】vincent101
好东西,顶一下~
顺便问下楼主,刷屏是不是很慢?
-----------------------------------------------------------------------

是很慢!回复【36楼】armot
楼主能 说一下你的 汉字的字模是怎么取的吗
-----------------------------------------------------------------------

就是用论坛上的取模软件。回复【35楼】li252547281
屏有字库?程序中不见码表?
-----------------------------------------------------------------------

字码放上来太占地方了。找个取模软件搞一下就行了。

romanticye 发表于 2010-7-1 21:39:24

留名

poet_lee 发表于 2010-7-4 19:18:29

mark

wolfdong7 发表于 2010-9-27 10:36:57

你的程序不是8BIT的嘛?请问下面的语句用来干什么?
#define LCD_CON_DDRDDRD
#define LCD_CON_PORT PORTD

hailin0716 发表于 2010-9-27 12:27:01

正准备做TFT显示,谢谢楼主了

worldly_guest 发表于 2010-9-27 13:00:57

收藏

e1909 发表于 2010-10-2 13:39:46

很不错

csq463276932 发表于 2011-4-19 10:05:12

谢楼主分享

lw-seed 发表于 2011-7-8 07:11:27

感谢~~~

201130 发表于 2011-11-15 00:25:58

现在在做TFT屏,先谢谢楼主了

qq1328454800 发表于 2012-8-29 17:14:03

请问楼主,tft显示的汉字是从字库做里读出来的吗

aaronhuang 发表于 2012-11-14 23:23:04

TFT   lil9200

justice7777 发表于 2013-1-7 10:24:35

mark            

jz701209李 发表于 2013-4-11 14:59:54

谢谢楼主......
页: [1]
查看完整版本: 2.8"TFT LCD 驱动和序 小北在这里献丑了!