單片機和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'