/*128*64液晶模块驱动程序 ,HD61202驱动
创建时间:07.1.6
功能描述:循环显示李白的诗歌共8行,指定反白显示*/
#include <at89x51.h>
//#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define lcm P1
sbit p_csl=P2^4;
sbit p_csr=P2^3;
sbit p_di=P2^2;
sbit p_rw=P2^1;
sbit p_e=P2^0;
sbit p_rst=P2^7;
uchar code HZ[];
uchar code Ez[];
/*****函数声明********/
void delay(uint k);
void wcode(uchar c,uchar csl,uchar csr);
void wdata(uchar c,uchar csl,uchar csr);
void set_statrline(uchar i);
void set_xy(uchar x,uchar y);
void dison_off(uchar o);
void reset();
void lcd_init(void);
void lw(uchar x,uchar y,uchar dd);//写数据函数
void disp_Hz(uchar xx,uchar yy,uchar n,uchar fb);//显示汉字
void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb);
//延时
void delay(uint k)
{ uint i;
for(;k>0;k--)
{ for(i=0;i<124;i++)
{;}
}
}
//
//LCM忙判断
void lcd_busy(void)
{ p_di=0;
p_rw=1;
/*lcm=0xff;
while(1)
{ p_e=1;
if(lcm<0x80)
break;
p_e=0;
}
p_e=0;*/
}
//写指令到LCM
void wcode(uchar c,uchar csl,uchar csr)
{ p_csl=csl;
p_csr=csr;
lcd_busy();
p_di=0;
p_rw=0;
lcm=c;//将变量C赋予LCM
p_e=1;
p_e=0;
}
//写数据到LCM子函数
void wdata(uchar c,uchar csl,uchar csr)
{ p_csl=csl;
p_csr=csr;
lcd_busy();
p_di=1;
p_rw=0;
lcm=c;//将变量C赋予LCM
p_e=1;
p_e=0;
}
//设定起始行
void set_startline(uchar i)
{ i=0xc0+i;
wcode(i,1,1);
}
//定位X方向,Y方向
void set_xy(uchar x,uchar y)
{ x=x+0x40;
y=y+0xb8;
wcode(x,1,1);
wcode(y,1,1);
}
//屏幕开启、关闭
void dison_off(uchar o)
{ o=o+0x3e; //o为1为开,为0是关
wcode(o,1,1);
}
//复位子函数
void reset()
{//delay(1000);
p_rst=0;
delay(20);
p_rst=1;
delay(20);
}
//LCM初始化
void lcd_init(void)
{ uchar x,y;
reset();
dison_off(0);
for(y=0;y<8;y++)
{ for(x=0;x<128;x++)
lw(x,y,0);
}
dison_off(1);
set_startline(0);
}
//写数据到LCM
void lw(uchar x,uchar y,uchar dd)
{ if(x>=64)
{ set_xy(x-64,y);
wdata(dd,0,1);
}
else
{ set_xy(x,y);
wdata(dd,1,0);
}
}
//显示汉字子函数
void disp_Hz(uchar xx,uchar yy,uchar n,uchar fb)//xx为该行第xx个字,共8字,yy为第几行,共8行。
{ uchar i,dx;
for(i=0;i<16;i++)
{ dx=HZ[2*i+n*32]; //2*i为选择偶数行,因其为列扫描
if(fb)
dx=255-dx;//反白显示
lw(xx*16+i,yy,dx);
dx=HZ[(2*i+1)+n*32];
if(fb)
dx=255-dx;
lw(xx*16+i,yy+1,dx);
}
}
void disp_Ez(uchar xx,uchar yy,uchar n,uchar fb)//显示数字或英语
{ uchar i,dx;
for(i=0;i<8;i++)
{ dx=Ez[2*i+n*16];
if(fb)
dx=255-dx;
lw(xx*8+i,yy,dx);//
dx=Ez[(2*i+1)+n*16];
if(fb)
dx=255-dx;
lw(xx*8+i,yy+1,dx);
}
}
/*****主函数****/
void main()
{ uchar loop,i,y;//
uchar fb;
lcd_init();
delay(300);
for(loop=0;loop<2;loop++)//菜单
{
disp_Hz(loop+1,0,loop+64,1);
disp_Ez(13,0,10,0);
disp_Ez(14,0,8,0);
}
while(1)
{for(i=0;i<8;i++)
{ disp_Ez(12,0,i+1,0);
if(i<3)
{ if(i!=0)fb=0;
else fb=1;
for(loop=0;loop<8;loop++)//行1
{ disp_Hz(loop,2,loop,fb);
}
}
if(i<4)
{ if(i!=1)fb=0;
else fb=1;
if(i==3)y=2;
else y=4;
for(loop=0;loop<8;loop++)//2
{
disp_Hz(loop,y,loop+8,fb);
} }
if(i<5)
{ if(i!=2)fb=0;
else fb=1;
if((i==0)||(i==1)||(i==2))
y=6;
if(i==3)y=4;
if(i==4)y=2;
for(loop=0;loop<8;loop++)//3
{
disp_Hz(loop,y,loop+16,fb);//第一屏结束,每屏显示3行
}
}
if(i>=3)
{ if(i!=3)fb=0;
else fb=1;//
if(i==3)y=6;
if(i==4)y=4;
if(i==5)y=2;
for(loop=0;loop<8;loop++)//行4
{ disp_Hz(loop,y,loop+24,fb);
}
}
if(i>=4)
{ if(i!=4)fb=0;
else fb=1;//
if(i==4)y=6;
if(i==5)y=4;
if(i==6)y=2;
for(loop=0;loop<8;loop++)//5
{
disp_Hz(loop,y,loop+32,fb);//y=1时
} }
if(i>=5)
{ if(i!=5)fb=0;
else fb=1;
if(i==5)y=6;
if(i==6)y=4;
if(i==7)y=2;
for(loop=0;loop<8;loop++)//6
{
disp_Hz(loop,y,loop+40,fb);
}
}
if(i>=6)
{ if(i!=6)fb=0;
else fb=1;
if(i==6)y=6;
if(i==7)y=4;
for(loop=0;loop<8;loop++)//行7
{disp_Hz(loop,y,loop+48,fb);
}
}
if(i==7)
{ if(i!=7)fb=0;
else fb=1;
for(loop=0;loop<8;loop++)//8
{
disp_Hz(loop,6,loop+56,fb);//y=1时
} }
delay(600);
}
}
}
uchar code HZ[]=
{0x40,0x40,0x40,0x40,0x20,0x42,0x20,0x42,0x50,0x4A,0x48,0x72,0x44,0x42,0xC3,0x7F,
0x44,0x42,0x48,0x62,0x50,0x5A,0x50,0x42,0x20,0x42,0x60,0x40,0x20,0x40,0x00,0x00,/*"金",0*/
0x00,0x00,0xFE,0xFF,0x22,0x02,0x5A,0x04,0x86,0x43,0x10,0x48,0x94,0x24,0x74,0x22,
0x94,0x15,0x1F,0x09,0x34,0x15,0x54,0x23,0x94,0x60,0x94,0xC0,0x10,0x40,0x00,0x00,/*"陵",1*/
0x04,0x00,0x64,0x00,0x24,0x81,0x24,0x41,0x24,0x21,0x2F,0x19,0xE4,0x07,0x24,0x01,
0x24,0x01,0x24,0x41,0x2F,0x81,0x24,0x7F,0x24,0x00,0x64,0x00,0x24,0x00,0x00,0x00,/*"劳",2*/
0x04,0x00,0x64,0x00,0x24,0x81,0x24,0x41,0x24,0x21,0x2F,0x19,0xE4,0x07,0x24,0x01,
0x24,0x01,0x24,0x41,0x2F,0x81,0x24,0x7F,0x24,0x00,0x64,0x00,0x24,0x00,0x00,0x00,/*"劳",3*/
0x40,0x40,0x41,0x20,0xC6,0x1F,0x00,0x20,0x40,0x40,0x48,0x48,0x49,0x44,0x4E,0x43,
0xF8,0x40,0x4C,0x41,0x4B,0x42,0x48,0x4C,0x48,0x40,0x40,0x40,0x00,0x40,0x00,0x00,/*"送",4*/
0x00,0x08,0x18,0x08,0x04,0x05,0x84,0x04,0x44,0xFC,0x7C,0x46,0xA5,0x46,0x26,0x45,
0x24,0x45,0xA4,0x46,0x64,0x46,0x24,0xFE,0x14,0x04,0x0C,0x0C,0x04,0x04,0x00,0x00,/*"客",5*/
0x00,0x00,0x40,0x40,0x30,0x48,0x12,0x48,0xDC,0x4B,0x54,0x4A,0x50,0x4A,0x5F,0x7E,
0x50,0x4A,0x50,0x4A,0xD8,0x4B,0x16,0x48,0x54,0x48,0x38,0x48,0x10,0x40,0x00,0x00,/*"堂",6*/
0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",7*/
0x02,0x80,0x02,0x80,0x82,0x83,0xBA,0x42,0xAA,0x4A,0xAF,0x5B,0xAA,0x2A,0xBA,0x2A,
0xAA,0x2A,0xAF,0x5B,0xAA,0x4A,0xBA,0x42,0x82,0x83,0x02,0x80,0x00,0x80,0x00,0x00,/*"蔓",8*/
0x04,0x08,0x04,0x08,0x04,0x08,0xE4,0x0B,0xA4,0x0A,0xBF,0x0A,0xA4,0x0A,0xA4,0xFE,
0xA4,0x0A,0xBF,0x0A,0xA4,0x0A,0xE4,0x0B,0x04,0x08,0x04,0x08,0x04,0x08,0x00,0x00,/*"草",9*/
0x00,0x00,0x04,0x00,0x04,0xFE,0xF4,0x02,0x84,0x1A,0xCC,0x16,0xAD,0x12,0x96,0x13,
0x94,0x12,0xAC,0x16,0xCC,0x1A,0x84,0x72,0xF4,0x82,0x06,0x7E,0x04,0x00,0x00,0x00,/*"离",10*/
0x00,0x00,0x04,0x00,0x04,0xFE,0xF4,0x02,0x84,0x1A,0xCC,0x16,0xAD,0x12,0x96,0x13,
0x94,0x12,0xAC,0x16,0xCC,0x1A,0x84,0x72,0xF4,0x82,0x06,0x7E,0x04,0x00,0x00,0x00,/*"离",11*/
0x00,0x01,0x80,0x40,0x60,0x40,0x1E,0x41,0x10,0x41,0x10,0x41,0x10,0x41,0x10,0x41,
0xFF,0x7F,0x12,0x41,0x10,0x41,0x10,0x41,0x98,0x41,0x10,0x61,0x00,0x40,0x00,0x00,/*"生",12*/
0x40,0x40,0x42,0x20,0xCC,0x1F,0x00,0x20,0x04,0x40,0x04,0x40,0xE5,0x5F,0xB6,0x4A,
0xAC,0x4A,0xA4,0x4A,0xA6,0x4A,0xE5,0x5F,0x04,0x40,0x04,0x40,0x00,0x40,0x00,0x00,/*"道",13*/
0x40,0x00,0x20,0x00,0xF8,0x7F,0x07,0x00,0x82,0x00,0x64,0x41,0x2C,0x31,0x34,0x0F,
0x65,0x05,0xA6,0x05,0x34,0x25,0x2C,0x45,0xA4,0x3D,0x74,0x01,0x20,0x00,0x00,0x00,/*"傍",14*/
0x00,0x00,0x00,0x18,0x00,0x24,0x00,0x24,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"。",15*/
0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x7F,0x08,0x21,0x08,0x21,0x08,0x21,0xFF,0x21,
没有合适的资源?快使用搜索试试~ 我知道了~
12864LCD循环显示李白的一首长诗
共15个文件
bak:2个
hex:1个
dbk:1个
需积分: 9 1 下载量 145 浏览量
2009-10-14
20:16:43
上传
评论 1
收藏 55KB RAR 举报
温馨提示
该资料用于初学者,12864LCD循环显示李白的一首长诗
资源详情
资源评论
资源推荐
收起资源包目录
12864LCD循环显示李白的一首长诗.rar (15个子文件)
12864LCD循环显示李白的一首长诗
yanjing12864new.LST 27KB
yanjing12864new.M51 15KB
yanjin12864new.PWI 1KB
yanjing12864new.plg 185B
yanjin12864new.DSN 63KB
yanjing12864new.OBJ 19KB
Last Loaded yanjin12864new.DBK 63KB
yanjing12864new.lnp 47B
yanjing12864new.Uv2 2KB
yanjing12864new_Opt.Bak 1KB
yanjing12864new.Opt 1024B
yanjing12864new_Uv2.Bak 2KB
yanjing12864new.hex 10KB
yanjing12864new.c 17KB
yanjing12864new 16KB
共 15 条
- 1
zhangweixinzhang
- 粉丝: 1
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0