|
- /***************************************************
- 单字节蓝牙控制小车程序 电机口是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;
- }
- }
- }
复制代码
|
|