找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2821|回复: 3
收起左侧

STM32智能小车程序(寻迹+计时)

[复制链接]
ID:614806 发表于 2020-12-12 17:00 | 显示全部楼层 |阅读模式
  1. #include "delay.h"
  2. #include "key.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "usart2.h"
  6. #include "string.h"
  7. #include "timer.h"
  8. #include "exti.h"
  9. #include "usmart.h"
  10. #include "led.h"



  11. #define RIGHT_V  350
  12. #define LEFT_V 385

  13. extern u32 time;

  14. u16 right_v=RIGHT_V;
  15. u16 left_v=LEFT_V;
  16. u8 last_state=0;
  17. u8  fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  18. u8  segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
  19. u8  disbuf[4]={0,0,0,0};
  20. u8 LED[8];        //用于LED的8位显示缓存
  21. unsigned char  LED_0F[] =
  22. {// 0         1          2           3        4         5          6           7        8         9          A           b        C    d          E    F    -
  23.         0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf
  24. };
  25. void LED4_Display (void);       
  26. void LED_OUT(u8 X);




  27. void LED4_Display (void)
  28. {
  29.         unsigned char  *led_table;          // 查表指针
  30.         u8 i;
  31.         //显示第1位
  32.         led_table = LED_0F + LED[0];
  33.         i = *led_table;

  34.         LED_OUT(i);                       
  35.         LED_OUT(0x01);               

  36.         RCLK=0;
  37.         RCLK=1;
  38.         //显示第2位
  39.         led_table = LED_0F + LED[1];
  40.         i = *led_table;

  41.         LED_OUT(i);               
  42.         LED_OUT(0x02);               

  43.         RCLK = 0;
  44.         RCLK = 1;
  45.         //显示第3位
  46.         led_table = LED_0F + LED[2];
  47.         i = *led_table;

  48.         LED_OUT(i);                       
  49.         LED_OUT(0x04);       

  50.         RCLK = 0;
  51.         RCLK = 1;
  52.         //显示第4位
  53.         led_table = LED_0F + LED[3];
  54.         i = *led_table;

  55.         LED_OUT(i);                       
  56.         LED_OUT(0x08);               

  57.         RCLK = 0;
  58.         RCLK = 1;
  59. }



  60. void LED_OUT(u8 X)
  61. {
  62.         u8 i;
  63.         for(i=8;i>=1;i--)
  64.         {
  65.                 if (X&0x80) DIO=1; else DIO=0;
  66.                 X<<=1;
  67.                 SCLK = 0;
  68.                 SCLK = 1;
  69.         }
  70. }

  71. void zhixing()
  72. {
  73.           TIM_SetCompare2(TIM3,right_v);
  74.                 TIM_SetCompare3(TIM3,left_v);
  75. }
  76. void youzhuan()
  77. {
  78.     TIM_SetCompare2(TIM3,right_v+350);//youlun
  79.                  TIM_SetCompare3(TIM3,left_v-385);
  80. }
  81. void zuozhuan()
  82. {
  83.     TIM_SetCompare2(TIM3,right_v-350);//youlun
  84.                  TIM_SetCompare3(TIM3,left_v+350);
  85. }
  86. void stop()
  87. {
  88.     TIM_SetCompare2(TIM3,899);//youlun
  89.                  TIM_SetCompare3(TIM3,899);
  90. }



  91. int main(void)
  92. {
  93.   u8 t=5;       
  94.   u32 l=0;         
  95.         delay_init();                     //延时函数初始化          
  96.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  97.         uart_init(115200);         
  98.         usart2_init(115200);
  99.         TIM3_PWM_Init(899,0);         //不分频。PWM频率=72000000/900=80Khz                                          //初始化与LED连接的硬件接口
  100.         TIM4_Int_Init(4000-1,2000-1);
  101.         HONGWAI();
  102.   
  103.          
  104.   LED_Init();

  105.         LED[0]=0;
  106.         LED[1]=0;
  107.         LED[2]=0;
  108.         LED[3]=0;
  109.   LED4_Display ();
  110.         while((zuo==0)||(zhong==0)||(you==0))
  111.         {
  112.                         zhixing();
  113.         }
  114.         BEEP=0;
  115.         delay_ms(500);
  116.         BEEP=1;
  117.         time=0;
  118.   while(time!=5)
  119.   {   stop();
  120.                
  121.                   LED[0]=(t-time)%10;
  122.                         LED[1]=0;
  123.                         LED[2]=0;
  124.                         LED[3]=0;
  125.                   LED4_Display ();
  126.         }
  127.   time=0;       
  128.   zhixing();
  129.         delay_ms(300);
  130.         while(1)
  131.         {       
  132.                 LED[0]=time%10;
  133.                 LED[1]=(time/10)%10;
  134.                 LED[2]=(time/100)%10;
  135.                 LED4_Display ();
  136.     if((zuo==0)&&(zhong==1)&&(you==0))
  137.                 {
  138.                   zhixing();
  139.                         last_state=0;
  140.                 }
  141.                 else if((zuo==1)&&(you==0))
  142.                 {
  143.                   zuozhuan();
  144.                         last_state=1;
  145.                 }
  146.                 else if((you==1)&&(zuo==0))
  147.                 {
  148.                   youzhuan();
  149.                         last_state=2;
  150.                                                     
  151.                 }
  152.                 else if((zuo==1)&&(zhong==1)&&(you==1))
  153.                 {
  154.                         l=time;
  155.                   stop();
  156.                         BEEP=0;
  157.                         delay_ms(500);
  158.                         BEEP=1;
  159.                         while(1)
  160.                         {
  161.                                  LED[0]=l%10;
  162.                                 LED[1]=(l/10)%10;
  163.                                 LED[2]=(l/100)%10;
  164.                                 LED4_Display ();        
  165.                         }
  166.                 }
  167.                 else if((zuo==0)&&(zhong==0)&&(you==0))
  168.                 {
  169.                    switch(last_state)
  170.                          {
  171.                                  case 0:zhixing();break;
  172.                                  case 1:zuozhuan();break;
  173.                                  case 2:youzhuan();break;
  174.                          }
  175.                                  
  176.                 }
  177.        
  178.         }       
  179. }
复制代码


智能小车.7z

225.94 KB, 下载次数: 34, 下载积分: 黑币 -5

回复

使用道具 举报

ID:1 发表于 2020-12-12 18:50 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

ID:771023 发表于 2020-12-12 22:22 | 显示全部楼层
太棒了博主
回复

使用道具 举报

ID:582255 发表于 2021-2-13 23:43 | 显示全部楼层
楼主能分享一下完整的代码不
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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