单片机和PC通讯,通过RS232串口是最简单的方式。
要实现你的想法,首先在PC端有个应用程序,可以通过串口向单片机发出字符,比如“串口调试助手”。然后将单片机与PC通过RS232连接。
然后,在单片机这边,你自己去了解下单片机RS232编程,很简单的,设定好RS232中断,当单片机的RS232接口接收到PC端发送过来的字符时,单片机便会产生一个中断,然后你编程响应这个中断,回发一个字符就行了。
如果是一个个的字符,也不用担心,单片机有RS232缓存区的,你要做的就是不断的读取缓存区的数据,不必去关心数据是如何发送和接受的。
⑵ C语言单片机怎字符串比较
你好!!
发现三个问题,都在if 语句内!
1、第一个 / 应该是 &&
2、字符应该用单引号不是双引号
3、最后一渣山差个字符是RXDdata[3]
修改后的代码是:
if((RXDdata[0]=='G'唯桥)&&(RXDdata[1]=='N')&&(RXDdata[2]=='R')&&(RXDdata[3]=='I'))
代码没有经过实际如皮编译,有问题再问
⑶ 单片机c语言如何判断一个字符串的指定位置是不是指定字符
判断第字符串的第三个字中锋如符基蔽是否为卖启'A'
char szData[5];
strcpy(szData,"BCADE",5);
if ( szData[2] == 'A' )
⑷ c语言单片机里面怎么替换字符串
可以用sscanf和sprintf配合使用。
首先 定义一个字符串 缓存发信机器哪液咐编号。
char no[3];
sscanf(str_get, "set %s ", no);
执行这李纯句之后 no中就是"02"
然埋掘后
char str_rec_buf[20];
这个用来生成命令
sprintf(str_rec_buf, "rec %s %d", no, str_len);
这样str_rec_buf就是你需要的了。
不过 str_len不是你说的3,而是strlen(str_get) = 9
如果要计算678的长度,那么同样需要把这个取出来。
⑸ 51单片机C语言-串口输入字符串并响应
给你个思路吧,不带通讯协议,不带中断的,你自己往上填
#include "regx52.h"
#define 0x1 OPEN_LED
#define 0x2 CLOSE_LED
main()
{
TH1=0x;//设置波特率
//设置串口通讯方式,8位接收,1停止位
//启动T1
while(1)
{
if(RI)//如果接收到字符
{
switch(SBUF)
{
case OPEN_LED:P4_6=1;break;//如果接收到开灯命令,灯亮
case CLOSE+LED:P4_6=0;break;
default:;
}
RI=0;
}
}
}
⑹ 请教单片机C语言字符串如何合并问题
字符串的比较需要一拦盯派个个字符比较,不能用直接==判断。
如果支持strcmp函数的,可以直接用这个函数
如果不则携支持的,可以自己写
char
*ls
=
"mnjhg00000";
//
比较用的字串
char
*a
=
lk,
*b
=
ls;
bool
bSame
=
TRUE;
while
(*b!='\0'简贺)
{
if
(*a++
!=
*b++)
{
bSame
=
FALSE;
break;
}
}
⑺ 单片机 C语言 字符串处理问题
在串口助手里显示的是ASCII码肢孝,所以,发送变量时,要把变量变成ASCII码发送。
还有,那个变量最大值是多少,是按十进制数发送,还是按十六进制发送。
超过100后,发十进制数就要发三位,而发十六进制数,就始终发两位了。
假如按十六进制数两位,先把字符串发到"t1.txt=\"
“,你这里最好别发那一对引号,太乱镇逗。
然后发变量,高4位=变量/16+0x30,发这个变换后的ASCII码,
低4位=变量%16+0x30,再发个变换后的ASCII码。
最后发那个引号,如果御饥卖不发那一对引号就结束了,为什么要发一对引号呢,有什么用吗?
⑻ 51单片机 C语言怎么拆分无分隔符的字符串
这个直接转就可以了
nian=(buf[0-'0')]*10+buf[1]-'0';其他的类似
⑼ 单片机C语言字符串对比问题
C语言字符串对比可以调用标准库函数strcmp。
该函数声明在string.h中,形卖脊式为
int strcmp(char *a, char *b);
返回值有三种情况,1,0或-1.
其比较原则为:陵仔
1 从第一个字符开始按照ascii码值比较,如果a的比b的大,返回1;如果a的比b的小,返回-1;如果相等,继续比较下尺配汪一个字符。
2 当遇到任意一个字符串达到尾部(值为\0),退出比较过程。
3 如果长度相等,即二者均达到\0,返回0,此时表示二者相等。
4 如果a的长度大,返回1,否则返回-1。
⑽ 51单片机中C语言int能转换为字符串类型吗怎么转换
因为是C51, 所以不能用 VC++里面的C语言代码 eg: itoa, 也不要用打印的 eg: sprintf
为什么? 因为C51的内存太小 ,如果这样用非常占用资源. 下面的朋友回答就显得不够专业了.
所以, 一般我们是这样自己写代码使用实现的: 字符串改为数组的形式
unsigned char dat[5];
dat[4]=Num/10000+'0';
dat[3]=Num%10000/1000+'0';
dat[2]=Num%1000/100+'0';
dat[1]=Num%100/10+'0';
dat[0]=Num%10+'0'