在网上参考了大牛们的例程,自己用 STM32f103写的12864的驱动,终于可以显示字符了,还有些许功能没有摸透,抓住灵感,先把调试过程中遇到的问题记录下来,也许某天就可以有和我一样的小白遇到相同的问题,可以一起讨论呢。我是用的是12864的串口方式来写的驱动,原因是自己蛋疼,觉得并口需要连线麻烦。然后.........12864是支持8位并口,四位并口,以及串行操作的,这里的串行操作是指SPI总线的方式,而不是UART的那种串行哦。
- 1:关于时,参考网上的资料,12864内部是个移位寄存器,锁数据是发生在SPI时钟线的上升沿,PS:所以,这里就给了我们可以做很猥琐的事情——不一定要在时钟的下降沿更新数据,其实使用单片机也是没有把法实现真正的下降沿更新数据的。你可以在SPI时钟线的除了上升沿之外的任何时候更新数据,当然,为了避免不必要的麻烦,在时钟上升沿之后的一小段时间最好还是不要更新数据的好,留点时间12864和数据相处的时间。
- 2:关于命令,一看datasheet,好多好多的命令(其实我到现在也没有全看完测完那些命令),我只懂得了那么多命令中,分两类,一类是显示字符用的,一类是显示图片用的。对待命令,个人在调试过程中的经验就是:你需要开启什么功能的时候一定要先输送统领那个功能的命令,比如需要设定显示字符的位置,设定位置,这个是分属在基础命令之中的,所以要先写30命令,如果你要开启画图的,估计要先写34(这个我没有侧过,但是在设定位置不先写30的话,我在调试过程中是没办法设定位置的)。
- 3:关于数据和命令的区别,记得在12864的并口盘上是写有RS接口的,小白我刚刚开始接手12864串行发送的时候就纳闷,我给它发个数据,这货怎么知道我发的是命令还是数据啊?将数据手册的一段话摘抄如下:::::一个完整的串行传输周期由一下部分组成:首先送入启动字节,送入5 个连续的“1”用来启动一个周期,此时传输计数被重置,并且串行传输被同步。::::::紧接的两个位指定传输方向(RW,确定读还是写)和传输性质(RS,确定是命令寄存器还是数据寄存器),最后的第八位是一个“0”。发送数据的时候一同把这个数据的使用说明一同发给12864,然后他自己就会知道发送的这玩意到底是数据还是命令了。
- 4:关于发送命令和数据的格式,数据手册上规定了,发送数据或者命令的话,得分三个字节来发送,第一个字节,是你这个数据的使用说明,第二个字节是你真正要发送的数据或者命令的高四位(但也得凑成八位),第三个字节是你真正要发送的数据或者命令的低四位。
还有需要声明,因为这个驱动我还要移植到别的地方,所以里边用到的延时的话,有点点和数据手册说的不大一致,望读者明辨~
小白一个,如果有错的话,希望大家指出。
0
评分
-
查看全部评分
|
|
|
|
试一试 我正*** 谢谢分享 哈哈哈哈哈哈哈哈哈哈哈哈哈哈
|
|
|
|
|
xx66666666666666666666666666666666666666666
|
|
|
|
|
因为MDK版本的问题,你想办法搞成你使用的那个版本的MDK工程就ok的了
|
|
|
|
|