Proteus中的12864如何显示想要显示的字
-
-
艾笠调查团
- LV2工程师
-
| 2016-11-07 21:29:15
- 浏览量 1985
- 回复:6
RT,我用的是元器件中的12864没字库的,纵向取模,字节倒序,搞清了原理就写了一个程序,但有很大问题...哪里有问题呢?
顺便再问一下,这个Proteus中的12864和现实中带字库的12864有什么主要区别,比如Proteus中是分页,现实中是可以控制输入模式等...
求大家帮帮忙~
#include
typedef unsigned char uchar;
typedef unsigned int uint;
sbit en=P3^4;
sbit rs=P3^5;
sbit rw=P3^6;
sbit cs1=P3^0;
sbit cs2=P3^1;
uchar code chen={0x40,0x42,0xCC,0x00,0x00,0x40,0x30,0x1E,0x10,
0xF0,0x10,0x10,0x18,0x10,0x00,0x00, 0x00,0x00,0x3F,0x10,0x08,0x01,
0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,0x00,0x00};
void delay(uchar z)
{
uchar a;
for(z=z;z>0;z--)
for(a=114;a>0;a--);
}
void read()
{
uchar r;
rs=0;
rw=1;
en=0;
do
{
P2=0x00;
en=1;
r=P2;
delay(2);
en=0;
delay(2);
r=0x80&r;
}
while(!(r==0x00));
}
void write_com(uchar com)
{
read();
rw=0;
rs=0;
en=0;
P2=com;
delay(2);
en=1;
delay(2);
en=0;
}
void write_dat(uchar dat)
{
read();
rw=0;
rs=1;
en=0;
P2=dat;
delay(2);
en=1;
delay(2);
en=0;
}
void hanzi(uchar ye,uchar lie,uchar *daima)
{
uchar i,j;
for(i=0;i<2;i++)
{
write_com(0xb8+ye+i);
delay(5);
write_com(0x40+lie);
for(j=0;j<16;j++)
write_dat(daima);
}
}
void clear()
{
uchar i,j;
cs1=0;
cs2=0;
for(i=0;i<8;i++)
{
write_com(0xb8+i);
delay(5);
write_com(0x40);
for(j=0;j<64;j++)
write_dat(0x00);
}
}
void init()
{
delay(10);
cs1=cs2=1;
delay(10);
write_com(0x3e);
delay(5);
write_com(0xc0);
delay(5);
write_com(0xb8);
delay(5);
write_com(0x40);
delay(5);
write_com(0x3f);
}
void main()
{
init();
clear();
while(1)
{
cs1=0;
cs2=1;
hanzi(0,0,chen);
}
}
RT,我用的是元器件中的12864没字库的,纵向取模,字节倒序,搞清了原理就写了一个程序,但有很大问题...哪里有问题呢?
顺便再问一下,这个Proteus中的12864和现实中带字库的12864有什么主要区别,比如Proteus中是分页,现实中是可以控制输入模式等...
求大家帮帮忙~
#include
typedef unsigned char uchar;
typedef unsigned int uint;
sbit en=P3^4;
sbit rs=P3^5;
sbit rw=P3^6;
sbit cs1=P3^0;
sbit cs2=P3^1;
uchar code chen={0x40,0x42,0xCC,0x00,0x00,0x40,0x30,0x1E,0x10,
0xF0,0x10,0x10,0x18,0x10,0x00,0x00, 0x00,0x00,0x3F,0x10,0x08,0x01,
0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,0x00,0x00};
void delay(uchar z)
{
uchar a;
for(z=z;z>0;z--)
for(a=114;a>0;a--);
}
void read()
{
uchar r;
rs=0;
rw=1;
en=0;
do
{
P2=0x00;
en=1;
r=P2;
delay(2);
en=0;
delay(2);
r=0x80&r;
}
while(!(r==0x00));
}
void write_com(uchar com)
{
read();
rw=0;
rs=0;
en=0;
P2=com;
delay(2);
en=1;
delay(2);
en=0;
}
void write_dat(uchar dat)
{
read();
rw=0;
rs=1;
en=0;
P2=dat;
delay(2);
en=1;
delay(2);
en=0;
}
void hanzi(uchar ye,uchar lie,uchar *daima)
{
uchar i,j;
for(i=0;i<2;i++)
{
write_com(0xb8+ye+i);
delay(5);
write_com(0x40+lie);
for(j=0;j<16;j++)
write_dat(daima);
}
}
void clear()
{
uchar i,j;
cs1=0;
cs2=0;
for(i=0;i<8;i++)
{
write_com(0xb8+i);
delay(5);
write_com(0x40);
for(j=0;j<64;j++)
write_dat(0x00);
}
}
void init()
{
delay(10);
cs1=cs2=1;
delay(10);
write_com(0x3e);
delay(5);
write_com(0xc0);
delay(5);
write_com(0xb8);
delay(5);
write_com(0x40);
delay(5);
write_com(0x3f);
}
void main()
{
init();
clear();
while(1)
{
cs1=0;
cs2=1;
hanzi(0,0,chen);
}
}