网络上集的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-11 12:27
推荐帖子
- CCS3.3 中文学习手册
- 上传了两个CCS3.3的中文学习手册,希望对大家有帮助!CCS3.3中文学习手册东西收下了,感谢楼主谢谢楼主。好东西呀学习下载中谢谢楼主1好东西,谢谢楼主资料不错,最近在看谢谢啊。好东西啊,新手学习中,感谢楼主分享楼主好人哪很给力的资源!!谢谢啦。呵呵呵谢谢楼主新手学习中,感谢楼主分享好东西收藏了!!真的很感激你的无私奉献谢谢楼主!好棒谢谢啊谢谢楼主,学习中谢谢了!楼主东西收下了,感谢楼主辛苦楼主了呵呵呵谢谢楼主谢谢呀。。
- kooking DSP 与 ARM 处理器
- ***uC/OS-II中实现多个生产者和多个消费者问题****
- 利用uC/OS-II内核中的信号量操作,生产者和消费者的数目都是3,缓冲区的大小10。如何利用uC/OS-II中的信号量来实现呢?想了很久不知道怎么实现任务间的同步和互斥,望大虾指教,给个伪代码看看也好。***uC/OS-II中实现多个生产者和多个消费者问题****
- 忧乐游子 嵌入式系统
- 全套中文FPGA入门及提高教程
- 全套中文FPGA入门及提高教程
- 至芯科技FPGA大牛 FPGA/CPLD
- 【国产FPGA安路 高集成低功耗SF1系列FPSoC新品】RISC-V硬核使用OLED(有避坑提示)
- 前言板载了OLED屏,我们现在使用RISC-V硬核来操作OLED,后面进行一些GUI的开发。引脚时序约束不添加时序约束可能JTAG无法连接。双击如下图片添加时序约束文件内容为class=pstyle=create_clock-nameI_clk_25m-period40-waveform{020}下载bit文件打开TN810_SF102\src\oled_screen_d
- qinyunti 国产芯片交流
- 无线学习狂欢季,躁起来!秒入心仪TI无线开发板,晒单专用帖!
- 学无线很贵?无线开发板太多,太难选?一个人学无线太孤单?从今天起,这都不是事儿!TI无线学习狂欢季盛大开启,一个专门为无线爱好者准备的无线盛宴!即日起——8月16日1、登陆活动页面,收藏TI版块,抢“无线加油大礼包”,仅有300份,先到先得!2、抢得无线加油包的朋友:1)活动期间,在TIestore购买以下开发板(CC3200LaunchPad或SimpleLinkSensorTagCC2650STK),2)在本帖跟帖晒
- EEWORLD社区 无线连接
- TI 电源培训系列电子书---开关电源基础知识
- TI电源培训系列电子书---开关电源基础知识有心人整理成册,感觉挺好,我们不妨拿来,阅读学习。先把前言,目录给大家贴一下,希望大家喜欢,需要的拿走,不需要还是那样,,飘过,,,,,Timson,如果您要查看本帖隐藏内容请回复TI电源培训系列电子书---开关电源基础知识还真需要啊!还真需要啊!好东西~顶一个:carnation:好东西坚决拿下好东东,收下了Thanks!谢谢分享!THANKYOU回复楼主qwqwqw2088的帖子谢谢分享!
- qwqwqw2088 模拟与混合信号
设计资源 培训 开发板 精华推荐
- LTC4224-2 演示板,具有自动重试功能的双路低电压热插拔控制器
- P1021MDS:QorIQ®P1021 / P1012模块化开发系统
- AN54,使用 LTC1149 16 Vrms、13.8V/10A) 降压转换器的应用电路
- SC620 八路 LED 驱动器的典型应用,带串行接口的通用电流吸收器
- STM32 TJR
- 用于 24V 汽车应用的 LTC4367CMS8 过压电源保护控制器的典型应用
- AP2132 2A CMOS LDO REGULATOR可调版的典型应用
- 当 LTC2380HMS-16 中启用数字增益压缩时,使用 LT6350 的典型应用被配置为接受 ±10V 输入信号,同时运行一个 5.5V 单电源
- C3024477_CH343G芯片方案验证板
- LTM4604A 的典型应用 - 具有跟踪功能的低电压、4A DC/DC 模块稳压器