|
第三次发帖了,这次笔者发的是在大二阶段笔者在电子技术社团担任干部期间和社团干部成员一起给大一新生准备一个项目教学计划。该项目以STC51单片机系统为平台,意在让大一新生掌握项目化编程的方法,所以我们只是提供了驱动代码,新生在初步了解后可以尝试做出第一个作品,蓝牙和壁障小车。
话不多说,附上一些代码。
*******************************************************************************/
#include "bluetooth.h"
u8 tmp;//开辟一个变量存储蓝牙串口读取的数据
/*******************************************************************************
* 函 数 名: baudrateinit
* 函数功能: 初始化波特率值为9600,蓝牙模块做好与手机app的连接准备
* 输 入: 无
* 输 出: 无
* 使用说明: 这个函数是编写蓝牙小车程序的第一步配置,须在主函数开头就调用。
* 示 例: baudrateinit();
*******************************************************************************/
void baudrateinit()
{
ES=0; //中断允许位置0
SCON = 0x50; // REN=1允许串行接受状态,串口工作模式1,
TMOD = TMOD|0x20; //定时器1工作于方式2,8位自动重载模式,用于产生波特率
TH1=TL1=0xFD; //波特率9600 (本次测试采用晶振为11.0592)
PCON &= 0x7f; //波特率不倍增
TR1 = 1; //定时器1开始工作,产生波特率
TI=0; //发送标志位置0
RI=0; //接收标志位置0
ES=1; //中断允许
}
/*******************************************************************************
* 函 数 名: readData
* 函数功能: 读串口数据函数
* 输 入: 无
* 输 出: 输出返回值tmp
*******************************************************************************/
u8 readData()
{
if(RI==1) //接收到蓝牙发送信息的标志
{
tmp = SBUF; //将寄存器中的数据存储在tmp变量中
RI = 0; //将标志清零
}
return tmp; //返回一个变量值
}
/*******************************************************************************
* 函 数 名: carState
* 函数功能: 小车的马达控制函数
* 输 入: speed=速度,可输入high、middle、low三个值
motor=小车模式,可输入car_Forward、car_Back、car_Left、
car_Right、car_Stop、car_Brake六个值
* 输 出: P1引脚
* 示 例: 小车工作在高速前进状态: carState(car_Forward , high)
*******************************************************************************/
void carState(u8 motor , u16 speed)
{
motor_IO = motor ; //调P1引脚输出的占空比
delay(speed); //motor、speed、motor_IO在头文件中宏定义了
motor_IO = car_Stop;
delay(500-speed);
}
/*******************************************************************************
* 函 数 名: delay
* 函数功能: 小车的延时函数,无须调用
* 输 入: i
* 输 出: 无
*******************************************************************************/
void delay(u16 i)
{
while(i--); //空语句
}
代码已经打包,还有当时项目教学计划的说明书和资料文档。
|
评分
-
查看全部评分
|