51单片机用串口跟pc通信进行收发数据 51单片机与PC串口通信程序,求指导 ! 具体要求如下:

51\u5355\u7247\u673a\u4e32\u53e3\u901a\u4fe1\u95ee\u9898\uff0c\u4e32\u53e3\u53ea\u7ed9pc\u53d1\u9001\u4e00\u6b21\u6570\u636e

\u4f60\u8fd9\u91cc\u7684\u96be\u70b9\u5728\u4e8e"\u53ea\u53d1\u9001\u4e00\u6b21"\uff0c\u53ef\u4ee5\u5b9a\u4e49\u4e00\u4e2a\u6807\u5fd7\u53d8\u91cf\u521d\u59cb\u4e3a0\uff0c\u5f53P1.1=0\u65f6\u4e14\u6807\u5fd7\u4e3a0\uff0c\u5411\u4e32\u53e3\u53d1\u9001\u4e00\u4e2a\u6570\u636e\uff0c\u5e76\u7f6e\u8be5\u6807\u5fd7\u4e3a1\uff0c\u5373\u4f7fP1.1\u4f9d\u7136\u4e3a0\u4e5f\u4e0d\u4f1a\u4e00\u76f4\u53d1\u9001;\u5f53\u68c0\u6d4b\u5230P1.1=1\u65f6\uff0c\u7f6e\u6807\u5fd7\u4e3a0\uff0c\u4ee5\u4fbf\u4e0b\u6b21\u518d\u89e6\u53d1\u3002\u5176\u4ed6\u4f9d\u6b64\u7c7b\u63a8\u3002

\u8981\u6c42\u7528\u4ec0\u4e48\u8bed\u8a00\uff1f
------------------------------
\u7f51\u53cb\u201c\u661f\u5fc3\u6668\u68a6\u201d\u7684\u56de\u7b54\uff0c\u662f\u53ef\u4ee5\u6ee1\u8db3\u9898\u76ee\u8981\u6c42\u7684\u3002
\u6211\u5b9e\u9a8c\u4e86\uff0c\u662f\u6210\u529f\u7684\uff0c\u6ca1\u6709\u4efb\u4f55\u9519\u8bef\u3002
\u697c\u4e3b\u5e94\u8be5\u68c0\u67e5\u81ea\u5df1\u7684\u7535\u8def\u3001\u4e32\u53e3\u8bbe\u7f6e\u7b49\u7b49\u3002
------------------------------
\u7f51\u53cb\u201c\u661f\u5fc3\u6668\u68a6\u201d\u7684\u56de\u7b54\uff0c\u7bc7\u5e45\u7a0d\u7a0d\u957f\u4e86\u4e00\u4e9b\u3002
\u7f29\u51cf\u4e00\u534a\u5c31\u53ef\u4ee5\u6b63\u5e38\u5de5\u4f5c\u4e86\uff0c\u53ef\u8bfb\u6027\u66f4\u597d\u4e00\u4e9b\u3002
\u5efa\u8bae\u770b\u770b\u4e0b\u9762\u7684\u3002
------------------------------
#include
#include
#define uchar unsigned char
#define uint unsigned int
//---------------------------------------------------
uchar idata trdata1[] = {
'W','E','L','C','O','M','E',' ','T','O',' ','C','H','I','N','A','!',0x0d,0x0a,0x00};
uchar idata trdata2[] = {
'M','Y',' ','N','A','M','E',' ','I','S',' ','L','I','M','I','N','G',0x0d,0x0a,0x00};
uchar idata trdata3[] = {
'Y','I','N','G','Y','O','N','G','K','E','X','U','E','X','U','E','Y','U','A','N',0x0d,0x0a,0x00};
uchar RxBuf[5], Rx_p, Rx_i, TX_p, Tx_i;
//---------------------------------------------------
void UART_Init(void) //\u4e32\u53e3\u521d\u59cb\u5316
{
PCON = 0x00;
SCON = 0x50; //\u4e32\u53e3\u5de5\u4f5c\u65b9\u5f0f\u4e3a1\uff0c\u5141\u8bb8\u63a5\u6536.
TMOD = 0x20; // T1 \u5b9a\u65f6\u65b9\u5f0f2
TH1 = 0xfd; //\u6ce2\u7279\u7387 9600bps @ fosc = 11.0592MHz
TL1 = 0xfd;
TR1 = 1; //\u542f\u52a8T1
ES = 1; //\u5f00\u4e32\u53e3\u4e2d\u65ad.
EA = 1; //\u5f00\u603b\u4e2d\u65ad.
}
//---------------------------------------------------
void main()
{
UART_Init();
Rx_p = 0;
Rx_p = 2;
while(1) {
if (Rx_p != 0) {
TX_p = Rx_p;//\u5b57\u7b26\u4e321 2 3
Tx_i = 0; //\u5b57\u7b26\u6307\u9488.
Rx_p = 0; //\u6e05\u96f6.
Rx_i = 0;
TI = 1; //\u542f\u52a8\u53d1\u9001\u4e2d\u65ad.
} }
}
//---------------------------------------------------
void Uart_INT(void) interrupt 4 //\u4e32\u53e3\u4e2d\u65ad\u51fd\u6570
{
uchar Tcv = 0;
if(RI) { //\u63a5\u6536\uff1f.
RI = 0; //\u6807\u5fd7\u4f4d\u6e05\u96f6.
RxBuf[Rx_i] = SBUF;
if((RxBuf[Rx_i - 1] == 'g') && (RxBuf[Rx_i] == 'o')) Rx_p = 1;
if((RxBuf[Rx_i - 2] == 'w') && (RxBuf[Rx_i - 1] == 'h') && (RxBuf[Rx_i] == 'o')) Rx_p = 2;
if((RxBuf[Rx_i - 3] == 'h') && (RxBuf[Rx_i - 2] == 'o') && (RxBuf[Rx_i - 1] == 'm') && (RxBuf[Rx_i] == 'e')) Rx_p = 3;
P1 = Rx_p; //\u5728P1\u663e\u793a\u6536\u5230\u7684\u4fe1\u606f.
Rx_i++;
Rx_i %= 5;
}
else {
TI = 0;
if (TX_p == 1) Tcv = trdata1[Tx_i]; //\u53d6\u6765\u5f85\u53d1\u5b57\u7b26.
if (TX_p == 2) Tcv = trdata2[Tx_i];
if (TX_p == 3) Tcv = trdata3[Tx_i];
if (Tcv != 0) {SBUF = Tcv; Tx_i++;} //\u4e0d\u662f0\u5c31\u53d1\u9001.
}
}
//---------------------------------------------------

//代码来自 单片机小精灵v1.3

//波特率9600  11.0592晶振  方式2
#include <reg51.h>
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();
}
void UARTInterrupt(void) interrupt 4
{
    if(RI)
    {
        RI = 0;
        //add your code here!
    }
    else
        TI = 0;
}


程序中是19200.
通讯不上有很多原因,你的电路不对、甚至是连线不对,也会导致通讯不上.
你可以试试跟踪你的程序,看看可否正确地接收到PC发过去的数据,先把接收程序调好,然后再调发送部分,这样才有目标.

楼主试试只发送一个字符,1或者2,不要12一起发送。如果硬件,连线没有问题应该是发送什么PC就接收到什么。

我提下问题,你看下是不是:
1、com口对不对
2、波特率在烧录程序的时候有的,你看下是否相同

  • 51鍗曠墖鏈轰笌PC鏈虹殑涓插彛閫氳璁捐鐨勪竴涓棶棰
    绛旓細1銆鐢ㄤ覆鍙璋冭瘯鍔╂墜 2銆佺敤PC鏈洪氳繃涓插彛鎺у埗8952璁╃鍙d笂鐨凩ED浜伃寰堢畝鍗曪紝濡傚彧闇鍙戦0XFE鍐呭锛屽啀璁㏄0=SUBF灏卞彲璁㏄0鍙d笂鐨勪竴涓狶ED鐏3銆佽嫢瑕佸疄鐜板弻宸ユ柟寮忥紝璁剧疆SCON=0X50锛屼篃灏辨槸璁㏑EN=1鍗冲彲锛4銆佽嫢瑕佹湁璇煶鎻愮ず锛屽湪涓荤▼搴忕浉搴斾綅缃姞涓鍙戦煶绋嬪簭鍗冲彲銆備互涓婂笇鏈涜兘甯埌浣犮
  • 51鍗曠墖鏈轰笌PC涓插彛閫氫俊鐢12864鏃犳硶鏄剧ず鐨勯棶棰
    绛旓細濡傛灉纭欢娌℃湁闂鐨勮瘽锛屼綘鐨勮蒋浠剁▼搴忓彲浠ユ媶鍒嗕负浠ヤ笅鑰冭檻 1銆涓插彛閫氫俊鏈夐棶棰樺悧锛熶綘鍏堜繚璇PC涓插彛璋冭瘯杞欢鍙戜竴涓暟鎹紝鍗曠墖鏈鸿兘鍑嗙‘鏀跺埌銆傝皟璇曞姙娉曪紝鍗曠墖鏈烘帴鏀跺埌鍚庯紝浣撶幇鍦╥o绠¤剼涓婃垨鎸囩ず鐏寚绀恒傚pc鍙戦0x55锛岀湅鐪嬪崟鐗囨満鏄笉鏄敹鍒颁簡锛2銆鍗曠墖鏈虹殑lcd娑叉櫠鏄剧ず 浣犵敤鐨勬槸12864涓嶇煡閬撴帶鍒跺櫒鏄粈涔堜俊鍙风殑锛...
  • 51鍗曠墖鏈轰笌pc鏈洪氫俊,璋佽兘鍙戜釜绋嬪簭鍜屾帴绾垮浘鍛,涓囧垎鎰熻阿,闂濡備笅:_鐧...
    绛旓細缁欎綘鍥撅紝鑺墖鏄疢AX232锛屽叾涓璗XD鍜孯XD鎺鍗曠墖鏈虹殑TXD鍜孯XD銆侽UT鍜孖N鎺232涓插彛锛岄渶瑕佷竴鏉″悓鐩镐覆鍙g嚎涓嶱C杩炪傚弬鑰冪▼搴忓涓嬶細TMOD = 0x20;//瀹氭椂鍣═1瀹氫箟涓烘ā寮2 TL1 = 0xFD;TH1 = 0xFD;//璁剧疆娉㈢壒鐜囦负9600bps PCON = 0x00;//SMOD=0 SCON = 0x70;//SM0,SM1=01--閫夋嫨宸ヤ綔鏂瑰紡1 //SM2=1...
  • 澶氫釜涓嬩綅鍗曠墖鏈轰笌涓婁綅鏈pc閫氳繃涓插彛閫氫俊鐨勫疄鐜
    绛旓細鐢PC鏈涓庡涓51鍗曠墖鏈洪氳繃RS232杩涜閫氳銆傚湪澶氭満閫氳涓紝瑕佷繚璇佷富鏈轰笌鎵閫夋嫨鐨勪粠鏈哄疄鐜板彲闈犵殑閫氫俊锛屽繀椤讳繚璇涓插彛鍏锋湁璇嗗埆鐨勫姛鑳姐傚湪涓茶鍙鎺у埗瀵勫瓨鍣⊿CON涓湁涓浣嶅彨鍋歋M2锛屽氨鏄负浜嗗鏈洪氳鑰岃缃殑鎺у埗浣嶃傚鏈洪氳鐨勮繃绋嬪彲浠ュ涓嬶細1 棣栧厛浠庢満鍒濆鍖栵紝寮涓柇锛岃鍏朵互鏂瑰紡2鎴3鎺ユ敹锛9浣嶅紓姝ラ氳鏂瑰紡锛...
  • 51鍗曠墖鏈哄拰PC涓插彛閫氫俊闂
    绛旓細杩欎釜涓嶆槸閫氳闂銆傚彂閫佽繃鏉ョ殑瀹為檯缂栫爜搴旇閮芥槸涓鏍风殑锛屼絾鍥犱负鍦鍗曠墖鏈洪氳涓紝涓枃鍗犱袱涓瓧绗︼紙BYTE锛夛紝鑻辨枃鍜屾暟瀛楀崰涓涓瓧鑺傦紝鍦ㄨ嫳鏂囧拰涓枃娣锋帓鐨勬椂鍊欙紝閮ㄥ垎杞欢鐨勬樉绀哄姛鑳藉涓枃鏄剧ず涓嶇粰鍔涳紙鍏跺疄杩欐槸鍦˙OM鍜孶NICODE绛夋妧鏈嚭鐜颁箣鍓嶏紝涓枃绯荤粺鐨勯氱梾锛夛紝灏ゅ叾鏄綋涓枃涔嬪墠鐨勮嫳鏂囦负鍗曟暟涓殑鏃跺欙紝缁忓父瀹规槗鏄剧ず...
  • 51鍗曠墖鏈轰覆鍙i氫俊,PC鍙互鎺ユ敹鍗曠墖鏈轰俊鎭,鍗曠墖鏈烘敹涓嶅埌PC鍙戦鐨淇℃伅
    绛旓細浣犵殑RXD锛孴XD濡傛灉鏄湪鍗曠墖鏈寮曡剼涓婃祴閲忕殑锛屽彧鑳借鏄庡崟鐗囨満鍩烘湰姝e父 浣犲簲璇ユ祴閲忎竴涓PC绔 232鎺ュ彛 涓婄殑RX鍜孴X淇″彿
  • 51鍗曠墖鏈鎬庢牱鍜孭C閫氳繃RS485杩涜閫氫俊?
    绛旓細浣犲凡缁忕敤USB杞垚RS485锛屽啀灏哛S485杞垚TTL浜嗭紝鍓╀笅鐨勪簨灏辩畝鍗曚簡锛屽氨鎶奟S485TTL鐨凴XD鎺ュ埌鍗曠墖鏈篟XD锛屾妸485TTL鐨凾XD鎺ュ埌鍗曠墖鏈虹殑TXD涓婂氨琛屼簡銆傜劧鍚庡氨瑕佸啓绋嬪簭浜嗐鐢佃剳鐨刄SB杞485绾胯瀹夐┍鍔ㄧ▼搴忥紝铏氭嫙鍑轰竴涓覆鍙f潵锛岀數鑴戝氨鍙互鐢ㄤ覆鍙璋冭瘯鍔╂墜涓庡崟鐗囨満閫氫俊浜嗐
  • C51鍗曠墖鏈轰笌PC涓插彛閫氫俊鐨鍗曠墖鏈洪儴鍒嗙▼搴
    绛旓細娉ㄦ剰娉㈢壒鐜囨槸9600 鍔熻兘锛鐢佃剳閫氳繃涓插彛缁鍗曠墖鏈鍙戜竴涓瓧鑺傦紝鍗曠墖鏈烘敹鍒板悗鍙堢粰鐢佃剳鍙戝洖鍘 include<reg52.h> define uchar unsigned char define uint unsigned int uint temp;bit flag;void init_ser1();main(){ init_ser1();while(1){ if(RI==1){ P1=SBUF;RI=0;} if(flag==1){ ES=0;/...
  • 51鍗曠墖鏈轰笌pc閫氫俊,娉㈢壒鐜囨槸2400鍊嶅鐨鍙互鍑嗙‘鐨勫彂閫佸拰鏀跺洖鏁版嵁,鍏朵粬娉 ...
    绛旓細涓茶閫氫俊鐨勬尝鐗圭巼涓鑸兘鍙2400鐨勬暣鏁板嶃PC鏈涓婁覆鍙g殑娉㈢壒鐜囦篃鏄寜杩欎釜鍙栧肩殑銆傚涓嬪浘锛岃繖鏄秴绾х粓绔殑娉㈢壒鐜囧彇鍊笺傝屽浜鍗曠墖鏈锛岄渶瑕佷覆鍙i氫俊鏃讹紝鏅舵尟棰戠巼閫氬父鍙11.0592MHz锛屾垨鑰2鍊嶃傚彇杩欎釜鍊肩殑鐩殑灏辨槸璁$畻鍑鐨勪覆鍙i氫俊鐨勬尝鐗圭巼璇樊鍑犱箮涓0銆傝屽彇鍏跺畠棰戠巼灏辨湁璇樊銆傚悓鏃讹紝鏅舵尟鍙栬繖涓硷紝娉㈢壒鐜囦篃瑕佸彇...
  • 鎴戞兂鍋51鍗曠墖鏈轰笌鐢佃剳涓插彛閫氫俊,瀹炵幇鐢佃剳閿叆鍗佽繘鍒,杩斿洖BCD鐮,鏈濂芥槸...
    绛旓細杩欓噷鏈変釜婧愮爜鏄覆鍙e彂閫佹帴鏀舵暟鎹殑銆傚潗绛夋偓璧忓垎銆傛簮鐮佽浆鑷細銆51鍗曠墖鏈C璇█鍒涙柊鏁欑▼銆嬫俯瀛愮ズ绛夎憲銆/*瀹為獙鍚嶇О:涓插彛鏀跺彂鏁版嵁瀹為獙 鎻 杩:鍦ㄤ娇鐢鍗曠墖鏈虹殑涓插彛鎺ユ敹鏁版嵁瀹為獙褰撲腑锛屼娇鐢ㄤ覆鍙h皟璇曞姪鎵嬪彂閫佷粈涔堟暟鎹紝鍗曠墖鏈洪噰鐢ㄦ煡璇㈡硶灏嗘帴鏀跺埌鐨勬暟鎹繑鍙戝埌PC 浣 鑰:娓╁瓙绁 淇敼鏃ユ湡:2010/5/4 / include...
  • 扩展阅读:电脑检测不到串口 ... 51仿真器电脑串口连接 ... 51单片机四种工作方式 ... 为什么学单片机要从51开始 ... 串口轮询实验pc机 ... 51串口接收程序 ... 51单片机串口停止位 ... 51串口的4种工作方式 ... 51单片机串口计算器代码 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网