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

QQ登錄

只需一步,快速開始

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

單字節(jié)藍(lán)牙下位機(jī)控制小車程序

[復(fù)制鏈接]
ID:79544 發(fā)表于 2015-8-18 10:17 | 顯示全部樓層 |閱讀模式
  1. /***************************************************
  2.         單字節(jié)藍(lán)牙控制小車程序 電機(jī)口是P0
  3.         通過上位機(jī)的1,2,3,4,5,6,7,8,9控制單片機(jī)
  4.         單片機(jī):STC12C5608AD
  5.         晶振:11.0592M
  6.         作者:蘇義江
  7.         時(shí)間:2015-8-10
  8. ***********************************************/
  9. #include<reg52.h>
  10. #include<math.h>
  11. #define uchar unsigned char
  12. #define uint unsigned int
  13. uchar Buffer[4] = {0};      //從串口接收的數(shù)據(jù)
  14. uint i,j;
  15. sbit Leftdeng=P1^2;//左大燈
  16. sbit Righdeng=P1^3;//右大燈

  17. /********************************************************************
  18. * 名稱 : Delay_1ms()
  19. * 功能 : 延時(shí)子程序,延時(shí)時(shí)間為 1ms * x
  20. * 輸入 : x (延時(shí)一毫秒的個(gè)數(shù))
  21. * 輸出 : 無
  22. ***********************************************************************/
  23. void Delay_1ms(uint i)//1ms延時(shí)
  24. {
  25.         uchar x,j;
  26.         for(j=0;j<i;j++)
  27.         for(x=0;x<=148;x++);       
  28. }
  29. /********************************************************************
  30. * 名稱 : Com_Int()
  31. * 功能 : 串口中斷子函數(shù)
  32. * 輸入 : 無
  33. * 輸出 : 無
  34. ***********************************************************************/
  35. void Com_Int(void) interrupt 4
  36. {
  37.        
  38.         EA = 0;
  39.         if(RI == 1)   //當(dāng)硬件接收到一個(gè)數(shù)據(jù)時(shí),RI會(huì)置位
  40.         {
  41.                 Buffer[0] = SBUF - 48; //這里減去48是因?yàn)閺碾娔X中發(fā)送過來的數(shù)據(jù)是ASCII碼。
  42.                 RI = 0;                 
  43.         }
  44.         EA = 1;
  45. }

  46. /********************************************************************
  47. * 名稱 : Com_Init()
  48. * 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中斷
  49. * 輸入 : 無
  50. * 輸出 : 無
  51. ***********************************************************************/
  52. void Com_Init(void)
  53. {
  54.      TMOD = 0x20;
  55.      PCON = 0x00;
  56.      SCON = 0x50;                       
  57.      TH1 = 0xFd;    //設(shè)置波特率 9600
  58.      TL1 = 0xFd;
  59.      TR1 = 1;                //啟動(dòng)定時(shí)器1
  60.          ES = 1;                //開串口中斷
  61.          EA = 1;                //開總中斷               
  62. }
  63. /********************************************************************
  64. * 名稱 :Moto_Forward()
  65. * 功能 : 電機(jī)1、2啟動(dòng),都是前進(jìn),整車表現(xiàn)為前進(jìn)。
  66. * 輸入 : 無
  67. * 輸出 : 無
  68. ***********************************************************************/
  69. void Moto_Forward()
  70. {     
  71.            P1= 0xaf;//1010 1111
  72.    Delay_1ms(100);
  73. }
  74. /********************************************************************
  75. * 名稱 :Moto_Backward()
  76. * 功能 : 電機(jī)1、2啟動(dòng),都是后退,整車表現(xiàn)為后退。
  77. * 輸入 : 無
  78. * 輸出 : 無
  79. ***********************************************************************/
  80. void Moto_Backward()
  81. {  
  82.     P1= 0x5f;//0101 1111
  83.          Delay_1ms(100);
  84. }
  85. /********************************************************************
  86. * 名稱 :Moto_TurnLeft()
  87. * 功能 : 電機(jī)1后退,電機(jī)2前進(jìn),整車表現(xiàn)為左轉(zhuǎn)。
  88. * 輸入 : 無
  89. * 輸出 : 無
  90. ***********************************************************************/
  91. void Moto_TurnLeft()
  92. {         
  93.           P1= 0x6f;//0110 1111
  94.          Delay_1ms(100);
  95. }
  96. /********************************************************************
  97. * 名稱 :Moto_TurnRight()
  98. * 功能 : 電機(jī)1前進(jìn),電機(jī)2后退,整車表現(xiàn)為右轉(zhuǎn)。
  99. * 輸入 : 無
  100. * 輸出 : 無
  101. ***********************************************************************/
  102. void Moto_TurnRight()
  103. {         
  104.          P1= 0x9f;//1001 1111         
  105.          Delay_1ms(100);
  106. }
  107. /********************************************************************
  108. * 名稱 :Moto_Stop()
  109. * 功能 : 電機(jī)1停止,電機(jī)2停止,整車表現(xiàn)為停止。
  110. * 輸入 : 無
  111. * 輸出 : 無
  112. ***********************************************************************/
  113. void Moto_Stop()
  114. {                  
  115.           P1= 0x00;
  116.    Delay_1ms(100);
  117. }
  118. /********************************************************************
  119. * 名稱 :LightTurnOn()
  120. * 功能 : 打開車燈。
  121. * 輸入 : 無
  122. * 輸出 : 無
  123. ***********************************************************************/
  124. void LightTurnOn()
  125. {                             
  126.    Leftdeng=0;   
  127.    Righdeng=0;       
  128. }
  129. /********************************************************************
  130. * 名稱 :LightTurnOff()
  131. * 功能 : 關(guān)閉車燈。
  132. * 輸入 : 無
  133. * 輸出 : 無
  134. ***********************************************************************/
  135. void LightTurnOff()
  136. {                  
  137.   Leftdeng=1;   
  138.    Righdeng=1;       
  139. }
  140. /********************************************************************
  141. * 名稱 :main()
  142. * 功能 : 主函數(shù)
  143. * 輸入 : 無
  144. * 輸出 : 無
  145. ***********************************************************************/
  146. void main()
  147. {
  148.     Delay_1ms(100);
  149.         Com_Init();//串口初始化
  150.    
  151.   while(1)
  152.   {
  153.          switch(Buffer[0])
  154.            {
  155.              case 0:  Moto_Stop(); break;//停止
  156.                     case 1:  Moto_Forward(); break;//前進(jìn)
  157.                  case 2:  Moto_Backward();        break;//后退
  158.                  case 3:  Moto_TurnLeft();         break;//左轉(zhuǎn)
  159.                  case 4:  Moto_TurnRight();          break;//右轉(zhuǎn)
  160.                  case 8:  LightTurnOn();  break;//開大燈
  161.                  case 9:  LightTurnOff();  break;//關(guān)大燈
  162.                  default:break;         
  163.            }          
  164.   }
  165. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表