找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2331|回复: 2
打印 上一主题 下一主题
收起左侧

想要设计一个智能单片机垃圾桶,可以移动,自动翻盖等功能的,求大神帮助

[复制链接]
跳转到指定楼层
楼主
ID:289428 发表于 2018-3-8 22:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想要一个智能单片机垃圾桶,可以移动,自动翻盖等功能的,求大神帮助
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:760058 发表于 2020-9-12 23:30 | 只看该作者
51的自动翻盖,用舵机,就帮你到这吧,至于能移动什么的,那我也不知道你要怎么移动啊
回复

使用道具 举报

板凳
ID:760058 发表于 2020-9-12 23:30 | 只看该作者
#include <reg52.h> #include <stdio.h> #include <intrins.h> #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=5;   //使舵机向正摆动                                 servorTime=0;                                 TR1=1;                                 delay(200);                                 delay(200);                                 TR1=0;                                          }         else          {     control=20;   //使舵机向右摆动     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;  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表