工具打开。包括各项 *** 作按钮,选择输入框和 串口数据发送窗口与数据接收窗口。
需要选择目标串口,所连接设备使用的波特率,一般都是19200或者115200,校验位、数据位、停止位一般选择默认即可,然后点击打开串口即可连接到串口。
如果目标设备发送和接收的信息为16进制,则要在下面两处位置十六进制显示和十六进制发送打勾,才能确保16进制数据的正常发送和接收。
如果需要测试设备的稳定性,需要持续不断的发送测试命令,则可以勾选自动发送,并在自动发送周期中设置发送间隔,如下图发送以100毫秒为间隔发送at命令。
如果需要发送文件给设备,则可以点击选择发送文件,在d出的选择框中选择对应的文件,然后再点击发送文件,完成发送。
这个问题,你提问过,还没有写出程序呀。对串口程序不熟悉呀。
程序很简单的,如下
#include <reg51h>
unsigned char t0n;//T0中断20次为1秒
main()
{
unsigned char second;
TMOD=0x21;
TH1 =0xFD;//晶振频率=110592,波特率=9600
TL1 =0xFD;
SCON=0x50;
TH0 =0x4B;//晶振频率=110592,定时50us
TL0 =0xFD;
EA =1;
ET0 =1;
TR0 =1;
TR1 =1;
while(1)
{
if(t0n>=20)//定时器T0中断20次,1秒到
{
t0n=0;
second++;
if((0x0f&second)==0)//变成10进制数发送
{second+=6;}//删掉这两行,按十六进制数发送
SBUF=second;//发送秒
while(TI==0);
TI=0;
}
}
}
void T0_int() interrupt 1
{
TH0 =0x4B;
TL0 =0xFD;
t0n++;
}
下图是串口调试助手接收的情况
1,单片机按十进制数形式发送时,接收数据如下,是按十六进制数显示,但没有十六进制数了
如果删掉注释的两行,接十六进制数发送,接收就是十六进制数了。其实,这只是显示形式,其实,单片机的发送还是以十六进制发送的。
高八位(DATA_H) 256 + 第八位(DATA_L) ----> 整型变量;把这个整型变量,分解成五个 char 变量:1、1、4、9、9。
再分别加上 0x30,发送,即可。你意思表达的不太清楚,你说的按照10进制显示指的是显示ascii字符吧,你发送ascii字符25,它的值就是32 35 ,你需要做一个ascii码到字符的转换程序。不过好像没有必要发送ascii字符吧。不能多发字节是什么意思?
一次发送2525?串口通讯时一个比特一个比特传的,你发送8位也是要串行发送8个比特,发25 25 就是串行发送16个比特!而且不论你什么10进制16进制,串口都是按照二进制传递。建议你看看串行通讯和计算机数字表示的基本知识。怎么让单片机发送给电脑十进制数?
——————————————————
通过串口进行发送,有UART设置,十进制数,就用这个来表示 '6',他实际上发送的是6的ASCII值。
发送的十进制数是不断变化的。
————————————————
只需要,把发送的ASCII值不断变化即可
例子:
void UARTInit(void) //定义串口初始化函数
{
SCON =0x50; //8位数据位,允许接收
T2CON=0x34; //由定时器2作为波特率发生器
RCAP2L=0xD9; //波特率为9600的低8位
RCAP2H=0xFF; //波特率为9600的高8位
}
/
函数名称:UARTSendByte
输 入:byte 要发送的字节
输 出:无
功 能:串口发送单个字节
/
void UARTSendByte(unsigned char byte)//定义串口发送数据函数
{
SBUF=byte; //缓冲区装载要发送的字节
while(TI==0); //等待发送完毕,TI标志位会置1
TI=0; //清零发送完成标志位
}
只要改变 byte的值,就能改变发送的字符是发到电脑上,用串口调试助手显示十进制数吗?串口助手并不能直接接收和显示十进制数的,串口调试助手接收显示的是字符,所以,单片机发送时,像数码管显示时取出千,百,十,个位一样,然后把每一位变成字符(加上48)发送,注意,要按千,百,十,个位的顺序发送。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)