历史上的今天
返回首页

历史上的今天

今天是:2024年08月25日(星期日)

正在发生

2020年08月25日 | 利用单片机+超声波控制舵机转向的制作

2020-08-25 来源:51hei

通过超声波感应,使舵机转向,(在此本人有个想法,可以通过舵机控制自来水开关。即间接的做成了一个小的智能设备)


材料:
51单片机开发板
杜邦线
舵机+超声波
3.7V电池两个
束缚带
胶水
冰淇淋棒
程序为大家献上!
让大家在学习单片机时可以拥有一种成就感!

制作出来的实物图如下:

单片机源程序如下:

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit Trig=P3^4;            //控制端

sbit Echo=P3^5;          //接收端

sbit led=P1^3;

sbit servorControl =P1^3;  //舵机的控制引脚


uchar flag=0;

uchar control=5;

uchar servorTime=0;







unsigned char T0RH=0;

unsigned char T0RL=0;


void time_init()

{

        EA=1;

        TMOD=0x11;

        TH0 = 0;

        TL0 = 0;

}

///////////////////////////////////////

void delay(uchar time){  //延迟函数

uchar i;

for(;time>0;time--){

  for(i=0;i<255;i++);

}

}


//初始化定时器

void Delay_us(unsigned char t)

{

        while(--t);

}         //大约延时t*2+5us         超声波模块用

//////////////////////////////////////


void timer0()interrupt 1

{

TH0 = 0;

TL0 = 0;

}

//中断程序 初始化赋值 重新计数 超声波模块用 计算时间

void main()

{

        unsigned int time,distance;

         

        EA=1;

  ET0=1;

  ET1=1;

  TMOD=0x11;

  TH1=0xff;

  TL1=0x9c;

  servorTime=0;

         

         

         

        Trig=0;

        Echo=0;

        time_init();

        while(1)

        {


                Trig=1;

                Delay_us(5);

                Trig=0;

                while(Echo==0);

                TR0=1;

                while(Echo);

                TR0=0;

                time=TH0*256+TL0;

                distance=(int)(time*0.017);                           //计算路程 单位为cm

                TH0=0;

                TL0=0;

                if(distance<30)                                        //如果距离小于30cm 蜂鸣器响

                {

                control=15;   //使舵机向正摆动

    servorTime=0;

    TR1=1;

    delay(200);

                delay(200);

    TR1=0;

                }

                else

                {

                control=5;   //使舵机向右摆动

    servorTime=0;

    TR1=1;

    delay(200);

                delay(200);

    TR1=0;

    delay(200);

                delay(200);

                }

        }

}

void T1_int(void) interrupt 3{   //产生舵机所需要的脉冲

  TH1=0xff;

  TL1= 0x9c;

  servorTime++;

  if(servorTime<=control)

   servorControl=1;

  else

   servorControl=0;

   if(servorTime>=200)

   servorTime=0;

}


推荐阅读

史海拾趣

台湾富致(FUZETEC)公司的发展小趣事

1962年,Futaba推出了无线电控制设备和冲压金属模用部件,旨在提升工业品质并缩短模具开发周期。这一举措不仅解决了当时工业控制领域中的供应商问题,还引领了模具制造行业的标准。随着技术的不断进步,Futaba开始涉足无线电传输模组(R/C)的生产和销售,并逐渐在无线遥控领域崭露头角。特别是高频无线展频通讯技术的实现,使Futaba的无线遥控技术在工业用机器人和工业控制设备上得到了广泛应用,进一步巩固了其在该领域的领先地位。

e2v technologies公司的发展小趣事

随着电子行业的快速发展,e2v不断拓展其产品线,以满足市场的多样化需求。除了传统的图像传感器产品外,公司还开发了示波器数据转换器、高性能图像处理器等,广泛应用于科学、医学、工业、汽车和电信等领域。这些产品的推出,不仅拓展了e2v的市场空间,也为其带来了可观的经济效益。

Brilliance公司的发展小趣事

为了进一步提升竞争力,Brilliance公司开始着手进行产业链整合。公司与上下游企业建立了紧密的合作关系,共同打造了一条完整的电子产业链。通过协同发展和资源共享,Brilliance不仅降低了生产成本,还提高了产品质量和生产效率。这种产业链整合的模式也为公司未来的发展奠定了坚实的基础。

Facon公司的发展小趣事

在2010年代初,随着科技的飞速发展,电子行业正迎来新一轮的创新浪潮。这时,一群充满激情和梦想的工程师在硅谷创立了Facon公司,他们怀揣着改变世界的愿景,立志在电子行业中留下自己的印记。初始阶段,Facon主要专注于研发高性能的半导体芯片,为智能手机、平板电脑等电子产品提供强大的计算能力。通过不懈努力和持续创新,Facon逐渐在市场中树立了良好的口碑。

ERNI公司的发展小趣事

进入21世纪,ERNI继续深耕连接器技术。他们成功研发出世界上第一个DIN连接器,并随后发展了各种电路板连接器和输入/输出连接器。其中,2mm连接器成为ERNI的明星产品之一。凭借其优越的性能和可靠的品质,ERNI的2mm连接器在国内军工领域得到广泛应用,并赢得了广大客户的信赖和好评。

南京绿芯(Grenergy)公司的发展小趣事

20世纪70年代,ERNI开始实施全球化战略。他们意识到,只有不断扩大市场份额,才能确保公司的长期稳定发展。因此,ERNI开始在欧洲、北美和亚洲等地设立销售处和生产基地,为全球客户提供创新且高品质的产品。这一战略的实施,不仅使ERNI的销售额大幅增长,还进一步巩固了其在全球连接器市场的领先地位。

问答坊 | AI 解惑

闲着做的单片机8I/O口36个按键程序

貌似有不少资料有说过这个接法~ 反正记得咋接的就行了 整体的打概连接图,数码管显示返回值 程序跟仿真图 [ 本帖最后由 虚V界 于 2010-3-28 16:03 编辑 ]…

查看全部问答>

求购一块下变频的评估板,请大侠帮忙选型

欲购买一块射频的评估板,主要功能就是下变频,其射频频段能涵盖2G,最好还带有LNA,小弟我找到的都是美信的板子,不过美信的板子不单卖,我也在看TI和freescale的板子,找不到合适的型号,望网上各位大侠提供意见,不胜感激~…

查看全部问答>

uboot调试LED不亮?

我载入修改好的uboot.bin到flash。其中,start.s文件中我加入了亮LED的程序,在start_armboot的头部也加入了亮LED的程序,可是为什么程序运行后却只亮了前一个,感觉程序没进入start_armboot。不过我用ADX调试的时候,程序却已经进入atart_armboot ...…

查看全部问答>

关于物理地址映射问题

我看到介绍的驱动例程有两种形式的映射 一种是利用MmMapIoSpace,另外一种是用VirtualAlloc 如:ELECTROMOTOR_GPACON=(ULONG)MmMapIoSpace(GPACON,4,FALSE); v_pIOPregs = (volatile S3C2410X_IOPORT_REG *)VirtualAlloc(0, sizeof(S3C2410X_IOPO ...…

查看全部问答>

PB定制wince系统黑屏

本人初学wince编程,想用Platform Builder搭建一个平台,于是照着一篇文章的介绍一步一步的做下来,到最后仿真器终端出现了,可是却没有图形界面,窗口上方有Emulator和Help的菜单,下来就是一片黑屏了。请高手指教一下问题可能出现再哪? …

查看全部问答>

请教版主,stm32的抗静电等级与潮敏是多少?

您好,版主! 我想请教下stm32的抗静电等级与潮敏各是多少呢? 静电等级:J8000 J5000 J2000 J1000 J500 J200 是那个级别的 是j2000吗? 潮敏:C1 C2 C3 C4 C5是那个级别的呢?…

查看全部问答>

datasheet翻译

PCF8594的datasheet里有这么一句话 Pin 7 (PTC) must be connected to either VDD or left open-circuit. 翻译是:7脚(PTC)必须接到VDD或者防止开路。 但是,实际上我们使用的时候就是 7脚(PTC)要么接VDD 要么上拉5-10K电阻…

查看全部问答>

stm32时钟树

继续学习中,先把开发板自带一个例子做了些精简,以免看得吓人。。。。   就是这个,让PORTD上接的4个LED分别点亮。 开始研究代码 int main(void){   Init_All_Periph(); ...... 看到这一行,开始跟踪,于是又 ...…

查看全部问答>

霍尔传感器模块

先给个实物图(只一次发不知道怎么把图放在帖子中所以就放在附件中了) 这是网上找的一个程序,按道理说应该可以控制: 但是我用电压表测出来的输出信号只有几十毫安,并且在磁铁周期运动时变化之久几毫安?请问谁能解决这个问题? /*********** ...…

查看全部问答>

Hercules DIY 小结

关于这次DIY我的方案是这样的: 1、电梯的升降一个电机通过PWM来控制,轿厢门的开关也是通过PWM控制的电机实现。 2、对于轿厢内部,需要10个按键加一个数码管(或者显示屏),1-7层的选择按键和开门,关门,紧急按键。 3、每层楼需要2个按键来选 ...…

查看全部问答>