在日常的学习中我学习了16*2的黑白屏LCD1602,如今在完成MP3的制作时,黑白屏已经不能满足需求,所以要使用彩屏。彩屏我选择使用LCD12864。
1.LCD12864的样式
LCD12864是由于此屏由128*64格得名,
2.LCD12864的接法
LCD12864一共有20个管脚,在德飞莱开发板上是这样接的。
彩屏占用了P0口和P2口,所以在使用彩屏时,应尽量减少在P2口和P0的布线,除非是短暂性的操作,例如按键之类的操作。
3.LCD12864的程序
鉴于LCD12864的数据手册,可以写出以下程序:
//LCD 模块初始化
void initial_lcd() reentrant
{
lcd_reset=; //低电平复位
delay();
lcd_reset=; //复位完毕
delay();
transfer_command_lcd(); //软复位
delay();
transfer_command_lcd(); //升压步聚1
delay();
transfer_command_lcd(); //升压步聚2
delay();
transfer_command_lcd(); //升压步聚3
delay();
transfer_command_lcd(); //粗调对比度,可设置范围0x20~0x27
transfer_command_lcd(); //微调对比度
transfer_command_lcd(); //微调对比度的值,可设置范围0x00~0x3f
transfer_command_lcd(); //1/9 偏压比(bias)
transfer_command_lcd(); //行扫描顺序:从上到下
transfer_command_lcd(); //列扫描顺序:从左到右
transfer_command_lcd(); //起始行:第一行开始
transfer_command_lcd(); //开显示
}
void lcd_address(uint page,uint column)
{
column=column-;
transfer_command_lcd(+page-); //设置页地址,每8 行为一页,全屏共64 行,被分成8 页
transfer_command_lcd(+(column>>&)); //设置列地址的高4 位
transfer_command_lcd(column&); //设置列地址的低4 位
}
//全屏清屏
void clear_screen() reentrant
{
unsigned char i,j;
for(i=;i<;i++)
{
transfer_command_lcd(+i);
transfer_command_lcd();
transfer_command_lcd();
for(j=;j<;j++)
{
transfer_data_lcd();
}
}
}