娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

51單片機(jī)串口通信原理講解

發(fā)布者:theta18最新更新時(shí)間:2024-08-22 來源: cnblogs關(guān)鍵字:51單片機(jī)  串口通信 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

今天研究了一下51單片機(jī)的串口通信,使用的單片機(jī)是普中科技開發(fā)板,但實(shí)際上所運(yùn)用到的硬件和其他品牌單片機(jī)都相同,沒有區(qū)別,總結(jié)一下,自己的理解和看法。


通信原理

通信原理大致分為串行和并行兩種方法,各有優(yōu)缺點(diǎn),也不再這里贅述了,使用到的是串行通信的方法,簡(jiǎn)單介紹一下串行通信的原理,上圖

兩個(gè)設(shè)備,一根互傳線,每次傳一組數(shù)據(jù),總長(zhǎng)度不一定8位,由51單片機(jī)內(nèi)部設(shè)定來決定。設(shè)備間通信有許多接口方式,我用的是51上的串行接口,掛圖:
在這里插入圖片描述
SBUF:是指串行口中的兩個(gè)緩沖寄存器,一個(gè)是發(fā)送寄存器,一個(gè)是接收寄存器,在物理結(jié)構(gòu)上是完全獨(dú)立的,但地址是重疊的。它們都是字節(jié)尋址的寄存器,字節(jié)地址均為99H,
TXD:Transmit(tx) Data; RXD: Receive(rx) Data;
兩個(gè)口通過縮寫記一下,我經(jīng)常記不?。▉G人),所以上面的那一個(gè)SBUF是發(fā)送,下面的是接收寄存器,發(fā)送或者接收的數(shù)據(jù)將暫時(shí)儲(chǔ)存于里面,編程時(shí)直接賦值就行,TH1和TL1是時(shí)鐘的配置系統(tǒng),主要用于控制波特率,及每秒發(fā)送的總位數(shù)。(調(diào)試時(shí)一定要對(duì)應(yīng)自己設(shè)置的波特率)

控制寄存器SCON:內(nèi)部結(jié)構(gòu)下圖,主要用于設(shè)置串口工作方式、接發(fā)送控制,以及狀態(tài)位的控制
在這里插入圖片描述
SM0和SM1是控制工作方式下圖,控制每組總數(shù)據(jù)(起止位+數(shù)據(jù)位)的位數(shù)。移位則是一個(gè)脈沖一個(gè)一個(gè)脈沖的發(fā)送輸入輸出數(shù)據(jù)。
SM2多機(jī)通信控制位,方式2和3時(shí)。SM2控制RB8是否會(huì)觸發(fā)RI中斷,SM2=1時(shí)R8=1激活中斷(中斷將數(shù)據(jù)讀走),R8=0則不激活;SM2=0則失去控制作用。不論RB是否為0,RI都能激活,方式0時(shí),SM2必須為0;方式1時(shí),SM2=0,接受到停止位,R1中斷就打開。
REN允許串行接受位,REN=1,則打開接受,否則不能接受數(shù)據(jù)。
TB,方式2和3中才用到,是奇偶效驗(yàn)位
RB,在方式2、3中還是做奇偶效驗(yàn)位,在方式1中做數(shù)據(jù)停止位的存放位,用來將RI自動(dòng)置1,啟動(dòng)中斷。
在這里插入圖片描述
PCON:用于控制波特率是否加倍,及SMOD=1,波特率加倍。復(fù)位時(shí)SMOD=0;
在這里插入圖片描述
好了,大致通信原理講到這里,下面到使用講解!

程序編寫

步驟:
1、確定TMOD(計(jì)數(shù)器)工作方式
2、配置TH1和TL1初值
3、配置SCON、PCON
4、打開中斷允許位(總中斷、串口中斷),配置中斷(中斷內(nèi)主要是SBUF讀取發(fā)送數(shù)據(jù)),配置TCON打開中斷即TR1置1.

上代碼:作用串口通信輸入值,再返回

include

typedef unsigned char u8;


void ready(void)

{

TMOD = 0X20;

TH1=0XFF;

TL1=0XF9; //波特率9600

SCON=0X50;//0101 0000

PCON=OX80;//1000 0000

EA=1; //打開總中斷

ES=1; //打開串口中斷,相當(dāng)于ET1 ET0

TR1=1;//打開計(jì)數(shù)器,當(dāng)其溢出時(shí)會(huì)給SMOD一個(gè)脈沖,接受和讀取數(shù)據(jù),達(dá)到設(shè)置波特率作用

  //當(dāng)接受到停止位時(shí)RI=1觸發(fā)中斷

}


void main(void)

{

ready();

while(1);

}


void time1(void) interrupt 4

{

static u8 result;

result=SBUF;//進(jìn)入配置中斷,讀取數(shù)據(jù)

RI=0;

SBUF=result;//將數(shù)據(jù)輸入到SBUF里面發(fā)送

while(!TI);//等待發(fā)送完畢

TI=0;

}

一個(gè)簡(jiǎn)單的串口通信收發(fā)完成了


關(guān)鍵字:51單片機(jī)  串口通信 引用地址:51單片機(jī)串口通信原理講解

上一篇:51單片機(jī)學(xué)習(xí)日志-指令系統(tǒng)
下一篇:data,bdata,idata,pdata,xdata,code存儲(chǔ)類型與存儲(chǔ)區(qū)

推薦閱讀最新更新時(shí)間:2025-07-01 08:50

WPF與51單片機(jī)之間的串口通信
WPF部分: (1)建立WPF工程,步驟略 下面是MainWindow.xaml.cs的內(nèi)容 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Windows; 5 using System.Windows.Controls; 6 using System.Windows.Data; 7 using System.Windows.Documents; 8 using System.Windows.Input; 9 using System.Windows.Media; 10
[單片機(jī)]
WPF與<font color='red'>51單片機(jī)</font>之間的<font color='red'>串口通信</font>
STM32單片機(jī)的串口通信波特率計(jì)算方法
1. 什么是波特率 不管是什么單片機(jī),在使用串口通信的時(shí)候,有一個(gè)非常重要的參數(shù):波特率。什么是波特率:波特率就是每秒傳送的字節(jié)數(shù)。雙方在傳輸數(shù)據(jù)的過程中,波特率一致,這是通訊成功的基本保障。下面以STM32單片機(jī)為例,講解一下串口波特率的計(jì)算方法。 2. STM32波特率相關(guān)的寄存器 STM32單片機(jī)設(shè)置波特率的寄存器只有一個(gè):USART_BRR寄存器,如下圖所示。 該寄存器的有效位數(shù)為16位,前4位用于存放小數(shù)部分,后12位用于存放整數(shù)部分。將波特率算出來后,數(shù)值填入這個(gè)波特率就可以了。下面介紹如何計(jì)算。 3. 波特率計(jì)算方法 STM32的數(shù)據(jù)手冊(cè)給出了計(jì)算方法,有一個(gè)公式,如下圖所示: 在這個(gè)公式上,共有三個(gè)變量
[單片機(jī)]
STM32單片機(jī)的<font color='red'>串口通信</font>波特率計(jì)算方法
msp432快速入門第十三節(jié)之串口通信
(一)MSP432串口介紹 ??MSP432P401R并沒有專用的串口設(shè)備,要使用EUSC模塊配置成UART模式,串口通信非常便捷易用,它在嵌入式設(shè)備中是最為常見的一種接口,在這里我們把MSP432的串口配置成8in1的模式,8位數(shù)據(jù),1位停止位,沒有流控選擇,波特率為9600,發(fā)送方式是直接發(fā)送,接收方式是中斷接收。 需要注意的是僅僅有EUSCA支持被配置成串口模式。 (二)配置串口 ??首先打開TI的串口回環(huán)(call back)例程,然后參照其進(jìn)行配置,之后進(jìn)行測(cè)試即可: (1)初始化串口 需要注意的是串口時(shí)鐘選擇了SMCLK,之前的例子中SMCLK已經(jīng)被配置成12MHz,那么我們需要獲取特定波特率的分頻數(shù)等等,
[單片機(jī)]
msp432快速入門第十三節(jié)之<font color='red'>串口通信</font>
STM32基礎(chǔ)之串口通信
串口通訊協(xié)議簡(jiǎn)介: 串口通訊(Serial Communication)是一種設(shè)備間非常常用的串行通訊方式,因?yàn)樗?jiǎn)單便捷,因此大部分電子設(shè)備都支持該通訊方式,電子工程師在調(diào)試設(shè)備時(shí)也經(jīng)常使用該通訊方式輸出調(diào)試信息。 在計(jì)算機(jī)科學(xué)里,大部分復(fù)雜的問題都可以通過分層來簡(jiǎn)化。如芯片被分為內(nèi)核層和片上外設(shè);STM32 標(biāo)準(zhǔn)庫(kù)則是在寄存器與用戶代碼之間的軟件層。對(duì)于通訊協(xié)議,我們也以分層的方式來理解,最基本的是把它分為物理層和協(xié)議層。物理層規(guī)定通訊系統(tǒng)中具有機(jī)械、電子功能部分的特性,確保原始數(shù)據(jù)在物理媒體的傳輸。協(xié)議層主要規(guī)定通訊邏輯,統(tǒng)一收發(fā)雙方的數(shù)據(jù)打包、解包標(biāo)準(zhǔn)。 串行通信的分類 1、按照數(shù)據(jù)傳送方向,分為: **單工:**
[單片機(jī)]
STM32基礎(chǔ)之<font color='red'>串口通信</font>
分別以輪詢方式和中斷處理方式實(shí)現(xiàn)8051的串口通信
#include STC89C5xRC.H //之前用輪詢方式實(shí)現(xiàn)了串口的通訊,這里使用前后臺(tái)系統(tǒng)結(jié)架構(gòu)實(shí)現(xiàn)功能 int s; void UART_INT() interrupt 4//UART中斷處理程序 { if(RI == 1)//如果收到數(shù)據(jù) { RI = 0; s = SBUF;//將收到的數(shù)據(jù)讀取出來 SBUF = s;//將讀取到的數(shù)據(jù)發(fā)送回PC端 } else if(TI == 1)//如果數(shù)據(jù)發(fā)送完畢 { TI = 0; } } void UART_Communication_A()//前后臺(tái)系統(tǒng)結(jié)構(gòu)實(shí)現(xiàn)串行通信 { TI = 0;
[單片機(jī)]
分別以輪詢方式和中斷處理方式實(shí)現(xiàn)8051的<font color='red'>串口通信</font>
msp430G2553串口通信_launchpad串口通信
MSP430G2553 單片機(jī)中集成了 USCI_A0功能模塊,可以直接完成串口通信。 一、代碼與仿真 TI官方例程中uart代碼只有時(shí)鐘,引腳,串口的初始化,不能直接串口收發(fā),還需要增加發(fā)送函數(shù)和完善中斷函數(shù),我在官方例程的基礎(chǔ)上,編寫了串口通信程序,并硬件測(cè)試通過 。 硬件測(cè)試用板(TI的MSP-EXP430G2ET) 注意:圖中綠圈跳帽的接法 在水平方向上, 跳線將 TXD 連接到 P1.1, 將RXD 連接到 P1.2 。 在垂直方向上, 跳線將 TXD 連接到 P1.2, 將RXD 連接到 P1.1。 用USCI_A0模塊的串口時(shí),RXD和TXD是固定的,板子的跳帽接法固定。 若是軟件串口(TimerA定時(shí)器和軟件結(jié)
[單片機(jī)]
msp430G2553<font color='red'>串口通信</font>_launchpad<font color='red'>串口通信</font>
PIC16C63單片機(jī)串口通信程序
;******************************************* ;MCU-PIC16C63A,WDT=ON,HS,16MHZ ;本例將寄存器BUFFER1和BUFFER2中的數(shù)據(jù)串口發(fā)送出去,沒有中斷調(diào)用,單片機(jī)選用PIC16C63A ;******************************************* LIST P=PIC16C63A INCLUDE P16C63A.INC ORG 0000H GOTO MAIN BUFFER1 EQU 20H BUFFER2 EQU 21H MAIN MOVLW 0X55 MOVWF BUFFER1 MOVLW 0X56 MOVWF BUFFER2
[單片機(jī)]
S3C2410 通用異步收發(fā)UART 串口通信
一、UART原理說明 通用異步收發(fā)器簡(jiǎn)稱UART,用來傳輸串行數(shù)據(jù)。 發(fā)送數(shù)據(jù)時(shí),CPU將并行數(shù)據(jù)寫入U(xiǎn)ART,UART按照一定的格式在一根電線上串行發(fā)出。 接收數(shù)據(jù)時(shí),CPU檢測(cè)另一根電線上的信號(hào),講串行收集放在緩沖區(qū)中,CPU即可讀取UART獲得這些數(shù)據(jù)。 UART之間通過全雙工方式傳輸數(shù)據(jù),最簡(jiǎn)單只有三根線TxD(發(fā)送數(shù)據(jù)),RxD(接收數(shù)據(jù)),GnD(雙方參考電平),連線如下圖所示。 (PS:?jiǎn)喂ぁ腚p工、全雙工 單工數(shù)據(jù)傳輸只支持?jǐn)?shù)據(jù)在一個(gè)方向上傳輸; 半雙工數(shù)據(jù)傳輸允許數(shù)據(jù)在兩個(gè)方向上傳輸,但是,在某一時(shí)刻,只允許數(shù)據(jù)在一個(gè)方向上傳輸,它實(shí)際上是一種切換方向的單工通信; 全雙工數(shù)據(jù)通信允許數(shù)據(jù)
[單片機(jī)]
S3C2410 通用異步收發(fā)UART <font color='red'>串口通信</font>
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 奉贤区| 万年县| 鹤壁市| 平昌县| 建德市| 怀化市| 商丘市| 方正县| 天气| 宜兴市| 闸北区| 济南市| 逊克县| 滨州市| 青河县| 沧州市| 呼伦贝尔市| 乐山市| 陇西县| 镇沅| 赞皇县| 诸暨市| 碌曲县| 泸溪县| 香格里拉县| 丰镇市| 克什克腾旗| 双峰县| 东台市| 沙河市| 突泉县| 察隅县| 平塘县| 定日县| 新津县| 昭觉县| 富宁县| 怀集县| 衡东县| 汝城县| 修水县|