51单片机超声测距程序

发布者:快乐家庭最新更新时间:2018-01-07 来源: eefocus关键字:51单片机  超声测距 手机看文章 扫描二维码
随时随地手机看文章

超声测距器单片机程序

#include  
#define uchar unsigned char 
#define uint unsigned int 
#define ulong unsigned long 

extern void cs_t(void);

extern void delay(uint); 
extern void display(uchar*); 
data uchar testok; 
/*主程序*/ 
void main(void) 

data uchar dispram[5]; 
data uint i; 
data ulong time; 
P0 = 0xff; 
P2 = 0xff; 
TMOD = 0x11; 
IE = 0x80; 
while (1) 
  { 
  cs_t(); 
  delay(1); 
  testok = 0; 
  EX0 = 1; 
  ET0 = 1; 
  while (!testok) display(dispram); 
  if (1 == testok) 
    { 
    time = TH0; 
    time = (time<<8) | TL0; 
    time *=172; 
    time /= 10000; 
    dispram[0] = (uchar) (time % 10); 
    time /= 10; 
    dispram[1] = (uchar) (time % 10); 
    time /= 10; 
    dispram[2] = (uchar) (time % 10); 
    dispram[3] = (uchar) (time / 10); 
    if (0 == dispram[3]) dispram[3] = 17; 
    } else 
    { 
    dispram[0] = 16; 
    dispram[1] = 16; 
    dispram[2] = 16; 
    dispram[3] = 16; 
    } 
  for (i=0; i<300; i++) display(dispram); 
  } 

// 
/*超声接收程序(外中断0)*/ 
void cs_r(void) interrupt 0 

 TR0 = 0; 
 ET0 = 0; 
 EX0 = 0; 
 testok = 1; 


/*超时清除程序(内中断T0)*/ 
void overtime(void) interrupt 1 

 EX0 = 0; 
 TR0 = 0; 
 ET0 = 0; 
 testok = 2; 


;-------------------------------------
;超声发生子程序(12M晶振38.5Hz
;-------------------------------------
                    NAME     CS_T
?PR?CS_T?CS_T       SEGMENT  CODE
                    PUBLIC   CS_T
                    RSEG     ?PR?CS_T?CS_T
CS_T:               PUSH     ACC
                    MOV      TH0,   #00H
                    MOV      TL0,   #00H
                    MOV      A,     #4D
                    SETB     TR0
CS_T1:              CPL      P1.0
                    NOP
                    NOP
                    NOP
                    NOP
                    NOP
                    NOP
                    NOP
                    NOP
                    NOP
                    NOP
                    DJNZ     ACC,  CS_T1
                    POP      ACC
                    RET
;
                    END



;---------------------------------------
;  四位共阳LED动态扫描显示程序
;  P0为段码口,P2为位选口(低电平有效)
;  参数为要显示的字符串指针
;---------------------------------------
                                     NAME     DISPLAY
?PR?_DISPLAY?DISPLAY SEGMENT  CODE
?CO?_DISPLAY?DISPLAY SEGMENT  DATA
                     EXTRN    CODE  (_DELAY)
                     PUBLIC   _DISPLAY
                     RSEG     ?CO?_DISPLAY?DISPLAY
?_DISPLAY?BYTE:      
       DISPBIT:      DS       1
       DISPNUM:      DS       1
                     RSEG     ?PR?_DISPLAY?DISPLAY
_DISPLAY:            PUSH     ACC
                     PUSH     DPH
                     PUSH     DPL
                     PUSH     PSW
                     INC       DISPNUM
                     MOV      A,      DISPNUM
                     CJNE      A,      #4D,  DISP1
DISP1:               JC         DISP2
                     MOV      DISPNUM,   #00H
                     MOV      DISPBIT,   #0FEH
DISP2:               MOV      A,      R1
                     ADD      A,      DISPNUM
                     MOV      R0,     A
                     MOV      A,      @R0
                     MOV      DPTR,   #DISPTABLE
                     MOVC     A,      @A+DPTR
                     MOV      P0,     A
                     MOV      A,      DISPNUM
                     CJNE     A,      #2D,  DISP3
                     CLR      P0.7
DISP3:         MOV      P2,     DISPBIT
                     MOV      R6,     #00H
                     MOV      R7,     #0AH
                     LCALL    _DELAY
                     MOV      P0,     #0FFH
                     MOV      P2,     #0FFH
                     MOV      A,      DISPBIT
                     RL       A
                     MOV      DISPBIT,   A
                     POP      PSW
                     POP      DPL
                     POP      DPH
                     POP      ACC
                     RET
DISPTABLE:DB    0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH
;                "0", "1", "2", "3","4", "5","6","7", "8","9","A","B","C", "D", "E","F", "-", " "
                     END

;-------------------------------------
;延时100机器周期*参数(1~65535)
;-------------------------------------
                    NAME     DELAY
?PR?_DELAY?DELAY    SEGMENT  CODE
                    PUBLIC   _DELAY
                    RSEG     ?PR?_DELAY?DELAY
_DELAY:             PUSH     ACC               ;2
      MOV      A,     R7         ;1
                    JZ       DELA1             ;2
             INC      R6                ;1
DELA1:              MOV      R5,    #50D       ;2
                    DJNZ     R5,    $          ;2
                    DJNZ     R7,    DELA1      ;2
                    DJNZ     R6,    DELA1      ;2
                    POP      ACC               ;2
                    RET                        ;2
;
                    END


关键字:51单片机  超声测距 引用地址:51单片机超声测距程序

上一篇:51单片机快热式热水器程序
下一篇:AT89C52时钟程序

推荐阅读最新更新时间:2024-03-16 15:51

51单片机定时器控制LED灯
考试考完了,闲得无聊,正好手头有一块51学习板,捣鼓一下。控制任务如下: P1.0 控制一个 LED 灯,亮0.5s,灭0.5s。 设计思路:这里我们只用 定时器 ,不用软延时。51的定时器最多定时60ms,所以我们设置定时器每50ms中断一次,通过在中断程序设置一个变量来统计中断次数,从而实现较长时间的定时。这里我们是每500ms执行一次灯亮灯灭的动作,所以每10个中断等于500ms(50ms x 10)。第6行,全局变量 ti mer50msCount 就是中断次数。第19-23行,当timer50msCount 为10时,代表500ms时间到,把P1.0 取反,动作一次。 这里有个繁琐的地方,定时器的初值需要手工计算。不
[单片机]
<font color='red'>51单片机</font>定时器控制LED灯
基于51单片机的WiFi的温湿度智能开关设计
一.硬件方案 硬件电路主要由单片机电路、温湿度采集电路、液晶显示电路、继电器电路、wifi模块电路组成。本设计采用STC89C51单片机完成整个系统的控制流程。手机端软件设置操作界面登陆账号,wifi模块连入网络,实现系统设计。 主要由51单片机+最小系统+LCD1602液晶显示模块+温湿度采集模块+继电器驱动模块+风扇模块+LED指示灯模块+按键模块+AT24C02存储模块+蜂鸣器报警模块;如图: 二.设计功能 (1)AT24c02芯片掉电存储设置的上下限。 (2)四个按键为设置、加、减、确定,实现了阀值的调节。 (3)LCD1602液晶显示,上面行显示当前的温度和湿度,下面行显示相应的冷、热、干、湿。 (4)配用全数字
[单片机]
基于<font color='red'>51单片机</font>的WiFi的温湿度智能开关设计
51单片机快速入门指南】6.1:LCD1602的八线、四线控制及自定义符号,完美兼容Proteus仿真
普中51-单核-A2 STC89C52 Windows 10 20H2 Proteus 8 Frofessional v8.9 SP2 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《通用1602 液晶显示模块使用手册》、《液晶LCD1602(中文资料)—— ball 2010-5-13整理》 显示特性 单5V电源电压,低功耗、长寿命、高可靠性 内置192种字符(160个5x7点阵字符和32个5x10点阵字符) 具有64个字节的自定义字符RAM,可自定义8个5x8点阵字符或四个5x11点阵字符
[单片机]
【<font color='red'>51单片机</font>快速入门指南】6.1:LCD1602的八线、四线控制及自定义符号,完美兼容Proteus仿真
51单片机实现的简易秒表
设计思路: (1)在main函数中不停的控制数码管显示时、分、秒 (2)用定时器0控制时间的递增 (3)用外部中断0(KEY3)实现秒表的暂停/开始 (4)用外部中断1(KEY4)实现秒表的停止 开发板:普中科技开发板 代码如下: 1 #include reg52.h 2 #define led P0 3 typedef unsigned char u8; 4 typedef unsigned int u16; 5 6 sbit LSA = P2^2; 7 sbit LSB = P2^3; 8 sbit LSC = P2^4; 9 sbit k3 = P3^2; 10 sbit k4
[单片机]
基于51单片机的家电控制系统设计
O 引言 家电控制的智能化已成为社会需求的新趋势。基于微机控制系统的智能化家电使我们的生活更加便利。而是否能够实现远程家电的开关控制。又是否能够随时查询电器的工作状况,或者能够事先对家电的定时开关做出控制。又成为越来越感兴趣的研究方向。家电产品现已进入成熟期和稳定期。市场规模稳步上涨,但竞争日愈剧烈,其核心部件。即控制器性能及质量对企业产品的影响很大。同时,经济快速发展,人们对于家庭生活的舒适程度也提出了越来越高的要求,尤其体现在家电的便捷方面。在这个背景下,可以自主控制的家电控制系统,就逐渐显示出竞争力,这也符合时代发展的客观需要。随着中国经济的快速稳步增长和迅速发展,家电厂家越来越意识到被喻为家电“芯片”的家电控制器的重要
[单片机]
基于<font color='red'>51单片机</font>的家电控制系统设计
51单片机中断控制寄存器
51单片机中断控制寄存器有4个:TCON(定时器控制寄存器),SCON(串行口控制寄存器),IE(中断允许控制寄存器),IP(中断优先级控制寄存器)。 51单片机中断系统: TCON(定时器控制寄存器): IE(中断允许控制寄存器): IP(中断优先级控制寄存器): SCON(串行口控制寄存器): TMOD(定时计数器工作方式控制寄存器):
[单片机]
<font color='red'>51单片机</font>中断控制寄存器
51单片机-------流水灯(实验报告)
一、实验目的 掌握51单片机开发板的使用步骤; 掌握51单片机开发板所需软件的安装过程; 以LED流水灯实验为例子,掌握软件KEIL4的使用方法。 二、实验设备 实验仪器设备: 计算机 软件: Proteus仿真软件、KELL开发软件 三.实验任务 在单片机I/O口(P0)上依次外接八个发光二极管LED,通过程序实现LED依次闪烁显示,即不停的一亮一灭向下推移,亮,灭持续时间均为1秒。 四、实验内容及实验步骤 【注:1.项目背景 2.需求分析 3.项目内容及仿真软件(可以参考本人闪烁灯实验报告的写法link)】 4.项目内容及仿真: (1)打开Keil软件,新建一个工程,命名为“LED流水灯”; (2)选择
[单片机]
<font color='red'>51单片机</font>-------流水灯(实验报告)
51单片机占空比设计
Proteus仿真 P3.0输出占空比 T+、T-设置占空比时间,每按一次加或减100ms R+、R-设置占空比加减1% 初始为100ms 占空比50% 数码管前两位显示时间单位s,后两位显示占空比单位% 示波器显示 使用定时器,避免了数码管显示和按键扫描延时,实现占空比实时输出。避免因延时等待。 12MHz晶振程序如下 #include reg52.h #define CLOCK 12000L #define Fosc 12000000L #define TMR 1 #define TMR_B
[单片机]
<font color='red'>51单片机</font>占空比设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved