久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4018|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

學(xué)校小比賽做的一個(gè)帶顏色識(shí)別尋跡小車程序,STM32+5110屏幕

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:405625 發(fā)表于 2019-3-24 20:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
5110屏幕做小車的主顯示屏,然后顏色識(shí)別傳感器
大概就是做到下面這幾點(diǎn)
它以在特定賽道上能自主行駛且具有優(yōu)性能的智能小車這類復(fù)雜工程問題為任務(wù),鼓勵(lì)組成團(tuán)隊(duì),綜合運(yùn)用多學(xué)科知識(shí),提出、分析、設(shè)計(jì)、開發(fā)并研究智能小車的機(jī)械結(jié)構(gòu)、電子線路、運(yùn)動(dòng)控制和經(jīng)濟(jì)成本等問題,讓綜合工程素質(zhì)、創(chuàng)新能力、團(tuán)隊(duì)協(xié)作能力都得到全面的培養(yǎng)和提升。因此,特邀各專業(yè)電子設(shè)計(jì)愛好者參加自制小車跑道賽”,促進(jìn)電子設(shè)計(jì)能力提高和智能小車競(jìng)賽活動(dòng)的普及

將賽車放置在賽道出發(fā)區(qū),賽車應(yīng)在得到出發(fā)信號(hào)后5秒之內(nèi)離開出發(fā)區(qū),沿著賽道黑色引導(dǎo)線跑一圈,由計(jì)時(shí)定位起始線進(jìn)行自動(dòng)計(jì)時(shí)。
小車從賽道出發(fā)區(qū)離開,賽道黑色引導(dǎo)線上排列若干包裹兩組不同顏色(可由自己準(zhǔn)備)1元硬幣,其中一種顏色硬幣二枚,另一種顏色硬幣二枚,硬幣比賽時(shí)隨機(jī)擺放。由計(jì)時(shí)起始線開始進(jìn)行自動(dòng)計(jì)時(shí),小車沿引導(dǎo)線前進(jìn),檢測(cè)到指定顏色的硬幣后將其搬運(yùn)至起點(diǎn)

單片機(jī)源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2013-xx-xx
  7.   * @brief   USART printf example
  8.   */
  9.   
  10. #include "stm32f10x.h"
  11. #include "bsp_SysTick.h"
  12. #include "bsp_usart1.h"
  13. #include "UltrasonicWave.h"
  14. #include "5110.h"
  15. #include "sys.h"
  16. #include "tcs3200.h"
  17. #include "TIM2.h"
  18. #include "bsp_exti.h"
  19. #include "bsp_led.h"
  20. #include "PWM.h"
  21. #include "trace.h"
  22. #include "delay.h"
  23. #include "key.h"
  24. #include "gpio.h"
  25. #define CLI()      __set_PRIMASK(1)                /* 關(guān)閉總中斷 */  
  26. #define SEI() __set_PRIMASK(0)                                /* 開放總中斷 */

  27. extern         u16 CCR1_Val ;        
  28. extern         u16 CCR2_Val ;
  29. extern        u16 CCR3_Val ;
  30. extern        u16 CCR4_Val ;
  31. u16 state=0;
  32. u16 past=0;

  33. extern unsigned short int Ultras_Distance;

  34. volatile u32 time = 0; // ms 計(jì)時(shí)變量
  35. volatile u16 amount = 0; // ms 計(jì)時(shí)變量
  36. volatile u8 n = 0; // ms 計(jì)時(shí)變量
  37. /**
  38.   * @brief  主函數(shù)
  39.   * @param  無
  40.   * @retval 無
  41.   */
  42.         
  43.         
  44.         void Init_NVIC(void)
  45. {
  46.         NVIC_InitTypeDef  NVIC_InitStructure;
  47.                  
  48.         #ifdef  VECT_TAB_RAM                                                          //向量表基地址選擇

  49.           NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);          //將0x20000000地址作為向量表基地址(RAM)
  50.         #else  

  51.           NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); //將0x08000000地址作為向量表基地址(FLASH)  
  52.         #endif

  53.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                                  //設(shè)置中斷優(yōu)先級(jí)分組2

  54.         NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;                //設(shè)定中斷源為PC13
  55.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;        //中斷占優(yōu)先級(jí)為2
  56.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                        //副優(yōu)先級(jí)為0
  57.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                //使能中斷
  58.         NVIC_Init(&NVIC_InitStructure);                                                                   //根據(jù)參數(shù)初始化中斷寄存器

  59.         NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;                        //設(shè)定中斷源為PE0
  60.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;        //中斷占優(yōu)先級(jí)為1
  61.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                        //副優(yōu)先級(jí)為0
  62.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                //使能中斷
  63.         NVIC_Init(&NVIC_InitStructure);                                                                   //根據(jù)參數(shù)初始化中斷寄存器
  64. }

  65. void EXTI0_IRQHandler(void)
  66. {
  67.         if(EXTI_GetITStatus(EXTI_Line0)!= RESET)         //判斷是否發(fā)生中斷,發(fā)生則中斷標(biāo)志置1
  68.         {
  69.             n++;                                                
  70.         }
  71.         EXTI_ClearITPendingBit(EXTI_Line0);                     //清楚中斷掛起位,重要!!                        
  72. }
  73. int main(void)
  74. {
  75.                 u8 R=0x00,G=0x00,B=0x00;
  76.                   u8 R1=0x00,G2=0x00,B3=0x00;
  77.                   u8 RR1=0x00,GG2=0x00,BB3=0x00;
  78.                           u8 RRR1=0x00,GGG2=0x00,BBB3=0x00;
  79.         u8 RRRR1=0x00,GGGG2=0x00,BBBB3=0x00;
  80.                 u8 RRRRR1=0x00,GGGGG2=0x00,BBBBB3=0x00;
  81.                 u16 states;
  82.                 u16 i=0;
  83.         u8 j=0;
  84.         u8 z=0;
  85.         u8 a=0;
  86.                         u8 r[200],b[200],g[200];
  87.         u8 r1[100],b1[100],g1[100];
  88.                 u8 m=0;
  89.                 /* USART1 config 115200 8-N-1 */
  90.         LCD_GPIO_Init();
  91.         diancid;
  92.         
  93.                 USART1_Config();
  94.                 LED_GPIO_Config();         
  95.                 CLI();
  96.                 SEI();
  97.         SystemInit();
  98.         delay_init();
  99.                 Init_NVIC();                                //中斷向量表注冊(cè)函數(shù)
  100.                         LCD_init();
  101.                         LCD_clear();
  102.                         LCD_set_XY(0,0);
  103.                         LCD_write_str("Nokia5110");

  104.                         
  105.           SysTick_Init();
  106.                 Init_TI_KEY();                                //按鍵引腳中斷初始化
  107.           Delay_us(1000);            // 10000 * 10us = 100ms
  108.                 TIM4_PWM_Init();
  109.                 Delay_us(100);            // 10000 * 10us = 100ms
  110.                 TIM2_Configuration();
  111.                 UltrasonicWave_Configuration();
  112.                 Delay_ms(20);
  113.                 LED1_OFF;
  114.                                                         LCD_set_XY(40,4);
  115.                         Write_num(n);
  116.                 tcs3200_init(1,1);//初始化(速率調(diào)整)
  117.                 whitebalance();        //白平衡
  118. Delay_ms(3000);
  119.                  while(1)
  120.          {

  121.                   LCD_set_XY(40,4);
  122.                         Write_num(n);
  123.                                          if(n>5)
  124.                                 n=0;
  125.                          j++;
  126.                   R = tcs3200_RED();
  127.                         G = tcs3200_GREEN();        //取RGB值
  128.                         B = tcs3200_BLUE();        
  129.                         LCD_set_XY(1,1);
  130.                         Write_num(R);
  131.                         LCD_set_XY(1,2);
  132.                         Write_num(G);
  133.                         LCD_set_XY(1,3);
  134.                         Write_num(B);
  135.                         ggd;
  136. ddd;
  137.                  r[j]=R;
  138.                  b[j]=B;
  139.                  g[j]=G;
  140.                         if(j==200)
  141.                         {
  142.                                         LCD_set_XY(0,4);
  143.                               LCD_write_str("get");
  144.                                                 Delay_ms(200);
  145.                                 LCD_set_XY(41,4);
  146.                                 LCD_write_str("ready");
  147.                                 Delay_ms(3000);
  148.         break;
  149.                         }        
  150.          }

  151.                 while(1)
  152.                 {
  153.                                                 LCD_set_XY(40,4);
  154.                         Write_num(n);
  155.                         
  156.                         
  157.                         if(n==1) //xunji
  158.                         {
  159.                                                                         i++;
  160.                                   if(i==5900)
  161.                                         {z++;
  162.                                          i=0;
  163.                                         }
  164.                                         LCD_set_XY(40,3);
  165.                         Write_num((z));
  166. GPIO_SetBits(GPIOB, GPIO_Pin_5);
  167.                         TIM4_Mode_Config();        //更新電機(jī)狀態(tài)        
  168.                          states        =        read_state();
  169.                         states        =        read_state();
  170.       if(states==1) left();
  171.                         if(states==3) right();
  172.                         if(states==2) zhizou();
  173.                         if(states==5) left_L();
  174.                         if(states==6) right_L();
  175.                                 n=1;
  176.                         }
  177.                         
  178.                         
  179.                         if(n==2)  //xunji+bizhan
  180.                         {
  181.                         GPIO_SetBits(GPIOB, GPIO_Pin_5);
  182.                         TIM4_Mode_Config();        //更新電機(jī)狀態(tài)        
  183.         
  184.                                         i++;
  185.                                   if(i==5900)
  186.                                         {z++;
  187.                                          i=0;
  188.                                         }
  189.                                         LCD_set_XY(40,3);
  190.                         Write_num((z));
  191.                         states        =        read_state();
  192.       if(states==1) left();
  193.                         if(states==3) right();
  194.                         if(states==2) zhizou();
  195.                         if(states==5) left_L();
  196.                         if(states==6) right_L();
  197.                                                 TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  198.                                 

  199.                         if(z>17)
  200.                         {
  201.                                                         states        =        read_state();
  202.       if(states==1) leftm();
  203.                         if(states==3) rightm();
  204.                         if(states==2) zhizoum();
  205.                         if(states==5) left_Lm();
  206.                         if(states==6) right_Lm();
  207.                                                 TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  208.                                                                 UltrasonicWave_StartMeasure();                //開始測(cè)距,發(fā)送一個(gè)>10us的脈沖,然后測(cè)量返回的高電平時(shí)間
  209.                                                         LCD_set_XY(45,2);
  210.                 Write_num(Ultras_Distance);
  211.                                                                 if(Ultras_Distance        < 13&& Ultras_Distance        >4)
  212.                                         {
  213.                                                 left();
  214.                                         TIM4_Mode_Config();        //更新電機(jī)狀態(tài)                                                
  215.                                         Delay_ms(300);
  216.                                         zhizoumm();               
  217.                                         TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  218.           Delay_ms(400);        
  219.                                         right();
  220.                                        
  221.                                                 TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  222.                                         Delay_ms(450);
  223.                                        
  224.                                  

  225.                                         zhizoumm();
  226.                                                                                         TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  227.             Delay_ms(300);        
  228.                                                 while(1)
  229.                                                 {
  230.                                                 states        =        read_state();
  231.       if(states==1) left();
  232.                         if(states==3) right();
  233.                         if(states==2) zhizou();
  234.                         if(states==5) left_L();
  235.                         if(states==6) right_L();
  236.                                                 TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  237.                                                 
  238.                                                 }
  239.                                         }
  240.                 }
  241.         }
  242.                         if(n==3)
  243.                         {
  244.                                                                         i++;
  245.                                   if(i==5900)
  246.                                         {z++;
  247.                                          i=0;
  248.                                         }
  249.                                         LCD_set_XY(40,3);
  250.                         Write_num((z));
  251.                                         GPIO_SetBits(GPIOB, GPIO_Pin_5);
  252.                         TIM4_Mode_Config();        //更新電機(jī)狀態(tài)        
  253.                          states        =        read_state();
  254.                         states        =        read_state();
  255.       if(states==1) leftm();
  256.                         if(states==3) rightm();
  257.                         if(states==2) zhizoum();
  258.                         if(states==5) leftm();
  259.                         if(states==6) rightm();
  260.                         
  261.                         
  262.                                           R = tcs3200_RED();
  263.                         G = tcs3200_GREEN();        //取RGB值
  264.                         B = tcs3200_BLUE();        
  265.                         LCD_set_XY(1,1);
  266.                         Write_num(R);
  267.                         LCD_set_XY(1,2);
  268.                         Write_num(G);
  269.                         LCD_set_XY(1,3);
  270.                         Write_num(B);
  271.                         for(m=0;m<201;m++)
  272.                         {
  273.                         if(((R > r[m]-10)&&(R < r[m]+10)) && ((G>g[m]-10)&&(G<g[m]+10)) && ((B>b[m]-10)&&( B<b[m]+10 )))
  274.                         {

  275.                                 gg; dianciu;
  276.                                 LCD_set_XY(0,5);
  277.                               LCD_write_str("get");
  278.                                 
  279.                         }

  280.                         else
  281.                         {
  282.                                                         LCD_set_XY(0,5);
  283.                               LCD_write_str("   ");}
  284.                 }
  285.         }
  286.                         if(n==4)  //xunji+bizhan
  287.                         {
  288.                                                                         i++;
  289.                                   if(i==5900)
  290.                                         {z++;
  291.                                          i=0;
  292.                                         }
  293.                                         LCD_set_XY(40,3);
  294.                         Write_num((z));
  295.                                                         states        =        read_state();
  296.       if(states==1) leftm();
  297.                         if(states==3) rightm();
  298.                         if(states==2) zhizoum();
  299.                         if(states==5) left_Lm();
  300.                         if(states==6) right_Lm();
  301.                                                 TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  302.                                                                 UltrasonicWave_StartMeasure();                //開始測(cè)距,發(fā)送一個(gè)>10us的脈沖,然后測(cè)量返回的高電平時(shí)間
  303.                                                         LCD_set_XY(45,2);
  304.                 Write_num(Ultras_Distance);
  305.                                                                 if(Ultras_Distance        < 13&& Ultras_Distance        >4)
  306.                                         {
  307.                                                 left();
  308.                                         TIM4_Mode_Config();        //更新電機(jī)狀態(tài)                                                
  309.                                         Delay_ms(300);
  310.                                         zhizoumm();               
  311.                                         TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  312.           Delay_ms(400);        
  313.                                         right();
  314.                                        
  315.                                                 TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  316.                                         Delay_ms(450);
  317.                                        
  318.                                  

  319.                                         zhizoumm();
  320.                                                                                         TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  321.             Delay_ms(300);        
  322.                                                 while(1)
  323.                                                 {
  324.                                                 states        =        read_state();
  325.       if(states==1) left();
  326.                         if(states==3) right();
  327.                         if(states==2) zhizou();
  328.                         if(states==5) left_L();
  329.                         if(states==6) right_L();
  330.                                                 TIM4_Mode_Config();        //更新電機(jī)狀態(tài)
  331.                                                 
  332.                                                 }
  333.                                                                                        
  334.                                         }
  335.                         }
  336. if(n==5)
  337.                         {
  338.                                 Delay_ms(3000);
  339.                   LCD_set_XY(40,4);
  340.                         Write_num(n);
  341.                          j++;
  342.                         for(j=0;j<101;j++)
  343.                                 {
  344.                   R = tcs3200_RED();
  345.                         G = tcs3200_GREEN();        //取RGB值
  346.                         B = tcs3200_BLUE();        
  347.                         LCD_set_XY(1,1);
  348.                         Write_num(R);
  349.                         LCD_set_XY(1,2);
  350.                         Write_num(G);
  351.                         LCD_set_XY(1,3);
  352.                         Write_num(B);
  353.                         ggd;

  354.                  r1[j]=R;
  355.                  b1[j]=B;
  356.                  g1[j]=G;
  357.          }
  358.                         if(j==101)
  359.                         {
  360.                                         LCD_set_XY(20,0);
  361.                               LCD_write_str("get");
  362.                                                 Delay_ms(200);
  363.                                 LCD_set_XY(20,1);
  364.                 LCD_write_str("ready");
  365.                                 Delay_ms(3000);
  366.          while(1)
  367.          {
  368.                                                                         i++;
  369.                                   if(i==5900)
  370.                                         {z++;
  371.                                          i=0;
  372.                                         }
  373.                                         LCD_set_XY(40,3);
  374.                         Write_num((z));
  375.                                         GPIO_SetBits(GPIOB, GPIO_Pin_5);
  376.                         TIM4_Mode_Config();        //更新電機(jī)狀態(tài)        
  377.                          states        =        read_state();
  378.                         states        =        read_state();
  379.       if(states==1) leftm();
  380.                         if(states==3) rightm();
  381.                         if(states==2) zhizoum();
  382.                         if(states==5) leftm();
  383.                         if(states==6) rightm();
  384.                                                                 LCD_set_XY(40,2);
  385.                         Write_num((456));
  386.                         
  387.                                           R = tcs3200_RED();
  388.                         G = tcs3200_GREEN();        //取RGB值
  389.                         B = tcs3200_BLUE();        
  390.                         LCD_set_XY(1,1);
  391.                         Write_num(R);
  392.                         LCD_set_XY(1,2);
  393.                         Write_num(G);
  394.                         LCD_set_XY(1,3);
  395.                         Write_num(B);
  396.                         for(m=0;m<201;m++)
  397.                         {
  398.                         if(((R > r[m]-10)&&(R < r[m]+10)) && ((G>g[m]-10)&&(G<g[m]+10)) && ((B>b[m]-10)&&( B<b[m]+10 )))
  399.                         {
  400. ……………………

  401. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
V3_超聲波+顏色識(shí)別+PWM.7z (206.67 KB, 下載次數(shù): 37)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:505045 發(fā)表于 2019-5-18 18:22 | 只看該作者
樓主可以發(fā)給我嗎?17382569964@163.com
回復(fù)

使用道具 舉報(bào)

板凳
ID:405372 發(fā)表于 2019-8-2 15:14 | 只看該作者
我來移植下試試看
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区三区高清 | 91国内精品久久 | 天天干天天操天天看 | 天天操 夜夜操 | 日本精品久久久一区二区三区 | 日韩在线免费 | 国产资源视频 | 久久综合欧美 | 欧美激情综合五月色丁香小说 | 一本一道久久a久久精品蜜桃 | 免费一级网站 | 古装三级在线播放 | 在线免费观看毛片 | 欧美一区二区三区精品免费 | 6080亚洲精品一区二区 | 九九亚洲精品 | 亚洲日日 | 国产在线精品一区二区 | 欧美老少妇一级特黄一片 | 99re6在线视频精品免费 | 亚洲欧美综合 | 国产精品免费在线 | 色噜噜亚洲男人的天堂 | 日本精品国产 | 网站国产| 国产精品高潮呻吟久久 | 亚洲国产精品成人久久久 | 亚洲精品自在在线观看 | 伊人精品在线视频 | 精品久久久久久亚洲精品 | 日日操天天射 | 免费一区二区三区在线视频 | 色综合视频 | 99久久中文字幕三级久久日本 | 久久久久久亚洲 | 欧美自拍网站 | 免费成人国产 | 在线免费观看黄网 | 久久9999久久 | 亚洲91| 911网站大全在线观看 |