专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
2.6寸TFT显示少一块,驱动芯片ILI9320
2020-02-05 08:58
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
12605
12
12
用51驱动2.6寸彩屏,驱动芯片是ILI9320,可以显示,但总是少一块显示不了,调整寄存器参数还是依旧,有经验的朋友指点一下!
263.jpg
(118.22 KB, 下载次数: 1)
下载附件
2012-3-24 18:32 上传
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
lanqilove
1楼-- · 2020-02-05 12:46
首先看看屏幕是不是正常,如果屏幕正常的话那肯定是你FOR循环少了点什么。你也不传代码上来看看
加载中...
szyy
2楼-- · 2020-02-05 14:06
我遇到过类似的问题,也是屏幕一边有白条区域不显示。最后是发现初始化的时候一个寄存器的地址搞错了,改正后就好了。
加载中...
weavr
3楼-- · 2020-02-05 14:49
精彩回答 2 元偷偷看……
加载中...
WZW
4楼-- · 2020-02-05 15:56
你好,我的TFT遇到了和你的不一样的问题,看能不能帮忙看一下,好像和你的TFT是一样的,驱动芯片和长相都一样(我的是在淘宝买的,给了例程驱动,51的,我的是STM32),我把51的移植过来,就是驱动不了,一直白屏。
我修改的代码:(只拿了我修改的部分)
//**************51控制端口定义********************
//#define DataPort P0 //数据口使用DataPort
//sbit RS =P2^5; //数据/命令选择
//sbit RW =P2^4; //写数据/命令
//sbit nRD =P2^3; //读控制
//sbit CS =P2^2; //片选
//sbit RES =P2^1; //复位
//sbit LE =P2^0; //74HC573锁存控制
//**************STM32控制端口定义********************
#define RS_SET GPIO_SetBits(GPIOE,GPIO_Pin_14) //RS
#define RS_RSET GPIO_ResetBits(GPIOE,GPIO_Pin_14)
#define RW_SET GPIO_SetBits(GPIOE,GPIO_Pin_13) //RW
#define RW_RSET GPIO_ResetBits(GPIOE,GPIO_Pin_13)
#define RD_SET GPIO_SetBits(GPIOE,GPIO_Pin_12) //RD
#define RD_RSET GPIO_ResetBits(GPIOE,GPIO_Pin_12)
#define CS_SET GPIO_SetBits(GPIOD,GPIO_Pin_0) //CS
#define CS_RSET GPIO_ResetBits(GPIOD,GPIO_Pin_0)
#define RES_SET GPIO_SetBits(GPIOD,GPIO_Pin_1) //RES
#define RES_RSET GPIO_ResetBits(GPIOD,GPIO_Pin_1)
#define LE_SET GPIO_SetBits(GPIOD,GPIO_Pin_2) //LE
#define LE_RSET GPIO_ResetBits(GPIOD,GPIO_Pin_2)
//================================================================================================
// 实现功能: 写命令
// 输入参数: DH 需要输入16bits命令的高8位
// DL 需要输入16bits命令的低8位
//================================================================================================
void Write_Cmd(unsigned char DH,unsigned char DL)
{
u16 readdata;
// RD_SET;//nRD=1;
// RW_SET;//RW=0;==
//delay_ms(1);//delayms(1);
//注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
readdata &= 0X00FF;
readdata |= (((u16)DL)<<8)&0XFF00;
GPIO_Write(GPIOD,readdata);//DataPort=DL; //送低8位命令给573待锁存
//delay_ms(1);
LE_SET;//LE=1; //锁存位
//delay_ms(1);//delayms(1);
LE_RSET;//LE=0; //断开锁存,位选573的Q7~Q0仍保持
//delay_ms(1);//delayms(1);
readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
readdata &= 0X00FF;
readdata |= (((u16)DH)<<8)&0XFF00;
GPIO_Write(GPIOD,readdata);//DataPort=DH; //送高8位命令给TFT
//delay_ms(1);
//delayms(1);
/*
//如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
DataPort_L=DL;
DataPort_H=DH;
*/
CS_RSET;//CS=0; 使能TFT操作
RS_RSET;//RS=0; 低电平写地址
RW_RSET;
RW_SET;//RW=1;给低脉冲写操作 <500ns
CS_SET;//CS=1;TFT关使能
}
//================================================================================================
// 实现功能: 写数据(2*8bits)
// 输入参数: DH 需要输入16bits数据的高8位
// DL 需要输入16bits数据的低8位
//================================================================================================
void Write_Data(unsigned char DH,unsigned char DL)
{
u16 readdata;
//delay_ms(1);//delayms(1);
//注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
readdata &= 0X00FF;
readdata |= (((u16)DL)<<8)&0XFF00;
GPIO_Write(GPIOD,readdata);//DataPort=DL; //送低8位命令给573待锁存
//delay_ms(1);//delayms(1);
LE_SET;//LE=1; //锁存位
//delay_ms(1);//delayms(1);
LE_RSET;//LE=0; //断开锁存,位选573的Q7~Q0仍保持
//delay_ms(1);//delayms(1);
readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
readdata &= 0X00FF;
readdata |= (((u16)DH)<<8)&0XFF00;
GPIO_Write(GPIOD,readdata);//DataPort=DH; //送高8位命令给TFT
//delay_ms(1);//delayms(1);
/*
//如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
DataPort_L=DL;
DataPort_H=DH;
*/
CS_RSET;//CS=0;使能TFT操作
RS_SET;//RS=1;高电平写数据
RW_RSET;//RW=0;
RW_SET;//RW=1;给个低脉冲,写操作 <500ns
CS_SET;//CS=1;关使能
}
51代码:
//**************控制端口定义********************
#define DataPort P4 //数据口使用DataPort
#define RS P35 //数据/命令选择
#define RW P34 //写数据/命令
#define nRD P33 //读控制
#define CS P32 //片选
#define RES P31 //复位
#define LE P30 //74HC573锁存控制
//================================================================================================
// 实现功能: 写命令
// 输入参数: DH 需要输入16bits命令的高8位
// DL 需要输入16bits命令的低8位
//================================================================================================
void Write_Cmd(unsigned char DH,unsigned char DL)
{
CS=0;
RS=0;
nRD=1;
RW=0;
//注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
DataPort=DL; //送低8位命令给573待锁存
LE=1; //锁存位
LE=0; //断开锁存,位选573的Q7~Q0仍保持
DataPort=DH; //送高8位命令给TFT
/*
//如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
DataPort_L=DL;
DataPort_H=DH;
*/
RW=1;
CS=1;
}
//================================================================================================
// 实现功能: 写数据(2*8bits)
// 输入参数: DH 需要输入16bits数据的高8位
// DL 需要输入16bits数据的低8位
//================================================================================================
void Write_Data(unsigned char DH,unsigned char DL)
{
CS=0;
RS=1;
//注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
DataPort=DL; //送低8位数据给573待锁存
LE=1; //锁存位
LE=0; //断开锁存,位选573的Q7~Q0仍保持
DataPort=DH; //送高8位数据给TFT
/*
//如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
DataPort_L=DL;
DataPort_H=DH;
*/
RW=0;
RW=1;
CS=1;
}
加载中...
WZW
5楼-- · 2020-02-05 20:38
请把你的驱动程序传上来我参考一下,可以吗?谢谢!
加载中...
loohoo0302
6楼-- · 2020-02-05 23:46
如果右边刚好有64个象素空白,考虑下是不是把short给char了?
加载中...
1
2
下一页
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
东软载波ESF0654 PDS开发板串口USART0代码分享
1 个回答
普通32位单片机使用linux的应用代码
5 个回答
东软载波ESF0654 PDS开发板AT24C04的调试
9 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
我修改的代码:(只拿了我修改的部分)
//**************51控制端口定义********************
//#define DataPort P0 //数据口使用DataPort
//sbit RS =P2^5; //数据/命令选择
//sbit RW =P2^4; //写数据/命令
//sbit nRD =P2^3; //读控制
//sbit CS =P2^2; //片选
//sbit RES =P2^1; //复位
//sbit LE =P2^0; //74HC573锁存控制
//**************STM32控制端口定义********************
#define RS_SET GPIO_SetBits(GPIOE,GPIO_Pin_14) //RS
#define RS_RSET GPIO_ResetBits(GPIOE,GPIO_Pin_14)
#define RW_SET GPIO_SetBits(GPIOE,GPIO_Pin_13) //RW
#define RW_RSET GPIO_ResetBits(GPIOE,GPIO_Pin_13)
#define RD_SET GPIO_SetBits(GPIOE,GPIO_Pin_12) //RD
#define RD_RSET GPIO_ResetBits(GPIOE,GPIO_Pin_12)
#define CS_SET GPIO_SetBits(GPIOD,GPIO_Pin_0) //CS
#define CS_RSET GPIO_ResetBits(GPIOD,GPIO_Pin_0)
#define RES_SET GPIO_SetBits(GPIOD,GPIO_Pin_1) //RES
#define RES_RSET GPIO_ResetBits(GPIOD,GPIO_Pin_1)
#define LE_SET GPIO_SetBits(GPIOD,GPIO_Pin_2) //LE
#define LE_RSET GPIO_ResetBits(GPIOD,GPIO_Pin_2)
//================================================================================================
// 实现功能: 写命令
// 输入参数: DH 需要输入16bits命令的高8位
// DL 需要输入16bits命令的低8位
//================================================================================================
void Write_Cmd(unsigned char DH,unsigned char DL)
{
u16 readdata;
// RD_SET;//nRD=1;
// RW_SET;//RW=0;==
//delay_ms(1);//delayms(1);
//注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
readdata &= 0X00FF;
readdata |= (((u16)DL)<<8)&0XFF00;
GPIO_Write(GPIOD,readdata);//DataPort=DL; //送低8位命令给573待锁存
//delay_ms(1);
LE_SET;//LE=1; //锁存位
//delay_ms(1);//delayms(1);
LE_RSET;//LE=0; //断开锁存,位选573的Q7~Q0仍保持
//delay_ms(1);//delayms(1);
readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
readdata &= 0X00FF;
readdata |= (((u16)DH)<<8)&0XFF00;
GPIO_Write(GPIOD,readdata);//DataPort=DH; //送高8位命令给TFT
//delay_ms(1);
//delayms(1);
/*
//如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
DataPort_L=DL;
DataPort_H=DH;
*/
CS_RSET;//CS=0; 使能TFT操作
RS_RSET;//RS=0; 低电平写地址
RW_RSET;
RW_SET;//RW=1;给低脉冲写操作 <500ns
CS_SET;//CS=1;TFT关使能
}
//================================================================================================
// 实现功能: 写数据(2*8bits)
// 输入参数: DH 需要输入16bits数据的高8位
// DL 需要输入16bits数据的低8位
//================================================================================================
void Write_Data(unsigned char DH,unsigned char DL)
{
u16 readdata;
//delay_ms(1);//delayms(1);
//注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
readdata &= 0X00FF;
readdata |= (((u16)DL)<<8)&0XFF00;
GPIO_Write(GPIOD,readdata);//DataPort=DL; //送低8位命令给573待锁存
//delay_ms(1);//delayms(1);
LE_SET;//LE=1; //锁存位
//delay_ms(1);//delayms(1);
LE_RSET;//LE=0; //断开锁存,位选573的Q7~Q0仍保持
//delay_ms(1);//delayms(1);
readdata = GPIO_ReadOutputData(GPIOD);//传数据给PD8~PD15(D10~D17),PD0~PD7值不变
readdata &= 0X00FF;
readdata |= (((u16)DH)<<8)&0XFF00;
GPIO_Write(GPIOD,readdata);//DataPort=DH; //送高8位命令给TFT
//delay_ms(1);//delayms(1);
/*
//如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
DataPort_L=DL;
DataPort_H=DH;
*/
CS_RSET;//CS=0;使能TFT操作
RS_SET;//RS=1;高电平写数据
RW_RSET;//RW=0;
RW_SET;//RW=1;给个低脉冲,写操作 <500ns
CS_SET;//CS=1;关使能
}
51代码:
//**************控制端口定义********************
#define DataPort P4 //数据口使用DataPort
#define RS P35 //数据/命令选择
#define RW P34 //写数据/命令
#define nRD P33 //读控制
#define CS P32 //片选
#define RES P31 //复位
#define LE P30 //74HC573锁存控制
//================================================================================================
// 实现功能: 写命令
// 输入参数: DH 需要输入16bits命令的高8位
// DL 需要输入16bits命令的低8位
//================================================================================================
void Write_Cmd(unsigned char DH,unsigned char DL)
{
CS=0;
RS=0;
nRD=1;
RW=0;
//注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
DataPort=DL; //送低8位命令给573待锁存
LE=1; //锁存位
LE=0; //断开锁存,位选573的Q7~Q0仍保持
DataPort=DH; //送高8位命令给TFT
/*
//如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
DataPort_L=DL;
DataPort_H=DH;
*/
RW=1;
CS=1;
}
//================================================================================================
// 实现功能: 写数据(2*8bits)
// 输入参数: DH 需要输入16bits数据的高8位
// DL 需要输入16bits数据的低8位
//================================================================================================
void Write_Data(unsigned char DH,unsigned char DL)
{
CS=0;
RS=1;
//注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下
DataPort=DL; //送低8位数据给573待锁存
LE=1; //锁存位
LE=0; //断开锁存,位选573的Q7~Q0仍保持
DataPort=DH; //送高8位数据给TFT
/*
//如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可
DataPort_L=DL;
DataPort_H=DH;
*/
RW=0;
RW=1;
CS=1;
}
一周热门 更多>