资源简介
/*
CX20106A 超声波发送与接受程序
40KHz脉冲由单AT89S52单片机P1.0口送出,由P3.2(INT0)采用中断方式接收。
定时器0,定时器1中断方式工作,T1为8位自动重装模式(定时12.5us),T0为16位定时器(定时约65ms)
超声波接受采用外部中断INT0,接受到返回脉冲后,在外部中断程序中计算距离。
65ms超声波传播距离约65×10^(-3) × 340m/s =22.1m,距离足够了,远超CX20106A的测量范围。
40KHz对应波周期T=1/40KHz =25us,方波高占空比50%,高低电平宽度分别占0.5T=12.5us。
定时器T1采用8位自动重装模式(定时12.5us), 在单片机采用12MHz晶振的前提下,(2^8-X)×12/12 us =12.5us
(1) 当X=0xF3时,2^8-X=13, (2) 当X=0xF4时,2^8-X = 12,
所以,取X=0xF3,0xF4均可以满足计时要求。
距离显示在4位数码管上,单位为cm。
*/
/*
单片机P2口接74HC138(三八译码器)P2.3--74HC138:/EI、P2.2--74HC138:A2、P2.1--74HC138:A1、P2.0--74HC138:A0
译码器输出 Y0,Y1、Y2、Y3、Y4、Y5、Y6、Y7均低电平有效,分别选通1~8个数码管。包括2个四位一体数码管LG3641BH,共2x4=8个数码管。
数码管数据口为P0口。数码管为共阳4位一体数码管。
功能:
译码器输出为1——8个数码管的段选信号,轮流选择1——8数码管。
dispaly(uint d)将d(distance)的千、百、十、个依次显示在1~3号数码管上。
显示原理:
1、送出要显示的段数
2、P2译码,选择要显示的位
3、延时1——2ms,时间不能太长,否则会闪烁,也不能太短,否则会很暗。
4、取消段选,消隐!
若要显示多段,重复以上4步!
*/
代码片段和文件信息
/*
CX20106A 超声波发送与接受程序
40KHz脉冲由单AT89S52单片机P1.0口送出,由P3.2(INT0)采用中断方式接收。
定时器0,定时器1中断方式工作,T1为8位自动重装模式(定时12.5us),T0为16位定时器(定时约65ms)
超声波接受采用外部中断INT0,接受到返回脉冲后,在外部中断程序中计算距离。
65ms超声波传播距离约65×10^(-3) × 340m/s =22.1m距离足够了,远超CX20106A的测量范围。
40KHz对应波周期T=1/40KHz =25us方波高占空比50%,高低电平宽度分别占0.5T=12.5us。
定时器T1采用8位自动重装模式(定时12.5us) 在单片机采用12MHz晶振的前提下,(2^8-X)×12/12 us =12.5us
(1) 当X=0xF3时,2^8-X=13 (2) 当X=0xF4时,2^8-X = 12,
所以,取X=0xF30xF4均可以满足计时要求。
距离显示在4位数码管上,单位为cm。
*/
/*
单片机P2口接74HC138(三八译码器)P2.3--74HC138:/EI、P2.2--74HC138:A2、P2.1--74HC138:A1、P2.0--74HC138:A0
译码器输出 Y0,Y1、Y2、Y3、Y4、Y5、Y6、Y7均低电平有效,分别选通1~8个数码管。包括2个四位一体数码管LG3641BH,共2x4=8个数码管。
数码管数据口为P0口。数码管为共阳4位一体数码管。
功能:
译码器输出为1——8个数码管的段选信号,轮流选择1——8数码管。
dispaly(uint d)将d(distance)的千、百、十、个依次显示在1~3号数码管上。
显示原理:
1、送出要显示的段数
2、P2译码,选择要显示的位
3、延时1——2ms,时间不能太长,否则会闪烁,也不能太短,否则会很暗。
4、取消段选,消隐!
若要显示多段,重复以上4步!
*/
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit VOUT =P1^0; //P1.0:40KHz发送端子
sbit RX =P1^1; //P1.1: 由亮到灭说明受到了超声波脉冲.
bit success = 0; //接收成功标志位
void delay(uchar x); //x*0.14MS
void display(uint d); //显示距离d(distance)
sbit P2_3 =P2^3; // 74HC138--/EI
sbit P2_2 =P2^2; // 74HC138--A2
sbit P2_1 =P2^1; // 74HC138--A1
sbit P2_0 =P2^0; // 74HC138--A0
uchar num; //超声波脉冲个数控制(为num值的一半)
float time; //超声波传播时间
uint distance; //距离
uchar code table[]={
0xc00xf90xa40xb0
0x990x920x820xf8
0x800x900x880x83
0xc60xa10x860x8e
}; // 共阳数码管0——F
/*******************************************************************/
main()
{
// IE = 0x81; //允许总中断中断使能 INT0 外部中断
// TCON = 0x01; //触发方式为脉冲负边沿触发
uint i;
TMOD = 0x21; //T1为8位自动重装模式,T0为16位定时器
TH0 = 0x00; //65ms初值
TL0 = 0x00; //
TH1 = 0xF3; //12.5us初值
TL1 = 0xF3; //12.5us初值
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
num =4; //超声波脉冲个数控制(为num值的一半)
PX0 = 1; //外部中断优先
ET0 = 1; //允许T0中断
EA = 1;
TR0 =1; //开启测距定时器
while(1)
{
while(success==0) //收到反射信号时,success为1。
{
display(distance);
RX = 0;
}
RX =1;
EA = 0;
for(i=655; i>0; i--) //保持显示一段时间
{
display(distance);
}
EA = 1;
TR0 =1; //重新开启测距定时器
success = 0;
}
} //end main
/**********************************************************/
void exterior() interrupt 0 //外部中断0,收到回波时进入
{
TR0 = 0; //关定时器0
TR1 = 0; //关定时器1
ET1 = 0;
EA = 0;
EX0 = 0;
time = TH0;
time = time*256 + TL0; //time单位:us
distance = time*17/1000; //单位:cm,光速:340m/s.
success = 1;
}
/**********************************************************/
void timer0mode1() interrupt 1 //T0中断,65ms中断一次
{
EA = 0;
TR0 = 0;
TH0 =0x00;
TL0 =0x00;
ET1 =1;
EA = 1;
TR0 =1; //启动定时器T0,用以计算超声波来回时间
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1014784 2014-07-09 16:55 C51超声波测距程序\C51超声波测距.doc
文件 5083 2014-07-09 16:44 C51超声波测距程序\main.c
文件 473148 2014-06-26 13:41 C51超声波测距程序\参考-51单片机超声波测距程序.rar
文件 272670 2014-06-26 13:57 C51超声波测距程序\参考-基于CX20106超声波测距的调试.rar
文件 29950 2014-06-26 13:59 C51超声波测距程序\参考-超声波测距.rar
文件 62522 2014-06-26 13:51 C51超声波测距程序\重要参考-超声波测距仪实现.rar
目录 0 2014-07-09 17:01 C51超声波测距程序
----------- --------- ---------- ----- ----
1858157 7
- 上一篇:在线客服聊天后台系统设计与实现
- 下一篇:室内清洁机器人的全区域路径规划及避障研究
相关资源
- 关于测距模块HC-SR04的内部电路图 ,
- 基于STM32的超声波程序
- 超声波测速
- stm32多路超声波避障小车,L298N驱动,
- F407 双路超声波.zip
- 基于FPGA的超声波测距系统
- 近程高精度脉冲激光测距系统的研究
- IIC-VCNL4000-红外测距和环境光测量代码
- 超声波清洗机论文
- STM32,超声波测距模块HC_SR04,1602显示
- 基于51单片机的超声波测距LCD1602显示
- 基于STM32F407的超声波智能跟随小车
- VL53L0X 3.0 RCWL-0800激光测距
- STM32f103避障智能小车源码
- STM32F407定高超声波避障激光雷达.rar
- stm32单片机 超声波+蜂鸣器+led 代码
- 基于opencv的双目测距代码+文章
- STM32 超声波测距例程
- stm32超声波读取数据串口输出数据
- 激光测距系统设计
- 基于stm32的超声波测距串口输出US100模
- 近距离高精度测距方案超声波
- GPS定位测距码与载波相位测量
- 超声波超声波超声波超声波
- :超声波E+H:\\超声波物位计说明书:\\超
- FPGA控制超声波测距及数码管显示
- 红外测距模块资料.zip
- STM32 多路超声波程序亲测好用
- STM32F蓝牙超声波避障小车
- 基于STM32的热水器设计毕业设计
评论
共有 条评论