A. 51单片机与PC串口通信程序,求指导 ! 具体要求如下:
功能如下:
1、程序烧进去,串口接收显示一个菜单!《如图》A、B、……分别代表一定的功能
例如:A项,代表修改ds1302的时间的数组
2、按照菜单的提示,如:发送A就进入了修改ds1302的时间函数,串口接收界面显
示 A,像图片那种,并显示修改ds1302的操作方法,如从串口发送界面发送
0162115347就表示10年10月16日21时15分34秒星期7,
3、正如第二所说,马上输入1010162115347,就成功的修改了ds1302相关数据,
并返回change success!到串口界面!
4、设置一个功能就是返回主菜单界面。然后又可以就行第二、三步的操作!
5、通过串口,读取单片机里面相关的数据,如时钟的数据
6、说明:可以不要ds1320相关的程序,可以用发光二极管亮来代表修改功能!
B. C51单片机发送字符串程序怎么写
1、打开C51程序书写软件,新建工程,在弹出的对话框编辑工程名并保存到要保存的地方。
C. 用单片机串口向电脑串口调试助手发送一个字符串,用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; //
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;
}
}
}
//////////如有小错误,自己调下,手打的,大小写可能不正常,这是标准程序,直接用,
D. 关于单片机向PC发送字符串问题
我想问的问题是(集中在串口中断那里)
1)当发送的时候,单片机不是一次发送一帧字符么,为什么还要用 i 变量逐个去发送?
--你认为什么是一帧字符?
--并不是所有的全部字符。
--每次中断,仅仅发送一个字符。
2)另外,当Tcv =‘W',判断if后, SBUF='W’,i=1,那么是不是不断执行if语句?
--这一句,就是判断一次。执行完了,就结束了本函数。
E. 单片机如何向pc发送数据
给你一个例程,供参考:
//实例:单片机向PC发送数据
#include<stc12c5a60s2.h>
//包含单片机寄存器的头文件
unsigned
char
code
String[
]={"welcome
to
china!\r\n"};
/**************************************************************
函数功能:延时若干毫秒
**************************************************************/
void
delayms(unsigned
int
ms)
{
unsigned
int
i;
while(ms--)
for(i=0;i<600;i++);
}
/*****************************************************
函数功能:向PC发送一个字节数据
***************************************************/
void
SendByte(unsigned
char
dat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
/*****************************************************
函数功能:向PC发字符串
***************************************************/
void
SendStr(unsigned
char
*str)
//第2种发送字符串函数
{
while(*str!='\0')
{
SendByte(*str);
str++;
delayms(150);
//延时150ms
}
}
/*****************************************************
函数功能:串口初始化
***************************************************/
void
UartInit(void)
{
TMOD=0x20;
//TMOD=0010
0000B,定时器T1工作于方式2(波特率发生器)
SCON=0x40;
//SCON=0100
0000B,串口工作方式1(18N1)
PCON=0x00;
//PCON=0000
0000B,SMOD=0,波特率不加倍
TH1=0xfd;
//波特率9600
TL1=0xfd;
//波特率9600
TR1=1;
//启动定时器T1
}
/*****************************************************
函数功能:主函数
***************************************************/
void
main(void)
{
UartInit();
while(1)
{
SendStr("How
are
you!\r\n");
SendStr(String);
//发送数据
delayms(150);
//150ms发送一次数据
}
}
F. C51单片机如何从PC机串口接收字符串
1、单片机串口不管从哪
接收数据
都是遵循串口协议的。字符串就是一个挨一个的ASKII码,中间没有加任何东西。2、不发字符串结束标志。3、回车符可以发送,但具体发不发送看你程序了。
G. 单片机从PC端接受字符
PC端发送数据的时候,每次发送一个字符串即可。
单片机就可以接收到这个字符串。