2 u012052289 u012052289 于 2014.03.07 00:14 提问

hc-sr04驱动 问题:烧入开发板之后,结果距离隔一段时间就突然增大。请大侠解答。

#include
#include
#include
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
sbit TRIG = P3^3;
sbit ECHO = P3^2;
#define uchar unsigned char
#define ulong unsigned long
#define uint unsigned int
uchar table4[] = "Dis:";
uchar Dis0[4] = {0}; //存储距离
uchar sign[3] = 0;
uint Distance = 0;
unsigned long Time = 0;
void lcd_dischar (uchar ch);
void lcd_distring(uchar p);
void delay(uint n)
{
uint x,y;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}

void lcd_writecom(uchar com)
{
rs=0;
rw=0;
P0=com;
delay(5);
en=1;
en=0;
}
void lcd_writedat(uchar dat)
{
rs=1;
rw=0;
P0=dat;
delay(5);
en=1;
en=0;
}
void lcd_init(void)
{
lcd_writecom(0x38);
lcd_writecom(0x06);
lcd_writecom(0x0c);
lcd_writecom(0x01);
}
void lcd_distring(uchar *p)
{
uchar count,i;
uchar a[16];
strcpy(a,p);
count=strlen(a);
for(i=0;i {
lcd_writedat(a[i]);
}
}
/*void Measure(void)
{
unsigned long Time;
uint ge,shi,bai;
float D;
ECHO = TRIG = 0;
TMOD = 0X11;
TH1 = 0XFF;
TL1 = 0XF1;
TH0 = TL0 = 0;
IE = 0X8A;
TRIG = 1;
TR1 = 1;
while(!ECHO){}
TR1 = 0;
TR0 = 1;
while(ECHO){}
TR0 = 0;
Time = TH0*256+TL0;
TH0 = TL0 = 0;
Distance = ((unsigned long)Time*344)/2000;
D = Distance/10.0;
if(Distance>0&&Distance<900)
{
bai = Distance/100;
shi = Distance/10-(bai*10);
ge = Distance-bai*100-shi*10;
Dis0[0] = bai+'0';
Dis0[1] = shi+'0';
Dis0[2] = '.';
Dis0[3] = ge+'0';
}
else
Dis0[0] = Dis0[1] = Dis0[2] = Dis0[3] = 0x20;

}
/
void lcd_dischar(uchar ch)
{
lcd_writedat(ch);
}
void main(void)
{
uchar i;
uint ge,shi,bai,qian;
lcd_init();
TMOD = 0X19;
EA = 1;
TR0 = 1;
EX0 = 1;
IT0 = 1;
while(1)
{
// Measure();
TRIG = 1;
nop(); nop();
nop(); nop();
nop(); nop();
nop(); nop();
nop(); nop();
nop(); nop();
nop(); nop();
nop(); nop();
TRIG = 0;
Distance = 0.17*Time;
qian = Distance/1000;
bai = Distance/100-qian*10;
shi = Distance/10-qian*100-bai*10;
ge = Distance%10;
Dis0[0] = qian+'0';
Dis0[1] = bai+'0';
Dis0[2] = shi+'0';
Dis0[3] = ge+'0';
for(i=0;i<10;i++)
{
lcd_writecom(0x80+0x00);
lcd_distring(table4);
lcd_dischar(Dis0[0]);
lcd_dischar(Dis0[1]);
lcd_dischar(Dis0[2]);
lcd_dischar(Dis0[3]);
}

}

}
void int0() interrupt 0
{
Time=TH0*256+TL0;
TH0 = 0;
TL0 = 0;
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【解决】网站运行一段时间后就无法访问,重启Tomcat才能恢复
【背景】重新部署了网站,运行环境是Linux(centOS6.5)+Tomcat7+mysql5,作了相关安全配置和系统优化工作; 【问题】运行几天后,出现了网站无法访问的现象,具体是进入网站首页时页面呈现空白状态,网站ping值也很不稳定; 查看tomcat访问日志,发现有同一IP在同一秒有超过10个的访问记录,且这种IP来源有不少; 【解决办法】试了很多办法,问题依然存在,临时解决办法是
单片机控制雷达测距模块HC-SR04测量距离(通过测试)
测距模块在小车
很急)在我的项目中tomcat每隔一段时间自动停服务
在我的项目中,我采用的是win2000专业版,数据库mysql,服务器用的是tomcat,再用的过程中每隔几小时自动停止服务,请各位帮帮我,非常感谢!
运行部署在Weblogic上的Web应用时,过一段时间程序就提示数据连接断了,重起Weblogic就好了。过一段时间又出现同样的问题。
在一个客户现场的应用上, 客户的技术人员发现,Appeon Web应用运行一段时间后,程序就提示数据连接断了。重起Weblogic就好了。可是过一段时间程序又提示数据库连接断了。经过分析Weblogic和Appeon Server的日志发现:程序中提示数据连接断的时候,Weblogic连接池里的连接全部都不可用。查看连接池建立的参数配置信息发现,数据库服务器与WebLogic不在一个网段。在与
远程ssh连接Linux服务器,隔一段时间就断了
远程ssh连接Linux服务器,隔一段时间就断了  http://zhidao.baidu.com/link?url=DGP85x4WlVwYbdzg3HbkViPHmJo_TFkJRgUmh1HgFA3PyZrZqW2iV633y42sG-f6-o2ncksx_-QTE8LXdkBUTwOEAdeQxQhB9tLaQohK09K 就是说,比如我用root远程SSH登,隔一段时间断了
tomcat服务器过一段时间就连接不上了
最近在做一个项目的过程中
烧录文件到开发板操作
软件工具准备: 1.Jlink烧录软件(Setup_JLinkARM_V410i.exe)                    2 .Windows下 tftp软件安装(tftp32.exe)                     3.远程登陆软件(securecrt或Putty)
【Ios】App 一段时间后再进入就闪退问题
偶然遇到这种情况,ios app安装到手机后,一段时间,发现无法打开了,后来发现 多人开发的时候使用同样的开发证书,当其他人证书或者授权文件出问题fix issue生成新证书,.你手机上的app证书就会过期。或者是team 类型的证书,一般几天也会过期。app将无法被打开!!!
[IMX6DL][Android4.4] 超声波模块HC-SR04 Linux驱动源代码
Platform: IMX6DL OS: Android 4.4 Kernel branch: 3.0.35 说明: 1. 硬件基于HC-SR04模块,可自行查找。 2. 代码PWM模块用于测试中断响应性能, 背光部分注释掉是因为和PWM复用了。 3. 测试中断响应性能时不要使用在中断上半部使用printk()方式,否则延时会到ms级。 4. 代码中注册的字符设备可不需要
开发板上Linux系统(烧录)启动过程
在半年之后重新回顾的开发版烧录过程,进行了更深一步的思考,加上查阅资料,对Linux系统的启动过程理解更深刻,于是有了如下的总结:1.SDRAM:Synchronous Dynamic Random-Access Memory,同步动态随机存储器,DRAM里面所储存的数据就需要周期性地更新;   SRAM  :Static Random-Access Memory,静态随机存取存储器,所谓的“静态...