超声波使用的是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)
|