LCD1602的时序图分析

感觉国内的教育就是一坨啊

在理解时序图时往往有很多类似潜规则的东西,没有人教的话,很难看懂,对小白很不友好

这边我来解释几个常见误区

1.几乎所有时间节点的位置都和电平变化的时间是错开的,我常以为这一操作另有深意。但其实时间节点,就该是和电平的改变的位置是一致的,之所以这么做是为了看起来更“清晰”(😀)2.在这边我们看到DB0-DB7的时序变化是在E开了高电平之后的,所以我一直想那不应该是先使能,再设置数据吗?但以常识来讲,应该是先把数据先设置好再使能啊???终于我了解到这幅图的意思是指,在Vaild data(有效数据)这段时间一定要保持数据不变,其侧重点在于这段时间数据是正确且不变,而在这一时刻之前的数据理论上来讲什么状态都是可以的,但流氓的一点在于,那我在这之前写正确的数据也不错啊(😀),所以在使能之前写数据是对的。

        那我使能之后写就错了?可以看到使能之后写数据给我们的时间只有红线这一块,这段时间其实是不确定的,只知道最小需要时间为Pwen-Tdsw=255ns,无法得知最大时间不能超过多少,但要在这一段时间写八位并口数据时间不一定能满足条件。假设89C51 的一个机器周期由 12 个时钟周期组成 。若外接晶振频率为 12MHz ,时钟周期是 (1/12\) μs ,机器周期就是 1μs 。那其实写入时间应该是1us,但即使这样我们还是无法得知能否在数据保持时间来临时,把正确的数据写上。所以我们没必要强行卡这个time(放过自己不好吗😀)。

        另外我们看到这个时序图好多地方有两个线组成,其实就是表示两种不同的情况。为什么会有两种情况呢(😀)?以RS位举例,因为写LCD1602分为写数据和写地址,用RS这一位来进行控制,所以在写操作的时序图上,就有两种时序啦。(所以为什么不弄写数据和写地址两个图呢?是觉得自己能用一张图表示两种状态很厉害吗😀,sb😀)

下面我来写一下LCD1602的写数据的伪代码

void LCD_WriteData()

{

//写数据时RS要置1

RS=1;

//RW在读和写中选择写,即置0

RW=0;

//把数据端上来把

LCD_D[8]=Data[8];

//使能

E=1;

//数据读取的时间至少要195ns

Delay();

E=0;

//数据读取完了还保持时间10ns,这么点时间可以不加吧。。。,至此结束

Delay();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值