ASM 板


LINE

看板 ASM  RSS
※ 引述《aa706045 (小呆榕)》之铭言: 我想 你可能是遇到超音波物理特性上的问题了, 当你的程式 发送超音波出去之间 事实上你 并不能马上就作收音波的的动作 因为当超音波发射出去之後 它的发射端还会有余波出现,你如果马上就作收超音波 的动作 它会收到那个刚发射出余波 而有所误判, 你说你怎麽都会出现红灯---5cm以内 它肯定是把那个余波给收到了 有时候运气好的话 它又收到那个发射出去返回的超音波 那个时候它不会是 红灯的 但是我想通常都一定是红灯的情况超多 而超音波收到之後 也会有余波哦,这代表 你这一次接收完 到下一次 发射也要有时间上的间隔 ================== while(1) { 发送超音波 <需要delay一定的时间> ---请自已要抓准哦,我测了很久              那时候也没有数示示波器 收取超音波 <需要delay一定的时间> } ================== 你去看一些超音波测距的介绍看看 是不是有所谓的盲区 这个名词 ex:盲区30cm 这个就是那个delay 及你程式上延属上所必须的时间 在盲区之内测得的数据都是30cm 也就是说 最近距离要从30cm开始计算 这个实验n年前有作过 记得最好的距离是5m 最近距离是21cm(盲区) 误差正负5cm 还算不错,不过 我并没有加上温度补偿的功能 简单 的在LCD上显示数据+RS232修正警示距离(ex:接近100cm时 哔哔警示) 更有趣的时 那时候就作完这个玩具还把它弄一份报告 放到104履历 还得到不少面试机会  : 超音波测距,正常需求,如果距离为0~5cm,则亮红灯。5~50cm,亮黄灯。50~150cm,则亮绿灯。 : 而现在程式出现的问题是,距离算的不够精准,而且距离近的时候,红灯亮起,而稍微拉远时, : 黄灯亮起一下之後,及转成红灯。无法确切得知距离远近,程式上面不知道是哪里出错,还请各 : 位前辈不吝指教,谢谢。 : 以下为我们的程式: : #include <REG51F.H> : sbit P10=P1^0; : sbit P11=P1^1; : sbit P12=P1^2; : sbit P36=P3^6; : sbit P37=P3^7; : void AddTime(void); : void CountDistance(void); : void delay_250US(void); : void delay_10US(void); : void delay_500MS(unsigned int count1); : unsigned int Time=250,Distance=0,Count=0; : main() : { : MAIN_L: : P10=1; //红灯 : P11=1; //黄灯 : P12=1; //绿灯 : P37=1; //SINGLE_IN=H : P36=0; : delay_250US(); : P36=1; : while(1) : { : while(P37==1) : { : MAIN_H: : TMOD=0x11; : AddTime(); : Time++; : } : while(P37==0) : { : delay_10US(); : if(P37==1) : { : goto MAIN_H; : } : else : { : Distance=Time/58; : goto MAIN_N; : } : MAIN_N: : while(Distance>=0&&Distance<1&&Count<10) : { : P10=0; : delay_500MS(10); : P11=1; : P12=1; : Count++; : } : while(Distance>=5&&Distance<30&&Count<10) : { : P10=1; : P11=0; : delay_500MS(10); : P12=1; : Count++; : } : while(Distance>=30&&Distance<300&&Count<10) : { : P10=1; : P11=1; : P12=0; : delay_500MS(10); : Count++; : } : Count=0; : Time=0; : goto MAIN_L; : } : } : } : void delay_250US(void) : { : TL1=65536-250; : TH1=(65536-250)>>8; : TR1=1; : while(TF1==0); : TR1=0; : TF1=0; : } : void AddTime(void) : { : TL0=65536-1; : TH0=(65536-1)>>8; : TR0=1; : while(TF0==0); : TR0=0; : TF0=0; : } : void delay_10US(void) : { : TL0=65536-10; : TH0=(65536-10)>>8; : TR0=1; : while(TF0==0); : TR0=0; : TF0=0; : } : void delay_500MS(unsigned int count1) : { : TL0=65536-50000; : TH0=(65536-50000)>>8; : TR0=1; : while(TF0==0); : TR0=0; : TF0=0; : count1--; : } : 不知道 算不算作业文捏 : 因为不知道错误在哪边 : 希望高手~帮帮忙~说大概哪边有错误~ : 好让我继续改进 : 多谢~ -- --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.161.168.246
1F:推 aa706045:谢谢大大的回覆~ 08/26 23:16







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP