新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機通信技術要點

        單片機通信技術要點

        作者: 時間:2016-11-29 來源:網絡 收藏
        這幾天研究單片機通信,發現一些非常有趣的事情。在與單片機通信時,盡管程序沒有任何問題,但是通信始終出現大量錯誤碼,發送與接收的數據對應不上。后來不斷實驗,查找相關資料,發現一些重要的技術細節要引起重視,經過相應的調整,單片機通信終于順利完成。先后測試了STC12C4052AD單片機與 STC12C5A602S單片機,都成功通信,基本沒有發現錯誤碼,接收與發送一切正常。現將要點記下備忘:
        1.單片機的晶振。無論是內部晶振還是外部晶振,都能正常通信,關鍵在于晶振的頻率。大神們都說用外部晶振比較穩定,這個因為測試中沒發現區別太大,所以不作評論。
        2.單片機波特率的計算。這個是關鍵中的重點。建議使用大神們寫的51串口通信計算器這個軟件進行計算,比較精確。波特率的大小設置,直接影響了錯誤碼的多少。這個問題沒得到足夠重視,往往是通信失敗的直接原因。
        3.串口初始化的設置還比較靠譜,網上資料都可以用。諸如:

        TMOD =0x20;//T1工作為方式2
        SCON =0x50;//方式1:10位異步同通訊,串口允許接收
        PCON =0x80;//波特率倍增,SMOD=1
        TH1=TL1=0xe6; // 波特率2400
        TR1=1;// 啟動定時器1
        ES=1;
        EA=1;//總中斷允許

        以上設置可以通用,直接復制,粘貼即可使用。TH,TL值用51串口計算器計算取得,盡可能用最小誤差的數值。

        4.發送數據標準程序
        void send_char(unsigned char txd)
        // 傳送一個字符
        {
        SBUF = txd;
        while(!TI);
        TI=0;
        }
        5.接收數據的標準程序
        void re_char(unsigned char txd)
        //接收一個字符
        {
        while(1)
        {
        if(RI) // 是否有數據到來
        {
        tmp = SBUF; // 暫存接收到的數據
        P0=tmp; //點亮P0一組燈。
        RI = 0; //RI清零
        }

        }

        }

        6.補充要點;刷機軟件版本選擇。STC12C4052AD單片機用STC-ISPV488版本可以快速刷機;STC12C5A602S只能用STC-ISP 480版本刷機。原因也許只能向宏晶科技官方咨詢了。


        關鍵詞: 單片機通信技

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 义马市| 襄樊市| 疏勒县| 新晃| 仙游县| 南漳县| 南平市| 高州市| 政和县| 侯马市| 云阳县| 阳信县| 东乌| 垦利县| 抚宁县| 梁山县| 榆中县| 上栗县| 阿坝县| 东台市| 田林县| 苗栗县| 海城市| 文登市| 通许县| 来宾市| 峨眉山市| 屏边| 女性| 榆社县| 高碑店市| 德清县| 舟山市| 昌图县| 专栏| 南川市| 民权县| 阿尔山市| 东光县| 简阳市| 南城县|