原来也是用的STC的89C52一切都没问题,今天换上12C5A60S2
头文件搞上了,做了点其他小实验也没问题,就是用12864液晶的时候成功不了了
一样的实验板,程序也下进去了(程序加了流水灯看的),液晶就是不出字,
听说这个型号比较快,延时我也改动了无数次,就是不成
(同样程序在89C52里每次都可以---有那么一两次出字了,但是复位后就没了,再次下载也没有了 纳闷--头文件也换过)
请教用过12C5A60S2此类的有什么注意点没
附程序,应该没什么大问题(不细讲究就为了出字)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
sbit lcden=P1^2;
sbit psb=P1^3;
sbit rst=P1^5;
uchar table1[]={'0','1',
'2','3','4','5','6','7','8','9'};
uchar table2[]="123456789";
void delay(uchar z)
{
uchar x,y;
for(x=20;x>1;x--)
for(y=z;y>1;y--);
}
void write_com(uchar com) //写命令函数
{
lcdrs=0;
P0=com;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
void write_date(uchar date) //写数据函数
{
lcdrs=1;
P0=date;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;
}
void init_lcd() //初始化函数
{
rst=1;
psb=1;
lcden=0; //默认开始状态为关使能端
lcdrw=0; //选择状态为 写
write_com(0x30); //功能设定。
delay(20);
write_com(0x01); //显示清屏,将上次的内容清除,默认为0x01.
delay(20);
write_com(0x0c); //显示功能设置0x0f为开显示,显示光标,光标闪烁
delay(20);
write_com(0x06); //设置光标状态默认0x06,为读一个字符光标加1.
delay(20);
}
void main()
{
uchar a;
init_lcd();
write_com(0x80);
delay(20);
write_date('8');
delay(20);
write_com(0x90);
delay(20);
for(a=0;a<9;a++)
{
write_date(table2[a]);
delay(20);
}
// P2=0xf0;
while(1);
} |