周末出去玩了两天,刚到家,昨天有个同学咨询串行12864的东西,真不好意思,现在才以博客的形式来解答。
所谓12864的串行控制,只用到了三根线:CS、SID、SCLK,其中CS信号用来选择控制数据和指令的输入,SID就是数据线,SCLK使能信号线。
了解了几个引脚,我们再来看下时序图:
从时序图可以看出来,每一次操作都要写入三个字节:控制字节、高四位、低四位。其中写指令的时候是0xf8+cmd&0xf0+(cmd<<4)&0xf0,写数据是0xfa+data&0xf0+(data<<4)&0xf0。另外还有一点就是,数据是下降沿写入,昨天那位同学应该是这里出错了。
好了,需要了解的理论知识就这么多,我们现在开始写程序。
先写F2802x_LCD12864.h文件
// auther: wangdingfa
// Checkin $Date: July 31, 2016 22:45:31 $
//###########################################################################
//
// FILE: F2802x_LCD12864.h
//
// TITLE: LCD12864 Initialization & Support Functions.
//
#ifndef F2802x_LCD12864_H
#define F2802x_LCD12864_H
#define CS GpioDataRegs.GPADAT.bit.GPIO16
#define SID GpioDataRegs.GPADAT.bit.GPIO17
#define SCLK GpioDataRegs.GPADAT.bit.GPIO18
void SendByte_LCD12864(unsigned char byte);
void WRITEDATA_LCD12864(unsigned char data);
void WRITECMD_LCD12864(unsigned char cmd);
void InitLCD12864(void);
#endif // end of F2802x_LCD12864_H definition
//===========================================================================
// End of file.
//================================================