程序如下
/******************************************************************************* *
* 12864标准字库液晶演示 数据p0,控制p2 *
********************************************************************************/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint qian,bai,shi,ge,time,s; //定义千位 百位 十位 个位 时间 长度
void delay (uint a);
void delayus(uchar n); //1us延时,用于发射超声波
void write_12864com(uchar com);
void write_12864dat(uchar dat);
void init ();
void start() ; //发射超声波函数
void display1(void);
void conut() ; //计算距离函数
//uint table[]={" 程序初始化中 请稍等"};
uchar table[]={'0','1','2','3','4','5','6','7','8','9'};
/************* 12864LCD引脚定义 *************/
#define LCD_data P0 //数据口
sbit rs = P2^6; //寄存器选择输入
sbit rw = P2^5; //液晶读/写控制
sbit e = P2^7; //液晶使能控制
sbit psb = P3^2; //串/并方式控制
sbit rst = P3^7; //液晶复位端口
sbit Trig = P2^0; //产生脉冲引脚
sbit Echo = P2^1; //回波引脚
// 主函数 30
void main (void)
{
TMOD=0x01;//设置定时器0工作方式
TH0=0; //定时器高8位清零
TL0=0; //定时器低8位清零
ET0=1;//允许定时器0中断
EA=1; //开总中断
while (1)
{
start();
while(Echo==0); //当RX为零时等待
TR0=1; //开启计数
while(Echo); //当RX为1计数并等待
TR0=0; //关闭计数
conut(); //计算
//psb=1;
//rst=1;
delay (3);
init (); //50
display1();
}
//延时函数
void delay (uint a)
{
uchar j;
for(t;t>0;t--)
for(j=19;j>0;j--);
}
//写指令函数 60
void write_12864com(uchar com)
{
rs=0;
rw=0;
delay(1);
e=1;
P0=com;
delay(10);
e=0;
delay (2);
}
//写数据函数
void write_12864dat(uchar dat)
{
rs=1;
rw=0;
delay(1);
e=1;
P0=dat; //80
delay(10);
e=0;
delay (2);
}
//初始化
void init ()
{
delay (100);
write_12864com(0x30);
delay (3);
write_12864com(0x30);
delay (1);
write_12864com(0x0e);
delay (3);
write_12864com(0x01);
delay (250);
write_12864com(0x06);
delay(10);
} //100
void display1()
{
uchar i;
write_12864com (0x88);
for (i=0;i<17;i++)
{
write_12864dat (table[qian]);
write_12864dat (table[bai]);
write_12864dat (table[shi]);
write_12864dat (table[ge]);
}
}
void delayus(uchar n) //延时1us函数
{
uchar i;
for(i=0;i<n;i++)
{
_nop_(); //120
}
}
void conut() //计算距离
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
s=time/58;
qian=s/1000;
bai=s%1000/100;
shi=s%100/10;
ge=s%10;
}
void time0 () interrupt 1
{
}
void start() // 触发超声波测距模块
{ //140
Trig=1;
delay(60);
Trig=0;
}
这个程序中 下一段有4个错误,
//延时函数
void delay (uint a) 这一行错误C141 syntax error near 'void'
{ 还是上面这一行C209 '-delay' :too few actual parameters
uchar j;
for(t;t>0;t--) 这一行C202 't': undefined identifier
for(j=19;j>0;j--); 这一行C202 'j': undefined identifier
}
还请大侠指点一下
|