0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

51單片機(jī)串口通信編程

PoisonApple ? 來源:網(wǎng)絡(luò)整理 ? 2018-02-01 14:29 ? 次閱讀

51單片機(jī)是對所有兼容Intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是Intel的8004單片機(jī),后來隨著Flash rom技術(shù)的發(fā)展,8004單片機(jī)取得了長足的進(jìn)展,成為應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測控系統(tǒng)之中。很多公司都有51系列的兼容機(jī)型推出,今后很長的一段時(shí)間內(nèi)將占有大量市場。51單片機(jī)是基礎(chǔ)入門的一個(gè)單片機(jī),還是應(yīng)用最廣泛的一種。需要注意的是51系列的單片機(jī)一般不具備自編程能力。

一、 pc機(jī)上的 串口通信編程過程如下:

1.建立項(xiàng)目

打開VC++6.0,建立一個(gè)基于對話框的MFC應(yīng)用程序SCommTest(與我源代碼一致,等會你會方便一點(diǎn));

2.在項(xiàng)目中插入MSComm控件

選擇Project菜單下Add To Project子菜單中的 Components and Controls…選項(xiàng),在彈出的對話框中雙擊Registered ActiveX Controls項(xiàng)(稍等一會,這個(gè)過程較慢),則所有注冊過的ActiveX控件出現(xiàn)在列表框中。 選擇Microsoft Communications Control, version 6.0,,單擊Insert按鈕將它插入到我們的Project中來,接受缺省的選項(xiàng)。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安裝VC6時(shí)沒有把ActiveX一項(xiàng)選上,重新安裝VC6,選上ActiveX就可以了),

這時(shí)在ClassView視窗中就可以看到CMSComm類了,(注意:此類在ClassWizard中看不到,重構(gòu)clw文件也一樣),并且在控件工具欄Controls中出現(xiàn)了電話圖標(biāo)(如圖1所示),現(xiàn)在要做的是用鼠標(biāo)將此圖標(biāo)拖到對話框中,程序運(yùn)行后,這個(gè)圖標(biāo)是看不到的。

本51單片機(jī)串口通信編程

3.利用ClassWizard定義CMSComm類控制對象

打開ClassWizard-》Member Viariables選項(xiàng)卡,選擇CSCommTestDlg類,為IDC_MSCOMM1添加控制變量:m_ctrlComm,這時(shí)你可以看一看,在對話框頭文件中自動(dòng)加入了//{{AFX_INCLUDES() #include “mscomm.h” //}}AFX_INCLUDES (這時(shí)運(yùn)行程序,如果有錯(cuò),那就再從頭開始)。

4.在對話框中添加控件

向主對話框中添加兩個(gè)編輯框,一個(gè)用于接收顯示數(shù)據(jù)ID為IDC_EDIT_RXDATA,另一個(gè)用于輸入發(fā)送數(shù)據(jù),ID為IDC_EDIT_TXDATA,再添加一個(gè)按鈕,功能是按一次就把發(fā)送編輯框中的內(nèi)容發(fā)送一次,將其ID設(shè)為IDC_BUTTON_MANUALSEND。別忘記了將接收編輯框的Properties-》Styles中把Miltiline和Vertical Scroll屬性選上,發(fā)送編輯框若你想輸入多行文字,也可選上Miltiline。

再打開ClassWizard-》Member Viariables選項(xiàng)卡,選擇CSCommTestDlg類, 為IDC_EDIT_RXDATA添加CString變量m_strRXData, 為IDC_EDIT_TXDATA添加CString變量m_strTXData。說明: m_strRXData和m_strTXData分別用來放入接收和發(fā)送的字符數(shù)據(jù)。

5.添加串口事件消息處理函數(shù)OnComm()

打開ClassWizard-》Message Maps,選擇類CSCommTestDlg,選擇IDC_MSCOMM1,雙擊消息OnComm,將彈出的對話框中將函數(shù)名改為OnComm,(好記而已)OK。

這個(gè)函數(shù)是用來處理串口消息事件的,如每當(dāng)串口接收到數(shù)據(jù),就會產(chǎn)生一個(gè)串口接收數(shù)據(jù)緩沖區(qū)中有字符的消息事件,我們剛才添加的函數(shù)就會執(zhí)行,我們在OnComm()函數(shù)加入相應(yīng)的處理代碼就能實(shí)現(xiàn)自已想要的功能了。請你在函數(shù)中加入如下代碼:

void CSCommTestDlg::OnComm()

{

// TODO: Add your control notification handler code here

VARIANT variant_inp;

COleSafeArray safearray_inp;

LONG len,k;

BYTE rxdata[2048]; //設(shè)置BYTE數(shù)組 An 8-bit integerthat is not signed.

CString strtemp;

if(m_ctrlComm.GetCommEvent()==2)//事件值為2表示接收緩沖區(qū)內(nèi)有字符

{////////以下你可以根據(jù)自己的通信協(xié)議加入處理代碼

variant_inp=m_ctrlComm.GetInput();//讀緩沖區(qū)

safearray_inp=variant_inp;//VARIANT型變量轉(zhuǎn)換為ColeSafeArray型變量

len=safearray_inp.GetOneDimSize();//得到有效數(shù)據(jù)長度

for(k=0;k《len;k++) 《/len;k++)

safearray_inp.GetElement(&k,rxdata+k);//轉(zhuǎn)換為BYTE型數(shù)組

for(k=0;k《len;k++) p=“” 將數(shù)組轉(zhuǎn)換為cstring型變量

{

BYTE bt=*(char*)(rxdata+k);//字符型

strtemp.Format(“%c”,bt);//將字符送入臨時(shí)變量strtemp存放

m_strRXData+=strtemp;//加入接收編輯框?qū)?yīng)字符串

}

m_strRXData+=“rn”; //換行

}

UpdateData(FALSE);//更新編輯框內(nèi)容

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635216
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5702

    瀏覽量

    123602
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1626

    瀏覽量

    55526
收藏 人收藏

    評論

    相關(guān)推薦

    pc機(jī)與89C51單片機(jī)串口通信編程

      一、 pc機(jī)上的 串口通信編程過程如下:  1.建立項(xiàng)目  打開VC++6.0,建立一個(gè)基于對話框的MFC應(yīng)用程序SCommTest(與我源代碼一致,等會你會方便一點(diǎn));  2.在項(xiàng)目中插入
    發(fā)表于 05-20 14:23

    51單片機(jī)串口通信代碼

    51單片機(jī)串口通信的代碼設(shè)計(jì)
    發(fā)表于 11-09 17:47 ?180次下載

    51單片機(jī)與PC串口通信程序

    51單片機(jī)與PC串口通信程序。
    發(fā)表于 12-24 11:30 ?40次下載

    51單片機(jī)串口通信程序

    51單片機(jī)串口通信程序,帶有詳細(xì)例程,希望可以給你幫助。
    發(fā)表于 05-16 11:56 ?124次下載

    基于51單片機(jī)的UART串口通信

    基于51單片機(jī)的UART串口通信詳解。
    發(fā)表于 11-21 10:14 ?6.3w次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的UART<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    如何使用51單片機(jī)實(shí)現(xiàn)串口通信

    51單片機(jī)串口引腳為P3.0引腳與P3.1引腳,分別是RXD和TXD引腳。串口通信可以用于單片機(jī)
    發(fā)表于 11-21 15:47 ?3w次閱讀
    如何使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    串口通信詳解(51單片機(jī)

    串口傳輸,實(shí)現(xiàn)單片機(jī)與PC機(jī)的雙機(jī)通信。串口控制(51單片機(jī)
    發(fā)表于 11-12 10:06 ?81次下載
    <b class='flag-5'>串口</b><b class='flag-5'>通信</b>詳解(<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>)

    51單片機(jī)串口通信

    51單片機(jī)串口通信文章目錄51單片機(jī)串口
    發(fā)表于 11-18 14:06 ?22次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    51單片機(jī)串口通信

    51單片機(jī)串口通信文章目錄51單片機(jī)串口
    發(fā)表于 11-21 20:36 ?64次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    51單片機(jī)~串口通信(講解+代碼)

    51單片機(jī)~串口通信(一)計(jì)算機(jī)串行通信原理:
    發(fā)表于 11-22 16:21 ?38次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>~<b class='flag-5'>串口</b><b class='flag-5'>通信</b>(講解+代碼)

    Java實(shí)現(xiàn)與51單片機(jī)串口通信 Serie Library

    Java實(shí)現(xiàn)與51單片機(jī)串口通信 Serie Library項(xiàng)目結(jié)構(gòu)Program Struct測試代碼package com.lius.testS;import
    發(fā)表于 11-23 16:51 ?15次下載
    Java實(shí)現(xiàn)與<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b> Serie Library

    51單片機(jī)——串口通信

    51單片機(jī)——串口通信串口通信串口
    發(fā)表于 11-23 17:36 ?33次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    51單片機(jī)心形燈實(shí)現(xiàn)串口通信編程

    51單片機(jī)心形燈實(shí)現(xiàn)串口通信編程
    發(fā)表于 11-23 17:51 ?14次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>心形燈實(shí)現(xiàn)<b class='flag-5'>串口</b><b class='flag-5'>通信</b><b class='flag-5'>編程</b>

    基于51單片機(jī)單片機(jī)串口通信仿真設(shè)計(jì)

    基于51單片機(jī)單片機(jī)串口通信仿真設(shè)計(jì),資料包含仿真及源程序
    發(fā)表于 04-20 16:15 ?4次下載

    ?51單片機(jī)串口通信詳細(xì)介紹-小白必看

    51單片機(jī)串口通信單片機(jī)與外部設(shè)備通信的重要方式,它基于串行
    的頭像 發(fā)表于 04-17 09:33 ?1994次閱讀
    ?<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>詳細(xì)介紹-小白必看