资讯详情

简单的单片机超声波测距板

这款简单的单片机超声波测距板,硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路三部分。单片机采用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,对内部机器周期计数 CJZ:MOV TL0,#00H ;装入定时器初值 MOV TH0,#00H MOV R0,#0 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 AD 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 D,#TAB ;16位地址送地址寄存器中 MOVC A,@A+TR ;以中的地址为基地变址寻址单元中的数送累加器 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,UT ;地址位为0则转到ENDOUT RL A ;累加器循环右移 MOV R5,A ;累加器A中的数值送寄存器R5中 AJMP PLAY ;绝对短转移 ENDOUT: SETB P3.5 ;置P3.5口 MOV P1,#0FFH ;立即数0FEH送P1口 RET ;返回 TAB: 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH END ;结束

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台