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

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

QQ登錄

只需一步,快速開始

搜索
查看: 2380|回復(fù): 1
收起左側(cè)

基于51單片機(jī)的智能小車源代碼

[復(fù)制鏈接]
ID:717630 發(fā)表于 2020-3-28 16:06 | 顯示全部樓層 |閱讀模式
要求已全做完
1設(shè)計(jì)并焊接實(shí)現(xiàn)小車的各種運(yùn)行狀態(tài)。
①設(shè)計(jì)并焊接實(shí)現(xiàn)按鍵控制小車的各種運(yùn)行狀態(tài),包括啟動(dòng)停止、前進(jìn)倒退、加速減速等;
②設(shè)計(jì)并焊接實(shí)現(xiàn)使用數(shù)碼管、LCD等顯示器件監(jiān)測(cè)小車的運(yùn)行狀態(tài),請(qǐng)自行定義要顯示的內(nèi)容,如運(yùn)行狀態(tài)、運(yùn)行速度擋位等。
2)
設(shè)計(jì)并焊接實(shí)現(xiàn)無線數(shù)據(jù)傳輸遙控小車的運(yùn)行狀態(tài)。
①使用具有藍(lán)牙功能的PC或手機(jī),設(shè)計(jì)通過藍(lán)牙實(shí)現(xiàn)無線數(shù)據(jù)傳輸,進(jìn)而遙控小車的各種運(yùn)行狀態(tài);
③使用多種編碼格式的紅外遙控器設(shè)計(jì)解碼算法,實(shí)現(xiàn)紅外遙控小車的各種運(yùn)行狀態(tài)。
3)創(chuàng)新層(選做):使用多種傳感器設(shè)計(jì)實(shí)現(xiàn)小車的智能控制。
①基于超聲波傳感器實(shí)現(xiàn)小車自動(dòng)避障;
②基于紅外線傳感器實(shí)現(xiàn)小車自動(dòng)循跡‘。

單片機(jī)源程序如下:
  1. #include    "intrins.h"
  2. #include "STC15F2K60S2.H"
  3. #include "MOTOR.H"
  4. #include "DELAY.H"
  5. unsigned char curr_speed=0;               
  6. unsigned char run_flag=1;      //1???????????У?0??????
  7. unsigned char run_direct=1;      //1?????????0??????
  8. unsigned char sys_state;
  9. bit rx_flag=0;       //??????λ
  10. unsigned char rxbuf;     //?????????
  11. #define  MAIN_Fosc   11059200L   //?????????
  12. sfr TH2  = 0xD6;
  13. sfr TL2  = 0xD7;

  14. /*************  IO?????    **************/
  15. sbit    P_HC595_SER   = P4^0;   //pin 14    SER     data input
  16. sbit    P_HC595_RCLK  = P5^4;   //pin 12    RCLk    store (latch) clock
  17. sbit    P_HC595_SRCLK = P4^3;   //pin 11    SRCLK   Shift data clock
  18. sbit SR_Trig = P1^4;  //  ??????I/O??
  19. sbit SR_Echo = P1^3;
  20. sbit model_flag= P1^2;
  21. sbit infrared_l = P2^5;  //????I/O??
  22. sbit infrared_m = P2^6;
  23. sbit infrared_r = P2^7;
  24. sbit infrared_stop = P4^5;   //???????????
  25. /*************  ???????????    **************/
  26. void motor_turnleft(unsigned char wide);
  27. void motor_turnright(unsigned char wide);
  28. void motor_turnl(void);
  29. void motor_turnr(void);
  30. void    DisplayRTC(void);
  31. void    RTC(void);
  32. void    delay_ms(u8 ms);
  33. void    DisableHC595(void);
  34. void    Initialize_LCD(void);
  35. void    Write_AC(u8 hang,u8 lie);
  36. void    Write_DIS_Data(u8 DIS_Data);
  37. void    ClearLine(u8 row);
  38. u8      BIN_ASCII(u8 tmp);
  39. void    PutString(u8 row, u8 column, u8 *puts);
  40. void    WriteChar(u8 row, u8 column, u8 dat);
  41. float  measure(void);
  42. void  delay_us(unsigned int us);
  43. void  Car_Track(void);
  44. /*************************??????****************************/
  45. void Car_Track(void)
  46. {
  47. if(infrared_l==0&&infrared_m==1&&infrared_r==0 )
  48.    motor_start();
  49.   else if( (infrared_l==0&&infrared_m==0&&infrared_r==1)||(infrared_l==0&&infrared_m==1&&infrared_r==1))
  50.     motor_turnr();
  51.    /*else if (infrared_l==0&&infrared_m==1&&infrared_r==0)
  52.      motor_start();
  53.    */
  54.     else if( (infrared_l==1&&infrared_m==0&&infrared_r==0)||(infrared_l==1&&infrared_m==1&&infrared_r==0))
  55.      motor_turnl();
  56.      
  57. }

  58. /***********???????***************/
  59. void Delay_200ms(void)
  60. {
  61.     unsigned char i,j,k;
  62.     _nop_();
  63.     _nop_();
  64.     i=10;
  65.     j=31;
  66.     k=147;
  67.     do
  68.     {
  69.         do
  70.         {
  71.             while(--k);
  72.         }while(--j);
  73.     }while(--i);
  74. }
  75. void Delay_Num(unsigned int n_ms)        //@12.000MHz
  76. {
  77.     unsigned char i,j;
  78.     while(n_ms--)
  79.     {
  80.         i=12;
  81.         j=169;
  82.         do
  83.         {
  84.             while(--j);
  85.         }while(--i);
  86.     }
  87. }

  88. /**********???????*************/
  89. void Delay500us()               //@12.000MHz
  90. {
  91.     unsigned char i,j;
  92.     i=6;
  93.     j=211;
  94.     do
  95.     {
  96.         while(--j);
  97.     }while(--i);
  98. }
  99. void Delay50us()               //@12.000MHz
  100. {
  101.     unsigned char i,j;
  102.     i=6;
  103.     j=146;
  104.     do
  105.     {
  106.         while(--j);
  107.     }while(--i);
  108. }
  109. void Delay3us()                 //@12.000MHz
  110. {
  111.     unsigned char i;
  112.     _nop_();
  113.     _nop_();
  114.     i=6;
  115.     while(--i);
  116. }
  117. void Delay30us()                 //@12.000MHz
  118. {
  119.     unsigned char i;
  120.     _nop_();
  121.     _nop_();
  122.     i=87;
  123.     while(--i);
  124. }
  125. void Delay10us()                 //@12.000MHz
  126. {
  127.     unsigned char i;
  128.     _nop_();
  129.     _nop_();
  130.     i=27;
  131.     while(--i);
  132. }
  133. void Delay900us()               //@12.000MHz
  134. {
  135.     unsigned char i,j;
  136.     i=11;
  137.     j=126;
  138.     do
  139.     {
  140.         while(--j);
  141.     }while(--i);
  142. }
  143. void Delay1ms()               //@12.000MHz
  144. {
  145.     unsigned char i,j;
  146.     i=12;
  147.     j=169;
  148.     do
  149.     {
  150.         while(--j);
  151.     }while(--i);
  152. }
  153. void Delay4500us()               //@12.000MHz
  154. {
  155.     unsigned char i,j;
  156.     i=53;
  157.     j=132;
  158.     do
  159.     {
  160.         while(--j);
  161.     }while(--i);
  162. }
  163. void Delay600us()               //@12.000MHz
  164. {
  165.     unsigned char i,j;
  166.     i=7;
  167.     j=254;
  168.     do
  169.     {
  170.         while(--j);
  171.     }while(--i);
  172. }
  173. void motor_init(void)
  174. {
  175. P_SW2|=BIT7;
  176. PWMCKS=0;
  177. PWMCFG=0;
  178. PWMC=CYCLE;        //????????
  179. PWM5CR=0;              //?????????????????
  180. PWM5T1=0;


  181. /*********************************/
  182. PWM5T2=CYCLE*60/100;
  183. PWM4CR=0;
  184. PWM4T1=0;
  185. PWM4T2=CYCLE*60/100;
  186. /**********************************/
  187. PWMCR=BIT3+BIT2;     //PWMCR=0X60 ,pwm??????     00001100
  188. PWMCR|=BIT7;
  189. P_SW2&=~BIT7;
  190. PWMCR|=BIT3+BIT2;
  191. run_flag=1;
  192. }
  193. ///////////////???????//////////////////////////////////
  194. void motor_setspeed(unsigned char wide)
  195. {
  196. if(run_flag)
  197. {  
  198.   wide=curr_speed;
  199.   if(!run_direct)
  200.    wide=100-wide;     //???????????????
  201.   if(wide)
  202.   {
  203.    P_SW2|=BIT7;
  204.    PWM5T2=(u16)(CYCLE/(100/wide*0.5)); //????????
  205.    PWM4T2=(u16)(CYCLE/(100/wide*0.5));          //?????????????????
  206.    P_SW2&=~BIT7;
  207.    PWMCR|=BIT3+BIT2;
  208.   }
  209. }
  210. else
  211. {
  212.   PWMCR&=~(BIT3+BIT2);
  213.   IN1=0;IN2=0;IN3=0;IN4=0;
  214. }
  215. }
  216. ///////////////???////////////////////////////////////////
  217. void motor_turnleft(unsigned char wide)
  218. {
  219. if(run_flag)
  220. {  
  221.   curr_speed=wide;
  222.   if(!run_direct)
  223.    wide=100-wide;     //???????????????
  224.   if(wide)
  225.   {
  226.    P_SW2|=BIT7;
  227.    PWM5T2=(u16)(CYCLE/(100/(wide*0.01))); //????????
  228.    PWM4T2=(u16)(CYCLE/(100/wide));          //?????????????????
  229.    P_SW2&=~BIT7;
  230.    PWMCR|=BIT3+BIT2;
  231.   }
  232. }
  233. else
  234. {
  235.   PWMCR&=~(BIT3+BIT2);
  236.   IN1=0;IN2=0;IN3=0;IN4=0;
  237. }
  238. }
  239. ///////////////////???//////////////////////////////////////////
  240. void motor_turnright(unsigned char wide)
  241. {
  242. if(run_flag)
  243. {  
  244.   curr_speed=wide;
  245.   if(!run_direct)
  246.    wide=100-wide;     //???????????????
  247.   if(wide)
  248.   {
  249.    P_SW2|=BIT7;
  250.    PWM5T2=(u16)(CYCLE/(100/wide)); //????????
  251.    PWM4T2=(u16)(CYCLE/(100/(wide*0.01)));          //?????????????????
  252.    P_SW2&=~BIT7;
  253.    PWMCR|=BIT3+BIT2;
  254.   }
  255. }
  256. else
  257. {
  258.   PWMCR&=~(BIT3+BIT2);
  259.   IN1=0;IN2=0;IN3=0;IN4=0;
  260. }
  261. }
  262. ///////////////??????///////////////////////////////////////
  263. void motor_forward(void)
  264. {
  265. IN2=0;IN4=0;
  266. run_direct=1;
  267. motor_setspeed(curr_speed);
  268. }
  269. ///////////////???_1///////////////////////////////////////
  270. void motor_turnl(void)
  271. {
  272. IN2=0;IN4=0;
  273. run_direct=1;
  274. motor_turnleft(curr_speed);
  275. }
  276. ///////////////???_1///////////////////////////////////////
  277. void motor_turnr(void)
  278. {
  279. IN2=0;IN4=0;
  280. run_direct=1;
  281. motor_turnright(curr_speed);
  282. }
  283. ////////////////??????///////////////////////////////////////////
  284. void motor_backward(void)
  285. {
  286. IN1=0;
  287. IN2=1;
  288. IN3=0;
  289. IN4=1;
  290. run_direct=0;
  291. motor_setspeed(curr_speed);
  292. }

  293. ////////////////?????//////////////////////////////////////
  294. void motor_stop(void)
  295. {
  296. PWMCR&=~(BIT3+BIT2);
  297. IN1=0;IN2=0;
  298. IN3=0;IN4=0;
  299. run_flag=0;
  300. }
  301. /////////////////??????///////////////////////////////////////
  302. void motor_start(void)
  303. {  
  304. run_flag=1;
  305. curr_speed=70;
  306. motor_forward();
  307. }

  308. /**************** ?????????? ****************/
  309. void UART_Init(void)    //9600bps@12.000MHz
  310. {
  311. SCON =0x50;      //8λ????????????
  312. AUXR &=0xBF;     //?????1????Fosc/12????12T
  313. AUXR &=0xFE;     //???????????1????????????
  314. TMOD &=0x0F;     //?????1?????16λ?????????
  315. TL1=0xe7;
  316. TH1=0xFF;      //????????
  317. ET1=0;       //????????1?ж?
  318. TR1=1;       //????????1
  319. REN=1;       //???????
  320. ES=1;       //?????ж?
  321. }
復(fù)制代碼

余下代碼在壓縮包
全部資料51hei下載地址:
xiaoche.rar (251.19 KB, 下載次數(shù): 15)

回復(fù)

使用道具 舉報(bào)

ID:699194 發(fā)表于 2020-4-3 14:22 | 顯示全部樓層
假的程序,我下載過了,試了試。。。不行,坑人的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一二三区不卡 | 亚洲精品一区二区三区四区高清 | 国产精品精品视频一区二区三区 | 成人福利视频 | 国产精品久久久久999 | 91av在线免费观看 | 九九视频网 | 日韩精品一区二区三区在线播放 | 少妇一区二区三区 | 久久精品在线播放 | 三级免费 | 久久88 | 福利久久 | 午夜免费电影 | 久久99一区二区 | 欧美精品在欧美一区二区少妇 | 精精国产xxxx视频在线播放 | 亚洲精品在线视频 | 欧美日韩一区二区在线观看 | 欧美一区精品 | 日本一二三区在线观看 | 91精品国产一区 | 一级片av| 精品国产不卡一区二区三区 | 龙珠z国语版在线观看 | 亚洲 中文 欧美 日韩 在线观看 | 777zyz色资源站在线观看 | 男女视频免费 | 国产免费让你躁在线视频 | 伊人狠狠| 亚洲高清免费 | av天天看| 日韩中文字幕一区二区 | 欧美成人a| 99影视| 一区二区三区av | 亚洲第一天堂 | www.午夜 | 成人a视频片观看免费 | 欧美手机在线 | 一区日韩 |