资源简介
51单片机超声波测距仪制作(电路,PCB,源程序)

代码片段和文件信息
#include
#define k1 P3_4
#define csbout P3_5 //超声波发送
#define csbint P3_7 //超声波接收
#define bg P3_3
#define LED P1
#define LED1 P3_0 //LED控制
#define LED2 P3_1 //LED控制
#define LED3 P3_2 //LED控制
#define csbc=0.0347
unsigned char clmqzdcsbscsbdsbuffer[3]xm1xm2xm0jpjs;//显示标识
unsigned char convert[10]={0xC00xF90xA40xB00x990x920x820xF80x800x90};//0~9段码
unsigned int stixxjsj1sj2sj3mqssx1;
void csbcj();
void delay(j); //延时函数
void scanLED(); //显示函数
void timeToBuffer(); //显示转换函数
void keyscan();
void k1cl();
void k2cl();
void k3cl();
void k4cl();
void offmsd();
void main() //主函数
{
EA=1; //开中断
TMOD=0x11; //设定时器0为计数,设定时器1定时
ET0=1; //定时器0中断允许
ET1=1; //定时器1中断允许
TH0=0x00;
TL0=0x00;
TH1=0x9E;
TL1=0x57;
csbds=0;
csbout=1;
cl=0;
csbs=8;
jpjs=0;
sj1=50;
sj2=200;
sj3=580;
k4cl();
TR1=1; //设定时值1为20ms
while(1)
{
keyscan();
if(jpjs<1)
{
csbcj(); //调用超声波测距程序
if(s>sj3) //大于时显示“CCC”
{
buffer[2]=0xC6;
buffer[1]=0xC6;
buffer[0]=0xC6;
}
else if(s {
buffer[2]=0xBF;
buffer[1]=0xBF;
buffer[0]=0xBF;
}
else timeToBuffer();
}
else timeToBuffer(); //将值转换成LED段码
offmsd();
scanLED(); //显示函数
if(s bg=0;
bg=1;
}
}
void scanLED() //显示功能模块
{
LED=buffer[0];
LED3=0;
delay(200);
LED3=1;
LED=buffer[1];
LED2=0;
delay(200);
LED2=1;
LED=buffer[2];
LED1=0;
delay(200);
LED1=1;
}
void timeToBuffer() //转换段码功能模块
{
xm0=s/100;
xm1=(s-100*xm0)/10;
xm2=s-100*xm0-10*xm1;
buffer[2]=convert[xm2];
buffer[1]=convert[xm1];
buffer[0]=convert[xm0];
}
void delay(i)
{
while(--i);
}
void timer1int (void) interrupt 3 using 2
{
TH1=0x9E;
TL1=0x57;
csbds++;
if(csbds>=40)
{
csbds=0;
cl=1;
}
}
void csbcj()
{
if(cl==1)
{
TR1=0;
TH0=0x00;
TL0=0x00;
i=csbs;
while(i--)
{
csbout=!csbout;
}
TR0=1;
i=mqs; //盲区
while(i--)
{
}
i=0;
while(csbint)
{
i++;
if(i>=4000) //上限值
csbint=0;
}
TR0=0;
TH1=0x9E;
TL1=0x57;
t=TH0;
t=t*256+TL0;
t=t-29;
s=t*csbc/2;
TR1=1;
cl=0;
csbint=1;
if(s {
if(csbs>6)
{
csbs=csbs-2;
sj1=40;
}
sj1=sj1+2;
k4cl();
}
else if(s>=sj3)
{
if(csbs<32)
{
csbs=csbs+2;
sj1=sj1+10;
k4cl();
}
}
}
}
void keyscan() //健盘处理函数
{
xx=0;
if(k1!=1) // 判断开关是否按下
{
delay(100); //延时去抖动
if(k1!=1) // 判断开关是否按下
{
while(!k1)
{
delay(25);
xx++;
}
if(xx>1000)
{
jpjs++;
if(jpjs>3)
{
k4cl();
jpjs=0;
}
}
xx=0;
switch(jpjs)
{
case 1: k1cl();break;
case 2: k2cl();break;
case 3: k3cl();break;
}
}
}
}
voi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 49152 2008-06-26 22:22 51mcuceju\51单片机超声波测距\CSB1.PCB
文件 24361 2008-06-26 23:01 51mcuceju\51单片机超声波测距\CSB1.SCH
文件 3560 2008-06-26 22:59 51mcuceju\51单片机超声波测距\简易超声波测距.c
文件 1312 2009-02-06 21:06 51mcuceju\51单片机超声波测距\Readme.txt
文件 138 2008-12-06 22:36 51mcuceju\51单片机超声波测距\电路板快速制作.url
文件 81 2008-01-02 20:17 51mcuceju\51单片机超声波测距\使用说明.url
目录 0 2009-03-02 22:33 51mcuceju\51单片机超声波测距
目录 0 2009-03-02 22:33 51mcuceju
----------- --------- ---------- ----- ----
78604 8
相关资源
- STM32f103超声波模块例程
- 用于无线传感器网络应用的超声波传
- 循迹小车51程序(超声波 颜色识别 舵
- 基于51单片机的超声波测距技术实现含
- 51单片机智能小车花式,寻迹,红外,
- 基于M-BUS的矿用超声波明渠流量计设计
- 超声波遥控开关电路图
- 基于51单片机超声波测距毕业设计
- STM32F103RCT6 TIME4 TIME5 同时捕获六路
- HC-SR04超声波模块(包含基于51stm32配套
- STM32f103C8t6型单片机用于超声波测距
- 超声波车速测量系统设计
- 基于单片机控制和超声波传感器的液
- 基于超声波定位的跟随小车
- 基于STM32VET6的身高体重肺活量测量系
- 超声波传感器全套资料
- 超声波雾化器专用IC
- stm32-超声波避障程序案例
- MSP432蓝牙控制小车并进行超声波测距
- stm32f103超声波传感器hcsr04控制模板
- STM32F103_SRF05超声波测距模块程序
- STM32蓝牙+超声波+舵机.rar
- 超声波测距stm32
- 基于超声波与航迹推算的扫地机器人
- 超声波测距 基于51 pic avr单片机
- 超声波测距codePCB原理图
- JSN-SR04T超声波测距资料
- stm8s006超声波硬件设计电路
- 超声波测距模组V2.0
- 超声波测距电路发射和接收
评论
共有 条评论