天嵌 ARM开发社区

 找回密码
 注册
查看: 2800|回复: 3

TQ2440裸奔图片花屏,论坛找过老帖未解决,显示屏坏?!

[复制链接]
ljd1860 发表于 2014-6-14 19:58:02 | 显示全部楼层 |阅读模式
本帖最后由 ljd1860 于 2014-6-17 21:54 编辑

屏幕是3.5的(保修卡也是这样标的),编译选择的也是按照裸奔指导LCDW35,下载后显示花屏;下载地址也没错,是0x300....,按照教程一步步走。花屏为各种颜色的彩条;#define LCD_Type    LCDW35  //设定屏类型  DNW的地址0x30000000会不会是屏幕坏了,都没怎么用啊。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
Fighting 发表于 2014-6-22 08:46:05 | 显示全部楼层

回帖奖励 +40

你看下你图片的大小是不是320*240!如果不是的话就会出现条纹的
suolong123 发表于 2014-7-2 12:07:32 | 显示全部楼层
这个屏是4.3的,480*272的那个,换驱动
suolong123 发表于 2014-7-2 12:08:36 | 显示全部楼层
  1. #include "lcd.h"
  2. #include "2440addr.h"

  3. #define LOW21BITS(n)        ((n) & 0x1FFFFF)
  4. #define Lcd_Enable()        rLCDCON1 |=1
  5. volatile unsigned short LCD_BUFFER[LCD_YSIZE_TFT][LCD_XSIZE_TFT];        //成像缓冲区
  6. extern unsigned char __CHS[];
  7. extern unsigned char __VGA[];

  8. void Lcd_Config(void)
  9. {
  10.         rGPCCON = 0xAAAA02A9;
  11.         rGPDCON = 0xAAAAAAAA;
  12.         rGPCUP  = 0x00000000;
  13.         rGPDUP  = 0x00000000;
  14.        
  15.         rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
  16.             // TFT LCD panel,12bpp TFT,ENVID=off
  17.         rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);
  18.         rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);
  19.         rLCDCON4=(MVAL<<8)|(HSPW);
  20.         rLCDCON5 = (1<<11) | (0<<10) | (1<<9) | (1<<8) | (0<<7) | (0<<6) | (1<<3)  |(BSWP<<1) | (HWSWP);

  21.         rLCDSADDR1=(((unsigned int)LCD_BUFFER>>22)<<21)|LOW21BITS((unsigned int)LCD_BUFFER>>1);
  22.         rLCDSADDR2=LOW21BITS( ((unsigned int)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );
  23.         rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);
  24.         rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
  25.         rTCONSEL &= (~7) ;     // Disable LPC3480
  26.         rTPAL=0; // Disable Temp Palette
  27. }

  28. static void Lcd_PowerEnable(int powerEnable)
  29. {
  30.         rGPGCON = rGPGCON &(~(3<<8))|(3<<8);
  31.         rGPGDAT |= (1<<4);
  32.         rLCDCON5 = rLCDCON5 &(~(1<<3))|(powerEnable<<3);
  33. }


  34. void Lcd_Init(void)
  35. {
  36.         Lcd_Config();
  37.         Lcd_Enable();
  38.         Lcd_PowerEnable(1);
  39. }

  40. //打印点
  41. void PutPixel(unsigned int x , unsigned int y , unsigned int c)
  42. {
  43.         if((x<LCD_XSIZE_TFT) && (y<LCD_YSIZE_TFT))
  44.         {
  45.                 LCD_BUFFER[y][x] = c;
  46.         }
  47. }

  48. //打印图片
  49. void Paint_Bmp(const unsigned char bmp[])
  50. {
  51.         int x,y;
  52.         unsigned short c;
  53.         int p = 0;
  54.        
  55.         for(y=0 ; y<LCD_YSIZE_TFT ; y++)
  56.         {
  57.                 for(x=0 ; x<LCD_XSIZE_TFT ; x++){
  58.                         c = bmp[p+1] | (bmp[p]<<8);
  59.                         LCD_BUFFER[y][x] = c;
  60.                         p+=2;
  61.                 }
  62.         }
  63. }

  64. //清屏
  65. void Lcd_Clear(unsigned int c)
  66. {
  67.         unsigned int x,y;
  68.         for(y=0 ; y<LCD_YSIZE_TFT ; y++)
  69.         {
  70.                 for(x=0 ; x<LCD_XSIZE_TFT ; x++){
  71.                         LCD_BUFFER[y][x] = c;
  72.                 }
  73.         }
  74. }

  75. //打印ASCII码
  76. void Lcd_Print_ASCII(unsigned int x,unsigned int y,unsigned char ch,unsigned int c)
  77. {
  78.         unsigned short int i,j;
  79.         unsigned char *pZK,mask,buf;
  80.        
  81.         pZK = &__VGA[ch*16];
  82.        
  83.         for( i = 0 ; i < 16 ; i++ )
  84.         {
  85.                 mask = 0x80;
  86.                 buf = pZK[i];
  87.                 for( j = 0 ; j < 8 ; j++ )
  88.                 {
  89.                         if( buf & mask )
  90.                         {
  91.                                 PutPixel(x+j,y+i,c);
  92.                         }
  93.                 }

  94.                 mask = mask >> 1;
  95.         }
  96. }

  97. //打印汉字
  98. void Lcd_Print_ZW(unsigned int x , unsigned int y , unsigned short int QW , unsigned c)
  99. {
  100.         unsigned short int i,j;
  101.         unsigned char *pZK,mask,buf;
  102.        
  103.         pZK = &__CHS[(((QW>>8)-161)*94+(QW & 0x00FF)-161)*32];
  104.        
  105.         for(i=0 ; i<16 ; i++){
  106.                 mask = 0x80;
  107.                 buf = pZK[i*2];
  108.                 for(j=0 ; j<8 ; j++){
  109.                         if(buf & mask)
  110.                         {
  111.                                 PutPixel(x+j,y+i,c);
  112.                         }
  113.                         mask = mask >> 1;
  114.                 }
  115.                
  116.                 mask = 0x80;
  117.                 buf = pZK[i*2+1];
  118.                 for(j=0 ; j<8 ; j++)
  119.                 {
  120.                         if(buf & mask)
  121.                         {
  122.                                 PutPixel(x+j+8,y+i,c);
  123.                         }
  124.                         mask = mask >> 1;
  125.                 }
  126.         }
  127. }

  128. //打印字符串
  129. void Lcd_Print(unsigned int x , unsigned int y , char* str , unsigned c){
  130.         while(*str){
  131.                 if(*str>0xa0)
  132.                 {
  133.                         //判断为汉字
  134.                         Lcd_Print_ZW(x,y,*(str+1)+*(str)*256,c);
  135.                         str+=2;
  136.                         x+=16;
  137.                 }
  138.                 else
  139.                 {
  140.                         //ASCII码
  141.                         Lcd_Print_ASCII(x,y,*str,c);
  142.                         str++;
  143.                         x+=8;
  144.                 }
  145.         }
  146. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-2 13:03 , Processed in 1.031250 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表