这里是声明部分和主函数部分函数。出问题的是:void Delay(uint time)参数列表长度不同、waitforstarting未定义标识符,你看看是哪里出问题了。
#include<reg52.h>
#include<intrins.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
#define Lcd_Data P0; //定义LCD数据端口
uchar code dispbuf[33]={"Temperature: Distance: mm"};
uchar numcode[10]={'0','1','2','3','4','5','6','7','8','9'};
uint num[29]={0};
uchar jsh,jsl; //计时器的高低位
uchar count=0; //10秒计次数
uint distance; //距离
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit DQ=P2^7; //DS18B20数字端口
sbit Busy=P0^7;
uint temp; //温度变量
uchar bdata flag; //DS18B20存在标准
void Delay(void); //延时函数
void Read_Busy(void); //检查LCD是否忙
void lint_18B20(void); //初始化18B20
void Write_Comm(uchar); //写入LCD命令
void Write_Data(uhar); //写入LCD数据
void lint_LCD(void); //初始化LCD
uchar Readonechar(void); //读取第一个字节
void Writeonechar(uchar dat); //写入第一个字节
void testtemp(void); //启动温度转换
uint wd(void); //读取温度
void Delay(uint time); //延时函数
sbit sta_flag=flag^0; //10MS到标准位
sbit fuhao=flag^1; //温度符号位
sbit START=P1^0; //启动测距
sbit CNT=P2^5; //发射超声波
sbit CSBIN=P2^6; //返回信号
sbit BUZZER=P3^7;
void timer(void);
void delay1ms(void); //延时1MS
void sys_init(void); //系统初始化
void display(void); //显示函数
void computer(void); //计算
void hextobcd(bit flag,uchar num); //转换BCD
void bm(void); //求补码
void delay15(uchar us); //延时15us
/***********主函数**************/
void main(void)
{
uchar i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
sys_init(); //初始化
display(); //显示
sta_flag=0; //标准复位
Waitforstarting; // 检查按键
while(START);
for(i=0;i<20;i++)
delay1ms();
if(START)
goto waitforstarting;
BUZZER=0;
i=100000;
while(i--);
TR0=1; //启动定时器0
ET0=1;
testtemp(); //启动温度转换
while(1)
{
if(sta_flag) //10MS到了
{
while(0==CSBIN); //收到回波
TR1=0;
jsh=TH1;
jsl=TL1;
if(15==count) //900MS到检测温度
{
temp=wd(); //读取温度
count=0;
testtemp(); //重新启动转换
display(); //刷新显示
}
computer(); //计算距离
hextobcd(); //转换BCD码
sta_flag=0;
}
}
} |