网络上集的STC89C52RC单片机超声波测距程序及电子制作实物,使用单片机最小系统进行试验,超声波部分使用HC-SR04模块,测量范围:4-300cm,实际测量上最长可达到5.70m。下面是实物图,文章后面附源程序。
4-300cn,实际测量上最长可达到5.7m
#include ‘AT89X51.H’ //头文件
unsigned char code fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char code segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char disbuf[8]={0,0,0,0,0,0,0,0};
//-----------------------------------------------------------------------------
// 函数原形定义
#define uchar unsigned char
#define uint unsigned int
void main (void); // 主函数
void LED4_Display (void); // LED显示
void LED_OUT(uchar X); // LED单字节串行移位函数
void delayms(uint); //延时子函数 ms
void jisuan(void);
unsigned char code LED_0F[]; // LED字模表
sbit DIO=P1^0; //串行数据输入
sbit RCLK=P1^1; //时钟脉冲信号——上升沿有效
sbit SCLK=P1^2; //打入信号————上升沿有效
sbit echo=P3^2; //echo
sbit trig=P3^3; //trig
//-----------------------------------------------------------------------------
// 全局变量
uchar LED[8]; //用于LED的8位显示缓存
uint temp;
uint temp1;
uint a,b; //定义一个变量a,b 后者用于判断是否收到信号
//
// 主程序
//
void main(void) //主函数开始
{
uint f;
echo=0; //先拉低echo,trig引脚
trig=0;
f=500;
while(f》0); //启动延时 消除第一次上电产生的波动
{
LED[3]=16;
LED[2]=15;
LED[1]=15;
LED[0]=16;
f--;
}
EA=1; //开总中断
TMOD=0x11; //设置定时器为方式1
ET0=1; //允许定时器中断 这里主要是防止超声波模块未发送信号
ET1=1;
while(1)
{
echo=0;//a赋值
a=0;
b=1;
TH0=0; //定时器装初值
TL0=0;
TH1=(65536-25000)/256; //定时器装初值
TL1=(65536-25000)%6;
trig=1; //trig送高
LED4_Display (); // 延时3ms
LED4_Display ();
LED4_Display ();
LED4_Display ();
LED4_Display ();
LED4_Display ();
LED4_Display ();
trig=0; //trig送低
TR1=1;
while(echo==0); //等待echo变为高电平
if(b==1) 判断是否收到信号
{
上一篇:89C2051单片机无线遥控电铃的工作原理
下一篇:AT89C51单片机与74LS164动态显示接口
推荐阅读最新更新时间:2024-11-17 13:35
推荐帖子
- BCSCTl1和BCSCTL2的问题。
- 我使用MSP430F449在IAR中写入BCSCTL2|=BIT7;BCSCTL2&=~BIT6;//SELM.1=1,SELM.0=0;MCLK时钟源为TX2CLK编译时报错:Error:identifierBCSCTL1isundefinedError:identifierBCSCTL2isundefined这是怎么回事?BCSCTl1和BCSCTL2的问题。您用的1XXX系列的设置方式,4XXX的设置供参考:#includemsp430x44x.h
- suo618 微控制器 MCU
- Verilog实例代码
- 给大家学习fpga过程汇总一下代码历程Verilog实例代码谢谢分享呵呵,大家共同学习,共同进步啊回复沙发David_Lee的帖子非常感谢谢谢分享很感谢分享,好好学习一下很感谢分享,好好学习一下谢谢好东西,谢了很好啊谢谢诶拉很好啊谢谢.很不错,有机会学习一下谢谢楼主的分享good谢谢分享谢谢楼主分享,正在学习中。。学习了。。
- jjkwz FPGA/CPLD
- 用示波器可以测量磁芯损耗?
- 用示波器可以测量磁芯损耗?究竟能不能实现,推荐这篇文章给大家:用示波器可以测量磁芯损耗?谢谢版大分享!
- dontium 模拟电子
- 求助USART收发问题~希望大家帮下【已解决】
- 利用串口调试助手发送数据没反应~程序如下:#includestm32f10x_lib.hvoidRCC_Configuration(void);voidGPIO_Configuration(void);voidUSART1_Configuration(void);/********************************************************************************函数名:main*函数描述:主
- sodapop stm32/stm8
- 想买个ARM板,请大家帮忙
- 想买个ARM9的板子用来做嵌入式ARM-linux学习,但是不知道哪个厂家的好。QQ2440,mini2440,还有扬创、优龙的,这些质量都差不多吗?价格如何?想买个ARM板,请大家帮忙优龙网站上有价格阿,我觉得他做工比较好!!虽然贵点,我的就优龙的FS2410也有同样的想法~~用过的说下啊~~给你一个qq,我的一个同学专门卖这种板子的:93618344如果是自己出钱建议QQ2440:)帮顶帮顶引用楼主chongchong8的帖子:想买个ARM9的板子用来做嵌入式A
- bawgijfd ARM技术
- 【2024 DigiKey 创意大赛】基于Raspberry Pi 5的植物生长监管系统—5、组装
- 现在万事俱备,只差组装,首先拿出花盆和种子。将旧植株搅碎充当肥料。撒入种子,翻拌均匀,放在一旁备用。借助3D打印制作硬件部分的外壳。底部左侧放置电源,右侧放置水电磁阀,上面放洞洞板和继电器。打印完成。将各个部件装入盒子。然后组装浇水模块,给水阀裁剪出长短合适的水管。用电烙铁给瓶盖戳个洞,插入水管。检查气密性,看是否漏水,如果漏水需要用热熔胶或者其他手段加固。所有部件如图。在花盆内安装好土壤湿度
- Wenyou DigiKey得捷技术专区
设计资源 培训 开发板 精华推荐
- AM2G-4815DZ ±15V 2 瓦 DC/DC 转换器的典型应用
- TC212-UDS
- LT1956IGN 正负降压转换器的典型应用电路
- 用于手电筒的 2-LED 大功率 LED 驱动器
- 使用 Analog Devices 的 LT1021DIN8-10 的参考设计
- LT1308 数码相机电源从两节 AA 电池提供 5V/200mA、3.3V/200mA、18V/10mA 和 10V/10mA
- 采用STM32U575ZIT6Q MCU和SMPS的STM32 Nucleo-144开发板,支持Arduino、ST Zio和morpho连接
- 用于手机的 6-LED 白光 LED 驱动器
- LT6656BCS6-3、3V ADC 电压基准和桥式励磁电源的典型应用
- 使用 Analog Devices 的 LT1351 的参考设计