完整word版lcd12864 课程设计.docx
《完整word版lcd12864 课程设计.docx》由会员分享,可在线阅读,更多相关《完整word版lcd12864 课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
完整word版lcd12864课程设计
LCD12864
1.总体设计思路
SMG12864一般用于显示汉字,字符,分辨率不高的bmp图像,可用来显示传感器采集到信息,是单片机和人交换信息的窗口,
2.方案设计
3.硬件设计
单片机控制12864的管脚来显示想要的字符和图像,P0用来发送必要的指令和数据,P2口协助P1口给12864写数据,
1.指令寄存器(IR)
IR是用于寄存指令码,与数据寄存器数据相对应。
当D/I=0时,在E信号下
降沿的作用下,指令码写入IR。
2.数据寄存器(DR)
DR是用于寄存数据的,与指令寄存器寄存指令相对应。
当D/I=1时,在下降
沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0
数据总线。
DR和DDRAM之间的数据传输是模块内部自动执行的。
3.忙标志:
BF
BF标志提供内部工作情况。
BF=1表示模块在内部操作,此时模块不接受外部
指令和数据。
BF=0时,模块为准备状态,随时可接受外部指令和数据。
利用STATUSREAD指令,可以将BF读到DB7总线,从检验模块之工作状态。
4.显示控制触发器DFF
此触发器是用于模块屏幕显示开和关的控制。
DFF=1为开显示(DISPLAYOFF),
DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFF)。
DDF的状态是指令DISPLAYON/OFF和RST信号控制的。
5.XY地址计数器
XY地址计数器是一个9位计数器。
高3位是X地址计数器,低6位为Y地址
计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM
的页指针,Y地址计数器为DDRAM的Y地址指针。
X地址计数器是没有记数功能的,只能用指令设置。
Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地
址指针从0到63。
6.显示数据RAM(DDRAM)
DDRAM是存储图形显示数据的。
数据为1表示显示选择,数据为0表示显示
非选择。
DDRAM与地址和显示位置的关系见DDRAM地址表(见第6页)。
7.Z地址计数器
Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显
示行扫描同步。
当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,
4.软件设计
5.总结
这个实验做得很不顺利,遇到的问题很多,主要有三方面,1)看说明书比较纠结,看好几次都不能完全理解,D/I为发送数据,D/I为低时发送指令,是什么意思,何时发送数据何时发送指令,SMG12864内部没有字库要显示汉字时要先取字模,这个是比较麻烦的事。
2)SMG12864内部地址的设置,起始地址的设置可以在初始化时设置也可以在送数据之前设置,X和Y地址是在起始地址上增加的偏移量。
3)调程序时忽略了两个警告,本以为警告是可以忽略的,程序调了两天都没有修改被警告的部分,所以两天时间都没能搞明白是真么回事。
一个小小的警告纠结了我两天,警告最好不要忽略,以免引起不必要的麻烦。
附件
1.硬件资料芯片资料
..\芯片资料\AT89S52.pdf
..\芯片资料\12864.pdf
2.原理图SCH
3.软件源代码
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitRS=P2^4;
sbitR_W=P2^3;
sbitE=P2^2;
sbitCS1=P2^1;
sbitCS2=P2^0;
ucharcodedat[]={
/*--调入了一幅图像:
C:
\DocumentsandSettings\Administrator\桌面\55486830_1.bmp--*/
/*--宽度x高度=88x128--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7E,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x0C,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x07,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x60,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x79,0x98,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xFF,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
0xFC,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x0C,0x00,0x00,
0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,
0x00,0x00,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x3C,0xF0,0x00,
0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x01,
0xD0,0x00,0x00,0xFE,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0xD0,0x00,0x03,0xFC,0x80,
0x00,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x03,0xF0,0x80,0x00,0x00,0x00,0x00,0x00,
0x01,0xF0,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x78,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x01,
0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x0F,0xF2,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3E,0x00,0x1F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,
0x03,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x03,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0F,0x80,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,
0x80,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x00,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x03,0xF0,0x00,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xF8,0x07,0xC4,0x00,
0x06,0x00,0x20,0x00,0x00,0x00,0x01,0xFC,0x0F,0xFC,0x00,0x0B,0x80,0xF7,0x00,0x00,
0x00,0x00,0xFC,0x1F,0xC4,0x00,0x87,0xC3,0xFC,0x80,0x00,0x00,0x00,0xFF,0x3F,0x84,
0x00,0xDF,0xF5,0xFF,0xC0,0x00,0x00,0x00,0x7F,0x80,0x04,0x00,0x3F,0xFF,0xFF,0x20,
0x00,0xF8,0x00,0x7F,0xE0,0x06,0x00,0x01,0x7F,0xF7,0xE0,0x00,0xFF,0x00,0x3F,0xF8,
0x06,0x00,0x01,0xFF,0xEF,0xD0,0x00,0xFF,0xF0,0x0F,0xFE,0x1E,0x00,0x00,0x01,0xEF,
0xE0,0x00,0xFF,0xFC,0x07,0xFF,0x9F,0x00,0x00,0x00,0xE7,0xE0,0x00,0xFF,0xFF,0x81,
0xFF,0xFF,0xC0,0x00,0x00,0x7F,0xE0,0x00,0xFF,0xFF,0xFC,0x7F,0xFF,0xE0,0x00,0x0F,
0xFF,0xF0,0x00,0xFF,0xFF,0xFF,0xBF,0xFF,0xF0,0x00,0x0F,0xFF,0xFC,0x00,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,
0x7F,0xFF,0xFB,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x03,0x7F,0xFF,0xFE,0x00,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,
0x0F,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0x80,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x9F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,
0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFE,0x0B,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x33,
0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x05,0xFF,0xFF,0xFF,0x00,0xFF,
0xFC,0x63,0xFF,0xFF,0xF8,0x00,0x3F,0xFF,0xFC,0x00,0xFF,0xF0,0x00,0x1F,0xFF,0xF0,
0x00,0x7F,0xFF,0xD8,0x00,0xFF,0x80,0x01,0xFF,0xFF,0xE0,0x00,0x39,0xEF,0xF0,0x00,
0xFE,0x00,0x07,0xFF,0xFF,0xC0,0x00,0x0B,0xE2,0xC0,0x00,0xFC,0x00,0x0F,0xFF,0xFF,
0x80,0x00,0x07,0xC0,0x00,0x00,0xE0,0x00,0x0F,0xFF,0xDF,0x00,0x00,0x07,0x80,0x00,
0x00,0x00,0x00,0x1F,0xFF,0x1F,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x3F,0xFC,
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x7F,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,
0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x1F,0xF1,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0xF8,0x3F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
0xF0,0x1F,0xF1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x07,0xC1,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0xC0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x00,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x3F,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0xD3,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x3F,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFC,0x00,0x1F,0xF9,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x07,
0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,
0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,
0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x20,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,
0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x3E,0x18,0x00,
0x00,0x00,0x00,0x00,0x03,0x40,0x00,0x00,0xFF,0x98,0x00,0x00,0x00,0x00,0x00,0x07,
0x20,0x00,0x01,0x9F,0xF8,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x02,0x03,0x08,
0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x07,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
0x00,0x01,0x80,0x00,0x07,0xFE,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7D,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x87,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x02,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xF8,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0x90,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3A,0x00,0x00,0x00,0x00,0x00,0x00,
};
voiddelay_1ms(intt)//延时函数延时单位.1ms
{
inti,j;
for(i=0;ifor(j=0;j<12;j++);
}
voidwrite_12864_com_CS1(uintcom)//给左半屏写数据的函数
{
RS=0;
R_W=0;
CS1=1;
CS2=0;
delay_1ms
(1);
E=1;
delay_1ms
(1);
P0=com;
delay_1ms
(1);
E=0;
delay_1ms
(1);
}
voidwrite_12864_com_CS2(ucharcom)//给右半屏写数据的函数
{
RS=0;
R_W=0;
CS1=0;
CS2=1;
delay_1ms
(1);
E=1;
delay_1ms
(1);
P0=com;
delay_1ms
(1);
E=0;
delay_1ms
(1);
}
voidwrite_12864_dat(uchardat)//写指令函数
{
RS=1;
R_W=0;
delay_1ms
(1);
E=1;
delay_1ms
(1);
P0=dat;
delay_1ms
(1);
E=0;
delay_1ms
(1);
}
/*voidcontrol_12864_CS1()
{
CS1=1;
CS2=0;
}
voidcontrol_12864_CS2()
{
CS1=0;
CS2=1;
}*/
voiddisplay(ucharpage,ucharline)//从第page行开始显示从line列开始显示设置起始地址
{
uchara,b,c,d;
a=0xb8+(0x07&page);
b=0x40+(0x3f&line);
for(c=0x00;c<8;c++)
{
for(d=0;d<128;d++)
{
switch(d)
{
case0:
{
write_12864_com_CS1(a+7-c);
delay_1ms
(1);
write_12864_com_CS1(b);