C51——超声波测距 函数封装和舵机代码结合

news2024/11/20 15:21:49

要注意舵机转动中 延时函数要放在哪里

 

    

 

 

 

 

#include "reg52.h"

sbit D5   = P3^7;//
sbit D6   = P3^6;//
sbit Trig = P1^5;
sbit Echo = P1^6;
sbit sg90_con = P1^1;

    int cnt;
    int jd;
    double time;
    
void Delay10us()        //@11.0592MHz
{
    unsigned char i;

    i = 2;
    while (--i);
}


void Timer1Init()        //100??@11.0592MHz
{
    
    TMOD &= 0x0F;        //ÉèÖö¨Ê±Æ÷ģʽ
    TMOD |= 0x10;        //ÉèÖö¨Ê±Æ÷ģʽ
    TL1 = 0;        //ÉèÖóõÖµ
    TH1 = 0;        //ÉèÖóõÖµ
    
    
}


void Time0Init()  // 控制超声波
{
        //ÅäÖö¨Ê±Æ÷0 ¹¤×÷ģʽΪ16λ¼Æʱ
    TMOD &= 0xF0;        //ÉèÖö¨Ê±Æ÷ģʽ
    TMOD |= 0x01;        //ÉèÖö¨Ê±Æ÷ģʽ 
    //¸ø³õÖµ£¬¶¨³öÒ»¸ö0.5msÀ´
        TL0 = 0x33;
        TH0 = 0xFE;
    //¿ªÊ¼¼Æʱ
    TR0 = 1;
    //Çå³ý±êʶλ
    TF0 =0;
    // ´ò¿ª¶¨Ê±Æ÷0 ÖжÏ
    ET0 = 1;
    //´ò¿ª×ÜÖÐ¶Ï EA
    EA = 1;
}

void startHC()
{
    Trig = 0;
    Trig = 1;
    Delay10us();
    Trig = 0;
}
double get_dis() // 超声波测距
{
    TL1 = 0;        //ÉèÖóõÖµ
    TH1 = 0;        //ÉèÖóõÖµ
 //1.¸øTrig ¶Ë¿ÚÖÁÉÙ10us µÄ¸ßµçƽ
    startHC();
    //2.EchoÐźţ¬Óɵ͵çƽ±äΪ¸ßµçƽ¿ªÊ¼Ê±·¢ÐźÅ
    while(Echo == 0);
      TR1 = 1;        //¿ªÊ¼¼Æʱ
    //3.EchoÐźţ¬Óиߵçƽ±äΪµÍµçƽ½áÊø·¢ÐźÅ
    while(Echo == 1);
     TR1 = 0;        //½áÊø¼Æʱ
    
    //4.¼ÆËãʱ¼ä
    time = (TH1*256 +TL1)*1.085 ;
    //5.¼ÆËã¾àÀë
    return (0.017* time);
}
void OpenTheLed5()
{
        D5 = 0;
        D6 = 1;
}
void CloseTheLed5()
{
        D5 = 1;
        D6 = 0;
}

void Delay150ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    //_nop_();
    i = 2;
    j = 13;
    k = 237;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}


 
void Delay2000ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    //_nop_();
    i = 15;
    j = 2;
    k = 235;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}

void opengaizi()
{
        jd = 3;  //90¡ã
        cnt = 0;
        Delay2000ms();
}
void closegaizi()
{
        jd = 1; //  0¶È
        cnt = 0;
        Delay150ms();
}
void SG90_Init()
{
    jd = 1;     // ³õʼ½Ç¶ÈÊÇ 0 ¶È£¬0.5ms£¬Òç³ö1
    cnt = 0;
    sg90_con = 1; //Ò»¿ªÊ¼´Ó¸ßµçƽ¿ªÊ¼

}
void main()
{
    double dis;
    Timer1Init();
    Time0Init();
    SG90_Init();

    while(1){
        dis = get_dis();

    if(dis<10){
        OpenTheLed5();
        opengaizi(); // 
    }else{
        CloseTheLed5();
        closegaizi();
    }

    
    }
}

void Time0ZD() interrupt 1  //±¬±íÖ®ºó£¬²»ÔÚÓÃÈí¼þÇåÁ㣬Õâ¸öÖжϽ«±êʶλTF0 
{
    cnt++;
    
    TL0 = 0x33;
    TH0 = 0xFE;
    // ¿ØÖÆPWM²¨
    if(cnt<jd){
         sg90_con = 1;
    }else{
        sg90_con = 0;
    }
    if(cnt == 40){ // ËÄÊ®´Î±¬±í£¬¾­¹ýÁË20ms£¬Íê³ÉÁËÒ»¸öÖÜÆÚ£
        cnt = 0;
        sg90_con = 1;
    }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/110441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统管程-地址-重定位-内存管理与存储管理

管程的基本概念&#xff1a;为什么会出现管程&#xff1f;信号量机制的不足&#xff1a;程序编写困难、易出错解决&#xff1a;Brinch Hansen(1973)Boare(1974)方案&#xff1a;在程序设计语言中引入管程成分一种高级同步机制管程的定义&#xff1a;是一个特殊的模块有一个名字…

使用MAXScript脚本编写圣诞树建模插件教程

一、前言 2022年圣诞节到来啦&#xff0c;很高兴这次我们又能一起度过~ 今年的圣诞节为大家分享用MAXScript脚本编写圣诞树建模插件的技术创意&#xff0c;喜欢的同学别忘记在下面点个赞&#xff01; 二、创意名 一键圣诞树插件 三、效果展示 四、实现步骤 1.制作圣诞树的设计稿…

智能巡检系统:企业安全生产管理的智能助手

智能巡检是一种高效代替传统人工巡检的新方式&#xff0c;其依靠物联感知技术&#xff0c;通过物联网采集获取信息&#xff0c;自动记录巡检信息&#xff0c;及时发现问题&#xff0c;实现巡检科学化。 工业4.0带来的技术革新加速了企业的转型升级进程&#xff0c;传统企业的运…

F5张振伦:让应用安全、快速、可靠地交付到需要的地方丨2022首届全球数字生态大会

科技云报道原创。 日前&#xff0c;由杭州市人民政府和浙江省商务厅主办的“2022首届全球数字生态大会”在杭州国际博览中心成功举办。 本次大会以“新技术、新业态、新模式”为主题&#xff0c;邀请到国内外20余位演讲嘉宾和超300位专业观众线下参会。 与此同时&#xff0c;…

IB成绩换成GPA,美国大学是如何算的?

IB课程体系是全球公认的难度大、结构强的课程体系。 IB课程可以通过IB文凭课程&#xff08;也称为IBDP&#xff09;进行系统研究。IB课程体系是国际公认的基础文凭&#xff0c;世界上几乎所有大学都认可IB课程体系。这是否意味着IB在申请美国大学时会有优势&#xff1f; 事实上…

【vue系列-02】vue的核心属性,数据代理,事件

vue的核心属性一&#xff0c;vue的核心属性1&#xff0c;模板语法1.1&#xff0c;插值语法1.2&#xff0c;指令语法2&#xff0c;数据绑定2.1&#xff0c;单向绑定2.2&#xff0c;双向绑定3.mvvm模型4&#xff0c;数据代理4.1&#xff0c;数据代理的基本使用4.2&#xff0c;数据…

pytorch实现好莱坞明星识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章地址&#xff1a; 365天深度学习训练营-第P6周&#xff1a;好莱坞明星识别&#x1f356; 作者&#xff1a;K同学啊一、前期准备 1.设置GPU import torch from torch import nn …

获取rdp保存的凭证

获取用户保存的rdp凭证 当获取到一台windows服务器&#xff0c;可以尝试获取本地远程连接的信息&#xff0c;如果用户在登入rdp时勾选了 允许为我保存凭证的选项&#xff0c;则在该用户本地会生成一个凭证文件&#xff0c;我们只需要破解该凭证文件即可获取其明文密码。 通过注…

[含文档+PPT+源码等]基于SSM框架图书借阅管理系统开发与设计

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 [含文档PPT源码等]基于SSM框架图书借阅管理系统开发与设计 系统介绍 《基于SSM框架图书管理系统开发与设计》 该项目含有源码、配套开发软件、软件安…

元数据相关的术语,你知道几个?

元数据被认为是数据治理的基石&#xff0c;但关于元数据相关的概念&#xff0c;很多人不是那么清楚&#xff0c;今天就和大家详解元数据相关的术语。当然&#xff0c;与元数据相关的概念非常多&#xff0c;以下仅罗列几个常见的。 01 元数据 1.名词解释 元数据最简单的定义…

【关于时间序列的ML】项目 7 :使用机器学习进行每日出生预测

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

u盘无法识别如何修复?恢复U盘,建议尝试下这些方法

我们基本都有使用过U盘&#xff0c;也都遇到过U盘损坏的问题。u盘无法识别如何修复&#xff1f;有没有什么实用的方法呢&#xff1f;来看看这篇文章&#xff0c;简单几步&#xff0c;就可以修复成功。如果在操作过程中&#xff0c;遇到数据丢失&#xff0c;也有方法帮你恢复&am…

ASP.NET开发的医疗健康咨询平台源码 养生知识咨询 寻根问药平台源码 C#源码

一、源码特点&#xff1a; 爱心医生健康知识门户网站是一个权威的医疗科普视频、语音、知识、医疗健康问答平台。 包含所有源代码和数据库&#xff0c;可以直接部署到IIS中使用。 二、菜单功能 网站页面&#xff1a; 1、首页&#xff1a;包含幻灯片。 2…

MySQL面试常问问题(SQL 优化 ) —— 赶快收藏

目录 1.慢SQL如何定位呢&#xff1f; 2.有哪些方式优化慢SQL&#xff1f; 避免不必要的列 分页优化 索引优化 JOIN优化 排序优化 UNION优化 3.怎么看执行计划&#xff08;explain&#xff09;&#xff0c;如何理解其中各个字段的含义&#xff1f; 1.慢SQL如何定位呢&a…

基于python开发的DIY宠物桌面系统(附源码)--可自定义修改

定制你的宠物桌面 最近想要做一个自己独一无二的桌面宠物&#xff0c;可以直接使用python来自己订制。属于一个小项目&#xff0c;这个教程主要包含几个步骤&#xff1a; 准备需要的动图素材 规划自己需要的功能 使用python的PyQt5订制功能 在这个教程中&#xff0c;我主要…

Apache Flink 任务 Tasks 和任务槽 Task Slots

目录 任务槽&#xff08;Task Slots&#xff09; 任务槽数量的设置 任务对任务槽的共享 任务槽和并行度的关系 任务槽&#xff08;Task Slots&#xff09; Flink 中每一个 worker(也就是 TaskManager)都是一个 JVM 进程&#xff0c;它可以启动多个独立的线程&#xff0c;来并…

【数据结构】详解队列和循环队列

目录一.队列1.队列的概念及结构2.队列的实现Queue.hQueue.c二.循环队列1.循环队列的实现2.设计循环队列解题思路代码一.队列 1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出…

四、网络层(六)移动IP

目录 6.1 移动IP的概念 6.2 移动IP的基本工作原理 6.2.1代理发现与注册 6.2.2固定主机向移动主机发送IP数据报 6.2.3移动主机向固定主机发送IP数据报 6.2.4同址转交地址&#xff08;简单了解&#xff09; 6.2.5三角形路由问题&#xff08;简单了解&#xff09; 6.1 移…

事关你“吃住行游购娱”的12项安全国标图解来了

标准是安全建设的“尺子”。近期&#xff0c;国家市场监督管理总局、国家标准化管理委员会发布中华人民共和国国家标准公告&#xff08;2022年第13号&#xff09;&#xff0c;全国信息安全标准化技术委员会归口的14项网络安全国家标准获批发布&#xff0c;其中12项涉及数据安全…

不同类型单板布线策略6大类

类型一PCB布线策略 一 &#xff0c;类型一主要特征如下&#xff1a; 严格的长度规则、严格的串扰规则、拓扑规则、差分规则、电源地规则等。 二&#xff0c;关键网络的处理&#xff1a;总线定义Class&#xff1b; 要求满足一定的拓扑结构、stub及其长度&#xff08;时域&a…