12864程序问题求助贴
时间:10-02
整理:3721RD
点击:
搞了好久的12864,编出来的程序还是显示不了,弄的都快疯了。
求解释,到底哪里出现了问题。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned char
sbit rs=P2^3;
sbit rw=P2^2;
sbit en=P2^1;
sbit cs2=P2^4;
sbit cs1=P2^5;
sbit rst=P2^0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x++)
for(y=10;y>0;y++);
}
void check_busy()
{
rs=0;
rw=1;
en=1;
P1=0xff;
while(P0&0xff==0x80);
en=0;
}
void sel_screen(uchar i)
{
switch(i)
{
case 0:cs1=0;cs2=1;break;
case 1:cs1=1;cs2=0;break;
case 2:cs1=0;cs2=0;break;
default:break;
}
}
void write_com(uchar com)
{
check_busy();
rs=0;
rw=0;
en=1;
P1=com;
en=0;
}
void write_dat(uchar dat)
{
check_busy();
rs=1;
rw=0;
en=1;
P1=dat;
delay(5);
en=0;
delay(5);
}
/*void clear_screen()
{
uchar page ,row;
for(page=0xb8;page<0xc0;page++)
{
write_cmd(page);
write_cmd(0x40);
for(row+0;row<64;row++)
{
write_dat(0x00);
}
}
} */
void stringinit()
{
sel_screen(2);
write_com(0x30);
delay(100);
write_com(0x80);
delay(100);
write_com(0x10);
delay(100);
write_com(0x0c);
delay(100);
write_com(0x01);
delay(100);
write_com(0x06);
delay(100);
}
void display(uchar x,uchar y,uchar *str)
{
uchar pos;
if(x==0)
x=0x80;
else if(x==1)
x=0x90;
else if(x==2)
x=0x88;
else if(x==3)
x=0x98;
pos=x+y;
write_com(pos);
while(*str)
{
write_dat(*str++);
}
}
void main()
{
stringinit();
display(0,1,"祖国江山好");
delay(1000);
}
哪里有问题啊!
求解释,到底哪里出现了问题。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned char
sbit rs=P2^3;
sbit rw=P2^2;
sbit en=P2^1;
sbit cs2=P2^4;
sbit cs1=P2^5;
sbit rst=P2^0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x++)
for(y=10;y>0;y++);
}
void check_busy()
{
rs=0;
rw=1;
en=1;
P1=0xff;
while(P0&0xff==0x80);
en=0;
}
void sel_screen(uchar i)
{
switch(i)
{
case 0:cs1=0;cs2=1;break;
case 1:cs1=1;cs2=0;break;
case 2:cs1=0;cs2=0;break;
default:break;
}
}
void write_com(uchar com)
{
check_busy();
rs=0;
rw=0;
en=1;
P1=com;
en=0;
}
void write_dat(uchar dat)
{
check_busy();
rs=1;
rw=0;
en=1;
P1=dat;
delay(5);
en=0;
delay(5);
}
/*void clear_screen()
{
uchar page ,row;
for(page=0xb8;page<0xc0;page++)
{
write_cmd(page);
write_cmd(0x40);
for(row+0;row<64;row++)
{
write_dat(0x00);
}
}
} */
void stringinit()
{
sel_screen(2);
write_com(0x30);
delay(100);
write_com(0x80);
delay(100);
write_com(0x10);
delay(100);
write_com(0x0c);
delay(100);
write_com(0x01);
delay(100);
write_com(0x06);
delay(100);
}
void display(uchar x,uchar y,uchar *str)
{
uchar pos;
if(x==0)
x=0x80;
else if(x==1)
x=0x90;
else if(x==2)
x=0x88;
else if(x==3)
x=0x98;
pos=x+y;
write_com(pos);
while(*str)
{
write_dat(*str++);
}
}
void main()
{
stringinit();
display(0,1,"祖国江山好");
delay(1000);
}
哪里有问题啊!
还想问一个问题,有的程序这样初始化引脚
sbit RS = P3^5; //并行的指令/数据选择信号, H数据, L命令
sbit RW = P3^6; //并行读写选择信号, H读, L写
sbit E = P3^4; //并行使能端, H有效, L无效
sbit PSB = P3^7; //并/串接口选择, H并,L串
sbit RET = P3^3; //复位, L有效
但还有一种这样初始化引脚
sbit E=P1^1; //使能端
sbit RW=P2^2; //读写端
sbit RS=P2^3; //数据命令端口
sbit CS1=P2^5;
sbit CS2=P2^4;
到底是怎么回事啊!
http://yunpan.cn/QhyDEzsGI4Sft 访问密码 2dec 给你分享一个可以用的12864万年历程序 可以参考下
不懂,希望大神讲解一下。
http://shop111131329.taobao.com 小店有12864电子钟
谢谢!程序注释的很详细。
是的啊 就是有注释才发你呢 适合新手
