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

问题描述

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;
}

时间: 2024-09-17 17:05:44

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

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

问题描述 hc-sr04驱动 问题:烧入开发板之后,结果距离隔一段时间就突然增大.请大侠解答. 请各位大侠帮我看看我的驱动程序那里有问题. sbit TRIG = P3^3; sbit ECHO = P3^2; void Measure(void) { unsigned long Time; uint Distance,ge,shi,bai; float D; ECHO = TRIG = 0; TMOD = 0X11; TH1 = 0XFF; TL1 = 0XF1; TH0 = TL0 = 0;

手把手教你从零实现Linux misc设备驱动一(基于友善之臂4412开发板)

关于如何来写一个misc设备,在前面有篇文章已经介绍了大致的流程,现在就让我们来实现一个最简单的misc设备驱动. http://blog.csdn.net/morixinguan/article/details/52700146 关于前面的字符设备有以下四篇文章,可以做参考: http://blog.csdn.net/morixinguan/article/details/55002774 http://blog.csdn.net/morixinguan/article/details/550

手把手教你从零实现Linux misc设备驱动二(基于友善之臂4412开发板)

上一节,我教大家实现了一个最简单的MISC设备驱动,那么这节,我们将用一个实例来驱动蜂鸣器,这里为了方便,我就不再写应用程序进行测试,直接在驱动里调用open函数,这个程序是在Android系统里跑起来,后面我会教大家如何在Android下写应用测试程序. 我们参考以前写的蜂鸣器驱动程序,将它移植到我们这个程序里,让它成为一个MISC设备. 参考以前写的文章: http://blog.csdn.net/morixinguan/article/details/50628588 接下来,看看代码:

【驱动】USB驱动&amp;#183;入门【转】

转自:http://www.cnblogs.com/lcw/p/3159371.html Preface USB是目前最流行的系统总线之一.随着计算机周围硬件的不断扩展,各种设备使用不同的总线接口,导致计算机外部总线种类繁多,管理困难.USB总线正是因此而诞生的. USB总线提供了所有外部设备的统一连接方式,并且支持热插拔,方便了厂商开发设备和用户使用设备. USB遵循原则 USB的设计目标是对现有的PC机体系进行扩充,但是目前不仅是PC机,许多的嵌入式系统都开始支持USB总线和接口标准.USB

驱动人生显卡驱动更新升级

  驱动人生是诸如七彩虹等著名硬件厂商的合作伙伴,因此驱动人生在硬件驱动领域有着绝对的话语权,是真正值得信任的品牌. 下面就让我们来仔细观察下这款软件的特别之处,是怎样解决诸如显卡驱动.主板驱动等问题的,它为什么被称为万能驱动专家.首先我们需要利用google.baidu的搜索下驱动人生,进行一个1分钟简单的安装,然后让我们打开软件,就会看到图(1)正在进行的硬件的检测和识别: 图(1)为驱动人生PC硬件的检测和识别页面 随着驱动人生对所有硬件检测的完毕,就进入了驱动人生的主操作界面图(2),在

如何用驱动人生进行驱动还原

童鞋们在使用http://www.aliyun.com/zixun/aggregation/35457.html">驱动人生的过程可能会出现以下三种情况: 1.驱动更新过程中误操作电脑或驱动人生,导致驱动更新不成功或更新之后电脑出现问题: 2.更新电脑驱动之后,比如更新显卡驱动之后,电脑出现花屏或者蓝屏的现象,短时间内又无法去找专家来进行远程协助: 3.更新的驱动版本与电脑的当前配置不兼容. 出现以上三种驱动问题的情况下,紧急救援来不及,那么您就只能自救.如何自救?让小编来告诉您如何自救您

初试驱动---OV511+摄像头驱动开发

本篇适合没有接触过驱动或者初学驱动的朋友.运行本程序以及源代码都请先看 ReadMe.txt 文件. 在本文中阐述的驱动是用windriver做出来的,没有采用DDK或DriverStudio,可能看起 来并不像是一个"很正式"的驱动,而且本文中的驱动程序不可以用于 DirectShow接口.对于DDK和DriverStudio我也了解了一些内容,在刚开始的时候我是满 怀激情的想用DDK或DriverStudio的,很快我的激情之火就被无情的熄灭了,对于一个完 全没有接触过驱动开发的人

【STM32 .Net MF开发板学习-13】用PWM驱动智能小车

这段时间一直忙着开发基于.NET Micro Framwork系统的远程医疗系统(参见:http://space.cnblogs.com/group/topic/41835/),所以隔了近一个礼拜的时间,才有精力继续研究PWM驱动智能小车的问题. 以前对步进电机和直流电机的控制了解不深,以为仅对步进电机而言,才能进行PWM控制,及到购买相关的驱动板和步进电机后,才发现由于驱动板的原因,控制步进电机的方向.速度只能通过IO控制. 在介绍具体的控制代码之前,为了便于更深入的了解PWM控制直流电机的机

Linux主机驱动与外设驱动分离思想

1主机.外设驱动分离的意义 在Linux设备驱动框架的设计中,除了有分层设计实现以外,还有分隔的思想.举一个简单的例子,假设我们要通过SPI总线访问某外设,在这个访问过程中,要通过操作CPU XXX上的SPI控制器的寄存器来达到访问SPI外设YYY的目的,最简单的方法是: return_type xxx_write_spi_yyy(...) { xxx_write_spi_host_ctrl_reg(ctrl); xxx_ write_spi_host_data_reg(buf); while(