OpenEdv-开源电子网

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

LCD_ReadReg的问题

[复制链接]

9

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2012-10-27
在线时间
1 小时
发表于 2012-11-17 08:46:36 | 显示全部楼层 |阅读模式

u16 LCD_ReadReg(u8 LCD_Reg)
{            
 u16 t;
 LCD_WR_REG(LCD_Reg);  //写入要读的寄存器号 
 GPIOB->CRL=0X88888888; //PB0-7  上拉输入
 GPIOB->CRH=0X88888888; //PB8-15 上拉输入
 GPIOB->ODR=0XFFFF;    //全部输出高
#if LCD_FAST_IO==1 //快速IO
 LCD_RS_SET;
 LCD_CS_CLR;
 //读取数据(读寄存器时,并不需要读2次)
 LCD_RD_CLR;
 delay_us(5);//FOR 8989,延时5us       
 LCD_RD_SET;
 t=DATAIN; 
 LCD_CS_SET;
#else
 LCD_RS=1;
 LCD_CS=0;
 //读取数据(读寄存器时,并不需要读2次)
 LCD_RD=0;       
 LCD_RD=1;
 t=DATAIN; 
 LCD_CS=1;
#endif 
 GPIOB->CRL=0X33333333; //PB0-7  上拉输出
 GPIOB->CRH=0X33333333; //PB8-15 上拉输出
 GPIOB->ODR=0XFFFF;    //全部输出高
 return t; 
}  
为什么刚开始是先写寄存器再设置成输入,这样数据能传进去吗?新手,请指教

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2012-11-17
在线时间
18 小时
发表于 2012-11-17 19:59:02 | 显示全部楼层
个人理解,RS、CS、RD、WR是有区别于数据线D[17:0]的,是用来写寄存器输入命令,然后才能在数据线D[17:0]上出现写读数据。

这个去看时序图就知道了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-11-17 23:03:51 | 显示全部楼层
回复【楼主位】勇往直前:
---------------------------------
因为读时序就是这样的,你必须先写地址/命令,接着才能读数据。写的时候,当然要设置为输出了。读的时候,就要设置为输入。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 18:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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