资源简介

/* 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


评论

共有 条评论