12864液晶循环显示三屏汉字
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define lcd_data P0
uchar code table1[]="钟山风雨起苍黄毛""百万雄师过大江泽""亦将剩勇追穷寇东""不可沽名学霸王七";
uchar code table2[]="学习技术天天向上""努力学习才有提高""总结经验不断前进""电子设计一路领先";
uchar code table3[]="爱一个人难却还爱""交结朋友可路更宽""诚实守信加油努力""成功做人成功做事";
sbit lcden=P2^7;
sbit rd=P2^6;
sbit wr=P2^5;
sbit psb=P3^2; //并/串方式选择
void delay(uint z) //延迟函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)
;
}
void write_com(uchar com) //写指令
{
rd=0;
wr=0;
lcden=0;
P0=com;
delay(5); //这个延迟函数必须要有,因为读数据时当E为高时,数据必须保持稳定
lcden=1;
lcden=0;
}
void write_date(uchar date) //写数据
{
rd=1;
wr=0;
lcden=0;
P0=date;
delay(5); //这个延迟必须要有
lcden=1;
lcden=0;;
}
void write_word(uchar *add) //用指针
{
uchar i;
write_com(0x80); //从第一行开始显示
for(i=0;i<64;i++) //一个汉字占两个字节
{
write_date(*add);
add++; //指针加,指向下一个字节
}
}
void init() //初始化
{
psb=1; //设置并口方式
write_com(0x 0c); //显示状态 整体显示开
write_com(0x01); //游标左移
write_com(0x30); //功能设定基本指令操作
write_com(0x10); //游标左移
}
void main()
{
init();
while(1)
{
write_word(table1);
delay(3000); //每一屏显示秒钟
write_word(table2);
delay(3000);
write_word(table3);
delay(3000);
}
}
浙公网安备 33010602011771号