|
|
- /***************************************************
- 單字節藍牙控制小車程序 電機口是P0
- 通過上位機的1,2,3,4,5,6,7,8,9控制單片機
- 單片機:STC12C5608AD
- 晶振:11.0592M
- 作者:蘇義江
- 時間:2015-8-10
- ***********************************************/
- #include<reg52.h>
- #include<math.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar Buffer[4] = {0}; //從串口接收的數據
- uint i,j;
- sbit Leftdeng=P1^2;//左大燈
- sbit Righdeng=P1^3;//右大燈
- /********************************************************************
- * 名稱 : Delay_1ms()
- * 功能 : 延時子程序,延時時間為 1ms * x
- * 輸入 : x (延時一毫秒的個數)
- * 輸出 : 無
- ***********************************************************************/
- void Delay_1ms(uint i)//1ms延時
- {
- uchar x,j;
- for(j=0;j<i;j++)
- for(x=0;x<=148;x++);
- }
- /********************************************************************
- * 名稱 : Com_Int()
- * 功能 : 串口中斷子函數
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void Com_Int(void) interrupt 4
- {
-
- EA = 0;
- if(RI == 1) //當硬件接收到一個數據時,RI會置位
- {
- Buffer[0] = SBUF - 48; //這里減去48是因為從電腦中發送過來的數據是ASCII碼。
- RI = 0;
- }
- EA = 1;
- }
- /********************************************************************
- * 名稱 : Com_Init()
- * 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中斷
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void Com_Init(void)
- {
- TMOD = 0x20;
- PCON = 0x00;
- SCON = 0x50;
- TH1 = 0xFd; //設置波特率 9600
- TL1 = 0xFd;
- TR1 = 1; //啟動定時器1
- ES = 1; //開串口中斷
- EA = 1; //開總中斷
- }
- /********************************************************************
- * 名稱 :Moto_Forward()
- * 功能 : 電機1、2啟動,都是前進,整車表現為前進。
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void Moto_Forward()
- {
- P1= 0xaf;//1010 1111
- Delay_1ms(100);
- }
- /********************************************************************
- * 名稱 :Moto_Backward()
- * 功能 : 電機1、2啟動,都是后退,整車表現為后退。
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void Moto_Backward()
- {
- P1= 0x5f;//0101 1111
- Delay_1ms(100);
- }
- /********************************************************************
- * 名稱 :Moto_TurnLeft()
- * 功能 : 電機1后退,電機2前進,整車表現為左轉。
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void Moto_TurnLeft()
- {
- P1= 0x6f;//0110 1111
- Delay_1ms(100);
- }
- /********************************************************************
- * 名稱 :Moto_TurnRight()
- * 功能 : 電機1前進,電機2后退,整車表現為右轉。
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void Moto_TurnRight()
- {
- P1= 0x9f;//1001 1111
- Delay_1ms(100);
- }
- /********************************************************************
- * 名稱 :Moto_Stop()
- * 功能 : 電機1停止,電機2停止,整車表現為停止。
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void Moto_Stop()
- {
- P1= 0x00;
- Delay_1ms(100);
- }
- /********************************************************************
- * 名稱 :LightTurnOn()
- * 功能 : 打開車燈。
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void LightTurnOn()
- {
- Leftdeng=0;
- Righdeng=0;
- }
- /********************************************************************
- * 名稱 :LightTurnOff()
- * 功能 : 關閉車燈。
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void LightTurnOff()
- {
- Leftdeng=1;
- Righdeng=1;
- }
- /********************************************************************
- * 名稱 :main()
- * 功能 : 主函數
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void main()
- {
- Delay_1ms(100);
- Com_Init();//串口初始化
-
- while(1)
- {
- switch(Buffer[0])
- {
- case 0: Moto_Stop(); break;//停止
- case 1: Moto_Forward(); break;//前進
- case 2: Moto_Backward(); break;//后退
- case 3: Moto_TurnLeft(); break;//左轉
- case 4: Moto_TurnRight(); break;//右轉
- case 8: LightTurnOn(); break;//開大燈
- case 9: LightTurnOff(); break;//關大燈
- default:break;
- }
- }
- }
復制代碼
|
|