OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5649|回复: 5

tftlcd复位时闪一下然后黑屏

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2015-8-1
在线时间
0 小时
发表于 2015-8-1 15:34:20 | 显示全部楼层 |阅读模式
5金钱
原理图如下


感觉有问题的地方
[mw_shl_code=c,true]
[mw_shl_code=c,true]#ifndef __LCD_H #define __LCD_H #include "sys.h" #include "stdlib.h" //TFTLCD??·??????÷???????? extern u16 POINT_COLOR;//?????ì?? extern u16 BACK_COLOR; //±??°????.??????°×?? //?¨??LCD?????? #if USE_HORIZONTAL==1 //?????á?? #define LCD_W 320 #define LCD_H 240 #else #define LCD_W 240 #define LCD_H 320 #endif //////////////////////////////////////////////////////////////////// //-----------------LCD?????¨??---------------- #define LCD_LED PFout(12) //LCD±??? PF12 //?????????ì??IO???ò?¨?????????????????????ò?????????? //?????ì??IO??????????????????28???????? //???¨IO??????14???????? #if LCD_FAST_IO==1 //?ì??IO //??×÷??·±???????á?????????¨?é?±???????÷??×÷ #define LCD_CS_SET GPIO_SetBits(GPIOD,GPIO_Pin_13) //???????? PD13 #define LCD_RS_SET GPIO_SetBits(GPIOD,GPIO_Pin_12) //????/?ü?? PD12 #define LCD_WR_SET GPIO_SetBits(GPIOD,GPIO_Pin_11) //?????? PD11 #define LCD_RD_SET GPIO_SetBits(GPIOD,GPIO_Pin_10) //?????? PD10 #define LCD_CS_CLR GPIO_ResetBits(GPIOD,GPIO_Pin_13) //???????? PD13 #define LCD_RS_CLR GPIO_ResetBits(GPIOD,GPIO_Pin_12) //????/?ü?? PD12 #define LCD_WR_CLR GPIO_ResetBits(GPIOD,GPIO_Pin_11) //?????? PD11 #define LCD_RD_CLR GPIO_ResetBits(GPIOD,GPIO_Pin_10) //?????? PD10 //#define LCD_CS_SET GPIOD->BSRR=1<<13 //???????? PD13 //#define LCD_RS_SET GPIOD->BSRR=1<<12 //????/?ü?? PD12 //#define LCD_WR_SET GPIOD->BSRR=1<<11 //?????? PD11 //#define LCD_RD_SET GPIOD->BSRR=1<<10 //?????? PD10 // //#define LCD_CS_CLR GPIOD->BRR=1<<13 //???????? PD13 //#define LCD_RS_CLR GPIOD->BRR=1<<12 //????/?ü?? PD12 //#define LCD_WR_CLR GPIOD->BRR=1<<11 //?????? PD11 //#define LCD_RD_CLR GPIOD->BRR=1<<10 //?????? PD10 /* #define LCD_CS_SET GPIO_SetBits(GPIOC,GPIO_Pin_9) //???????? PC9 #define LCD_RS_SET GPIO_SetBits(GPIOC,GPIO_Pin_8) //????/?ü?? PC8 #define LCD_WR_SET GPIO_SetBits(GPIOC,GPIO_Pin_7) //?????? PC7 #define LCD_RD_SET GPIO_SetBits(GPIOC,GPIO_Pin_6) //?????? PC6 #define LCD_CS_CLR GPIO_ResetBits(GPIOC,GPIO_Pin_9) //???????? PC9 #define LCD_RS_CLR GPIO_ResetBits(GPIOC,GPIO_Pin_8) //????/?ü?? PC8 #define LCD_WR_CLR GPIO_ResetBits(GPIOC,GPIO_Pin_7) //?????? PC7 #define LCD_RD_CLR GPIO_ResetBits(GPIOC,GPIO_Pin_6) //?????? PC6 */ #else //????IO #define LCD_CS PDout(13) //???????? PD13 #define LCD_RS PDout(12) //????/?ü?? PD12 #define LCD_WR PDout(11) //?????? PD11 #define LCD_RD PDout(10) //?????? PD10 #endif //PB0~15,×÷???????? //?????????ò????×÷??·±???????á?????????¨?é?±?????????÷??×÷?? //#define DATAOUT(x) GPIOD->ODR=x; //???????? //#define DATAIN GPIOB->IDR //???????? //#define DATAOUT(x) {\ // GPIOD->ODR&=((x&0x0001)<<9);\ // GPIOD->ODR&=((x&0x0002)<<7);\ // GPIOE->ODR&=((x&0x0004)<<13);\ // GPIOE->ODR&=((x&0x0008)<<11);\ // GPIOE->ODR&=((x&0x0010)<<9);\ // GPIOE->ODR&=((x&0x0020)<<7);\ // GPIOE->ODR&=((x&0x0040)<<5);\ // GPIOE->ODR&=((x&0x0080)<<3);\ // GPIOE->ODR&=((x&0x0100)<<1);\ // GPIOE->ODR&=((x&0x0200)>>1);\ // GPIOE->ODR&=((x&0x0400)>>3);\ // GPIOG->ODR&=((x&0x0800)>>10);\ // GPIOG->ODR&=((x&0x1000)>>12);\ // GPIOF->ODR&=((x&0x2000)<<2);\ // GPIOF->ODR&=((x&0x4000));\ // GPIOF->ODR&=((x&0x8000)>>2);\ //} //#define DATAIN (GPIOD->IDR&0xFCFF)|(GPIOE->IDR&0x007F)|(GPIOG->IDR&0xFFFC)|(GPIOF->IDR&0x1FFF); #define DATAIN ((GPIOD->IDR&0x0200)>>9)|(((GPIOD->IDR&0x0100)>>8)<<1)|(((GPIOE->IDR&0x8000)>>15)<<2)|(((GPIOE->IDR&0x4000)>>14)<<3)|(((GPIOE->IDR&0x2000)>>13)<<4)|(((GPIOE->IDR&0x1000)>>12)<<5)|(((GPIOE->IDR&0x0800)>>11)<<6)|(((GPIOE->IDR&0x0400)>>10)<<7)|(((GPIOE->IDR&0x0200)>>9)<<8)|(((GPIOE->IDR&0x0100)>>8)<<9)|(((GPIOE->IDR&0x0080)>>7)<<10)|(((GPIOG->IDR&0x0002)>>1)<<11)|((GPIOG->IDR&0x0001)<<12)|(((GPIOF->IDR&0x8000)>>15)<<13)|(((GPIOF->IDR&0x4000)>>14)<<14)|(((GPIOG->IDR&0x2000)>>13)<<15); /* #define DATAOUT(x) {GPIO_Write(GPIOB,x);} #define DATAIN GPIOB->IDR */ ////////////////////////////////////////////////////////////////////// //??±????? #define WHITE 0xFFFF #define BLACK 0x0000 #define BLUE 0x001F #define BRED 0XF81F #define GRED 0XFFE0 #define GBLUE 0X07FF #define RED 0xF800 #define MAGENTA 0xF81F #define GREEN 0x07E0 #define CYAN 0x7FFF #define YELLOW 0xFFE0 #define BROWN 0XBC40 //×??? #define BRRED 0XFC07 //×??ì?? #define GRAY 0X8430 //???? //GUI???? #define DARKBLUE 0X01CF //?????? #define LIGHTBLUE 0X7D7C //?????? #define GRAYBLUE 0X5458 //?????? //??????????PANEL?????? #define LIGHTGREEN 0X841F //?????? //#define LIGHTGRAY 0XEF5B //??????(PANNEL) #define LGRAY 0XC618 //??????(PANNEL),?°??±??°?? #define LGRAYBLUE 0XA651 //????????(??????????) #define LBBLUE 0X2B12 //??×?????(??????????·???) extern u16 BACK_COLOR, POINT_COLOR ; void LCD_Init(void); void LCD_DisplayOn(void); void LCD_DisplayOff(void); void LCD_Clear(u16 Color); void LCD_SetCursor(u16 Xpos, u16 Ypos); void LCD_DrawPoint(u16 x,u16 y);//???? u16 LCD_ReadPoint(u16 x,u16 y); //???? void Draw_Circle(u16 x0,u16 y0,u8 r); void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2); void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2); void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color); void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode);//????????×?·? void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size); //??????????×? void LCD_Show2Num(u16 x,u16 y,u16 num,u8 len,u8 size,u8 mode);//????2????×? void LCD_ShowString(u16 x,u16 y,const u8 *p); //????????×?·??®,16×??? void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue); u16 LCD_ReadReg(u8 LCD_Reg); void LCD_WriteRAM_Prepare(void); void LCD_WriteRAM(u16 RGB_Code); u16 LCD_ReadRAM(void); u16 LCD_BGR2RGB(u16 c); //??8?????????? //???ê?¨??,?á??????. #if LCD_FAST_IO==1 //?ì??IO #define LCD_WR_DATA(data){\ LCD_RS_SET;\ LCD_CS_CLR;\ DATAOUT(data);\ LCD_WR_CLR;\ LCD_WR_SET;\ LCD_CS_SET;\ } #else//????IO #define LCD_WR_DATA(data){\ LCD_RS=1;\ LCD_CS=0;\ DATAOUT(data);\ LCD_WR=0;\ LCD_WR=1;\ LCD_CS=1;\ } #endif //9320/9325 LCD?????÷ #define R0 0x00 #define R1 0x01 #define R2 0x02 #define R3 0x03 #define R4 0x04 #define R5 0x05 #define R6 0x06 #define R7 0x07 #define R8 0x08 #define R9 0x09 #define R10 0x0A #define R12 0x0C #define R13 0x0D #define R14 0x0E #define R15 0x0F #define R16 0x10 #define R17 0x11 #define R18 0x12 #define R19 0x13 #define R20 0x14 #define R21 0x15 #define R22 0x16 #define R23 0x17 #define R24 0x18 #define R25 0x19 #define R26 0x1A #define R27 0x1B #define R28 0x1C #define R29 0x1D #define R30 0x1E #define R31 0x1F #define R32 0x20 #define R33 0x21 #define R34 0x22 #define R36 0x24 #define R37 0x25 #define R40 0x28 #define R41 0x29 #define R43 0x2B #define R45 0x2D #define R48 0x30 #define R49 0x31 #define R50 0x32 #define R51 0x33 #define R52 0x34 #define R53 0x35 #define R54 0x36 #define R55 0x37 #define R56 0x38 #define R57 0x39 #define R59 0x3B #define R60 0x3C #define R61 0x3D #define R62 0x3E #define R63 0x3F #define R64 0x40 #define R65 0x41 #define R66 0x42 #define R67 0x43 #define R68 0x44 #define R69 0x45 #define R70 0x46 #define R71 0x47 #define R72 0x48 #define R73 0x49 #define R74 0x4A #define R75 0x4B #define R76 0x4C #define R77 0x4D #define R78 0x4E #define R79 0x4F #define R80 0x50 #define R81 0x51 #define R82 0x52 #define R83 0x53 #define R96 0x60 #define R97 0x61 #define R106 0x6A #define R118 0x76 #define R128 0x80 #define R129 0x81 #define R130 0x82 #define R131 0x83 #define R132 0x84 #define R133 0x85 #define R134 0x86 #define R135 0x87 #define R136 0x88 #define R137 0x89 #define R139 0x8B #define R140 0x8C #define R141 0x8D #define R143 0x8F #define R144 0x90 #define R145 0x91 #define R146 0x92 #define R147 0x93 #define R148 0x94 #define R149 0x95 #define R150 0x96 #define R151 0x97 #define R152 0x98 #define R153 0x99 #define R154 0x9A #define R157 0x9D #define R192 0xC0 #define R193 0xC1 #define R229 0xE5 #endif [/mw_shl_code]


[/mw_shl_code]
[mw_shl_code=c,true] [/mw_shl_code]

问题:tftlcd复位时闪一下然后黑屏
烦请大家帮我看看,谢谢啦

最佳答案

查看完整内容[请看2#楼]

回复【5楼】hui: --------------------------------- 永远不要修改PF12的状态! 你这代码完全不对。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-1 15:34:21 | 显示全部楼层
回复【5楼】hui:
---------------------------------
永远不要修改PF12的状态!

你这代码完全不对。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2015-8-1 16:24:38 | 显示全部楼层
帮顶。。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-1 19:11:49 | 显示全部楼层
仿真调试,黑屏肯定是背光控制的问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2015-8-1
在线时间
0 小时
 楼主| 发表于 2015-8-1 20:49:12 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
嗯,仿真了,背光是在这里黑掉的

void DATAOUT(u16 x)  {
          GPIOD->ODR&=((x&0x0001)<<9);
  GPIOD->ODR&=((x&0x0002)<<7);
           GPIOE->ODR&=((x&0x0004)<<13);
  GPIOE->ODR&=((x&0x0008)<<11);
  GPIOE->ODR&=((x&0x0010)<<9);
          GPIOE->ODR&=((x&0x0020)<<7);
  GPIOE->ODR&=((x&0x0040)<<5);
  GPIOE->ODR&=((x&0x0080)<<3);
  GPIOE->ODR&=((x&0x0100)<<1);
  GPIOE->ODR&=((x&0x0200)>>1);
  GPIOE->ODR&=((x&0x0400)>>3);
  GPIOG->ODR&=((x&0x0800)>>10);
         GPIOG->ODR&=((x&0x1000)>>12);
          GPIOF->ODR&=((x&0x2000)<<2);//背光在这里黑掉的
  GPIOF->ODR&=((x&0x4000));
  GPIOF->ODR&=((x&0x8000)>>2);
}
麻烦帮我看看,是DATAOUT有问题吗?我数据线比较乱
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2015-8-1
在线时间
0 小时
 楼主| 发表于 2015-8-1 21:07:42 | 显示全部楼层


荧光处是背光黑掉的地方
背光控制是PF12,请问一下,我的DATAOUT该怎么写呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 22:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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