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

歷史上的今天

今天是:2024年12月21日(星期六)

2021年12月21日 | 單片機(jī)雙機(jī)通訊 非常詳細(xì)的UART串口異步通訊

發(fā)布者:星辰小鹿 來源: eefocus關(guān)鍵字:單片機(jī)  雙機(jī)通訊  UART  串口異步通訊 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

一、總體設(shè)計(jì)

1.設(shè)計(jì)要求:

兩片單片機(jī)之間進(jìn)行串行通信,發(fā)送端將0~f循環(huán)發(fā)送到接收端,并在接收端顯示。


2.設(shè)計(jì)方案:

本次設(shè)計(jì),對于兩片89C51,采用RS232進(jìn)行雙機(jī)通信。發(fā)送方的數(shù)據(jù)由串行口TXD段輸出,經(jīng)過電平轉(zhuǎn)換芯片MAX232將TTL電平轉(zhuǎn)換為RS232電平輸出,經(jīng)過傳輸線將信號傳送到接收端。接收方也使用MAX232芯片進(jìn)行電平轉(zhuǎn)換后,信號到達(dá)接收方串行口的接收端。接受方接收后,在數(shù)碼管上顯示接收的信息。為提高抗干擾能力,還可以在輸入輸出端加光耦合進(jìn)行光電隔離。


軟件部分,通過通信協(xié)議進(jìn)行發(fā)送接收,主機(jī)先送AAH給從機(jī),當(dāng)從機(jī)接收到AAH后,向主機(jī)回答B(yǎng)BH。主機(jī)收到BBH后就把數(shù)碼表TAB[16]中的10個數(shù)據(jù)送給從機(jī),并發(fā)送檢驗(yàn)和。從機(jī)收到16個數(shù)據(jù)并計(jì)算接收到數(shù)據(jù)的檢驗(yàn)和,與主機(jī)發(fā)送來的檢驗(yàn)和進(jìn)行比較,若檢驗(yàn)和相同則發(fā)送00H給主機(jī);否則發(fā)送FFH給主機(jī),重新接受。從機(jī)收到16個正確數(shù)據(jù)后送到一個數(shù)碼管顯示。


二、硬件設(shè)計(jì)

1.51單片機(jī)串行通信功能

在這里插入圖片描述

計(jì)算機(jī)與外界的信息交換稱為通信,常用的通信方式有兩種:并行通信和串行通信。51單片機(jī)用4個接口與外界進(jìn)行數(shù)據(jù)輸入與數(shù)據(jù)輸出就是并行通信,并行通信的特點(diǎn)是傳輸信號的速度快,但所用的信號線較多,成本高,傳輸?shù)木嚯x較近。串行通信的特點(diǎn)是只用兩條信號線(一條信號線,再加一條地線作為信號回路)即可完成通信,成本低,傳輸?shù)木嚯x較遠(yuǎn)。


51單片機(jī)的串行接口是一個全雙工的接口,它可以作為UART(通用異步接受和發(fā)送器)用,也可以作為同步移位寄存器用。51單片機(jī)串行接口的結(jié)構(gòu)如下:

(1)數(shù)據(jù)緩沖器(SBUF)

接受或發(fā)送的數(shù)據(jù)都要先送到SBUF緩存。有兩個,一個緩存,另一個接受,用同一直接地址99H,發(fā)送時用指令將數(shù)據(jù)送到SBUF即可啟動發(fā)送;接收時用指令將SBUF中接收到的數(shù)據(jù)取出。

(2)串行控制寄存器(PCON)

在這里插入圖片描述

SCON用于串行通信方式的選擇,收發(fā)控制及狀態(tài)指示,各位含義如下:


SM0,SM1:串行接口工作方式選擇位,這兩位組合成00,01,10,11對應(yīng)于工作方式0、1、2、3。串行接口工作方式特點(diǎn)見下表

在這里插入圖片描述

SM2:多機(jī)通信控制位。

REN:接收允許控制位。軟件置1允許接收;軟件置0禁止接收。

TB8:方式2或3時,TB8為要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。

RB9:在方式2或3時,RB8位接收到的第9位數(shù)據(jù),實(shí)際為主機(jī)發(fā)送的第9位數(shù)據(jù)TB8,使從機(jī)根據(jù)這一位來判斷主機(jī)發(fā)送的時呼叫地址還是要傳送的數(shù)據(jù)。

TI:發(fā)送中斷標(biāo)志。發(fā)送完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)發(fā)送。

RI:接收中斷標(biāo)志。接收完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)接收。

(3)輸入移位寄存器

接收的數(shù)據(jù)先串行進(jìn)入輸入移位寄存器,8位數(shù)據(jù)全移入后,再并行送入接收SBUF中。

(4)波特率發(fā)生器

波特率發(fā)生器用來控制串行通信的數(shù)據(jù)傳輸速率的,51系列單片機(jī)用定時器T1作為波特率發(fā)生器,T1設(shè)置在定時方式。波特率時用來表示串行通信數(shù)據(jù)傳輸快慢程度的物理量,定義為每秒鐘傳送的數(shù)據(jù)位數(shù)。

(5)電源控制寄存器PCON

其最高位為SMOD。

(6)波特率計(jì)算

當(dāng)定時器T1工作在定時方式的時候,定時器T1溢出率=(T1計(jì)數(shù)率)/(產(chǎn)生溢出所需機(jī)器周期)。由于是定時方式,T1計(jì)數(shù)率= fORC/12。產(chǎn)生溢出所需機(jī)器周期數(shù)=模M-計(jì)數(shù)初值X。


2.MAX232芯片

用8051串行接口通信,如果兩臺8051單片機(jī)之間的距離很近(不超過1.5m),可以采用直接將兩臺8051單片機(jī)的串行接口直接相連,利用其自身的TTL電平(0-5V)直接傳輸數(shù)據(jù)信息。如果傳輸距離較遠(yuǎn)(超過1.5m),由于傳輸線的阻抗與分布電容,會產(chǎn)生電平損耗和波形畸變,以至于檢測不出數(shù)據(jù)或數(shù)據(jù)出錯。此時可利用 RS232標(biāo)準(zhǔn)總線接口,將單片機(jī)輸出的TTL電平轉(zhuǎn)換為RS232標(biāo)準(zhǔn)電平(邏輯1為-15—-5V;邏輯0為+5-—+15V)。用RS232可將傳輸距離提高到15m,如果想遠(yuǎn)距離傳輸,可以采用RS422或者RS485。


電平轉(zhuǎn)換芯片MAX232是美信公司(MAXIM)生產(chǎn),專用于進(jìn)行將TTL電平轉(zhuǎn)換為RS232電平的芯片,MAX232內(nèi)部有泵電源,能將+5V電源電壓在芯片內(nèi)提高到RS232電平所需的+10V或者-10V電平。

在這里插入圖片描述

圖2.電平轉(zhuǎn)換芯片MAX232


3.整體電路設(shè)計(jì)

最終設(shè)計(jì)電路如下圖3所示,發(fā)送方的數(shù)據(jù)由串行口TXD段輸出,經(jīng)過電平轉(zhuǎn)換芯片MAX232將TTL電平轉(zhuǎn)換為RS232電平輸出,經(jīng)過傳輸線將信號傳送到接收端。接收方也使用MAX232芯片進(jìn)行電平轉(zhuǎn)換后,信號到達(dá)接收方串行口的接收端。接受方接收后,通過P1口在數(shù)碼管上顯示接收的信息。

在這里插入圖片描述

圖3.串行通信電路


三、軟件設(shè)計(jì)

通過通信協(xié)議進(jìn)行發(fā)送接收,主機(jī)先送AAH給從機(jī),當(dāng)從機(jī)接收到AAH后,向主機(jī)回答B(yǎng)BH。主機(jī)收到BBH后就把數(shù)碼表TAB[16]中的10個數(shù)據(jù)送給從機(jī),并發(fā)送檢驗(yàn)和。從機(jī)收到16個數(shù)據(jù)并計(jì)算接收到數(shù)據(jù)的檢驗(yàn)和,與主機(jī)發(fā)送來的檢驗(yàn)和進(jìn)行比較,若檢驗(yàn)和相同則發(fā)送00H給主機(jī);否則發(fā)送FFH給主機(jī),重新接受。從機(jī)收到16個正確數(shù)據(jù)后送到一個數(shù)碼管顯示。


1.串行通信軟件實(shí)現(xiàn)

(1)串行口工作于方式1;用定時器1產(chǎn)生9600bit/s的波特率,工作于方式2。

(2)功能:將本機(jī)ROM中數(shù)碼表TAB[16]中的16個數(shù)發(fā)送到從機(jī),并保存在從機(jī)內(nèi)部ROM中,從機(jī)收到這16個數(shù)據(jù)后送到一個數(shù)碼管循環(huán)顯示。

(3)通信協(xié)議:主機(jī)首先發(fā)送連絡(luò)信號(AAH),從機(jī)接收到之后返回一個連絡(luò)信號(BBH)表示從機(jī)已準(zhǔn)備好接收。

(4)通信過程使用第九位發(fā)送奇偶校驗(yàn)位。

(5)從機(jī)接收到一個數(shù)據(jù)后,立即進(jìn)行奇偶校驗(yàn),若數(shù)據(jù)沒有錯誤,則返回00H,否則返回FFH。

(6)主機(jī)發(fā)送一個數(shù)據(jù)后,等待從機(jī)返回?cái)?shù)據(jù);若為00H,則繼續(xù)發(fā)送下一個數(shù)據(jù),若為FFH,則重新發(fā)送數(shù)據(jù)。


2.程序流程圖

(1)發(fā)送端程序流程圖

在這里插入圖片描述

(2)接收方程序流程圖


在這里插入圖片描述

四、聯(lián)合調(diào)試

在protues上進(jìn)行仿真實(shí)驗(yàn)。首先使用KeilC將編寫完成的程序編譯生成HEX文件,將HEX文件燒錄到兩片單片機(jī)中,進(jìn)行仿真實(shí)驗(yàn),結(jié)果如下圖所示,可以看到,接收端已將接受到的數(shù)據(jù)完整的顯示了出來。

在這里插入圖片描述

圖4.仿真圖


五、設(shè)計(jì)小結(jié)

經(jīng)過繁忙而又緊張的課程設(shè)計(jì),終于順利的完成了設(shè)計(jì)任務(wù)。雖然在這段時間里每天都那么繁忙,但是在這忙碌的過程中卻得到了許多的收獲。


經(jīng)過課程設(shè)計(jì),在查閱資料的過程中,學(xué)習(xí)了基于單片機(jī)的C語言程序設(shè)計(jì),了解了單片機(jī)串行通信的基本知識,對于以后的學(xué)習(xí)和工作都有很大的益處。


在學(xué)習(xí)的過程中,也遇到了一些困難,比如開始的時候,由于發(fā)送端和接收端的通信協(xié)議沒有做好,導(dǎo)致數(shù)據(jù)不能正確的傳輸,在解決問題的過程中,對于通信協(xié)議的實(shí)現(xiàn)有了深刻的認(rèn)識。


通過這次課程設(shè)計(jì),鍛煉了自己獨(dú)立思考的能力。


1.主機(jī)發(fā)送程序

#include // 51單片機(jī)預(yù)處理程序

#define uchar unsigned char // 宏定義無符號字符型變量

void init(); // 定義初始化函數(shù)

void send(); // 定義發(fā)送函數(shù)

ucharTAB[16] ={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; // 定義數(shù)組函數(shù) 0~F顯示段位值

uchar i,sum; // 定義無符字符變量 I,sum 其中i表示數(shù)據(jù)個數(shù),sum表示校驗(yàn)和

int j; // 定義整形變量 j 等待數(shù)據(jù)發(fā)送時的延時

main() // 主函數(shù)開始執(zhí)行

{ init(); // 初始化

send(); // 準(zhǔn)備發(fā)送數(shù)據(jù)

}

void init(void) 調(diào)用初始化函數(shù)(無返回值)

{ EA=1; // 打開全局中斷允許

ES=1; // 打開串口中斷允許

TMOD=0x20; // 定義工作方式寄存器的方式和功能

TH1=0xfd; // 配置定時器初值

TL1=0xfd; // 配置定時器初值

PCON=0x00; // 配置電源管理寄存器 主要SMOD位=0

SCON=0x50; // 設(shè)定串行口的工作方式,REN允許串行接收

TR1=1; // 定時器1啟動控制位

}


void send(void) // 調(diào)用發(fā)送函數(shù)(數(shù)據(jù)準(zhǔn)備發(fā)送)

{do

{ SBUF=0xaa; // 把0xaa裝入SBUF緩存

while(!TI); // 發(fā)送中斷標(biāo)志位(如果!TI=0即TI=1時,,跳出循環(huán))

TI=0; // 因?yàn)門I為硬件置1,所以要軟件清0

while(!RI); // 接收中斷標(biāo)志位(如果!RI=0即RI=1時,,跳出循環(huán))

RI=0; // 因?yàn)镽I為硬件置1,所以要軟件清0

}

while((SBUF^0xbb)!=0); // sbuf 的值不等0,為0xBB就會執(zhí)行下一條語句

// DO while 循環(huán)

do

{ sum=0; // 首先把0賦值給sum即清0 ,sum為校驗(yàn)和

for(i=0;i<=15;i++) // i為數(shù)組中數(shù)據(jù)的位個數(shù),等待有16個數(shù)據(jù)后

{ SBUF=TAB[i]; // 把數(shù)裝入緩存器發(fā)送一個數(shù)據(jù)

sum+=TAB[i]; // 即 sum=sum+ TAB[i](求校驗(yàn)和,為兩個十六進(jìn)制數(shù)的和)

while(!TI); // 在TI=1的時候,跳出循環(huán)

TI=0; // TI要軟件清零

}

SBUF=sum; // 發(fā)送校驗(yàn)和

while(!RI); //在RI=1的時候,跳出循環(huán)

RI=0; // RI要軟件清零

}

while(SBUF!=0); // 在SBUF為0時跳出循環(huán)

}


從機(jī)發(fā)送程序和主機(jī)差不多,你可以自己想一下看看能不能寫出來。

關(guān)鍵字:單片機(jī)  雙機(jī)通訊  UART  串口異步通訊 引用地址:單片機(jī)雙機(jī)通訊 非常詳細(xì)的UART串口異步通訊

上一篇:51單片機(jī)超聲波水位控制器設(shè)計(jì)
下一篇:AT89C51單片機(jī)流水燈c語言程序及詳解(掃盲教程)

推薦閱讀

芯科技消息(文/西卡)隨著AI技術(shù)活躍發(fā)展,防毒軟件業(yè)也指出,明年開始會大量出現(xiàn)利用AI(人工智能)的惡性代碼,不僅如此,安全性較低的家用物聯(lián)網(wǎng)(IoT)設(shè)備也很有可能成為黑客的目標(biāo),相關(guān)使用者可能需要小心。韓國第一大免費(fèi)防毒軟件ESTsecurity針對今年發(fā)生過的保安威脅進(jìn)行分析,并于20日公布“2019年安全威脅展望Top5”,其中包含開始出現(xiàn)AI技術(shù)...
日前,我們從相關(guān)渠道獲得消息,華為錢包將攜手比亞迪DiLink發(fā)布手機(jī)NFC車鑰匙。據(jù)悉,該功能將隨比亞迪宋Pro新款車型上線。比亞迪車主激活車鑰匙功能后,通過在汽車左前后視鏡刷華為/榮耀手機(jī)來解鎖、閉鎖車輛。即使在手機(jī)電量不足時,也能成功解鎖汽車,同時也支持通過華為/榮耀手機(jī)啟動車輛。在安全方面,車鑰匙的NFC功能遵循全球車聯(lián)網(wǎng)聯(lián)盟CCC規(guī)范,將...
在2016 年,蘋果做出了一個讓不少用戶難以接受的改革:取消掉 iPhone 上的耳機(jī)接口,取而代之的則是一對小小的白色無線耳機(jī),也就是市面上知名度最高,傳播度最廣的真無線耳機(jī)產(chǎn)品。它憑借輕若無物的舒適佩戴感、和蘋果設(shè)備快速連接、低延遲高續(xù)航等特點(diǎn),讓它成為近年蘋果最成功的產(chǎn)品之一,也是真無線藍(lán)牙耳機(jī)市場的啟蒙者。 隨著華為、小米等廠商的...
呼氣閥氣密性測試儀主要經(jīng)營的產(chǎn)品包括:汽車內(nèi)外飾刮擦測試儀器,顏色及色彩評價、顯微及法政檢驗(yàn)、床墊測試儀器、地毯測試儀器、玩具測試儀、濕度測量,控制系統(tǒng)、土壤溫濕度計(jì)附件、紡織及服裝、無紡布及土工布測試儀、透氣性測試儀、單向耐磨儀、皮革及鞋材測試儀、過濾材料測試儀、交通工具類測試儀、耐候及老化測試儀、高加速老化測試系統(tǒng)、烘箱環(huán)境...

史海拾趣

問答坊 | AI 解惑

自制的紅外對射加熱器

這些天連續(xù)低溫大霧,紅外對射的外罩上結(jié)了一層冰,為了解決這個問題絞盡腦汁,自制了一個加熱器,就是用電褥子上的電爐絲。剪下一段,在一塊小塑料板上繞幾圈就行了…

查看全部問答∨

基于PDA移動導(dǎo)航定位系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf

基于PDA移動導(dǎo)航定位系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf…

查看全部問答∨

請教關(guān)于flash的概念

菜鳥這廂有禮了,關(guān)于flash的基本概念想不明白,求教于各位。 1)扇區(qū)sector 和 塊block 是什么關(guān)系?我用的flash芯片是am29lv160DB,據(jù)手冊有若干不同大小的sector,但是block大小沒有定義,不知道每個sector包含多少個block。 2)擦除大小erase ...…

查看全部問答∨

s3c44B0 LCD顯示應(yīng)用程序,漢字從右向左滾動顯示時,屏幕會有明顯閃爍,不明原因~~~

s3c44B0 LCD顯示應(yīng)用程序,漢字從右向左滾動屏幕會有明顯閃爍,不明原因~~~ 可能的原因我分析有兩個: LCD驅(qū)動問題,s3c44B0是帶驅(qū)動,沒動過。 屏自身的問題(sharp5.7寸藍(lán)白屏)。 不知有人做過類似的程序沒?非常期待大家的賜教。 如果有人看 ...…

查看全部問答∨

Bitmap\image的save問題?

            Bitmap MyImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);                  &nbs ...…

查看全部問答∨

模擬地和數(shù)字地改如何分割與連接?

看了一些文章,關(guān)于模擬和數(shù)字地還是有一些疑問,請大家多多指教. 1.單點(diǎn)接地一班要求就是在AD處進(jìn)行單點(diǎn)接地,并且明確指出不能 跨越(模擬數(shù)字地)分割線 進(jìn)行信號走線,但是當(dāng)我同時用到DA的時候,DA改放置到數(shù)字區(qū)還是模擬區(qū)呢?并且這時必然 ...…

查看全部問答∨

STM8的UART問題

STM8的UART初始化完成后,不能發(fā)送數(shù)據(jù),按例程中的再后面加上這個函數(shù)之后才能發(fā)送,想問一下大俠們,是不是在發(fā)送前還需要什么操作。。 char putchar (char c) {     if (c == \'\\n\')     {      ...…

查看全部問答∨

嵌入式系統(tǒng)“中國制造”走向“中國創(chuàng)造”

嵌入式系統(tǒng)是先進(jìn)的半導(dǎo)體技術(shù)、計(jì)算機(jī)技術(shù)、電子技術(shù)以及各種具體應(yīng)用相結(jié)合的產(chǎn)物,是技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的新型集成知識系統(tǒng)。涵蓋了電子信息技術(shù)、微電子技術(shù)、計(jì)算機(jī)軟件和硬件等多項(xiàng)技術(shù)等領(lǐng)域方面的應(yīng)用。下面就由福州卓 ...…

查看全部問答∨

STM32W系列的zigbee有誰用過?

有用過這種芯片的,一起交流討論啊…

查看全部問答∨

FSM的安全選項(xiàng)——“安全”意味著什么?

轉(zhuǎn)自http://blog.cechina.cn/ting123/226060/message.aspx# 科普貼收藏了 Quartus II中的Safe State Machine編譯選項(xiàng)對FSM在FPGA中的實(shí)現(xiàn)方式有很大影響。 riple     這一影響在RTL視圖中不可見。 riple     這一選項(xiàng)是否引 ...…

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

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

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 宁陕县| 古交市| 夏津县| 安庆市| 怀来县| 玛多县| 萨迦县| 富源县| 静安区| 平泉县| 长兴县| 时尚| 枣庄市| 上蔡县| 革吉县| 阿坝县| 当雄县| 栾城县| 中阳县| 海安县| 洮南市| 昌江| 兰州市| 巍山| 博湖县| 吴旗县| 咸丰县| 乐业县| 桂阳县| 剑阁县| 龙门县| 宜都市| 漳浦县| 拜泉县| 西安市| 冷水江市| 桃江县| 右玉县| 张北县| 资阳市| 新野县|