找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

1602往里写入字符,请大侠们给个好的建议

[复制链接]
admin 发表于 2012-9-2 09:38:04 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
我写了一个生产用的测试程序,但我知道这样子写,对于我来说,我还没有想到其它办法来写,所以程序写了“A”“B”“C”这三个字符比较烦,在这里,请大哥们指点一下别的法,或是用取模,但取模我又不太理解,哪位好心人教一下,谢谢

#include <reg52.h>

#define uchar unsigned char
#define uint unsigned int

sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;

char code reserve[3]_at_ 0x3b; //保留0x3b开始的3个字节

uchar code table1[]="AAAAAAAAAAAAAAAA";
uchar code table2[]="BBBBBBBBBBBBBBBB";
uchar code table3[]="CCCCCCCCCCCCCCCC";

uchar num;

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=180;y>0;y--);

}


void write_com(uchar com) // 指令时序
{
rs=0;
rw=0;
en=1;
P0=com;
delay(1); // D0~D7总输入延时
en=0;

}


void write_data(uchar dat) // 数据时序
{
rs=1;
rw=0;
en=1;
P0=dat;
delay(1); // D0~D7总输入延时
en=0;

}


void init() // 初始化以指令来输入
{
write_com(0x01);
write_com(0x38);
write_com(0x0c);
write_com(0x06);
}


void cg_ram() // CG_RAM数据地址
{
int i;
write_com(0x40); // 指令地址40~80范围内

for(i=0;i<8;i++)
{
write_data(0x1f);
}


for(i=0;i<8;i++)
{
write_data(0x55);
}


for(i=0;i<1;i++)
{
write_data(0x1f);
write_data(0x0);
write_data(0x1f);
write_data(0x0);
write_data(0x1f);
write_data(0x0);
write_data(0x1f);
write_data(0x0);
}
}


void dd_ram(p) //DD—RAM指令地址
{
int i,j;

write_com(0x80);
delay(10);

for(i=0;i<16;i++)
{
write_data(p);
}

write_com(0xc0);
delay(10);

for(j=0;j<16;j++)
{
write_data(p);
}
}


void main() // 主涵数
{
init();
while(1)
{
//=========================

cg_ram();
dd_ram(0x00);
delay(550);

cg_ram();
dd_ram(0x01);
delay(550);

cg_ram();
dd_ram(0x02);
delay(550);

//=========================

write_com(0x80);

for(num=0;num<16;num++)
{
write_data(table1[num]);
}

write_com(0x80+0x40);

for(num=0;num<16;num++)
{
write_data(table1[num]);
}
delay(550);

//==============================

write_com(0x80);

for(num=0;num<16;num++)
{
write_data(table2[num]);
}

write_com(0x80+0x40);

for(num=0;num<16;num++)
{
write_data(table2[num]);
}
delay(550);

//==========================

write_com(0x80);

for(num=0;num<16;num++)
{
write_data(table3[num]);
}

write_com(0x80+0x40);

for(num=0;num<16;num++)
{
write_data(table3[num]);
}
delay(550);

write_com(0x01);
delay(550);
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 14:35 , Processed in 0.059326 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表