超聲波使用的是HC-SR04,顯示用的是7腳oled屏幕,利用spi協議書寫
單片機頻率使用11.0592MHZ,可直接添加c文件到任意工程
實物圖如下:
單片機源程序如下:
- //Trig=P3.4
- //ECHO=P3.3
- #include "mian.h"
- u16 xdata Acoustic_Distance; //定時器值保存,超聲波測量結果
- u16 xdata Timer1_time; //距離保存
- //***************************************************************************
- // 定時器一的服務函數
- //***************************************************************************
- void Timer1_Routine() interrupt 3
- {
- Timer1_time++; //測量距離多少毫米
- if(Timer1_time>=500)
- {
- TR1=0; //關閉定時器
- }
- }
- //***************************************************************************
- // 定時器1的配置初始化
- //***************************************************************************
- void Timer1_Init()
- {
- AUXR|=0x40;
- TMOD&=0x0f; //八位自動重裝初值
- TMOD|=0xa0; //GATE置1
- TH1=0x53; //定時器初始值
- TL1=0x53;
- TF1=0;
- TR1=0;
- ET1=1;
- EA=1;
- }
- //***************************************************************************
- // 超聲波初始化
- //***************************************************************************
- void Acoustic_Init()
- {
- Timer1_Init();
- Pulse=0;
- }
- //***************************************************************************
- // 超聲波觸發與測量服務
- //***************************************************************************
- void Acoustic_Amount_Drive()
- {
- static xdata u16 count=0;
- switch(count)
- {
- case 1: Pulse=1;TR1=1;Timer1_time=0; break;
- case 2: Pulse=0; break;
- case 100:count=0;Acoustic_Distance=Timer1_time; break;
- }
- count++;
- }
復制代碼
Keil代碼工程文件51hei附件下載:
超聲波.zip
(87.08 KB, 下載次數: 86)
2021-7-13 15:50 上傳
點擊文件名下載附件
|