久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3675|回復: 4
收起左側

請教一下52單片機串口通信有關的問題

[復制鏈接]
ID:170427 發表于 2017-10-25 19:14 | 顯示全部樓層 |閱讀模式
本帖為密碼帖 ,請輸入密碼 
回復

使用道具 舉報

ID:164602 發表于 2017-10-26 08:38 | 顯示全部樓層
串口通訊有幾點注意事項:
1、外部晶振的頻率,它直接涉及你的波特率的誤差大小。如果是12M的話,則誤差小的最大波特率為4800,且要加倍,即PCON=0x80;如果是11.0592M的話,則可以稍大一點,也要加倍,如9600。這個你高好了嗎?
2、52單片機是8位機,所以SBUF一次只能接收或發送一個字符,而你準備用字符串作為判斷依據,這就是一個難題了。首先你要設置接收字符串的數組,然后要有字符串接收完成的標志符。程序思路就是:接收到一個字符,判斷它是不是結束標志符,不是,則繼續等待接收,是,先判斷字符串位數是不是你的命令字符串的位數,不是,則拋棄此接收的字符串,是,就去逐位判斷,是不是與你的命令字符串中相應位的字符相同,有一位不同,則命令無效;
最終才得到你發的命令,才執行相關操作。
3、要進行串口通訊試驗,PC機的上位程序也要選好,原來我用買開發板時送的小程序,后來發現它們或多或少都有毛病,最后用的芯片廠家提供的下載程序中的串口通訊試驗功能,效果才好了。
4、建議:如果你是初學者,由簡單的開始做起吧,一是積累經驗,二是容易上手。建議你先調通串口通訊,可以看到通訊成功了(發送,接收字符成功),再用單字符命令,實現串口控制操作,最后來這個高難度的字符串控制。

不知道你的硬件是怎么樣的,就不提供程序了,單片機程序都是和硬件密切相關的。如果只是串口通訊的程序,我想你應該是有的。
回復

使用道具 舉報

ID:170427 發表于 2017-10-26 09:07 | 顯示全部樓層
HC6800-ES-V2.0 發表于 2017-10-26 08:38
串口通訊有幾點注意事項:
1、外部晶振的頻率,它直接涉及你的波特率的誤差大小。如果是12M的話,則誤差小 ...

感謝!
回復

使用道具 舉報

ID:123289 發表于 2017-10-26 10:09 | 顯示全部樓層
簡單:串口接收是一個字節一個字節進行的,需要你收到后進行拼裝,當你拼裝成“liang”時就可以下令了。拼有誤就放棄。如:
第一個不是"l",就放棄,再從頭開始。
第二個不是"i",就放棄,再從頭開始。
第三
第四
第五個不是"g",就放棄,再從頭開始。
回復

使用道具 舉報

ID:164602 發表于 2017-10-27 12:49 | 顯示全部樓層
SunshineLLL 發表于 2017-10-26 22:49
實在不好意思 如果閑暇希望能看一下
最近有個項目 通過上位機發送 -open- 點亮LED
困惑在 接收字符串 ...

這個程序我研究了好久。與我平時編程的思路不一樣,但也是說得通的。
那為什么不能進行控制呢?
我調試了好久,經過修改后,現在這個程序是可以進行控制的了,但還是有問題:
第一:我做的試驗,總是在第一次(只在第一次)會多發送一個空字符。我也不知道為什么,反復調式沒有成功消除它。
第二:正是由于第一次多了一個空字符占位,所以后來的判斷比較,不再是開始的“-open-”,變成了“--open”。

程序在我自己的開發板調試的,可能與你的硬件不同,I/O口自己改一下。
另外:你確定你的晶振是11.0592?需要19200那么高的波特率嗎?這個不匹配也是不行的。我的板子是12M,所以只能4800,再加倍。
調試串口通訊,軟件用的STC-ISP中的串口調試功能。
1.jpg
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char

uchar i,j;
sbit led1=P2^0;

uchar sz[6]="";
void init()
{
        TMOD=0x20;
//        TH1=0xfd;//晶振11.0592MHz,19200波特率
//        TL1=0xfd;
                TH1=0xf3;//晶振12MHz,4800波特率
                TL1=0xf3;
                PCON=0X80;//波特率加倍
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
        TR1=1;
}
void main()
{

        init();
                j=0;
        while(1); //循環

}
void CK() interrupt 4
{
        RI=0;
        sz[j]=SBUF;
        j++;
        if(j==6)
        {
                j=0;
                if(sz[0]=='-') {
                        if(sz[1]=='-') {
                                if(sz[2]=='o'){
                                        if(sz[3]=='p'){
                                                if(sz[4]=='e'){
                                                        if(sz[5]=='n'){
                                                                                                                        led1=~led1;
                                                }
                                        }
                                }
                        }
                }
                        }
        }  
}



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产视频线观看永久免费 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 一区二区三区视频在线 | 爱爱小视频 | 亚洲福利 | 日本免费在线看 | 亚洲一区二区三区在线播放 | 日韩一区二区在线视频 | 欧美成人h版在线观看 | 欧美影院 | 久久伊人一区 | 一区二区日韩 | 亚洲国产成人精 | 91青青草视频 | 欧美国产亚洲一区二区 | 欧美精品一区二区三区在线 | 观看av | 欧美日韩在线精品 | 久久亚 | 色综合久久久 | 久久国产精品99久久久久久丝袜 | 亚洲国产中文在线 | 成人午夜在线 | 久久久久久久久久久丰满 | 亚洲精品片 | 亚洲精品区 | 久久久久久99 | 亚洲欧美在线一区 | 天堂色 | 国产精品成人久久久久 | 久久午夜视频 | 成人做爰999| 国产免费av在线 | 国产美女自拍视频 | 久久久久国产一区二区三区四区 | 久久久久久91香蕉国产 | 久久精品国产一区二区三区 | 精品视频在线免费观看 | 在线小视频 | 欧美在线观看一区二区 | 亚洲狠狠 |