A. 用单片机串口向电脑串口调试助手发送一个字符串,用C语言编程
#include<reg52.h>
unsigned
char
flag,a;
void
main()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
/*
if(RI==1)
{
RI=0;
P1=SBUF;
}*/
if(flag==1)
{
ES=0;
flag=0;
SBUF='1';//28;
while(!TI);
TI=0;
SBUF='2';//28;
while(!TI);
TI=0;
SBUF='3';//28;
while(!TI);
TI=0;
ES=1;
}
}
}
void
ser()
interrupt
4
{
RI=0;
//
P1=SBUF;
a=SBUF;
flag=1;
}
把字符换一下就行了
B. 请问51单片机怎么通过串口接收字符串能解释一下代码吗谢谢了
看流程是什么了,如果等待14个字节接收完,那就是for循环,或者while等待。如果只是接收的话,就中断,然后去读数组,超过14个字节就处理。
C. C51单片机发送字符串程序怎么写
1、打开C51程序书写软件,新建工程,在弹出的对话框编辑工程名并保存到要保存的地方。
D. 单片机串口发送字符串问题
这是 多个单片机 通讯控制 的仿真实例,可以仿真试试,可以参考一下。
E. 如何将字符串写入单片机串口
属于单片机串口通讯,如PC串口助手与单片机串口通讯,可以串口助手发送字符串单片机接收,或者单片机发送字符串串口助手接收,需要串口助手与单片机串口的波特率要一致。
F. 单片机串口通信,首先电脑给单片机发送一个字符串hello,单片机收到后,led全亮,然后,
//11.0592MHz 9600波特率
#include <reg51.h>
#define LED P0//定义IO口
unsigned char buff[5];//定义字符缓冲区
void InitUART(void)//初始化串口
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void SendOneByte(unsigned char c)//串口发送一个字节
{
SBUF = c;
while(!TI);
TI = 0;
}
void main(void)//主函数
{
InitUART();
while(1);
}
unsigned char strcmp(unsigned char *str1,unsigned char str2,unsigned int len)//比较字符串
{
if(*str1++!=*str2++)
return 0;
return 1;
}
void UARTInterrupt(void) interrupt 4//串口中断处理函数
{
static unsigned char cont;//定义一个静态变量
if(RI)
{
RI = 0;
if(cont<5)//字符数未满
{
buff[cont++]=SBUF;//储存一个字节
}
else
{
if(strcmp(buff,"hello",5))//比较字符串 如果收到的为'hello'长度5个字节
{
LED=0;//低电平驱动LED
SendOneByte('O');//发送OK
SendOneByte('K');
}
cont=0;
}
}
else
TI = 0;
}
G. 简单的一个单片机串口发送字符串程序
建议 去 我的领地 5d6d 的 proteus 论坛看看
那里有很多 单片机仿真实例,包括仿真图 和 源码
搜 5d6d 和 proteus 2个关键词
H. 怎么用51单片机向串口调试助手发送字符串有程序解释更好啊,求解~
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];//启动发送
}
I. 80C51单片机串口通信工作方式1怎样发送字符串
1)数据发送与接收使用方式0实现数据的移位输入输出时,实际上是把串行口变成并行口使用。串行口作为并行输出口使用时,要和CD4049或74LS164配合使用,其电路连接如图10。图(b)为74LS164的引脚图,芯片各引脚功能如下:Q0~Q7为并行输出引脚。DSA、DSB为 串行输入引脚。
清零引脚,低电平时,使74LS164输出清零。CP为时钟脉冲输入引脚,在CP脉冲的上升沿作用下实现移位。在CP=0,
=1时,74LS164保持原来数据状态不变。
利用串行口与74LS164实现八位串入并行输出的连接如图(a)所示,当8位数据全部移出后,SCON寄存器的TI位被自动置1。用P1.0输出低电平可将164输出清零。
如果把能实现“并入串出”功能的CD4014或74LS165与串行口配合使用,就可以把串行口变为并行输入口使用。如图所示。
图(b)为74LS165引脚图,当
=1时,允许串行移位,
=0时允许并行输入。当CPINH=1时,从CP引脚输入的每一个正脉冲使QH输出移位一次。REN=0,