1602显示“生日快乐”
////////////////////目标板:红油板/////////////////////
////////////////////修改自:不要显卡《1602显示汉字“生日快乐”》 原因:乱码//////////////////////// #include
sbit RS=P0^5; sbit RW=P0^6; sbit E=P0^7;
uchar sheng[]={0x04,0x14,0x1f,0x14,0x0e,0x04,0x1f,0x00}; //“生”字字模 uchar ri[]={0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00}; //“日”字字模 uchar kuai[]={0x0a,0x0a,0x1f,0x1b,0x1f,0x0a,0x0d,0x00}; //“快”字字模 uchar le[]={0x1e,0x10,0x14,0x1f,0x04,0x15,0x15,0x00}; //“乐”字字模
void delay(uint m) {
while(m--); }
void Write_Instruction(uchar Instruction) //1602写命令 {
delay(5); RS=0;
}
RW=0; E=1;
P2=Instruction; E=0;
void Write_Data(uchar Data) //1602写数据 { }
void LCD1602_Init() { }
void main() {
uchar i; LCD1602_Init(); Write_Instruction(0x06); Write_Instruction(0x30); Write_Instruction(0x0c);
//1602初始化
delay(5); RS=1; RW=0; E=1; P2=Data; E=0;
i=0; while(1) { for(i=0;i<8;i++) { Write_Instruction(0x40+i);
//显示“生”
Write_Data(sheng[i]); delay(100);
}
Write_Instruction(0x86);
Write_Data(0x00);
for(i=0;i<8;i++) { Write_Instruction(0x48+i); Write_Data(ri[i]); delay(100);
}
Write_Instruction(0x87);
Write_Data(0x01);
for(i=0;i<8;i++) { Write_Instruction(0x50+i);
Write_Data(kuai[i]);
//显示“日”
//显示“快”
}
delay(100);
Write_Instruction(0x88); Write_Data(0x02);
for(i=0;i<8;i++) //显示“乐”
{ Write_Instruction(0x58+i); Write_Data(le[i]); delay(100);
}
Write_Instruction(0x89);
Write_Data(0x03);
}
}
以上程序为静态显示,可修改显示“年”、“月”、“日”,也可修改字模达到显示任意简单汉字。