用STC89C52连接Phyphox(串口)
用STC89C52连接Phyphox(串口)
实现STC89C52连接Phyphox,第一步要做的是让STC89C52RC的串口通信,能够把数字和字符发送给串口,然后蓝牙从串口接收了数据就可以送给Phyphox了。51单片机串口通信的教程在网络上非常多,简便办法当然是使用现成的代码,这就是51方面的巨大资源积累,到处都找得到想用的东西——后面要把这个代码改成传感器测量的数据。这里用的是“51单片机使用HC-05蓝牙模块向Android手机发送数据程序编写”教程,地址
https://blog.csdn.net/qq_41570228/article/details/80228699
这篇文章介绍的很整齐。所以基本按照原文做就行了。串口初始化:
void UartConfigurationInit()
{
TMOD=0x20; //设置定时器1工作方式为方式2
TH1=0xfd; //波特率9600
TL1=0xfd;
TR1=1; //启动定时器1
SM0=0;SM1=1; //串口方式1
REN=1; //允许接收
PCON=0x00; //关倍频
ES=1; //开串口中断
EA=1; //开总中断
}
定义发送单个字符的函数:
void PostChar(uchar character)
{
SBUF=character; //发送单个字符
while(!TI);TI=0; //发送完成标志
}
从字符数组的首地址向后移位,每次发出一个字符,发到指针为空时,表明发完了。
void PostString(uchar *p)
{
while(*p) //若指针指向的地址为空,则跳出循环
{
PostChar(*p); //指针第一次默认指向首地址
delay(20); //延时,作用为提高发送准确度
p++;
}
}
十进制数发送函数等,不述。这里只是测试,不必发送十进制数,实际按字符发送所有字符串之后,到Phyphox一端字符串是自动能把String转成数值的。
打开Keil把代码复制了,然后编译为.hex文件。备用。
打开Proteus,按下表物料搭建最小系统:
在P3.0、P3.1引脚接入虚拟终端,同时把虚拟终端的波特率设为9600.把Keil生成的.hex文件指定给AT89C52,注意一定一定一定要把Clock Frequecy设为11.0592MHz,运行仿真,虚拟终端正常得到了串口发出的数据。最前面篇首图即是。