|
(Proteus仿真圖及程序文件由附件下載)
要想做超聲波測(cè)距系統(tǒng)的仿真,核心是怎么解決這個(gè)問(wèn)題:實(shí)物系統(tǒng)實(shí)際存在的超聲波并利用它測(cè)距如何在仿真圖中實(shí)現(xiàn)。我也下載過(guò)很多別人的仿真圖,可是自己一運(yùn)行就是沒(méi)顯示,全部都不能用,其實(shí)問(wèn)題就是出在仿真圖中超聲波發(fā)射接收模塊。經(jīng)過(guò)修改的仿真圖如下(親測(cè)可用)
這個(gè)仿真圖還包含按鍵設(shè)置模塊和報(bào)警模塊(前者用于設(shè)置報(bào)警值,后者在測(cè)得距離小于設(shè)置報(bào)警值時(shí)候蜂鳴器報(bào)警),由上圖中標(biāo)注的按鍵模塊和報(bào)警模塊實(shí)現(xiàn),按鍵設(shè)置模塊用法如下:
按下一次KEY1,顯示屏顯示當(dāng)前設(shè)置的報(bào)警值,按下KEY2最小值加1CM,按下KEY2減1CM,設(shè)置完成后按下KEY1保存,顯示屏返回顯示距離,如此往復(fù)循環(huán)。
KEIL程序框架圖
單片機(jī)源程序如下:
- #include "task.h"
- extern unsigned int S; //聲明距離緩存變量,在文件"task.c"中定義
- extern unsigned int dis_buf[4]; //聲明顯示緩存數(shù)組,在文件"task.c"中定義
- extern unsigned int code duan_ma[16];
- extern unsigned int S_H, S_L; //S_H:報(bào)警上限值,默認(rèn)400cm,S_L:報(bào)警下限值,默認(rèn)10cm
- /* 主函數(shù) */
- void main(void)
- {
- digDuan = 0x40; //顯示"----"
- digWei1 = 0;
- digWei2 = 0;
- digWei3 = 0;
- digWei4 = 0;
- delayms(1000); //延時(shí)大約1s
- InitTimer0(); //定時(shí)器0初始化
- while(1)
- {
- count(); //計(jì)算距離
- if(S>=S_H || S<=S_L) //如果超出設(shè)定的范圍,則顯示"---"
- {
- dis_buf[3] = 0x00;
- dis_buf[2] = 0x40; //顯示"---"
- dis_buf[1] = 0x40;
- dis_buf[0] = 0x40;
- BEEP = 0; //蜂鳴器鳴叫
- delayms(1000);
- }
- else
- {
- BEEP = 1; //關(guān)閉蜂鳴器
- dis_distance(); //顯示距離
- }
- if(key_scan() == 1) //如果按下設(shè)置鍵,則進(jìn)入設(shè)置報(bào)警功能
- {
- BEEP = 0; //按鍵提示音
- delayms(50);
- BEEP = 1;
- delayms(100);
- key_fuction(); //進(jìn)入設(shè)置報(bào)警功能
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
雷達(dá)測(cè)距.rar
(120.28 KB, 下載次數(shù): 506)
2020-7-18 23:10 上傳
點(diǎn)擊文件名下載附件
超聲波測(cè)距報(bào)警系統(tǒng)
|
評(píng)分
-
查看全部評(píng)分
|