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

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

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

使用單片機(jī)實(shí)現(xiàn)串口通信的資料詳細(xì)說(shuō)明

Wildesbeast ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2020-08-09 14:13 ? 次閱讀

串口通訊對(duì)單片機(jī)而言意義重大,不但可以實(shí)現(xiàn)將單片機(jī)的數(shù)據(jù)傳輸?shù)?a href="http://ttokpm.com/v/tag/1247/" target="_blank">電腦端,而且也能實(shí)現(xiàn)電腦對(duì)單片機(jī)的控制,比如你可以把寫入單片機(jī)的數(shù)據(jù)碼顯示在電腦上,如可以使用一個(gè)按鍵,當(dāng)按下它時(shí)使某一個(gè)字母如:AA,通過(guò)單片機(jī)的串口將它發(fā)送到電腦上顯示,起到仿真器的某些功效,站長(zhǎng)在開(kāi)發(fā)數(shù)據(jù)采集設(shè)備時(shí)就是通過(guò)串口來(lái)檢查數(shù)據(jù)正確與否的。

MCS-51內(nèi)部含有一個(gè)可編程全雙工串行通信接口,具有UART的全部功能。該接口電路不僅能同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可作為一個(gè)同步移位寄存器使用。

在進(jìn)行異步通信時(shí),數(shù)據(jù)的發(fā)送和接收分別在各自的時(shí)鐘(TCLK和RCLK)控制下進(jìn)行的,但都必須與字符位數(shù)的波特率保持一致。MCS-51串行口的發(fā)送和接收時(shí)鐘可由兩種方式產(chǎn)生,一種是由主機(jī)頻率fosc經(jīng)分頻后產(chǎn)生,另一種方式是由內(nèi)部定時(shí)器T1或T2的溢出率經(jīng)16分頻后提供。

51單片機(jī)有一個(gè)全雙工的串行通訊口,所以單片機(jī)和電腦之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時(shí)要滿足一定的條件,比如電腦的串口是RS232電平的,而單片機(jī)的串口是TTL電平的,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,我們采用了專用芯片MAX232進(jìn)行轉(zhuǎn)換,雖然也可以用幾個(gè)三極管進(jìn)行模擬轉(zhuǎn)換,但是還是用專用芯片更簡(jiǎn)單可靠。我們采用了三線制連接串口,也就是說(shuō)和電腦的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。這是最簡(jiǎn)單的連接方法,但是對(duì)我們來(lái)說(shuō)已經(jīng)足夠使用了,電路如下圖所示,MAX232的第10腳和單片機(jī)的11腳連接,第9腳和單片機(jī)的10腳連接,第15腳和單片機(jī)的20腳連接。本網(wǎng)站的提供的實(shí)驗(yàn)板上已經(jīng)裝配好了全部硬件。

串口通訊的硬件電路如上圖所示

為了能夠在電腦端看到單片機(jī)發(fā)出的數(shù)據(jù),我們必須借助一個(gè)WINDOWS軟件進(jìn)行觀察單片機(jī)串口通信,這里我們利用一個(gè)免費(fèi)的電腦串口調(diào)試軟件。

點(diǎn)擊這里可以下載并運(yùn)行這個(gè)串口調(diào)試軟件這是一個(gè)綠色的軟件,無(wú)需安裝,可以直接在當(dāng)前位置運(yùn)行這個(gè)軟件。軟件界面如上圖,我們先要設(shè)置一下串口通訊的參數(shù),將波特率調(diào)整為4800,勾選十六進(jìn)制顯示。串口選擇為COM1,當(dāng)然將網(wǎng)站提供的51單片機(jī)實(shí)驗(yàn)板的串口也要和電腦的COM1連接,將燒寫有以下程序的單片機(jī)插入單片機(jī)實(shí)驗(yàn)板的萬(wàn)能插座中,并接通51單片機(jī)實(shí)驗(yàn)板的電源,這時(shí)只要按下K1一次,在串口調(diào)試助手軟件的接收區(qū)界面中就會(huì)增加一個(gè)“AF”字符,表示單片機(jī)向電腦發(fā)送“AF”字符成功。串口實(shí)驗(yàn)的源程序如下所示:

;這是一個(gè)AT89C51單片機(jī)實(shí)驗(yàn)開(kāi)發(fā)板向PC機(jī)的串口單向發(fā)送數(shù)據(jù)AF的演示程序

;采用MAX232專用芯片作RS232/TTL電平轉(zhuǎn)換。

;通訊波特率為4800KBPS,只要按下一次K1(就是P3.6引腳變成低電平)

;就發(fā)送一個(gè)16進(jìn)制的AF字符

ORG 0000H

MOV SCON,#50H;設(shè)置成串口1方式

MOV TMOD,#20H;波特率發(fā)生器T1工作在模式2上

MOV PCON,#80H;波特率翻倍為2400x2=4800BPS

MOV TH1,#0F3H;預(yù)置初值(按照波特率2400BPS預(yù)置初值)

MOV TL1,#0F3H;預(yù)置初值(按照波特率2400BPS預(yù)置初值)

SETB TR1;啟動(dòng)定時(shí)器T1

;以上完成通訊初始化設(shè)置

WRIT:JB P3.6,$;判斷K1是否按下,如果沒(méi)有按下就等待

ACALL DELAY10;延時(shí)10毫秒消觸點(diǎn)抖動(dòng)

JB P3.6,WRIT;去除干擾信號(hào)

JNB P3.6,$;等待按鍵松開(kāi)

MOV A,#0AFH;將16進(jìn)制的字符AF發(fā)送到串口去

MOV SBUF,A;將AF通過(guò)串口發(fā)送出去

AJMP WRIT

;10毫秒延時(shí)子程序

DELAY10:MOV R4,#20

D2:MOV R5,#248

DJNZ R5,$

DJNZ R4,D2

RET

END

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

一、發(fā)送和接收的過(guò)程如下:

串行口的發(fā)送過(guò)程由指令MOV SBUF,A啟動(dòng),即CPU由一條寫發(fā)送緩沖器的指令把數(shù)據(jù)(字符)寫入串行口的發(fā)送緩沖器SBUF(發(fā))中,再由硬件電路自動(dòng)在字符的始、末加上起始位(低電平)、停止位(高電平)及其它控制位(如奇偶位等),然后在移位脈沖SHIFT的控制下,低位在前,高位在后,從TXD端(方式0除外)一位位地向外發(fā)送。

串行口的接收與否受制于允許接收位REN的狀態(tài),當(dāng)REN被軟件置“1”后,允許接收器接收。接收端RXD一位位地接收數(shù)據(jù),直到收到一個(gè)完整的字符數(shù)據(jù)后,控制電路進(jìn)行最后一次移位,自動(dòng)去掉啟始位,使接收中斷標(biāo)志RI置“1”,并向CPU申請(qǐng)中斷。CPU響應(yīng)中斷,用一條指令(MOV A,SBUF)把接收緩沖器SBUF(收)的內(nèi)容讀入累加器。

TI和RI是由硬件置位的,但需要用軟件復(fù)位。

二、相關(guān)的寄存器

1、SBUF是兩個(gè)在物理上獨(dú)立的接收、發(fā)送緩沖器,可同時(shí)發(fā)送、接收數(shù)據(jù)。兩個(gè)緩沖器只用一個(gè)字節(jié)地址99H,可通過(guò)指令對(duì)SBUF的讀寫來(lái)區(qū)別是對(duì)接收緩沖器的操作還是對(duì)發(fā)送緩沖器的操作。串行口對(duì)外有兩條獨(dú)立的收發(fā)信號(hào)線RXD(P3.0)、TXD(P3.1),因此可以同時(shí)發(fā)送、接收數(shù)據(jù),實(shí)現(xiàn)全雙工。

2、SCON寄存器用來(lái)控制串行口的工作方式和狀態(tài),可按位尋址,其字節(jié)地址為98H。

3、PCON中的SMOD用來(lái)控制波特率加倍。

4、TMOD設(shè)置定時(shí)器1的工作方式,用來(lái)產(chǎn)生波特率

5、如果用到中斷,則還需要用到中斷相關(guān)的寄存器IE,IP等

三、四種工作方式:

方式0:

同步移位寄存器方式,其波特率是固定為振蕩頻率fosc的1/12。在這種工作方式下,發(fā)送和接收串行數(shù)據(jù)都通過(guò)RXD(P3.0)進(jìn)行,從TXD(P3.1)輸出移位脈沖,控制外部的移位寄存器移位。1幀信息為8位,沒(méi)有起始位,停止位。

方式1:

8位UART,1幀信息為10位,其中一位起始位“0”、八位數(shù)據(jù)位(先低位后高位)和一個(gè)停止位“1”,波特率可變,根據(jù)定時(shí)器1的溢出率計(jì)算。

方式2:

9位UART,1幀信息為11位,其中一位起始位“0”、八位數(shù)據(jù)位(先低位后高位),一位控制位(第九位)和一個(gè)停止位“1”。波特率為振蕩頻率的1/64或1/32

方式3:

9位UART,幀信息為11位,其中一位起始位“0”、八位數(shù)據(jù)位(先低位后高位),一位控制位(第九位)和一個(gè)停止位“1”。波特率可變,根據(jù)定時(shí)器1的溢出率計(jì)算。

附加的第9位數(shù)據(jù)為SCON中的TB8的值,它由軟件置位或清零,可作為多機(jī)通信中地址/數(shù)據(jù)信息的標(biāo)志位,也可作為數(shù)據(jù)的奇偶校驗(yàn)位。

四、連接

由于串口用的是TTL電平,和RS232電平不同,因此,單片機(jī)和PC通信時(shí)需要進(jìn)行電平轉(zhuǎn)換,常用的IC是MAX232,連接圖如圖所示,其中MAX232供電腳為+5V,中間連接的電解電容取50V 1UF。

MAX232內(nèi)部框圖

單片機(jī)和PC通信連接圖

即所謂的三線連接法。

===================================================

用VC來(lái)做個(gè)上位機(jī)軟件,用單片機(jī)來(lái)做下位機(jī)顯示,數(shù)據(jù)從PC機(jī)發(fā)送過(guò)來(lái),經(jīng)過(guò)單片機(jī)處理顯示。

首先你想把它學(xué)好,就一定要下苦功夫,因?yàn)檫@個(gè)不是一下子就能學(xué)好的,要經(jīng)過(guò)不斷的實(shí)踐努力。

學(xué)習(xí)也有一段時(shí)間了,用的書是(《Visual C /Turbo C串口通信編程實(shí)踐》 龔建偉)但是發(fā)現(xiàn)自己可能毅力不夠,經(jīng)常被一些困難所嚇倒。碰到問(wèn)題時(shí)不能夠想方設(shè)法去解決??赡苁强梢詫W(xué)習(xí)例子太少了,網(wǎng)上的資源也不是很多。。。。。。

發(fā)現(xiàn)假如用MSCOMM控件來(lái)編的話,就是那個(gè)變量VARIANT,這個(gè)不好弄懂。學(xué)VC首先要有一定的C語(yǔ)言基礎(chǔ),和C 基礎(chǔ),可能是C 還沒(méi)學(xué)完,基礎(chǔ)不扎實(shí),導(dǎo)致繼續(xù)下去有點(diǎn)困難。

先實(shí)現(xiàn)一個(gè)簡(jiǎn)單的功能吧,用VC做個(gè)界面,當(dāng)按下相應(yīng)的鍵時(shí),發(fā)送相應(yīng)的數(shù)據(jù)到單片機(jī)中,然后將數(shù)據(jù)送到P0口來(lái)顯示。

呵呵,一定要把那個(gè)變量給弄懂了,這樣一切都好辦了

在后面的學(xué)習(xí)中,我將把學(xué)習(xí)的心得寫出來(lái),與大家交流交流

有在學(xué)VC的朋友可以和我交流交流 ,大家一起進(jìn)步

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

    關(guān)注

    6030

    文章

    44491

    瀏覽量

    632012
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1219

    瀏覽量

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

    關(guān)注

    34

    文章

    1607

    瀏覽量

    55381
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于51單片機(jī)的多路溫度檢測(cè)調(diào)節(jié)及串口顯示

    ,利用虛擬串口模塊實(shí)時(shí)將平均溫度值實(shí)現(xiàn)串口顯示。仿真演示視頻:基于51單片機(jī)的多路溫度檢測(cè)調(diào)節(jié)及串口顯示-仿真視頻設(shè)計(jì)介紹 51
    的頭像 發(fā)表于 10-22 14:13 ?85次閱讀
    基于51<b class='flag-5'>單片機(jī)</b>的多路溫度檢測(cè)調(diào)節(jié)及<b class='flag-5'>串口</b>顯示

    基于51單片機(jī)的遙控開(kāi)關(guān)仿真(雙機(jī)通信)

    單片機(jī)最小系統(tǒng)、繼電器及LED燈構(gòu)成;(4)由于仿真無(wú)法模擬無(wú)線模塊通信,故利用單片機(jī)RXD、TXD端口模擬,通過(guò)遙控器的開(kāi)關(guān)實(shí)現(xiàn)對(duì)主機(jī)LED燈的控制,
    的頭像 發(fā)表于 10-22 14:12 ?128次閱讀
    基于51<b class='flag-5'>單片機(jī)</b>的遙控開(kāi)關(guān)仿真(雙機(jī)<b class='flag-5'>通信</b>)

    如何實(shí)現(xiàn)51單片機(jī)與PC機(jī)的串行通信

    51單片機(jī)與PC機(jī)的串行通信是一種常見(jiàn)的通信方式,它允許單片機(jī)通過(guò)串行接口與PC機(jī)進(jìn)行數(shù)據(jù)交換。
    的頭像 發(fā)表于 10-21 11:35 ?245次閱讀

    單片機(jī)SPI通信實(shí)現(xiàn)

    在深入探討單片機(jī)(如基于STM32、AVR、PIC等)如何通過(guò)SPI(Serial Peripheral Interface)進(jìn)行通信之前,我們先概述SPI通信的基本原理,隨后以STM32微控制器為例,
    的頭像 發(fā)表于 09-09 17:00 ?350次閱讀

    單片機(jī)燒錄程序的串口線怎么連接

    單片機(jī)開(kāi)發(fā)過(guò)程中,燒錄程序是一項(xiàng)重要的工作。而燒錄程序通常需要使用串口線來(lái)實(shí)現(xiàn)。本文將介紹單片機(jī)燒錄程序的串口線連接方法,包括
    的頭像 發(fā)表于 09-02 09:50 ?1003次閱讀

    第19.1 章-星瞳科技 OpenMV視覺(jué)循跡功能 超詳細(xì)OpenMV與STM32單片機(jī)通信

    第19.1 章-[星瞳科技]OpenMV視覺(jué)循跡功能 超詳細(xì)OpenMV與STM32單片機(jī)通信 (有完整版源碼) 【星曈科技】OpenMv筆記——利用OpenMV與STM32進(jìn)行串口
    的頭像 發(fā)表于 08-20 11:41 ?807次閱讀
    第19.1 章-星瞳科技 OpenMV視覺(jué)循跡功能 超<b class='flag-5'>詳細(xì)</b>OpenMV與STM32<b class='flag-5'>單片機(jī)</b><b class='flag-5'>通信</b>

    藍(lán)牙模塊如何實(shí)現(xiàn)單片機(jī)和手機(jī)端數(shù)據(jù)互傳

    藍(lán)牙模塊實(shí)現(xiàn)單片機(jī)和手機(jī)端數(shù)據(jù)互傳的過(guò)程可以分為以下幾個(gè)步驟: 硬件準(zhǔn)備 : 確保你有一個(gè)支持藍(lán)牙通信單片機(jī)開(kāi)發(fā)板,如Arduino、Raspberry Pi等。 準(zhǔn)備一個(gè)兼容的藍(lán)牙
    的頭像 發(fā)表于 07-24 17:59 ?2048次閱讀
    藍(lán)牙模塊如何<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>單片機(jī)</b>和手機(jī)端數(shù)據(jù)互傳

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

    51單片機(jī)串口通信單片機(jī)與外部設(shè)備通信的重要方式,它基于串行通信的原理,以字節(jié)為單位進(jìn)行數(shù)據(jù)傳
    的頭像 發(fā)表于 04-17 09:33 ?1808次閱讀
    ?51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b><b class='flag-5'>詳細(xì)</b>介紹-小白必看

    單片機(jī)串口屏連接步驟指南

    單片機(jī)串口屏的連接主要涉及硬件連接和軟件設(shè)置兩個(gè)方面。以下是一個(gè)基本的步驟指南
    的頭像 發(fā)表于 03-13 10:16 ?2998次閱讀
    <b class='flag-5'>單片機(jī)</b>與<b class='flag-5'>串口</b>屏連接步驟指南

    單片機(jī)串口通信的接收與發(fā)送

    單片機(jī)串口通信是一種常見(jiàn)的通信方式,它可以實(shí)現(xiàn)單片機(jī)與外部設(shè)備的數(shù)據(jù)交換。在實(shí)際應(yīng)用中,
    的頭像 發(fā)表于 12-20 14:03 ?3400次閱讀

    單片機(jī)串口通信的接收與發(fā)送程序

    單片機(jī)串口通信的接收與發(fā)送程序 一、引言 單片機(jī)串口通信是一種常見(jiàn)的
    的頭像 發(fā)表于 12-19 13:57 ?5474次閱讀

    STM32單片機(jī)實(shí)現(xiàn)固件在線升級(jí)(IAP)

    1,固件升級(jí)方案綜述單片機(jī)的固件升級(jí)方式有很多種。1、ICP:簡(jiǎn)單說(shuō)就是在單片機(jī)開(kāi)發(fā)時(shí)使用燒錄器升級(jí)程序,比如使用J-Link燒錄單片機(jī)程序。2、ISP:在單片機(jī)內(nèi)部
    的頭像 發(fā)表于 12-16 08:00 ?4783次閱讀
    STM32<b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b>固件在線升級(jí)(IAP)

    STM32單片機(jī)常用的引腳及功能

    單片機(jī)中,引腳是連接外部設(shè)備和單片機(jī)內(nèi)部模塊的接口,通過(guò)引腳可以將輸入信號(hào)傳遞給單片機(jī),或?qū)?b class='flag-5'>單片機(jī)處理后的信號(hào)輸出到外部設(shè)備。在本文中,我們將介紹STM32
    的頭像 發(fā)表于 12-07 16:22 ?2.1w次閱讀

    單片機(jī)實(shí)現(xiàn)更簡(jiǎn)單的LCD設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《單片機(jī)實(shí)現(xiàn)更簡(jiǎn)單的LCD設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 11-17 09:29 ?0次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)現(xiàn)</b>更簡(jiǎn)單的LCD設(shè)計(jì)

    基于單片機(jī)的主從紅外通信的系統(tǒng)設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于單片機(jī)的主從紅外通信的系統(tǒng)設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 11-16 15:56 ?4次下載
    基于<b class='flag-5'>單片機(jī)</b>的主從紅外<b class='flag-5'>通信</b>的系統(tǒng)設(shè)計(jì)