用AT89C52驱动ST7920的液晶,写了个很简单的程序无法工作。无液晶的时候工作电流是50mA加了液晶后成了10mA,很奇怪。
程序:
#include "Reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit lcd_rs = P2^0; //H=data; L=command;
sbit lcd_rw = P2^1; //H=read; L=write;
sbit lcd_e = P2^2; //input enable;
#define LCD_Data P1
void delay(uint a )
{
uchar i;
while(--a)
{
for(i=0;i<125;i++) ;
}
}
void wd(uchar dat)
{
lcd_rs=1;
lcd_rw=0;
lcd_e=0;
delay(2);
LCD_Data=dat;
lcd_e=1;
delay(5);
lcd_e=0;
delay(5);
}
void wc(uchar udat)
{
lcd_rs=0;
lcd_rw=0;
lcd_e=0;
delay(2);
LCD_Data=udat;
delay(2);
lcd_e=1;
delay(5);
lcd_e=0;
delay(5);}
void init_lcd (void)
{
//rst=1;
// psb=1;
wc (0x30); /*30---基本指令动作*/
wc (0x01); /*清屏,地址指针指向00H*/
wc (0x06); /*光标的移动方向*/
wc(0x0c); /*开显示,关游标*/
}
void clrram (void)
{
wc (0x01);
wc(0x34);
wc(0x30);
}
void main()
{ char i;
delay(50);
init_lcd();
clrram();
// wc(0x80);
while (1)
{for (i=0;i<9;i++)
{wc(0x80+i);
wd(0x31+i);
delay(1000);
}
}
}
求教各位哪里可能出问题了。 |