智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3892|回复: 12
打印 上一主题 下一主题

求助STC12C5A60S2的超声波测距问题

  [复制链接]

17

主题

466

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13941
QQ
威望
10902
贡献
2497
兑换币
716
注册时间
2011-9-24
在线时间
271 小时
跳转到指定楼层
1#
发表于 2012-11-7 16:26:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用普通51是可以的,但换上加强型的就不行了trig=1;//   delay20us();   trig=0; 这一句,我用while语句循环,输出波形是预料中的,但是衔接起来就不行了,时间被拉得很长,软件就测不到超声波模块的echo的信号了(因为回复信号在trig还没有降到低电平前就完了)困惑我好几天了#include<reg51.h>
#include<intrins.h>
#include "6x8.h"
#include "LQ12864.h"
#define uint unsigned int
#define uchar unsigned char
sbit trig=P1^7;
sbit echo=P3^2; uint succeed;
float t,d;
uint distance,timeh,timel;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay20us()
{
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
} void init_time1()
{
TMOD=0x11; //两个定时器都工作为16位定时器
TH1=0; //清零
TL1=0; //
}
void T1_time() interrupt 3
{
TH1=0;
TL1=0;
succeed=0;
EA=0;
}
void ex0()interrupt 0
{
timeh=TH1;
timel=TL1;
t=(timeh*256+timel)*1.09;
d=t*0.17;
distance=(int)d;
succeed=1;
TH1=0;
TL1=0;
EA=0;
}void main()
{
LCD_Init();
LCD_6x8(60,0,"start");
init_time1();
while(1)
{
trig=0;
echo=0;
succeed=0;
trig=1;
delay20us();
trig=0;

while(echo==0);
EA=1;
EX0=1;
ET1=1; //定时器1中断允许
TR1=1;
delay(60);
switch(succeed)
{
case 1:
LCD_Cler_6x8(0,0,4);
display();
break;
case 0:
LCD_Cler_6x8(0,2,6);
displayerror();
break;
}
// delay(1000);
}
}
程序就死在红色字体那边



200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章资源大师奖章

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
2#
发表于 2012-11-7 19:29:33 | 只看该作者
你的时序有问题吧
回复 支持 反对

使用道具 举报

13

主题

223

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6102

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
3186
贡献
1228
兑换币
1607
注册时间
2012-10-28
在线时间
844 小时
3#
发表于 2012-11-8 09:44:04 | 只看该作者
定时器中断打开后,等待测试结果,在关闭定时器和中断
回复 支持 反对

使用道具 举报

17

主题

466

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13941
QQ
威望
10902
贡献
2497
兑换币
716
注册时间
2011-9-24
在线时间
271 小时
4#
 楼主| 发表于 2012-11-8 14:37:59 | 只看该作者
宓海宁 发表于 2012-11-8 09:44
定时器中断打开后,等待测试结果,在关闭定时器和中断

程序就停在while那边了
回复 支持 反对

使用道具 举报

8

主题

442

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4937
威望
1850
贡献
1481
兑换币
215
注册时间
2011-6-22
在线时间
803 小时
5#
发表于 2012-12-24 08:31:05 | 只看该作者
试下更改头文件
回复 支持 反对

使用道具 举报

17

主题

466

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13941
QQ
威望
10902
贡献
2497
兑换币
716
注册时间
2011-9-24
在线时间
271 小时
6#
 楼主| 发表于 2012-12-24 10:47:07 | 只看该作者
冰葑世纪 发表于 2012-12-24 08:31
试下更改头文件

哪个头文件?
回复 支持 反对

使用道具 举报

0

主题

19

帖子

0

精华

注册会员

Rank: 2

积分
71
威望
51
贡献
12
兑换币
25
注册时间
2012-12-29
在线时间
4 小时
毕业学校
wzdx
7#
发表于 2012-12-31 19:01:13 | 只看该作者
回复 支持 反对

使用道具 举报

17

主题

466

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13941
QQ
威望
10902
贡献
2497
兑换币
716
注册时间
2011-9-24
在线时间
271 小时
8#
 楼主| 发表于 2012-12-31 20:25:57 | 只看该作者
夏唯夕 发表于 2012-12-31 19:01

????????
回复 支持 反对

使用道具 举报

13

主题

99

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2166
威望
970
贡献
536
兑换币
607
注册时间
2013-7-29
在线时间
330 小时
9#
发表于 2014-6-29 16:22:20 | 只看该作者
遇到和楼主一样的问题,请问楼主有没有解决?怎么解决的?
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2786
威望
1410
贡献
766
兑换币
880
注册时间
2013-12-25
在线时间
305 小时
10#
发表于 2014-7-17 20:55:30 | 只看该作者
我也一样,不过我一开始是在开发板上实验的,后来感觉程序没错,换了个自己焊的最小系统,就可以了。(我没有仔细看你的程序哈
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 15:12 , Processed in 0.049799 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表