单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 631|回复: 1
收起左侧

2019电赛 A题 无线充电循迹小车 可参考方案 (软件篇)

[复制链接]
xingjii 发表于 2019-8-14 22:14 | 显示全部楼层 |阅读模式
在这里记录一下我四天的小小成果,也可供大家参考(能力有限,大佬勿喷)

应题目要求,充电桩部分主控板选用 MSP430expf5529 单片机,功耗较低,好操作

  1. #include "msp430f5529.h"

  2. #include"I2C_OLED.H"

  3. #include"zimo.h"

  4. #define CPU_F ((double)1000000)

  5. #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))  //定义宏,延时

  6. void GO0(void) //oled显示 “准备充电”

  7. {

  8.     I2C_OLED_Init();

  9.     OLED_P16x16Ch(26,3,32);

  10.     OLED_P16x16Ch(46,3,33);

  11.     OLED_P16x16Ch(66,3,34);

  12.     OLED_P16x16Ch(86,3,35);

  13. }

  14. void GO1(void) //oled显示  “充电完成”

  15. {

  16.     I2C_OLED_Init();

  17.     OLED_P16x16Ch(26,3,34);

  18.     OLED_P16x16Ch(46,3,35);

  19.     OLED_P16x16Ch(66,3,36);

  20.     OLED_P16x16Ch(86,3,37);

  21. }

  22. void OFF(void)     //继电器全断

  23. {



  24.     P2OUT&=~BIT3;

  25.     P2OUT&=~BIT6;

  26.     P8OUT&=~BIT1;

  27.     P8OUT&=~BIT2;

  28. }

  29. void ONB(void)     //继电器开b

  30. {



  31.     P2OUT|=BIT3;

  32.     P2OUT&=~BIT6;

  33.     P8OUT&=~BIT1;

  34.     P8OUT&=~BIT2;

  35. }

  36. void ONA(void)      //继电器开a

  37. {



  38.     P2OUT&=~BIT3;

  39.     P2OUT|=BIT6;

  40.     P8OUT&=~BIT1;

  41.     P8OUT&=~BIT2;

  42. }

  43. void ONC(void)       //继电器开c

  44. {



  45.     P2OUT&=~BIT3;

  46.     P2OUT&=~BIT6;

  47.     P8OUT|=BIT1;

  48.     P8OUT&=~BIT2;

  49. }

  50. void OND(void)       //继电器开d

  51. {



  52.     P2OUT&=~BIT3;

  53.     P2OUT&=~BIT6;

  54.     P8OUT&=~BIT1;

  55.     P8OUT|=BIT2;

  56. }



  57. int main(void)

  58. {

  59.     WDTCTL = WDTPW+WDTHOLD;                 //关闭看门狗

  60.     P2DIR|=(BIT0+BIT3+BIT6+BIT5+BIT7);      //定义引脚为输出方向

  61.     P8DIR|=(BIT1+BIT2);

  62.     P1DIR|=BIT6;

  63.     P2OUT|=BIT7;                            //定义引脚为高电平输出

  64.     P1OUT|=BIT6;

  65.     int a;

  66.     a=60;

  67.     OLED_CLC();                             //oled清屏

  68.     GO0();



  69.     OFF();

  70.    while(P2IN & BIT4);                      //启动开关被触发

  71.   {

  72.        P1OUT&=~BIT6;                      / /蜂鸣器模块响一下

  73.        delay_ms(100);

  74.        P1OUT|=BIT6;

  75.        OLED_CLC();

  76.        ONB();

  77.       for (a; a>=0; a--)                    //60s倒计时 同时oled显示时间

  78.    {

  79.        show_Num(55,3,a,2,30);

  80.        delay_ms(1000);

  81.    }

  82.        OFF();

  83.        P1OUT&=~BIT6;

  84.        delay_ms(100);

  85.        P1OUT|=BIT6;

  86.        OLED_CLC();

  87.        GO1();

  88.   }

  89.        while (1)

  90.        {



  91.              if(P3IN & BIT7);     //五个霍尔传感器的检测程序,当有信号时,打开相应的继电器

  92.                  else{

  93.                   ONA();

  94.                  }

  95.               if(P1IN & BIT3);

  96.                  else{

  97.                   ONB();

  98.                      }

  99.               if(P7IN & BIT4 );

  100.                 else{

  101.                   ONC();

  102.                      }

  103.              if(P1IN & BIT4);

  104.                   else{

  105.                   ONC();

  106.                       }

  107.              if(P1IN & BIT5);

  108.                   else{

  109.                   OND();

  110.                       }



  111.           }





  112. }
复制代码

实现功能:屏幕倒计时显示,60s断电,发射线圈保证单一供电,A-B停,移动充电
引脚使用说明:
四路继电器,数字输出信号脚(P2.3\P2.6\P8.1\P8.2)
OLED iic信号脚(P4.1\P4.2)
五个霍尔模块,数字输入信号脚(P3.7\P1.3\P1.4\P1.5\P7.4)
蜂鸣器低电平触发模块,数字输出信号脚(P1.6)
光电开关(用于启动整体程序)(P2.4)

程序流程图
20190814135547551.png



充电桩整体原理图
20190814135524917.png


总结:
本充电桩方案可解决本题各项基本要求(不包括测距离题)使用简单,成型快,喜欢的小伙伴可以用于参考



鹏博士PBs 发表于 2019-8-15 11:13 | 显示全部楼层
类似于寻迹小车这类的吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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