2 baidu 34427722 baidu_34427722 于 2016.04.06 20:47 提问

总是提醒有错误, 但错误处不管怎样改都是错的, 各位帮帮忙...我特意在文中用许多星号标出来了

#include
#include
#define uchar unsigned char
#define uint unsigned int

sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;

int DelayMS(uint ms)
{
uchar i;
while(ms--) for(i=0;i return 0;
}
uchar Busy_Check()
{
uchar LCD_Status;
RS=0;
RW=1;
EN=1;
DelayMS(1);
LCD_Status=P0;
EN=0;
return LCD_Status;
}
int Write_LCD_Command(uchar cmd)
{
while((Busy_Check() & 0x80) == 0x80);
RS=0;
RW=0;
EN=0;
P0=cmd;EN=1;DelayMS(1);EN=0;
return 0;
}
void Write_LCD_Data(uchar dat)
{
while((Busy_Check() & 0x80)==0x80);
RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0;
}
void Initialize_LCD()
{
Write_LCD_Command(0x38);
DelayMS(1);
Write_LCD_Command(0x01);
DelayMS(1);
Write_LCD_Command(0x06);
DelayMS(1);
Write_LCD_Command(0x0C);
DelayMS(1);
}
int ShowString(uchar *str)
{
uchar i=0;
Write_LCD_Command(0x80);
while(str[i]!='\0'&&i {
Write_LCD_Data(str[i++]);
}
for(;i {
Write_LCD_Data(' ');
}
return 0;
}
#include
#include
#define uchar unsigned char
#define uint unsigned int

uchar code Prompt[]="Please press K1 and wait for a while,Current Frequency will show on the LCD...";
uchar LCD_Disp_Buffer[]="Frequency------HZ";
uchar Count=0;
sbit K1=P1^0;
void Initialize_LCD();

**********************void ShowString(uchar str[]);**********************

int main()
{
uchar i=0;
Initialise();
while (Prompt[i]!='\0')
{
ShowString(Prompt+i);
i++;
Delay(15);
}
IE=0x8A;
TMOD=0x51;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
while(1)
{
if(K1==0)
{
Delay(10);
if(K1==0)
{
TR1=TR0=1;
}
}
ShowString(LCD_Disp_Buffer);
}
return 0;
}
int INT_T0() interrupt 1
{
uint Tmp,i;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++Count==20)
{
TR1=TR0=0;
Count=0;
Tmp=TH1*256+TL1;
LCD_Disp_Buffer[9]=Tmp/10000+'0';
LCD_Disp_Buffer[10]=Tmp/1000%10+'0';
LCD_Disp_Buffer[11]=Tmp/100%10+'0';
LCD_Disp_Buffer[12]=Tmp%100/10+'0';
LCD_Disp_Buffer[13]=Tmp%10+'0';
if(LCD_Disp_Buffer[9]=='0') LCD_Disp_Buffer[9]=' ';
i=10;
while(LCD_Disp_Buffer[i]=='0' && LCD_Disp_Buffer[i-1]==' ' && i != 13)
{
LCD_Disp_Buffer[i++]=' ';
}
TH1=TL1=0;
}
return 0;
}

2个回答

fu851523125
fu851523125   2016.04.06 21:01

“while(ms--) for(i=0;i return 0;”这是你复制的错误呢还是你写得错误呢

baidu_34427722
baidu_34427722 回复baidu哦,复制错了,应该是 while(ms--) for(i=0;i<120;i++);
一年多之前 回复
baidu_34427722
baidu_34427722 回错了, 很多程序好像都可以这样写的?
一年多之前 回复
baidu_34427722
baidu_34427722 回错了, 很多程序好像都可以这样写的?
一年多之前 回复
baidu_34427722
baidu_34427722 while(ms--)
一年多之前 回复
zr1076311296
zr1076311296   2016.04.06 23:36

怎么没有头文件呢,代码这样粘在这里看这很难受的,你要实现什么功能可以写出来,这样分析也容易一些。

baidu_34427722
baidu_34427722 没注意头文件,#include<reg51.h>和#include<intrins.h>是基于51单片机的,用1602液晶来显示设计频率计,我之前看的是1601的,我只是把1601的程序换成了1602的,但这样编译过不了,不知道是不是哪里该怎么改
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!