怎么用51单片机向串口调试助手发送字符串?有程序解释更好啊,求解~

作者&投稿:娄诚 (若有异议请与网页底部的电邮联系)
51单片机向串口调试助手发数据时数据错误~

波特率不一致造成的吧

uchar idata SystemBuf[10]; //用于接收
uchar Rx=0; //接收数据条数
uchar code AT[]="YES,IT IS";
void UART_init (void)
{
TMOD=0x20;//用定时器1
PCON=0x00; //波特率不加倍
SCON=0x50;//串行方式1
TH1=0xFD;//9600
TL1=0xFD;//
EA=1;//
ES=1;//
TR1=1;
}
void sendchar(uchar ch) //串口送一个字节
{
SBUF=ch;
while(TI==0);
TI=0;
}
void sendstring(uchar *p) //送字符串
{

while(*p)
{
sendchar(*p);
p++;
}
}
///////
void receive(void) interrupt 4 using 1 //中断
{

if(RI)
{

if(Rx<10) //这儿最多收10个字节
{
SystemBuf[Rx]=SBUF;
Rx++;
}

RI=0;
}
}
///
void main()
{
uchar i;
UART_init();
while(1)
{
if(SystemBuf=='S')
{
sendstring(AT);
for(i=0;i<10;i++) //接收清0
{
SystemBuf[i]=0;
}
Rx=0;
}
}
}
//////////如有小错误,自己调下,手打的,大小写可能不正常,这是标准程序,直接用,

ASCII码在单片机中也是用16进制来表示的,只是解码后显示的是字符,你要是随便发一个字符,串口调试助手选择字符显示接收就可以显示一个字符出来(可能我们不认识这个字符)。发送一个字符串就是不停的发送直到发送完毕,51单片机有自己的串行发送端口P3.0和P3.1端口,但是它是一个字节一个字节发送的,发送完一个字节会产生一个中断(也可以用判断TI的方式判断是否发送完),中断响应后再次启动发送SBUF=0Xxx,就会自动连续的发送,再加上判断就可以控制发送的字节数。
串口初始化:
void uart_init()
{
TMOD=0x20;//定时器1,模式2
SCON=0x50;//串口通讯方式1
TH1=0xfd;//波特率9600
TL1=0xfd;
button=0;
delay(1);
TI=0;//发送中断标志位清零
RI=0;//接收中断标志位清零
TR1=1;//启动定时器1
EA=1; //使能全局中断
ES=1; //启动串口中断
}
}
void main()
{ P1=0xff;
uart_init() ;
while(1)
{
}
// 串行中断程序
void commIntProc() interrupt 4
{
if(TI)
{
TI = 0;
if(sendPosi < sendCount) //判断是否发送完成
{
sendPosi++; //发送一次计数器加一
SBUF = sendBuf[sendPosi];//启动发送
}

哈哈,看这个程序
void puts_to_SerialPort(uchar *s)
{
while(*s != '\0')
{
putc_to_SerialPort(*s);
s++;
delay(5);
}
}

puts_to_SerialPort("kai shi shi jian...\r\n");


51单片机之间之间通信,用串口,中间要不要加限流电阻呢,影响有多大_百 ...
51单片机之间通讯,RXD--TXD可以直连,不要加限流电阻。

谁能编三个51单片机串行通信用MAX485连接,任意一个都可以作主机,写汇编...
主机、从机的关系,是由通信电路确定的。主机的输出,要同时传送到各个从机的输入端。用MAX487,可以实现单工传送。可以在每一个单片机都用一个拨动开关,确定本机是主机,还是从机,从而使单片机分别执行主机、从机的程序。

51单片机,如何用串口发送一个变量的值
四位数字组合成的值大于256,是一个双字节数值,所以需要发送两次程序如下:include<reg51.h>unsigned char x;main(){TMOD=0x20SCON=0x50;TH1=0xfd;TL1=0xfd;TR1=1;x=1234;SBUF=x\/256;while(TI==0);TI=0;SBUF=x%256;while(TI==0);TI=0;while(1);} ...

51单片机中断及串行口问题。设数据传送速率为100字符每秒,采用串行口方 ...
SCON = 0xD0;\/\/9位数据,可变波特率 AUXR &= 0xBF;\/\/定时器1时钟为Fosc\/12,即12T AUXR &= 0xFE;\/\/串口1选择定时器1为波特率发生器 TMOD &= 0x0F;\/\/清除定时器1模式位 TMOD |= 0x20;\/\/设定定时器1为8位自动重装方式 TL1 = 0xFD;\/\/设定定时初值 TH1 = 0xFD;\/\/设定定时器重装值 ...

51单片机用串行口扩展输入输出口的原理 跪求!!!
普通51单片机的串行口有 串口1,但有些有串口2,串口3等等。当串口接上外部的芯片例如,164,或595等芯片时,可以通过串口发送数据到这些芯片,164有8个输出端口,端口是收到串口输出数据的控制的。当多个164连接起来时,就有8*N个输出端口,都可以通过串口控制。这样就实现了串口扩展输出端口的。扩展...

要设置51系列单片机串口工作于所需工作方式,应是对哪个专用寄存器进行...
控制51单片机串行口的控制寄存器共有两个:特殊功能寄存器SCON和PCON。下面对这两个寄存器各个位的功能予以详细介绍。1.串行口控制寄存器SCON 串行口控制寄存器SCON的格式如表4.4:SM0、SM1:串行口4种工作方式的选择位。SM2:允许方式2和3的多机通讯控制位。在方式2或3中,如果SM2置为l,则接收到的...

简单51单片机串口程序
试试下列程序,这时用中断发送的。include<reg51.h> define uchar unsigned char uchar txt[] = "hello";uchar i = 0;void main(void){ PCON = 0X00;SCON = 0X50;TMOD = 0X20;TH1 = 0XFD;TL1 = 0XFD;TR1 = 1;EA = 1;ES = 1;TI = 1;while(1) { if(i == 6) { i...

求用51单片机串口方式0接两个74LS164显示数码管,0-99动态显示(用C语言...
\/\/***\/\/\/ 74HC164串口显示实验 proteu仿真 \/\/\/ PBG 2012-6-11 \/\/\/***\/\/#include <reg52.h>#define uint unsigned int#define uchar unsigned charuchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90};sbit k1=P3^6;\/\/加键定义sbit ...

用51单片机每间隔一秒通过串口将一组数字发送到计算机,
include<reg51.h>#define uchar unsigned charuchar cnt,num=0;uchar senddat[]="test dat";void t0isr() interrupt 1{TH0=(65536-50000)\/256;TL0=(65536-50000)%256;cnt++;if(cnt>=20) { cnt=0; num=0; while(senddat[num]!=NULL) { SBUF=senddat[num]; whi...

求51单片机大神帮忙!!我想用串行口工作在工作方式0,使8个发光二极管逐 ...
include <reg51.h> include<intrins.h> define uchar unsigned char define uint unsigned int void delayms(uint xms);uchar a;void main(){ a=0x7f;while(1){ P1=a;delayms(1000);a=_cror_(a,1);} } void delayms(uint xms){ uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j...

蒙阴县15646432384: 怎么用51单片机向串口调试助手发送字符串?有程序解释更好啊,求解~ -
城萱能全: ASCII码在单片机中也是用16进制来表示的,只是解码后显示的是字符,你要是随便发一个字符,串口调试助手选择字符显示接收就可以显示一个字符出来(可能我们不认识这个字符).发送一个字符串就是不停的发送直到发送完毕,51单片机...

蒙阴县15646432384: 谁能给我发一个51单片机向串口调试助手发送信息的简答程序? -
城萱能全: #include/* 学习内容:应用串口发送接收数据 程序效果:程序实现把接收到的数据发送回去,波速率为2400.用串口调试器可观察到数据.注意:串口调试软件要设置为十六进制.单片机晶振12M 晶振不一样修改波特率*/ unsigned char b; void ...

蒙阴县15646432384: 怎么把数字传感器的数据传送给串口助手? 用51单片机 -
城萱能全: 首先,用单片机读取数字传感器数据,然后单片机通过串口将数据发送,PC端要有TTL电平的串口(不是RS232),将单片机的串口TXD、RXD及GND与PC端串口的RXD、TXD、GND连接,PC端串口助手和单片机的串口协议要一致,就可以把数字传感器的数据传送给串口助手.

蒙阴县15646432384: 我想知道proteus仿真的51单片机怎样发送数据到串口助手 很急的 能解答吗
城萱能全: 要用PROTEUS中的一个元件:COMPIM,还要安装一个虚拟终端(这个上网找吧),在程序,COMPIM,虚拟终端,串口助手的通信参数都要一致,如果程序与接线正确,就可以通信了.

蒙阴县15646432384: 单片机中如何将DS18b20 测得的温度通过串口发送到电脑的串口调试助手上呢 -
城萱能全: 还记得ASCII码吗? 你的一位十进制数据+0x30,不就变成字符的数字了吗 例如:TN是十进制温度fasong[0]=TN/10 + 0x30;fasong[1]=TN%10 + 0x30;DS18B20采集到的数据你可以在单片机中处理成16进制或字符后发送到上位机,也可以直接发到上位机 由电脑处理数据后显示,当然VB上位机对字符的处理能力强些可以追问,望采纳! ^-^

蒙阴县15646432384: 用单片机串口向电脑串口调试助手发送一个字符串,用C语言编程 -
城萱能全: uchar idata SystemBuf[10]; //用于接收 uchar Rx=0; //接收数据条数 uchar code AT[]="YES,IT IS"; void UART_init (void) { TMOD=0x20; //用定时器1 PCON=0x00; //波特率不加倍 SCON=0x50; //串行方式1 TH1=0xFD; //9600 TL1=0xFD; // ...

蒙阴县15646432384: 串口调试助手怎么用?用来做单片机与pc串口通讯时,用来发一个数据帧的时候用不用把起始位和校验位都一起 -
城萱能全: 配置串口、打开串口,成功后就会收到对端发来的数据;在发送文本框输入就可以发送了(一般可以选字符和HEX十六进制串两种)校验位不需要写入,配置是就设置了,驱动会写.配置例子:9600,N,8,1.呵呵.

蒙阴县15646432384: 用串口调试助手向单片机发送数据 -
城萱能全: 串口调试助手一般有两种数据模式,一种是字符,一种是十六进制数 0x31 是1的ASCII 码,你把串口调试助手的发送数据类型改成十六进制就可以了.

蒙阴县15646432384: 51单片机 ,串口要想从电脑接收到一个字符'1' 用串口调试助手要发送个什么,急急急!!!急急急!! -
城萱能全: 取消16进制勾选,发送1就行了

蒙阴县15646432384: 单片机串口怎么操作 -
城萱能全: 设置下串口中断 然后将要传的数据装如sbuf就差不多了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网