資源簡介
/*
CX20106A 超聲波發送與接受程序
40KHz脈沖由單AT89S52單片機P1.0口送出,由P3.2(INT0)采用中斷方式接收。
定時器0,定時器1中斷方式工作,T1為8位自動重裝模式(定時12.5us),T0為16位定時器(定時約65ms)
超聲波接受采用外部中斷INT0,接受到返回脈沖后,在外部中斷程序中計算距離。
65ms超聲波傳播距離約65×10^(-3) × 340m/s =22.1m,距離足夠了,遠超CX20106A的測量范圍。
40KHz對應波周期T=1/40KHz =25us,方波高占空比50%,高低電平寬度分別占0.5T=12.5us。
定時器T1采用8位自動重裝模式(定時12.5us), 在單片機采用12MHz晶振的前提下,(2^8-X)×12/12 us =12.5us
(1) 當X=0xF3時,2^8-X=13, (2) 當X=0xF4時,2^8-X = 12,
所以,取X=0xF3,0xF4均可以滿足計時要求。
距離顯示在4位數碼管上,單位為cm。
*/
/*
單片機P2口接74HC138(三八譯碼器)P2.3--74HC138:/EI、P2.2--74HC138:A2、P2.1--74HC138:A1、P2.0--74HC138:A0
譯碼器輸出 Y0,Y1、Y2、Y3、Y4、Y5、Y6、Y7均低電平有效,分別選通1~8個數碼管。包括2個四位一體數碼管LG3641BH,共2x4=8個數碼管。
數碼管數據口為P0口。數碼管為共陽4位一體數碼管。
功能:
譯碼器輸出為1——8個數碼管的段選信號,輪流選擇1——8數碼管。
dispaly(uint d)將d(distance)的千、百、十、個依次顯示在1~3號數碼管上。
顯示原理:
1、送出要顯示的段數
2、P2譯碼,選擇要顯示的位
3、延時1——2ms,時間不能太長,否則會閃爍,也不能太短,否則會很暗。
4、取消段選,消隱!
若要顯示多段,重復以上4步!
*/

代碼片段和文件信息
/*
CX20106A?超聲波發送與接受程序
40KHz脈沖由單AT89S52單片機P1.0口送出,由P3.2(INT0)采用中斷方式接收。
定時器0,定時器1中斷方式工作,T1為8位自動重裝模式(定時12.5us),T0為16位定時器(定時約65ms)
超聲波接受采用外部中斷INT0,接受到返回脈沖后,在外部中斷程序中計算距離。
65ms超聲波傳播距離約65×10^(-3)?× 340m/s?=22.1m距離足夠了,遠超CX20106A的測量范圍。?
40KHz對應波周期T=1/40KHz?=25us方波高占空比50%,高低電平寬度分別占0.5T=12.5us。
定時器T1采用8位自動重裝模式(定時12.5us)?在單片機采用12MHz晶振的前提下,(2^8-X)×12/12?us?=12.5us
?(1)?當X=0xF3時,2^8-X=13?(2)?當X=0xF4時,2^8-X?=?12,
?所以,取X=0xF30xF4均可以滿足計時要求。
? ?距離顯示在4位數碼管上,單位為cm。
*/
/*
單片機P2口接74HC138(三八譯碼器)P2.3--74HC138:/EI、P2.2--74HC138:A2、P2.1--74HC138:A1、P2.0--74HC138:A0
譯碼器輸出?Y0,Y1、Y2、Y3、Y4、Y5、Y6、Y7均低電平有效,分別選通1~8個數碼管。包括2個四位一體數碼管LG3641BH,共2x4=8個數碼管。
數碼管數據口為P0口。數碼管為共陽4位一體數碼管。
功能:
????譯碼器輸出為1——8個數碼管的段選信號,輪流選擇1——8數碼管。
dispaly(uint?d)將d(distance)的千、百、十、個依次顯示在1~3號數碼管上。
顯示原理:
1、送出要顯示的段數
2、P2譯碼,選擇要顯示的位
3、延時1——2ms,時間不能太長,否則會閃爍,也不能太短,否則會很暗。
4、取消段選,消隱!
若要顯示多段,重復以上4步!
*/
#include?
#include?
#define?uchar?unsigned?char
#define?uint??unsigned?int
sbit?VOUT?=P1^0; //P1.0:40KHz發送端子
sbit?RX?=P1^1; //P1.1:?由亮到滅說明受到了超聲波脈沖.
bit?success?=?0; //接收成功標志位
void?delay(uchar?x);??//x*0.14MS
void?display(uint?d); //顯示距離d(distance)
sbit?P2_3?=P2^3; //?74HC138--/EI
sbit?P2_2?=P2^2; //?74HC138--A2
sbit?P2_1?=P2^1; //?74HC138--A1
sbit?P2_0?=P2^0; //?74HC138--A0
uchar?num; ?//超聲波脈沖個數控制(為num值的一半)
float?time; ?//超聲波傳播時間
uint?distance;?????//距離
uchar?code?table[]={
0xc00xf90xa40xb0
0x990x920x820xf8
0x800x900x880x83
0xc60xa10x860x8e
}; //?共陽數碼管0——F
/*******************************************************************/
main()
{
//????IE?=?0x81;?????????????????//允許總中斷中斷使能?INT0?外部中斷
//????TCON?=?0x01;???????????????//觸發方式為脈沖負邊沿觸發
uint?i;
????TMOD?=?0x21; //T1為8位自動重裝模式,T0為16位定時器
TH0?=?0x00;?????//65ms初值
TL0?=?0x00;?????//
TH1?=?0xF3;?????//12.5us初值
TL1?=?0xF3;?????//12.5us初值
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
num?=4;? ?//超聲波脈沖個數控制(為num值的一半)
PX0?=?1;???????//外部中斷優先
ET0?=?1; ?//允許T0中斷
EA?=?1;
TR0?=1;????????//開啟測距定時器
while(1)
{
while(success==0)?//收到反射信號時,success為1。
{
display(distance);
RX?=?0;
}
RX?=1;
EA?=?0;
for(i=655;?i>0;?i--)?//保持顯示一段時間
{
display(distance);
}
EA?=?1;
TR0?=1;????????//重新開啟測距定時器
success?=?0;
}
}?//end?main
/**********************************************************/
void?exterior()?interrupt?0??//外部中斷0,收到回波時進入
{
????TR0?=?0; //關定時器0
TR1?=?0;??//關定時器1
ET1?=?0;
EA =?0;
EX0 =?0;
time?=?TH0;
time?=?time*256?+?TL0;???//time單位:us
distance?=?time*17/1000;?//單位:cm,光速:340m/s.
????success?=?1;?
}?
/**********************************************************/
void?timer0mode1()?interrupt?1??//T0中斷,65ms中斷一次
{
????EA?=?0;???
TR0?=?0;
TH0?=0x00;
TL0?=0x00;
ET1?=1;
EA?=?1;
TR0?=1; //啟動定時器T0,用以計算超聲波來回時間
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1014784??2014-07-09?16:55??C51超聲波測距程序\C51超聲波測距.doc
?????文件???????5083??2014-07-09?16:44??C51超聲波測距程序\main.c
?????文件?????473148??2014-06-26?13:41??C51超聲波測距程序\參考-51單片機超聲波測距程序.rar
?????文件?????272670??2014-06-26?13:57??C51超聲波測距程序\參考-基于CX20106超聲波測距的調試.rar
?????文件??????29950??2014-06-26?13:59??C51超聲波測距程序\參考-超聲波測距.rar
?????文件??????62522??2014-06-26?13:51??C51超聲波測距程序\重要參考-超聲波測距儀實現.rar
?????目錄??????????0??2014-07-09?17:01??C51超聲波測距程序
-----------?---------??----------?-----??----
??????????????1858157????????????????????7
- 上一篇:在線客服聊天后臺系統設計與實現
- 下一篇:室內清潔機器人的全區域路徑規劃及避障研究
評論
共有 條評論