可以的。
蓝牙是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接。蓝牙使一些便携移动设备和计算机设备能够不需要电缆就能连接到互联网,并且可以无线接入互联网。
STC是在深圳的一家8051单片机设计生产公司。STC系列的单片机现在在中国的51单片机市场上占有较大比例。宏晶科技现已成长为全球最大的8051单片机设计公司,现提供专用MCU设计服务深圳宏晶科技有限公司是专业单片机供应商。
情况1, 蓝牙芯片是指TI公司的CC2540/2541(带有51内核)吗? 如果是的话,放在可以下载51单片机的电路上,不代表可以下载到蓝牙芯片当中。 虽然蓝牙芯片里边也带个51内核。
情况2,蓝牙芯片是个串口透传模块, 直接连接51单片机的串口。 此时,如果要给51单片机下载程序,要先把蓝牙模块拔掉,不然会有冲突的。
#include<reg52h>//声明头文件
#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
sbit deng=P2^0;//定义车灯的控制引脚
sbit z=P2^1;//定义左转向灯的控制引脚
sbit y=P2^2;//定义右转向灯的引脚
sbit BEEP=P2^3;//定义蜂鸣器的引脚
sbit zuo1=P0^0;//定义控制左边电机的单片机引脚
sbit zuo2=P0^1;//定义控制左边电机的单片机引脚
sbit you1=P0^2;//定义控制右边电机的单片机引脚
sbit you2=P0^3;//定义控制右边电机的单片机引脚
uchar a=0;//定义一个变量a,用来读取串口的数据
void delay(uint z)//一个带参数的延时程序
{
int i,j;//定义两个变量
for(i=10;i>0;i--)
for(j=z;j>0;j--);//将参数z赋值给j
}
void init()//初始化子程序
{
TMOD=0x20; //设置定时器T1为工作方式2
TH1=0xfd;
TL1=0xfd; //T1定时器装初值
TR1=1; //启动定时器T1
REN=1; //允许串口接收
SM0=0;
SM1=1; //设置串口工作方式1
EA=1; //开总中断
ES=1; //开串口中断
}
void go()//前进子程序
{
zuo1=0;
zuo2=1;//左边轮子正转
delay(25);//pwm有用值,越大左边方向的轮子越快
zuo1=1;//关闭左边轮子
you1=0;
you2=1; //右边轮子正转
delay(24);//pwm有用值,越大右边的轮子越快
you1=1;//关闭右边轮子
delay(100);//pwm无用值,越大,小车跑的越慢
z=1;
y=1;//关闭转向灯
}
void hui()//小车后退的子程序
{
zuo1=1;
zuo2=0;//左边轮子倒转
delay(25);//pwm有用值,越大左边方向的轮子越快
zuo2=1;//关闭左边轮子
you1=1;
you2=0; //右边轮子倒转
delay(24);//pwm有用值,越大右边的轮子越快
you2=1;//关闭右边轮子
delay(100);//pwm无用值,越大,小车跑的越慢
z=1;
y=1;//关闭转向灯
}
void turnleft()//小车左转弯子程序
{
zuo1=1;
zuo2=1;//左边轮子停止转动
you1=0;
you2=1; //右边轮子正转
delay(24);//pwm有用值,越大右边的轮子越快
you1=1;//右边轮子停止
delay(100);//pwm无用值,越大,小车跑的越慢
z=1;
y=1;//关闭转向灯
z=~z;//左转向灯打开
}
void turnright()//小车右转弯子程序
{
zuo1=0;
zuo2=1;//左边轮子正转
delay(25);//pwm有用值,越大左边方向的轮子越快
zuo1=1;//左边轮子停止
you1=1;
you2=1; //右边轮子停止
delay(100);//pwm无用值,越大,小车跑的越慢
z=1;
y=1;//关闭转向灯
y=~y;//右转向灯打开
}
void down()//停止子程序
{
zuo1=1;
zuo2=1;
you1=1;
you2=1; //左右轮全部停止
z=1;
y=1;//关闭转向灯
}
void onbeep()//蜂鸣器鸣响子程序
{
BEEP=0;
}
void offbeep()//蜂鸣器鸣响子程序
{
BEEP=1;
}
void main()//主程序
{
init();//调用初始化子程序
while(1)//死循环
{
switch(a)//判断a从串口读取到的数据
{
case 0x1f://如果是0x1f就前进
go();
break;
case 0x2f://如果是0x2f就后退
hui();
break;
case 0x3f://如果是0x3f就左转
turnleft();
break;
case 0x4f://如果是0x4f就右转
turnright();
break;
case 0x00://如果是0x00就停止
down();
break;
case 0xa0://如果是0xa0车灯打开
deng=0;
break;
case 0xb0://如果是0xb0车灯关闭
deng=1;
break;
case 0xc0://如果是0xc0蜂鸣器鸣响
onbeep();
break;
case 0xd0://如果是0xc0蜂鸣器鸣响
offbeep();
break;
}
}
}
void chuan() interrupt 4//串口中断服务程序
{
RI=0;//软件清除串口响应
a=SBUF;//读取单片机串口接受的蓝牙模块发送的数据
}
1\ 下载时需要断电,然后复电
2\ 直接用串口线连接PC的COM口,不要通过USB转232,排除usb/232故障
3\ USB转232安装驱动后一般不会在从COM1上,用设备管理器看一下实际的串口然后在下载程序中选择相应的串口,另外注意是否开发板跳线位置不对
4\ 换一片STC89c52试试,排除单片机损坏
这是一个 单片机 多机 通讯 控制 的仿真实例,可以下载附件 仿真试试,hc05蓝牙模块 可以通过 串口 与 单片机连接,仿真实例程序可以 直接使用 或者 修改。
hc05蓝牙模块 还可以 不用单片机 直接 控制LED灯,或者 作其他控制,模块本身就有一个 51单片机, 可以再次编程。
以上就是关于STC通过蓝牙更新固件全部的内容,包括:STC通过蓝牙更新固件、蓝牙芯片插在51单片机上,为什么不能下载程序、求蓝牙模块hc-05、stc89c52 小车c程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)