为什么超声波测距显示数值乱跳 5
这是LM3S811的程序/************************************************************************...
这是LM3S811的程序
/*****************************************************************************/
main.c
/******************************************************************************/
#include "lcd.h"
#include "super.h"
unsigned char table[3]={"L="};
unsigned char count;
void kaishi()
{
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_5,0xff);
SysCtlDelay(150);
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_5,0x00);
}
int main(void)
{
clockinit();
lcd_init();
SPW_IOnit();
SysTickPeriodSet(1000000);
while(1)
{
kaishi();
while(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4)==0x00)
SysTickPeriodSet(1000000);
SysTickEnable();
while(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4)==0x10)
x=SysTickValueGet();
SPW_count();
SysTickDisable();
lcd_writestr(4,1,table1);
lcd_writestr(2,1,table);
lcd_writestr(7,1,"cm");
SysCtlDelay(100*(SysCtlClockGet()/3000));
}
}
/******************************************************************************/
super.c
/******************************************************************************/
#include "super.h"
unsigned char table1[3];
unsigned long juli=0,x=0;
extern unsigned char table[];
short spwflag=0x0000;
void SPW_IOnit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE,GPIO_PIN_5);
// GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0,0x00);
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE,GPIO_PIN_4);
}
void SPW_count(void)
{
juli=((1000000- x)*17000/6000000);
table1[0]=juli/100+0x30;
table1[1]=(juli/10)%10+0x30;
table1[2]=juli%10+0x30;
}
lcd的我就不写了
那位大神知道为什么我这显示出来的数值会乱跳啊?????????????????
急 展开
/*****************************************************************************/
main.c
/******************************************************************************/
#include "lcd.h"
#include "super.h"
unsigned char table[3]={"L="};
unsigned char count;
void kaishi()
{
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_5,0xff);
SysCtlDelay(150);
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_5,0x00);
}
int main(void)
{
clockinit();
lcd_init();
SPW_IOnit();
SysTickPeriodSet(1000000);
while(1)
{
kaishi();
while(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4)==0x00)
SysTickPeriodSet(1000000);
SysTickEnable();
while(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4)==0x10)
x=SysTickValueGet();
SPW_count();
SysTickDisable();
lcd_writestr(4,1,table1);
lcd_writestr(2,1,table);
lcd_writestr(7,1,"cm");
SysCtlDelay(100*(SysCtlClockGet()/3000));
}
}
/******************************************************************************/
super.c
/******************************************************************************/
#include "super.h"
unsigned char table1[3];
unsigned long juli=0,x=0;
extern unsigned char table[];
short spwflag=0x0000;
void SPW_IOnit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE,GPIO_PIN_5);
// GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0,0x00);
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE,GPIO_PIN_4);
}
void SPW_count(void)
{
juli=((1000000- x)*17000/6000000);
table1[0]=juli/100+0x30;
table1[1]=(juli/10)%10+0x30;
table1[2]=juli%10+0x30;
}
lcd的我就不写了
那位大神知道为什么我这显示出来的数值会乱跳啊?????????????????
急 展开
福州大禹电子科技
2024-12-16 广告
2024-12-16 广告
福州大禹电子科技有限公司成立于2008年自创办以来,专注超声产品的研发和产业化,始终坚持技术创新是企业发展动力的理念,运用最基础的物理声学原理,攻克了一系列卡脖子难题,成功打破了国外垄断,把超声技术运用到了工控、水利、市政、环保、医疗,海洋...
点击进入详情页
本回答由福州大禹电子科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询