AT89c2051单片机超声波测距精度系统...

21ic官方微信
1、中关村转型创业街 告别传统电子卖场 ​涵盖昔日……
1、安卓之父:美国手机市场越来越像中国 ​Android……
ADI公司电机与电源控制事业部亚太区市场经理于常涛就认为……
“Vicor领先行业其他竞争对手至少10年以上,值得尊敬!”……
演讲人:吴际时间: 10:00:00
演讲人:李迪汶时间: 10:00:00
演讲人:王楹时间: 10:00:00
预算:小于¥1,000预算:¥5,000-¥10000
您当前的位置:&&>&
基于AT89C2051的超声波测距系统
3.3 数码管显示电路
数据显示采用串行接口LED显示驱动管理芯片MC14489,它的输入端与系统CPU之间只有3条I/0口线相连。这3个端口是:使能端ENBLE、时钟端CLOCK、数据端DATA IN,通过这3个端口写控制字和数据。更新显示寄存器的内容,需要传送3个字节的信息,更新配置寄存器的内容仅需要传送一个字节的信息。这种芯片可以显示5位数码管数据,本系统只用到了4位。驱动电压为5 V,亮度调节通过 端口与地之间连接的电阻来调节,电阻增大亮度减小。显示电路如图6所示。
图6 显示电路
3.4 单片机系统
发射的超声波被调制成包含40 kHz方波的具有一定时间间隔的矩形波脉冲信号,其发射、接收脉冲工作时序图如图7所示。由单片机AT89C2051的P1.7口控制H桥电路的使能端EN,送出40 kHz的超声波脉冲信号,其脉冲宽度及脉冲间隔均由软件控制。脉冲宽度约为125~200us,即在一个调制脉冲内包含5~8个40 kHz的方波。脉冲发送间隔取决于要求测量的最大距离。若在有效测距范围内有被测物体,则在后一次超声波束发出之前应当接收到前一次发射的反射波,否则认为前方无被测物体。因此,按有效测距范围可以估算出最短的脉冲间隔发送时间。例如:最大测距范围为10m时,脉冲间隔时间t:2s/v=2&10/340&60ms,实际应取t&60 ms.本系统为方便起见,选择脉冲间隔定时器为65 ms.
图7 发射和接收脉冲时序图
3.5 串口输出
MC14489可以通过和单片机串口进行通信,当显示面板离主控制板较远时,数据信号将会衰减,所以可通过串口来传输数据。
3.6 按键输入
本系统可以设定距离值,当大于或小于设定值时将发出控制信号。P1.5、P1.6输出高低电平,从而可以控制继电器等外部设备。由3个按键设定距离值:S0的作用是进入和退出设定,S1和S2分别是向上加值和向下减值,每按一次加或减一厘米,由数码管输出显示。
4 系统软件设计
该系统软件采用8051汇编语言编写,主程序流程图如图8所示。AT89C2051单片机有2个外中断口,分别用于接收回波中断和按键输人中断,对应2个外中断子程序。此外,还用到了内部中断定时器, 它用于控制发送载波脉冲,如图9所示。 定时器65 ms产生中断一次,主要是发送载波脉冲和计数器清零。外中断0将在有下降沿触发时产生中断,用于读取定时器产生的计时值和使标志位置位。外中断1是按键输人中断,用于提供比较值来输出控制信号。S0第一次触发为中断产生信号,再次触发则为输入确定信号。S1和S2按键是输入值增加和减少按键,它们通过判断对应的10口状态来确定是否输入。
图8 主程序流程图
相 关 推 荐
频道关键词
ICP许可证号:京ICP证070360号&&&&&&
& 21IC电子网 2000-版权所有
公安部备案号:您的位置: >
用户级别:高级会员
贡献文章:
贡献资料:
+ (0) + (0)
at89c2051制作的超声波测距源程序
#include &REG2051.H&
#define k1 P3_4
#define csbout&&& P3_5&&&&&&&&&&&&&&&&& //超声波发送
#define csbint&&& P3_7&&&&&&&&&&&&&&&&& //超声波接收
#define csbc=0.034
#define bg& P3_3
unsigned char csbds,opto,digit,buffer[3],xm1,xm2,xm0,key,//显示标识
unsigned char convert[10]={0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9段码
unsigned int s,t,i, xx,j,sj1,sj2,sj3,mqs,sx1;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void csbcj();
void delay(j);&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //延时函数
void scanLED();&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //显示函数
void timeToBuffer();&&&&&&&&&&&&&&&&& //显示转换函数
void keyscan();
void k1cl();
void k2cl();
不好我反对
at89c2051制作的超声波测距源程序下载
相关电子资料下载
评价:好评中评差评
技术交流、我要发言
发表评论,获取积分! 请遵守相关规定!提 交
Powered by: 电子发烧友 (
. .All Rights Reserved 粤ICP备号君,已阅读到文档的结尾了呢~~
基于at89c2051的超声波测距系统00715,超声波测距系统的设计,超声波测距系统,超声波测距系统设计,超声波测距报警系统,基于单片机超声波测距,基于stm32超声波测距,基于psoc的超声波测距,超声波测距,超声波测距模块
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于at89c2051的超声波测距系统00715
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口查看: 2038|回复: 8
制作容易的超声波测距板
& && &这款简单的单片机超声波测距板,比较适合电子小制作爱好者仿 制,超声波测距硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路三部分。超声波测距单片机采用AT89C2051。采用 12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。超声波测距单片机用P3.5端口输出超声波换能器所需的40kHz的方波信号,P3.7端 口监测超声波接收电路输出的返回信号。显示电路采用简单实用的3位共阳LED数码管,段码输出端口为单片机的P1口,位码输出端口分别为单片机的 P3.2、P3.1、P3.0口,数码管位驱运用PNP三极管S9012三极管驱动。超声波测距测量范围25-300厘米,精度1厘米。
;& && && &&&基于AT89C2051单片机超声波测距系统
;& && && & 测量范围35-300厘米
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;& && && & 中断入口程序& && && && &&&;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
& && && && &ORG 0000H
& && && && &AJMP START
& && && && &ORG 000BH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;& && && & 主 程 序& && && && && &&&;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
START& &&&: MOV R0,#70H& &&&;立即数70H送寄存器R0中
& && && && &MOV R7,#0BH& &&&;立即数0BH送寄存器R7中
& && && && &MOV 20H,#00H& & ;立即数00H送20H单元中
CLEARDISP:&&MOV @R0,#00H& & ;立即数立即数00H送R0中的地址单元中
& && && && &INC R0& && && & ;寄存器R0加1
& && && && &DJNZ R7,CLEARDISP;寄存器中的数值减1非零时转移
& && && && &MOV TMOD,#01H& &;置定时器T0工作方式样3,对内部机器周期计数
& && &CJZCX:MOV TL0,#00H& & ;装入定时器初值
& && && && &MOV TH0,#00H
& && && && &MOV R0,#0FH
& && && && &MOV R1,#5bH
& && &puzel:MOV 14H,#08H& & ;超声波发射持续200us
& && & Here:CPL P3.5& && &&&;输出40kHz方波
& && && && &NOP& && && && & ;
& && && && &NOP& && && && & ;
& && && && &NOP& && && && & ;& && && && && && && && && &&&
& && && && &DJNZ 14H,Here& &;
& && && && &SETB TR0
& && && && &SETB P3.2
& && && && &MOV R6,#53H& &&&;延时1.5ms
DL0:& && &&&MOV R5,#03H
& && && && &DJNZ R5,$
& && && && &DJNZ R6,DL0
& && &&&QBA:JNB P3.7,QBC
& && && && &DJNZ R1,QBA
& && && && &DJNZ R0,QBA
& && &&&QBC:CLR P3.2
& && && && &CLR TR0& && && && && && &
& && && && &MOV 70H,tl0
& && && && &MOV 71H,tH0
& && && && &MOV R2,71H
& && && && &MOV R3,70H
& && && && &MOV R6,#22H
& && && && &MOV R7,#0H
& && && && &LCALL MULD& && && && && && && && &
& && && && &MOV R6,#64H
& && && && &MOV R7,#0H
& && && && &LCALL DIVD
& && && && &MOV 73H,R2
& && && && &MOV 74H,R3
& && && && &MOV R3,#0H
& && && && &MOV R4,#0H
& && && && &MOV R5,#0H
& && && && &MOV R6,73H
& && && && &MOV R7,74H& &
& && && && &LCALL HB2& && && && && && &&&
& && && && &MOV A,R4& && & ;分离BCD
& && && && &MOV B,#10H
& && && && &DIV AB
& && && && &MOV 78H,A
& && && && &MOV 77H,B
& && && && &MOV A,R5
& && && && &MOV B,#10H
& && && && &DIV AB
& && && && &MOV 76H,A
& && && && &MOV 75H,B
& && && && &MOV 7AH,#0EFH
& && &&&XXX:LCALL DISPLAY& && && && && &
& && && && &DJNZ 7AH,XXX
& && && && &AJMP CJZCX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;& && && &乘34程序(乘声速)& && && && &;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;& && &MULD: MOV A,R3&&;计算R3乘R7
& && && && &MOV B,R7
& && && && &MUL AB
& && && && &MOV R4,B& && &&&;暂存部分积
& && && && &MOV R5,A
& && && && &MOV A,R3& && &&&;计算R3乘R6
& && && && &MOV B,R6
& && && && &MUL AB
& && && && &ADD A,R4& && &&&;累加部分积
& && && && &MOV R4,A
& && && && &CLR A
& && && && &ADDC A,B
& && && && &MOV R3,A
& && && && &MOV A,R2& && &&&;计算R2乘R7
& && && && &MOV B,R7
& && && && &MUL AB
& && && && &ADD A,R4& && &&&;累加部分积
& && && && &MOV R4,A
& && && && &MOV A,R3
& && && && &ADDC A,B
& && && && &MOV R3,A
& && && && &CLR A
& && && && &RLC A
& && && && &XCH A,R2& && &&&;计算R2乘R6
& && && && &MOV B,R6
& && && && &MUL AB
& && && && &ADD A,R3& && &&&;累加部分积
& && && && &MOV R3,A
& && && && &MOV A,R2
& && && && &ADDC A,B
& && && && &MOV R2,A
& && && && &RET
& && && && && && &
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;& && && &除100程序(除法)& && && && & ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
& && &DIVD: CLR C& && && &&&;比较被除数和除数
& && && && &MOV A,R3
& && && && &SUBB A,R7
& && && && &MOV A,R2
& && && && &SUBB A,R6
& && && && &JC DVD1
& && && && &SETB OV& && && &;溢出
& && && && &RET
& && &DVD1: MOV B,#10H& && &;计算双字节商
& && &DVD2: CLR C& && && &&&;部分商和余数同时左移一位
& && && && &MOV A,R5
& && && && &RLC A
& && && && &MOV R5,A
& && && && &MOV A,R4
& && && && &RLC A
& && && && &MOV R4,A
& && && && &MOV A,R3
& && && && &RLC A
& && && && &MOV R3,A
& && && && &XCH A,R2
& && && && &RLC A
& && && && &XCH A,R2
& && && && &MOV F0,C& && &&&;保存溢出位
& && && && &CLR C
& && && && &SUBB A,R7& && & ;计算(R2R3-R6R7)
& && && && &MOV R1,A
& && && && &MOV A,R2
& && && && &SUBB A,R6
& && && && &ANL C,/F0& && & ;结果判断
& && && && &JC DVD3
& && && && &MOV R2,A& && &&&;够减,存放新的余数
& && && && &MOV A,R1
& && && && &MOV R3,A
& && && && &INC R5& && && & ;商的低位置一
& && &DVD3: DJNZ B,DVD2& &&&;计算完十六位商(R4R5)
& && && && &MOV A,R4& && &&&;将商移到R2R3中
& && && && &MOV R2,A
& && && && &MOV A,R5
& && && && &MOV R3,A
& && && && &CLR OV& && && & ;设立成功标志
& && && && &RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;& && && &&&BCD转换& && && && && && &;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
& && & HB2: CLR A& && && &&&;BCD码初始化
& && && && &MOV R3,A
& && && && &MOV R4,A
& && && && &MOV R5,A
& && && && &MOV R2,#10H& &&&;转换双字节十六进制整数
& && & HB3: MOV A,R7& && &&&;从高端移出待转换数的一位到CY中
& && && && &RLC A
& && && && &MOV R7,A
& && && && &MOV A,R6
& && && && &RLC A
& && && && &MOV R6,A
& && && && &MOV A,R5& && &&&;BCD码带进位自身相加,相当于乘2
& && && && &ADDC A,R5
& && && && &DA A& && && && &;十进制调整
& && && && &MOV R5,A
& && && && &MOV A,R4
& && && && &ADDC A,R4
& && && && &DA A
& && && && &MOV R4,A
& && && && &MOV A,R3
& && && && &ADDC A,R3
& && && && &MOV R3,A& && && &;双字节十六进制数的万位数不超过6,不用调整
& && && && &DJNZ R2,HB3& && &;处理完16bit
& && && && &RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;& && && &&&显示程序& && && && && && &;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
& &DISPLAY: MOV R1,#76H& && &;立即数76H送寄存器中
& && && && &MOV R5,#0FEH& &&&;立即数FEH送寄存器R5中
& && &PLAY: MOV A,R5& && && &;寄存器R5中的数值送累加器A中
& && && && &MOV P3,A& && && &;累加器A中的数值送P3口
& && && && &MOV A,@R1& && &;以寄存器R1中的数为地址单元的数值送累加器中
& && && && &MOV DPTR,#TAB& & ;16位地址送地址寄存器中
& && && && &MOVC A,@A+DPTR& &;以中的地址为基地变址寻址单元中的数送累加器
& && && && &MOV P1,A& && && &;累加器A中的数值送P1口
& && && && &MOV R6,#14H& && &;立即数据14送寄存器R6中
& && &&&DL1:MOV R7,#19H& && &;立即数据19送寄存器R7中
& && &&&DL2:DJNZ R7,DL2& && &;寄存器中的数据减1,不为零时则转移
& && && && &DJNZ R6,DL1& && &;寄存器中的数据减1,不为零时则转移
& && && && &INC R1& && && &&&;寄存器R1中的数值加1
& && && && &MOV A,R5& && && &;寄存器R5中的数值送累加器A中
& && && && &JNB ACC.2,ENDOUT ;地址位为0则转到ENDOUT
& && && && &RL A& && && && & ;累加器循环右移
& && && && &MOV R5,A& && && &;累加器A中的数值送寄存器R5中
& && && && &AJMP PLAY& && &&&;绝对短转移
& & ENDOUT: SETB P3.5& && &&&;置P3.5口
& && && && &MOV P1,#0FFH& &&&;立即数0FEH送P1口
& && && && &RET& && && && &&&;返回
& && & TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
& && && && &END& && && && &&&;结束
  本帖最后由 lxa0 于
11:23 编辑
 下面这段没看明白
请楼主讲解一下?
MOV R6,#53H& &&&;延时1.5ms
DL0:& && &&&MOV R5,#03H
& && && && &DJNZ R5,$
& && && && &DJNZ R6,DL0
& && &&&QBA:JNB P3.7,QBC
& && && && &DJNZ R1,QBA
& && && && &DJNZ R0,QBA
& && &&&QBC:CLR P3.2
& && && && &CLR TR0& && && && && && &
& && && && &MOV 70H,tl0
& && && && &MOV 71H,tH0
& && && && &MOV R2,71H
& && && && &MOV R3,70H
& && && && &MOV R6,#22H
& && && && &MOV R7,#0H
& && && && &LCALL MULD& && && && && && && && &
& && && && &MOV R6,#64H
& && && && &MOV R7,#0H
& && && && &LCALL DIVD
& && && && &MOV 73H,R2
& && && && &MOV 74H,R3
& && && && &MOV R3,#0H
& && && && &MOV R4,#0H
& && && && &MOV R5,#0H
& && && && &MOV R6,73H
& && && && &MOV R7,74H& &
& && && && &LCALL HB2& && && && && && &&&
& && && && &MOV A,R4& && & ;分离BCD
& && && && &MOV B,#10H
& && && && &DIV AB
& && && && &MOV 78H,A
& && && && &MOV 77H,B
& && && && &MOV A,R5
& && && && &MOV B,#10H
& && && && &DIV AB
& && && && &MOV 76H,A
& && && && &MOV 75H,B
& && && && &MOV 7AH,#0EFH
谢谢分享!!收藏!!
为啥输进程序都只显示8000,怎么弄都不好使
还有乘37那段不是很懂
很好,有用
学习学习& & 谢谢分享&&
Powered by简单的单片机超声波测距板
> 简单的单片机超声波测距板
简单的单片机超声波测距板
; 基于AT89C2051单片机超声波测距系统; 测量范围35-300厘米;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 中断入口程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG 0000H AJMP START ORG 000BH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 主 程 序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;START : MOV R0,#70H ;立即数70H送寄存器R0中 MOV R7,#0BH ;立即数0BH送寄存器R7中 MOV 20H,#00H ;立即数00H送20H单元中CLEARDISP: MOV @R0,#00H ;立即数立即数00H送R0中的地址单元中 INC R0 ;寄存器R0加1 DJNZ R7,CLEARDISP;寄存器中的数值减1非零时转移 MOV TMOD,#01H ;置定时器T0工作方式样3,对内部机器周期计数 CJZCX:MOV TL0,#00H ;装入定时器初值 MOV TH0,#00H MOV R0,#0FH MOV R1,#5bH puzel:MOV 14H,#08H ;超声波发射持续200us Here:CPL P3.5 ;输出40kHz方波 NOP ; NOP ; NOP ; DJNZ 14H,H SETB TR0 SETB P3.2 MOV R6,#53H ;延时1.5msDL0: MOV R5,#03H DJNZ R5,$ DJNZ R6,DL0 QBA:JNB P3.7,QBC DJNZ R1,QBA DJNZ R0,QBA QBC:CLR P3.2 CLR TR0 MOV 70H,tl0 MOV 71H,tH0 MOV R2,71H MOV R3,70H MOV R6,#22H MOV R7,#0H LCALL MULD MOV R6,#64H MOV R7,#0H LCALL DIVD MOV 73H,R2 MOV 74H,R3 MOV R3,#0H MOV R4,#0H MOV R5,#0H MOV R6,73H MOV R7,74H LCALL HB2 MOV A,R4 ;分离BCD MOV B,#10H DIV AB MOV 78H,A MOV 77H,B MOV A,R5 MOV B,#10H DIV AB MOV 76H,A MOV 75H,B MOV 7AH,#0EFH XXX:LCALL DISPLAY DJNZ 7AH,XXX AJMP CJZCX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 乘34程序(乘声速) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MULD: MOV A,R3 ;计算R3乘R7 MOV B,R7 MUL AB MOV R4,B ;暂存部分积 MOV R5,A MOV A,R3 ;计算R3乘R6 MOV B,R6 MUL AB ADD A,R4 ;累加部分积 MOV R4,A CLR A ADDC A,B MOV R3,A MOV A,R2 ;计算R2乘R7 MOV B,R7 MUL AB ADD A,R4 ;累加部分积 MOV R4,A MOV A,R3 ADDC A,B MOV R3,A CLR A RLC A XCH A,R2 ;计算R2乘R6 MOV B,R6 MUL AB ADD A,R3 ;累加部分积 MOV R3,A MOV A,R2 ADDC A,B MOV R2,A RET
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一

我要回帖

更多关于 单片机超声波测距 的文章

 

随机推荐