超声波测距实验解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验7 超声波测距实验

(1)实验目的

掌握超声波测距的原理

掌握超声波测距的软件编程

(2)实验器材

电源POWER模块、测距&振动&压力&角度模块、主控制器模块、LCD1602、超声波模块、连接线

(3)实验程序

ceju

#include

#include "1602.h"

#include "delay.h"

#define uchar unsigned char

#define uint unsigned int

//#define Trig P2^6

//#define Echo P2^7

void Time0_Init()

{

TMOD |=0X01; //定时0,工作方式1,16位定时器TH0=0;

TL0=0;

ET0=1; //允许T0中断

EA=1; //开启总中断

}

sbit Trig=P2^6;

sbit Echo=P2^7;

double t;

int s;

int ge;

int shi;

int bai;

void main(void)

{

Time0_Init();

lcd_init();

while(1)

{

Trig=0;

Trig=1;

delay_ms(1);

Trig=0;

while(Echo==0);

{

}

TR0=1;

while(Echo==1)

{

}

TR0=0;

t=(double)(TH0*256+TL0)*12.0/11.0592; TH0=0;

TL0=0;

s=(int)340*t/20000;

ge=s%10;

s=s/10;

shi=s%10;

s=s/10;

bai=s;

delay_ms(100);

lcd_display_str(0,0,"s=");

lcd_1602_display_num(1,1,bai);

lcd_1602_display_num(2,1,shi);

lcd_1602_display_num(3,1,ge);

}

}

(4)测试步骤

1. 将超声波模块插入测距&振动&压力&角度传感器模块J5,按表1的连线关系连好线。给模块上电。

2. 编写程序,并下载到主控制器。

3. 用物体挡住超声波模块,观察液晶显示的距离。移动物体,观察液晶显示的距离是否与实际吻合。

(5)实验结果

液晶显示屏上显示超声波模块距离阻挡物的距离(直线距离),最大可到400cm左右。

实验8 PWM直流电机调速实验

(1)实验目的

了解单片机硬件PWM的配置方法

掌握直流电机速度的控制方法

(2)实验器材

电源POWER模块、CPU_51模块、速度&加速度度传感器模块、LCD1602、超声波模块、连接线

(3)实验程序

main.c

#include "1602.h"

#include "delay.h"

#include

int ge,shi,bai,age,ashi;

sbit KEY1=P1^4;

int i=0;

int a;

//定时器初始化

void Time0_Init()

{

TMOD |= 0X01; //定时0,工作方式1,16位定时器

TH0 = (65536-46080)/256; //定时时间:50ms,50ms后进入中断

TL0 = (65536-46080)%256;

ET0 = 1; //允许T0中断

TR0 = 1; //启动定时器0

EA = 1; //开启总中断

}

void Time1_Init()

{

TMOD |= 0x50; //定时器1,工作方式1,16位计数器

TH1 = 0; //计数器赋初值

TL1 = 0;

TR1 = 1; //启动计数器

}

int count,speed = 100 ;

/*定时器0中断函数

count用于计数,计满即是1s,speed变量存1s内得到的脉冲数。

*/

void Time0_Int() interrupt 1

{

count++;

//lcd_1602_display_num(1,0,2);

if(count > 19)

{

speed = TH1*256+TL1; //取得1s,计数器1得到的脉冲数count = 0;

TH1 = 0;

TL1 = 0;

}

TH0 = (65536-46080)/256; //定时器0,重新赋初值

TL0 = (65536-46080)%256;

}

/*PWM初始化

PWM的频率是11.0592/256 MHZ,通过改变CCAP0H和CCAP0L的值,可以改变PWM的占空比。

*/

相关文档
最新文档