-
实验
7
超声波测距实验
(
< br>1
)实验目的
?
掌握超声波测距的原理
?
掌握超声波测距的软件编程
(
2
)实验器材
电源
POWER
模块、
测距
&
振动
&
压力
&
角度模块、
主控
制器模块、
LCD1602
、超声波模块、连接线
(
3
)实验程序
ceju
#include
#include
#include
#define uchar unsigned char
#define uint
unsigned int
//#define Trig P2^6
//#define Echo P2^7
void Time0_Init()
{
TMOD |=0X01;
TH0=0;
TL0=0;
ET0=1;
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();
//<
/p>
定时
0
,
工作方
式
1,16
位定时器
//
允许
T
0
中断
//
开启总中断
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,
lcd_1602_display_num(1,1,bai);
lcd_1602_display_num(2,1,shi);
lcd_1602_display_num(3,1,ge);
}
}
p>
(
4
)测试步骤
1.
将超声波模块插入测距
&
振动
&
压力
&
角度传感器模
块
J5
,按表
1
的连线关系连好线。给模块上电。
2.
编写程序,并下载到主控制器。
3.
用物体挡住超声波模块,
观察液晶显示的距离。
移动
物体,观察液晶显示的距离是否与实际吻合。
(
5
p>
)实验结果
液晶显示屏上显示超声波模块
距离阻挡物的距离(直线
距离)
,最大可到
400cm
左右。
实验
8
PWM
直流电机调速实验
(
1
)实验目的
?
了解单片机硬件
< br>PWM
的配置方法
?
掌握直流电机速度的控制方法
(
p>
2
)实验器材
电
源
POWER
模块、
CPU_51
p>
模块、速度
&
加速度度传
< br>感器模块、
LCD1602
、超声波模块、连接线
(
3
)实验程序<
/p>
main.c
#include
#include
#include
int ge,shi,bai,age,ashi;
sbit KEY1=P1^4;
int i=0;
int a;
//
定时器初始化
void Time0_Init()
{
TMOD |= 0X01; //
定时
0
,工作方式
1
,
< br>16
位定时器
TH0 =
(65536-46080)/256; //
定时时间:
50
ms
,
50ms
后进入中
断
TL0 =
(65536-46080)%256;
ET0 = 1; //
允许
T0
中断
TR0 = 1; //
启动定时器
0
EA = 1; //
开启总中断
}
void Time1_Init()
{
}
int count,speed = 100
/*
p>
定时器
0
中断函数
count
用于计数,计满即是
1s<
/p>
,
speed
变量存
1s
内得到的脉
冲数。
*/
TMOD |= 0x50; //
定时器
1
,工作方式
1
,
16
位计数器
TH1 = 0; //
计数器赋初值
TL1 = 0;
TR1 = 1;
//
启动计数器
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
初始化
< br>PWM
的频率是
11.0592/256 MHZ
,通过改变
CCAP0H
和
< br>CCAP0L
的值,可以改变
PWM
的占空比。
*/
void PWM_Init()
{
//PCA
工作模式寄存器,设置<
/p>
PCA/PWM
时钟源输入为
sysclk/12
关闭
PCA
p>
溢出计数中断
CMOD = 0X00;
CCON = 0X00;
CCAPM0 = 0X42;
//PCA
控制寄存器
//PCA
比较
/
捕获寄存器,
设置
P1.3
pwm
输出,无中断
CL = 0X00;
CH = 0X00;
//PCA
的
16
位计数器
< br>//PCA
捕获
/
比较寄存器,
当
PCA
模块
用于
PWM
模式时,他们用来控制输出的占空比
CCAP0L =
0XC0;//
占空比
25% CCAP0H=CCAP0L=
0X80
时占空比
50%
0(
ˇ
?
ˇ)
0X40
时
75%
}
int b;
void
main(void)
CCAP0H = 0XC0;
CR
= 1;
//
启动
PCA
定时器
{
while(1){
while(KEY1){;}//
开关不闭合不改变
if(i==0)
{CCAP0L = 0XC0;
CCAP0H = 0XC0;
a=25;}
else if(i==1)
{CCAP0L = 0X80;
CCAP0H = 0X80;
a=50;}
else
{CCAP0L = 0X40;
CCAP0H = 0X40;
a=75;}
int test_li=0
lcd_init();
Time0_Init();
Time1_Init();
PWM_Init();
b=speed;
ge=b%10;
b=b/10;
shi=b%10;
bai=b/10;
age=a%10;
ashi=a/10;
lcd_display_str(0,1,
lcd_1602_display_num(7,1,bai);
lcd_1602_display_num(8,1,shi);
}
lcd_1602_display_num(9,1,ge);
lcd_display_str(0,0,
lcd_1602_display_
num(9,0,age);
lcd_1602_display_num(10,0,ashi);
i++;
i=i%3;
delay_ms(1000);
}
(
4<
/p>
)测试步骤
1.
按照连线方法连线。
2.
自行编写主程序
3.
给系统上电。
4.
观察液晶屏显示的转速是否正确,
连续按下轻触开关
K
EY1
,观察液晶屏显示的转速和占空比是否变化。
(
5
)实验结果
p>
液晶显示屏上第一行显示占空比,第二行显示转速。占
空比随按键按
下变化,同时转速也发生变化。占空比大时转
速快。
实验
9
红外对管转速测量实验
(
1
)实验目的
?
了解电机驱动的原理
?
了解红外对管的工作原理
?
掌握使用红外对管测速的方法
(
p>
2
)实验器材
电
源
POWER
模块、红外传感器模块、主控制器模块、
LCD1602
、超声波模块、连接线
(
3
)实验程序
main.c
#include
#include
#include
int ge,shi,bai,age,ashi;
sbit KEY1=P1^4;
int i=0;
int a;
//
定时器初始化
void Time0_Init()
{
-
-
-
-
-
-
-
-
-
上一篇:超声波雷达的试验研究
下一篇:Mathematics命令集