|
(Proteus仿真圖及程序文件由附件下載)
要想做超聲波測距系統(tǒng)的仿真,核心是怎么解決這個問題:實物系統(tǒng)實際存在的超聲波并利用它測距如何在仿真圖中實現(xiàn)。我也下載過很多別人的仿真圖,可是自己一運(yùn)行就是沒顯示,全部都不能用,其實問題就是出在仿真圖中超聲波發(fā)射接收模塊。經(jīng)過修改的仿真圖如下(親測可用)
1.png (216.48 KB, 下載次數(shù): 98)
下載附件
2020-7-18 22:55 上傳
這個仿真圖還包含按鍵設(shè)置模塊和報警模塊(前者用于設(shè)置報警值,后者在測得距離小于設(shè)置報警值時候蜂鳴器報警),由上圖中標(biāo)注的按鍵模塊和報警模塊實現(xiàn),按鍵設(shè)置模塊用法如下:
按下一次KEY1,顯示屏顯示當(dāng)前設(shè)置的報警值,按下KEY2最小值加1CM,按下KEY2減1CM,設(shè)置完成后按下KEY1保存,顯示屏返回顯示距離,如此往復(fù)循環(huán)。
KEIL程序框架圖
2.png (277.53 KB, 下載次數(shù): 78)
下載附件
2020-7-18 23:06 上傳
單片機(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:報警上限值,默認(rèn)400cm,S_L:報警下限值,默認(rèn)10cm
- /* 主函數(shù) */
- void main(void)
- {
- digDuan = 0x40; //顯示"----"
- digWei1 = 0;
- digWei2 = 0;
- digWei3 = 0;
- digWei4 = 0;
- delayms(1000); //延時大約1s
- InitTimer0(); //定時器0初始化
- while(1)
- {
- count(); //計算距離
- 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è)置報警功能
- {
- BEEP = 0; //按鍵提示音
- delayms(50);
- BEEP = 1;
- delayms(100);
- key_fuction(); //進(jìn)入設(shè)置報警功能
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
雷達(dá)測距.rar
(120.28 KB, 下載次數(shù): 506)
2020-7-18 23:10 上傳
點擊文件名下載附件
超聲波測距報警系統(tǒng) 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|