液晶点阵显示屏课程设计报告 通信09235-宗慧(3)

2019-04-14 13:27

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

char i;

for (i=0;i<32;i++) {

if ((x+i)<64) //x代表列,显示在左半屏 {

LCD_WriteCommand1(0xB8+y+i/16); LCD_WriteCommand1(0x40+x+i); LCD_WriteData1(Dat[i]); } else {

LCD_WriteCommand2(0xB8+y+i/16); //因为一个字占16行,0xb8表示0页 LCD_WriteCommand2(0x40+x-64+i); //因为一个字占16列,0x40表示0列 LCD_WriteData2(Dat[i]); } } }

void LCD_WriteSZ(char x,char y,char *Dat) //显示16*8点阵数字 {

char i;

for (i=0;i<16;i++) {

if ((x+i%8)<64) //x代表列, 一个数字占8列,显示在左半屏 {

LCD_WriteCommand1(0xB8+y+i/8); //设置页地址 y表示页

LCD_WriteCommand1(0x40+x+i%8); //设置列地址 x表示列,一个数字占8列 LCD_WriteData1(Dat[i]); } else {

LCD_WriteCommand2(0xB8+y+i/8);

LCD_WriteCommand2(0x40+x-64+i%8); //减去64列,表示写在右半屏 LCD_WriteData2(Dat[i]); } } }

void InitLCD(void) //初始化LCD {

char i,j;

LCD_RST=0; //正常状态 Delay1ms(1);

LCD_RST=1; //正处于复位初始化状态

LCD_WriteCommand1(0xc0); //设置起始行 LCD_WriteCommand2(0xc0); //设置起始行

10

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

LCD_WriteCommand1(0x3f); //开显示 LCD_WriteCommand2(0x3f); //开显示 for (j=0;j<8;j++) //清屏 {

LCD_WriteCommand1(0xB8+j); //清左半屏 LCD_WriteCommand1(0x40); for (i=0;i<64;i++) LCD_WriteData1(0x00);

LCD_WriteCommand2(0xB8+j); //清右半屏 LCD_WriteCommand2(0x40); for (i=0;i<64;i++) LCD_WriteData2(0x00); } }

void DispBmp(char *buf) //显示一幅位图 {

int i,j;

for (j=0;j<8;j++) //显示位图 {

LCD_WriteCommand1(0xB8+j); LCD_WriteCommand1(0x40); for (i=0;i<64;i++)

LCD_WriteData1(buf[(j*2)*64+i]); LCD_WriteCommand2(0xB8+j); LCD_WriteCommand2(0x40); for (i=0;i<64;i++)

LCD_WriteData2(buf[(j*2+1)*64+i]); } }

void DispBmpLeft(char *buf) //显示一幅位图 {

int i,j,k;

for (k=0;k<128;k++) {

for (j=0;j<8;j++) //显示位图 {

LCD_WriteCommand1(0xB8+j); LCD_WriteCommand1(0x40);

for (i=0;i<64;i++) //左移 {

if((i+k)<128)

LCD_WriteData1(buf[(j*2)*64+i+k]); else

LCD_WriteData1(buf[(j*2)*64+i+k-128]);

11

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

}

LCD_WriteCommand2(0xB8+j); LCD_WriteCommand2(0x40); for (i=0;i<64;i++) {

if((i+k)<64)

LCD_WriteData2(buf[(j*2+1)*64+i+k]); else

LCD_WriteData2(buf[(j*2+1)*64+i+k-128]); } } } }

void DispBmpRight(char *buf) //显示一幅位图 {

int i,j,k;

for (k=0;k<128;k++) {

for (j=0;j<8;j++) //显示位图 {

LCD_WriteCommand1(0xB8+j); LCD_WriteCommand1(0x40); for (i=0;i<64;i++) //右移 {

if((i-k)>0)

LCD_WriteData1(buf[(j*2)*64+i-k]); else

LCD_WriteData1(buf[(j*2)*64+i-k+128]); }

LCD_WriteCommand2(0xB8+j); LCD_WriteCommand2(0x40); for (i=0;i<64;i++) {

if((i-k)>-64)

LCD_WriteData2(buf[(j*2+1)*64+i-k]); else

LCD_WriteData2(buf[(j*2+1)*64+i-k+128]); } } } }

char code zero[]={ }; //0 char code one[]={ }; //1 char code two[]={ }; //2

12

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

char code three[]={}; //3 char code four[]={ }; //4 char code five[]={ }; //5 char code six[]={ }; //6 char code seven[]={ }; //7 char code eight[]={ }; //8 char code nine[]={ }; //9

char code maohao[]={ }; //冒号 char code dot[]={ }; //点 char code wen[]={ }; //温 char code du[]={ }; //度 char code dian[]={ };//电 char code ya[]={ };//压 char code li[]={ }; //力 char code C[]={ }; //℃ char code N[]={ }; //N char code hao[]={ }; //m char code V[]={ }; //V

char code screen4[]={ }; //请选择:1.温度;2.电;3.压力; char code jiang[]={};//江 char code su[]={};//苏 char code da[]={};//大 char code xue[]={};//学 char code huan[]={};//欢 char code ying[]={};//迎 char code nin[]={};//您

char code gantanhao[]={};//!

void DispLCD(char *DispBuf,char num) {

int i;

for(i=0;i<5;i++) {

if((num==1)&&(i==2)) {

LCD_WriteSZ(56+8*i,3,dot); Delay1ms(100); i++; }

if((num==2)&&(i==1)) {

LCD_WriteSZ(56+8*i,3,dot); Delay1ms(100); i++; }

13

《C8051F单片机原理及应用》课程设计——日历时钟与键盘显示程序设计

if((num==3)&&(i==3)) {

LCD_WriteSZ(56+8*i,3,dot); Delay1ms(100); i++; }

switch(DispBuf[i]) {

case 0:

LCD_WriteSZ(56+8*i,3,zero); Delay1ms(100);break; case 1:

LCD_WriteSZ(56+8*i,3,one); Delay1ms(100);break; case 2:

LCD_WriteSZ(56+8*i,3,two); Delay1ms(100);break; case 3:

LCD_WriteSZ(56+8*i,3,three); Delay1ms(100);break; case 4:

LCD_WriteSZ(56+8*i,3,four); Delay1ms(100);break; case '5':

LCD_WriteSZ(56+8*i,3,five); Delay1ms(100);break; case 6:

LCD_WriteSZ(56+8*i,3,six); Delay1ms(100);break; case 7:

LCD_WriteSZ(56+8*i,3,seven); Delay1ms(100);break; case 8:

LCD_WriteSZ(56+8*i,3,eight); Delay1ms(100);break; case 9:

LCD_WriteSZ(56+8*i,3,nine); Delay1ms(100);break; /*case ':':

LCD_WriteSZ(48+8*i,3,maohao); Delay1ms(100);break; case '.':

LCD_WriteSZ(48+8*i,3,dot); Delay1ms(100);break;*/

14


液晶点阵显示屏课程设计报告 通信09235-宗慧(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:老庄小学学校体育与健康课程实施计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: