void LcdDelay(uint time) {
while(time--);
}/********************************** 写指令
**********************************/ void SendCommand(uchar command) { e=1; wr=0;
rs=0;
databus=command; e=0;
}/********************************** 写数据
**********************************/ void WriteData(uchar dat) { e=1; wr=0; rs=1;
databus=dat;
e=0;
}/********************************** 显示开/关
**********************************/ void SetOnOff(uchar onoff) { if(onoff==1) { SendCommand(0x3f); }
else { SendCommand(0x3e);
}
}/********************************** 选择页
**********************************/
void SetLine(uchar line) //12864总共有8页(0~7),每页有8行 { line=line&0x07; //只取后三位xxxx x111 ,这3个是要改变位置的数据 line=line|0xb8;
//页设置的固定格式
SendCommand(line);
}/********************************** 选择列
**********************************/
void SetColum(uchar colum) //12864每半屏有64列(0~63),分为左右2屏 { colum=colum&0x3f; //xx11 1111,这个是要改变Y位置的数据
colum=colum|0x40;
//固定格式
31
SendCommand(colum);
}/********************************** 选择起始行
**********************************/
void SetStartLine(uchar startline)
{ startline=startline&0x3f;//xx11 1111,这个是要改变x位置的数据 startline=startline|0xc0;//11xxxxxx,是起始行设置的固定指令
SendCommand(startline);
}/********************************** 选择左右屏0:左屏,1:右屏,2:全屏 **********************************/ void SelectScreen(uchar screen) { switch(screen) { case 0: cs1=0;
LcdDelay(2); cs2=1;
LcdDelay(2);
break; case 1: cs1=1; LcdDelay(2);
cs2=0; LcdDelay(2); break; case 2: cs1=0; LcdDelay(2); cs2=0;
LcdDelay(2);
break;
}
} /********************************** 显示一个汉字
**********************************/
void Show1616(uchar lin,uchar colum,uchar *address) { uchar i;
SetLine(lin);
SetColum(colum); for(i=0;i<16;i++)
{ WriteData(*address); address++;
}
SetLine(lin+1);
SetColum(colum);
32
for(i=0;i<16;i++)
{ WriteData(*address); address++;
}
}/********************************** 显示一个英文字符
**********************************/
void Show_english(uchar lin,uchar colum,uchar *address) { uchar i; SetLine(lin);
SetColum(colum); for(i=0;i<8;i++)
{ WriteData(*address); address++;
}
SetLine(lin+1); SetColum(colum); for(i=0;i<8;i++)
{ WriteData(*address);
address++;
}
}/********************************** 清屏
**********************************/ void ClearScreen(uchar screen) { uchar i,j; SelectScreen(screen); for(i=0;i<8;i++) { SetLine(i); SetColum(0); for(j=0;j<64;j++) { WriteData(0);
}
}
}/**********************************
12864初始化
**********************************/ void InitLcd()
{ SetOnOff(0);//显示关 ClearScreen(2);//清屏 SetLine(0);//页设置 SetColum(0);//列设置
SetStartLine(0);//设置起始页 SetOnOff(1);//显示开
}
33
致 谢
时间如流水般飞快流逝,来不及过多回味,大学生活已近尾声,四年多的努力与付出,随着本次论文的完成,将要划下完美的句号。
对于本次毕业设计,首先我要深深地感谢我的导师孙老师,本设计是在孙老师细心指
导下完成的。在毕业设计期间,孙老师给予了我悉心的教导。孙老师严谨的治学态度、亲切随和的为人也给我留下了深刻的印象,使我在设计中受益匪浅。在此论文完成之际,谨向孙老师致以深深的敬意和衷心的感谢。
在临近毕业之际,我还要借此机会向在这四年中给予我诸多教诲和帮助的各位老师表
示由衷的谢意,感谢他们四年来的辛勤栽培。不积跬步无以至千里,各位任课老师认真负责,在他们的悉心帮助和支持下,我能够很好的掌握和运用专业知识,并在设计中得以体现,顺利完成毕业论文。
同时,在论文写作过程中,我还参考了有关的书籍和论文,在这里一并向有关的作者
表示谢意。我还要感谢各位同学以及我的各位室友,在毕业设计的这段时间里,你们给了我很多的启发,提出了很多宝贵的意见,对于你们帮助和支持,在此我表示深深地感谢!
34