本次实验用来LCD显示图片,由于SAM4S_xplained测试板没有LCD,所以我用了测试板的外接I/O外接了一块LCD,通常我们所见到的LCD 模块具有LCM(玻璃)、背光、PCB板。其实返三样另外有一样是必须要有的,那就是LCM(玻璃)。没有背光无所谓,那没有PCB板,就一块玻璃有什么用啊。其实点阵的LCD模块按驱动控制器的集成方式,分为两种:COB和COG,COG就是将驱动控制芯片集成到了玻璃里面,我们只需要在电路板上加上无法集成的电容电阻就可以了;而COB是那种需要将驱动芯片焊接在LCD模块后面的PCB板上的。 我用到的就是这样一块是klcd-001,这是一款128*64癿COG液晶,它将驱动控制IC集成到了LCM上,返样就省去了PCB底板,给我们节省了很大的空间。下面,简单介绍一下这款液晶的一些参数,如下图所示,它的驱动芯片为ST7565P。支持三种接口方式,我们采用的是串行时序方式,接口简单,使用方便,相比其它方式,也节约了管脚。
LCD在我的外接板的电路原理图如下图。用的时候,我只是连接了电源线和地线,以及相关的四条线路,如LCD_CS、LCD_A0、LCD_SCL、LCD_SI。CS是片选信号,A0是数据\命令选择端。0是命令,1是数据。SCL是时钟线,SI是数据线。
在本实验中我使用了这款LCD显示了一幅图片,这图片大小是128*64,图片如下图所所示。之后用字模软件生成矩阵数组。
接着对我使用的扩展接口做一个介绍,我使用了扩展接口的J1上的PA4、PB3、PA13、PA14四个响应的管脚,其对应的管脚分别是LCD_CS、LCD_SCL、LCD_A0、LCD_SI。还有J3的+5V电源管脚和地线。下面是在函数中的管脚定义。 #define LCD_CS (PIO_PA4_IDX) #define LCD_SCL (PIO_PB3_IDX) #define LCD_A0 (PIO_PA13_IDX) #define LCD_SI (PIO_PA14_IDX) 下面说明以下程序中的函数。 static void configure_pin(void) 管脚设置函数,设置管脚的是输出管脚等。具体函数体见帖子中上传的程序。 void data_send(uint8_t dat) 发送一个字节函数 void write_command(uint8_t com) 写入命令函数 void write_data(uint8_t dat) 写入数据函数 void clear(void) 清屏函数 void draw_screen(uint8_t *p) 画图函数 void initialize_lcd(void) 初始化函数 在初始化函数中的用到一些LCD命令,下图是LCD命令汇总,在程序中出现的命令在下图中都可以找到相应的解释。
下图是此时实验的显示结果。
图片可能不太清除,还希望见谅,还就是此LCD是黑白点整,不是24位真彩色的TFT LCD,所以相关的程序写法也相对简单,由于本人没有那种TFT LCD,对此不足,还望谅解。呵呵!!!就写到这里了! |