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

標(biāo)題: 51單片機(jī)尋跡小車程序(光靶小車無(wú)激光)順滑 [打印本頁(yè)]

作者: @wyy    時(shí)間: 2023-5-24 12:47
標(biāo)題: 51單片機(jī)尋跡小車程序(光靶小車無(wú)激光)順滑
識(shí)別硬幣車停2 s聲響燈亮后繼續(xù)行駛,bc段加速,d處進(jìn)內(nèi)道,轉(zhuǎn)到點(diǎn)停車,顯示硬幣數(shù)和停車時(shí)間
制作出來(lái)的實(shí)物圖如下:


單片機(jī)源程序如下:
  1. /***************定義頭文件專屬區(qū)域*******************/

  2. #include <REGX51.H>//右鍵添加51頭文件
  3. #include "Trace.h"//循跡驅(qū)動(dòng)頭文件
  4. #include "motor.h"//控制輪子轉(zhuǎn)向頭文件
  5. #include "oled.h"//OELD驅(qū)動(dòng)頭文件
  6. #include "bmp.h"//OLED圖片頭文件,沒用到
  7. #include "Beep_Led_Ctrl.h"//蜂鳴器和LED的頭文件

  8. /***************定義引腳專屬區(qū)域*******************/
  9. sbit ENA = P2^0;//L298n上的ENA、ENB,需要拔掉跳帽,然后和單片機(jī)上面的IO口相接
  10. sbit ENB = P2^1;
  11. sbit STBY = P2^6;
  12. /***************定義變量專屬區(qū)域*******************/
  13. unsigned char PWM;                                                 //占空比

  14. extern unsigned char Speed_A;                        //全局變量,引用Trace.c當(dāng)中的Speed_A和Speed_B
  15. extern unsigned char Speed_B;                        //在Trace.c中定義為電機(jī)A的速度和電機(jī)B的速度

  16. extern unsigned char Coin_Number;                //硬幣數(shù)量

  17. unsigned int i;                                                        //秒計(jì)時(shí)輔助變量
  18. unsigned char Second;                                        //數(shù)秒(90秒停止)
  19. unsigned char Stop_Times;                                //停止時(shí)間顯示
  20. /***************定時(shí)器0初始化函數(shù)*******************/
  21. void Timer0Init(void) //100微秒@12.000MHz
  22. {
  23.         TMOD &= 0xF0; //設(shè)置定時(shí)器模式
  24.         TMOD |= 0x02; //設(shè)置定時(shí)器模式
  25.         TL0 = 0x9C;          //設(shè)置定時(shí)初值
  26.         TH0 = 0x9C;          //設(shè)置定時(shí)重載值
  27.         TF0 = 0;          //清除TF0標(biāo)志
  28.         TR0 = 1;          //定時(shí)器0開始計(jì)時(shí)
  29.         ET0 = 1;          //定時(shí)器0中斷開關(guān)
  30.         EA = 1;                  //中斷總開關(guān)
  31. }
  32. /***************定時(shí)器0中斷服務(wù)函數(shù)*******************/
  33. void Timer0Server() interrupt 1
  34. {
  35. /*  占空比調(diào)速程序:*/
  36.         PWM++;
  37.         if(PWM>=200)PWM = 0;
  38.         if(PWM <= Speed_A)  
  39.         {
  40.                 ENA = 1;
  41.         }
  42.         else                                 
  43.         {
  44.                 ENA = 0;
  45.         }
  46.         if(PWM <= Speed_B)        
  47.         {        
  48.                 ENB = 1;
  49.         }
  50.         else
  51.         {
  52.                 ENB = 0;
  53.         }
  54.         /*計(jì)時(shí)秒程序*/
  55.         i++;
  56.         if(i >= 10000) {i = 0; Second++;if(Second>=90) Second = 90;}
  57.         
  58. }
  59. /***************主函數(shù)Main*******************/
  60. void main()
  61. {
  62.         Timer0Init();                        //定時(shí)器初始化
  63.         STBY = 1;                                //tb6612的STBY端口拉高電平,才能工作
  64.         BL_Ctrl_Init();                        //蜂鳴器和Led的初始化
  65.         
  66.         /*OLED初始化程序*/
  67.         OLED_Init();                        //初始化OLED
  68.         OLED_ColorTurn(0);                //0正常顯示,1 反色顯示
  69.         OLED_DisplayTurn(0);//0正常顯示 1 屏幕翻轉(zhuǎn)顯示
  70.         OLED_ShowString(0,0,"YANGYU COOL!",8);//開始顯示內(nèi)容
  71.         
  72.         while(1)
  73.         {
  74.                 Trace_Car();//引用Trace.c中的函數(shù)(灰度循跡邏輯控制)
  75.                
  76.                 if(Second >=34 && Second <35){Stop_Times = Second;}//使停止時(shí)間等于34s(正在數(shù)的時(shí)間),不能只寫Stop_Times = Second;不然停止時(shí)間會(huì)隨定時(shí)器數(shù)秒一起變化
  77.                
  78.                 if(Second >=34&&Second <= 90)//34秒停止
  79.                 {
  80.                         Speed_A = 0;
  81.                         Speed_B = 0;
  82.                         Stop();
  83.                         OLED_ShowString(0,0,"Car_Drive_Times:",8);
  84.                         OLED_ShowNum(103,0,Second,3,8);
  85.                         OLED_ShowString(0,1,"Car_Stop_Times: ",8);
  86.                         OLED_ShowNum(103,1,Stop_Times,3,8);
  87.                         OLED_ShowString(0,2,"Coin_Number: ",8);
  88.                         OLED_ShowNum(103,2,Coin_Number,3,8);
  89.                 }
  90.                 else if(Second > 90)//九十秒停車,其實(shí)上面可以把&&Second <= 90刪掉,我是怕師傅要看有90s停下的程序
  91.                 {
  92.                         Speed_A = 0;
  93.                         Speed_B = 0;
  94.                         Stop();
  95.                         OLED_ShowString(0,0,"Car_Drive_Times:",8);
  96.                         OLED_ShowNum(103,0,Second,3,8);
  97.                         OLED_ShowString(0,1,"Car_Stop_Times: ",8);
  98.                         OLED_ShowNum(103,1,Stop_Times,3,8);
  99.                         OLED_ShowString(0,2,"Coin_Number: ",8);
  100.                         OLED_ShowNum(103,2,Coin_Number,3,8);
  101.                 }

  102.         }
  103.                
  104. }

復(fù)制代碼

Keil代碼下載:
Keil代碼.7z (44.7 KB, 下載次數(shù): 7)






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美精品一 | 国产乱码精品一品二品 | 密色视频 | pacopacomama在线| h片在线看 | 一级片成人 | 日韩三级免费网站 | 精品福利在线 | 免费a级毛片在线播放 | 九九国产在线观看 | 综合精品 | 日韩欧美一区在线 | 久久精品国产免费 | 欧美亚州 | 成人国内精品久久久久一区 | 中文字幕亚洲视频 | 久久99蜜桃综合影院免费观看 | 韩国av影院 | 人人九九精 | 人人看人人射 | 亚洲一区二区三区四区五区午夜 | 红桃视频一区二区三区免费 | 色综合视频| www网站在线观看 | 国产污视频在线 | 国产色网站 | 欧美性生活一区二区三区 | 欧美一区二区三区免费在线观看 | 国产一二区在线 | 免费在线成人 | 亚洲精品一区二区在线观看 | 亚洲va欧美va人人爽午夜 | 欧美亚洲国产成人 | 久久极品| 精品日韩一区 | 国产成人麻豆免费观看 | aaa精品| 一区二区三区四区在线视频 | 天天夜夜人人 | 亚洲第一免费播放区 | 免费一区 |