微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > LPC2134学习日志 -- LCD12864学习

LPC2134学习日志 -- LCD12864学习

时间:11-21 来源:互联网 点击:

|(1

|(1

|(1

|(1

|(1

IO0SET |= (1

IO0CLR |= 1 // 初始化时EN脚置低


IO0CLR |= 1 // 初始化时先复位一下


delay_us(50);


IO0SET |= 1 // 再重新启动LCD12864


delay_us(50);


IO0SET |= (1

Write_Cmd(0x3F); //开显示, 关显示为 -- 0x3e


Write_Cmd(0x38); // 8位形式,两行字符


Write_Cmd(0x0F); // 开显示


Write_Cmd(0x01); // 清屏


Write_Cmd(0x06); // 画面不动,光标右移


Write_Cmd(0xC0); // 设置起始行


}




void Show_Row(uint8 ucPage,uint8 ucLine,uint8 ucWidth,uint8 const *ucaRow)


{


uint8 ucCount = 0;


if(ucLine<64)


{


IO0SET |= 1 // 选通左屏


IO0CLR |= 1

Write_Cmd(LCDPAGE+ucPage); // 设定页号


Write_Cmd(LCDLINE+ucLine); // 设定列号


Write_Cmd(0x34);


if(ucLine+ucWidth<64) // 位于左半屏


{


for(ucCount = 0;ucCount


{


Write_Data(*(ucaRow+ucCount)); // 写入数据


}


}


else // 跨越两个半屏 先写完左半屏


{


for(ucCount=0;ucCount<64-ucLine;ucCount++)


{


Write_Data(*(ucaRow+ucCount)); // 写入数据


}



IO0CLR |= 1 // 再写右半屏


IO0SET |= 1

Write_Cmd(LCDPAGE+ucPage); // 设定页号


Write_Cmd(LCDLINE); // 设定列号


Write_Cmd(0x34);


for(ucCount=64-ucLine;ucCount


{


Write_Data(*(ucaRow+ucCount));// 写入数据


}


}


}


else // 位于右半屏


{


IO0CLR |= 1


IO0SET |= 1

Write_Cmd(LCDPAGE+ucPage); // 设定页号


Write_Cmd(LCDLINE+ucLine-64); // 设定列号


Write_Cmd(0x34);


for(ucCount=0;ucCount


{


Write_Data(*(ucaRow+ucCount)); // 写入数据


}


}


}




void Show_Word(uint8 ucPage,uint8 ucLine,uint8 const *ucaChinMap)


{


Show_Row(ucPage,ucLine,16,ucaChinMap); // 汉字上半部分


Show_Row(ucPage+1,ucLine,16,ucaChinMap+16); // 汉字下半部分


}




void Display_HZ(uint8 pagenum,uint8 colnum,uint8 num)


{


//uint8 k;


uint8 const *p1;


//k=colnum*16;


p1=hz_mode[num];


Show_Word(pagenum,colnum,p1);


}



void Show_Char(unsigned char ucPage,unsigned char ucLine,unsigned char const *ucaCharMap)


{


Show_Row(ucPage,ucLine,8,ucaCharMap);


Show_Row(ucPage+1,ucLine,8,ucaCharMap+8);


}



void Clear_Screen()


{


uint8 i,j;


for(i=0;i<8;i+=2) //共8页


{


for(j=0;j<128;j+=8) //共128列


{


Show_Char(i,j,CHAR_B);


}


}


}



void Init_LCD(void)


{


Init_LCDIO(); // 初始化LCD接口


Clear_Screen(); // 要先清屏,不然会显示不正常




Display_HZ(2,0,10); // 懒


Display_HZ(2,16,11); // 猫


Display_HZ(2,32,12); // 爱


Display_HZ(2,48,13); // 飞



Display_HZ(3,64,14); // 学


Display_HZ(3,80,15); // 习


Display_HZ(3,96,16); // 日


Display_HZ(3,112,17); // 志


}


当然这个程序还不完善,还没显示图片的函数,还没有菜单等功能,不过这些以后会慢慢加上的,现在只是在LPC2134中裸奔,主要是为了了解一下它内部结构与内部资源,以后的日志中会涉及到ucos或其它嵌入式系统,这个以后在日志中慢慢总结。


好了,今天说就先到这吧


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top