完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
本人儿时痴迷电子,十余岁得一MP4,迷之,觉其小小屏幕,却能观花鸟虫鱼百兽,寻其原理,恐余年少,不得解。便励志日后必要知其理。而今,年长,购得一STM32核心板加一TFT(ST7789V),敲代码四周,惜TFT依旧白屏无响应,读数据,无所获。郁闷,恨年少励志,却不能完成。今在此一帖,若有能有幸,得大神相助,了却儿时心愿,便无悔,定将平生所积积分赠与大神!坐等!!! 代码奉上(无关代码 没有上):
LCD_Init.c #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "LCD_Init.h" #include "SystickInit.h" //初始化GPIO /** DB0-DB15 GPIOF0-GPIOF15 CS GPIOE2 RS GPIOE3 WR GPIOE4 RD GPIOE5 IM0 GPIOE6 IM3 GPIOE7 REST GPIOE8 **/ void LCD_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF,ENABLE); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_Init(GPIOE,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; // GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(GPIOF,&GPIO_InitStructure); LCD_CS_SET; LCD_IM3_CLR; LCD_IM0_CLR; LCD_RST_SET; Delay_us(200);//延时2ms LCD_RST_CLR; Delay_us(2000);//延时20ms LCD_RST_SET; } void LCD_GPIO_Init2(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE); GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(GPIOF,&GPIO_InitStructure); } void LCD_WR_Data(u16 dat) { LCD_RS_SET; LCD_RD_SET; LCD_WR_SET; LCD_CS_CLR; GPIOF->ODR=dat; LCD_WR_CLR; LCD_WR_SET; Delay_us(10); LCD_CS_SET; } void LCD_WR_Cmd(u8 cmd) { LCD_RS_CLR; LCD_RD_SET; LCD_WR_SET; LCD_CS_CLR; GPIOF->ODR=cmd; //GPIO_SetBits(GPIOF,GPIO_Pin_2); LCD_WR_CLR; LCD_WR_SET; Delay_us(10); LCD_CS_SET; } u16 LCD_RD_Cmd(void) { u16 dat; LCD_RS_SET; LCD_RD_SET; LCD_WR_SET; LCD_CS_CLR; LCD_RD_CLR; LCD_RD_SET; dat=GPIO_ReadInputData(GPIOF); Delay_us(10); LCD_CS_SET; return dat; } void LCD_WR_Reg(u16 reg,u16 dat) { LCD_WR_Cmd(reg); LCD_WR_Data(dat); } void LCD_Init(void) { LCD_GPIO_Init(); LCD_WR_Cmd(0xaa); LCD_WR_Cmd(0xb2); LCD_WR_Data(0x0c); LCD_WR_Data(0x0c); LCD_WR_Data(0x00); LCD_WR_Data(0x33); LCD_WR_Data(0x33); LCD_WR_Cmd(0xb7); LCD_WR_Data(0x35); //---------------------------------ST7789S Power setting--------------------------------------// LCD_WR_Cmd(0xbb); LCD_WR_Data(0x2b); LCD_WR_Cmd(0xc3); LCD_WR_Data(0x17); LCD_WR_Cmd(0xc4); LCD_WR_Data(0x20); LCD_WR_Cmd(0xc6);//NLA2 NLA1 NLA0 (0x00: dot/0x07: column) RTNA4 RTNA3 RTNA2 RTNA1 RTNA0 Frame LCD_WR_Data(0x0f); LCD_WR_Cmd(0x3A); LCD_WR_Data(0x55); LCD_WR_Cmd(0x36); LCD_WR_Data(0x00); LCD_WR_Cmd(0xd0); LCD_WR_Data(0xa4); LCD_WR_Data(0xa2); //--------------------------------ST7789S gamma setting---------------------------------------// LCD_WR_Cmd(0xe0); LCD_WR_Data(0xf0); LCD_WR_Data(0x00); LCD_WR_Data(0x0a); LCD_WR_Data(0x10); LCD_WR_Data(0x12); LCD_WR_Data(0x1b); LCD_WR_Data(0x39); LCD_WR_Data(0x44); LCD_WR_Data(0x47); LCD_WR_Data(0x28); LCD_WR_Data(0x12); LCD_WR_Data(0x10); LCD_WR_Data(0x16); LCD_WR_Data(0x1b); LCD_WR_Cmd(0xe1); LCD_WR_Data(0xf0); LCD_WR_Data(0x00); LCD_WR_Data(0x0a); LCD_WR_Data(0x10); LCD_WR_Data(0x11); LCD_WR_Data(0x1a); LCD_WR_Data(0x3b); LCD_WR_Data(0x34); LCD_WR_Data(0x4e); LCD_WR_Data(0x3a); LCD_WR_Data(0x17); LCD_WR_Data(0x16); LCD_WR_Data(0x21); LCD_WR_Data(0x22); LCD_WR_Cmd(0x11); // Sleep out Delay_us(10000); LCD_WR_Cmd(0x29); // Display on LCD_WR_Cmd(0x2c); } void LCD_Brush(void) { int i,j; LCD_GPIO_Init(); LCD_WR_Cmd(0x002C); for(i=0;i<320;i++) { for(j=0;j<240;j++) { // LCD_WRITE_DATA(color>>8); // LCD_WRITE_DATA(color); LCD_WR_Data(0x00); } } while(1); } main.c #include "stm32f10x.h" #include "SysTickInit.h" #include "LCD_Init.h" #include "LED_TEST.h" #include "USART3_Config.h" int main() { u16 dat; SystemInit(); SysTickInit(); //led_test(); //LCD_Init(); // LCD_Brush(); USART3_Init(); LCD_GPIO_Init(); LCD_WR_Cmd(0x01); while(1) { Delay_us(500000); LCD_GPIO_Init(); LCD_WR_Cmd(0x04); dat=GPIO_ReadOutputData(GPIOF); LCD_GPIO_Init2(); SendData(dat); dat=LCD_RD_Cmd(); // SendData(dat); // LCD_GPIO_Init2(); SendData(dat); dat=LCD_RD_Cmd(); // SendData(dat); // LCD_GPIO_Init2(); SendData(dat); dat=LCD_RD_Cmd(); SendData(dat); dat=LCD_RD_Cmd(); // SendData(dat); // LCD_GPIO_Init2(); SendData(dat); // Delay_us(500000); } } |
|
相关推荐
15个回答
|
|
|
看你的程序有些乱,思路也有些不清,没用过这个液晶,不过先确定几个情况,一,说明了液晶驱动芯片的型号,但没说明液晶接口如何。二,void LCD_GPIO_Init(void)设置了单片机引脚为输出,但同时对液晶也进行了复位,个人认为,最好把液晶复位部分单独写个子程序。三,看主程序,是读取液晶的ID,但读取是否成功并没有说明。四,因为void LCD_GPIO_Init(void)同时对液晶复位,所以主程序每读一次ID前都对液晶复位了一次,不清楚对读ID是否有影响。五,有对LCD_IM3_CLR;LCD_IM0_CLR;进行设置,但不清楚液晶的接口说明,所以不清楚你现在的设置是8位接口,还是16位接口。
最佳答案
评分
|
||
|
|
||
|
|
|
人中狼 发表于 2017-6-1 11:06 感谢大兄弟回复 现在用的8位 读取不成功 一直为0xffff |
|
|
|
|
|
谢谢回复 我现在读取id一直为oxffff 使用8位口 |
|
|
|
|
|
最好能给出屏的型号和资料,得确定是否真的在8位接口方式,接触过几款9325和9341的屏,都是需要更改屏上电路的电阻来选择8位或16位的。
|
|
|
|
|
|
来,交流交流,不知道你写的啥,哈哈
|
|
|
|
|
|
你写程序的时候能不能加点注释,看的心好累啊,还的翻回来翻过看是什么
|
|
|
|
|
|
马上补充 屏幕资料和电路 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
很多地方都写的错了
|
|
|
|
|
|
不错,很好的经验分享,这方面资料欠缺,非常感谢,麻烦了,谢谢。
|
|
|
|
|
|
不错的经验分享,这方面欠缺资料,辛苦麻烦了,非常感谢。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
693 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
681 浏览 0 评论
有人有STM8H1K08T连接TM1650的源码吗,可以直接使用的那种,我的代码在烧录之后数码管一直处于熄灭状态
993 浏览 0 评论
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
781 浏览 0 评论
893 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16958 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-9 07:36 , Processed in 1.088145 second(s), Total 111, Slave 92 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3339