以下是程序全文,能正常显示,但是一次只能显示一个字符,如果直接写zifu("52") 那就报错了,除非把52拆开来写,这样就行,是我的写法有问题,还是1602也得像数码管动态显示那样,写一个字符,变换一下指针,再写字符。。。。。
#include <STC89C5xRC.H>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P2^2;
sbit RW=P2^1;
sbit EN=P2^0;
void delay(uint a)
{
uint x,y;
for(x=a;x>0;x--)
for(y=114;y>0;y--);
}
uchar mang( ) //判忙函数
{
P0=0xFF;
RS=0;
RW=1;
EN=0;
delay(1);
EN=1;
return (P0 & 0x80);
}
void zhiling(uchar com) //写命令
{
while(mang( ));
RS=0;
RW=0;
P0=com;
delay(10);
EN=1;
delay(10);
EN=0;
}
void zifu(uchar fu) //写字符
{
while(mang( ));
RS=1;
RW=0;
P0=fu;
delay(10);
EN=1;
delay(10);
EN=0;
}
void main()
{
EN=0;
RS=1;
RW=0;
zhiling(0X38); //设置显示模式,16*2显示,5*7点阵,8位数据口
zhiling(0X0C); //光标设置(显示光标,且闪烁)
zhiling(0X04); //整屏不移动
zhiling(0XC0); //第二排显示
zifu('2');
//zhiling(0XC1);
//zifu("56");
while(1);
}
|