日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]C51 新手編程(第五課) 串行口 今天介紹單片機(jī)怎樣通過串行口與計(jì)算機(jī)通信。 1. 概述 通信實(shí)質(zhì)就是以計(jì)算機(jī)為中心,通過某些通信線路與設(shè)備,對二進(jìn)制編碼的字母、數(shù)字、符號化及數(shù)字化聲音、圖像信息進(jìn)行的傳輸

C51 新手編程(第五課)
串行口
今天介紹單片機(jī)怎樣通過串行口與計(jì)算機(jī)通信。
1. 概述
通信實(shí)質(zhì)就是以計(jì)算機(jī)為中心,通過某些通信線路與設(shè)備,對二進(jìn)制編碼的字母、數(shù)字、符號化及數(shù)字化聲音、圖像信息進(jìn)行的傳輸、交換和處理。由于計(jì)算機(jī)的信息是以字節(jié)(8位)或字(1個或幾個字節(jié))為單位進(jìn)行處理,所以以字或字節(jié)為傳輸單位比較合適,今天重點(diǎn)介紹使用串行口進(jìn)行通信。
所謂串行通信就是所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。在串行通信系統(tǒng)中,傳輸數(shù)據(jù)的各位只在一條傳輸線上傳送,因此在長距離傳送數(shù)據(jù)時,比較經(jīng)濟(jì),缺點(diǎn)是傳輸速度較慢。
2. 串行通信種類
串行通信分為同步通信和異步通信兩種方式。
(1) 同步串行通信:要求在發(fā)送設(shè)備的時鐘頻率與接收設(shè)備的時鐘頻率一致的條件下,發(fā)送設(shè)備先發(fā)出一個(或幾個)同步字符,隨之發(fā)送一組數(shù)據(jù)。接收設(shè)備一旦檢測到符合規(guī)定的同步字符,便連續(xù)按順序接收所有數(shù)據(jù)。優(yōu)點(diǎn):速度較快。缺點(diǎn):對設(shè)備的硬件結(jié)構(gòu)要求較高。
(2) 異步串行通信:發(fā)送設(shè)備和接收設(shè)備的時鐘是不一致的。數(shù)據(jù)以一個字符一個字符地順序按幀傳送。幀格式示意圖如圖2-1:
0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 1
起始位 D0 D1 D2 D3 D4 D5 D6 奇偶校
驗(yàn)位 停止位
七位數(shù)據(jù)
圖2-1異步通信信號傳輸格式
解釋一下:開頭一個起始位“0”,接著是5~8位數(shù)據(jù)位,規(guī)定低位在前,高位在后(圖上是7位數(shù)據(jù)位),然后是一個奇偶校偶位(可以省略),最后加上一個停止位“1”表示字符的結(jié)束。
由于在技術(shù)實(shí)現(xiàn)上使用發(fā)送設(shè)備與接收設(shè)備的時鐘頻率長期嚴(yán)格保持一致有一定的困難,目前實(shí)際使用較多的還是串行異步通信方式。
3. 串行口中數(shù)據(jù)的雙工傳送
在串行通信中,機(jī)器的通信接口只能發(fā)送或接收,這種是單向傳輸?shù)?,稱為單工傳送,如果兩機(jī)之間能夠進(jìn)行雙向傳送,這種方式就稱為雙工傳送。
在雙工傳送中,如果接收和發(fā)送不能同時進(jìn)行,只能分時接收和發(fā)送,這種傳送就叫半雙工傳送,若兩機(jī)的發(fā)送和接收均可同時進(jìn)行,則為全雙工傳送。
4. 串行通信速率
波特率是在單片機(jī)異步通信中對數(shù)據(jù)傳送速率的規(guī)定,即每秒鐘傳送信息的二進(jìn)制位數(shù)。
5. 串行接口
從本質(zhì)上講,所有的串行接口都是以并行數(shù)據(jù)形式與CPU接口,而以串行數(shù)據(jù)形式與外部邏輯單元接口。它們的基本功能是從外部邏輯單元接收串行數(shù)據(jù),轉(zhuǎn)換成并行數(shù)據(jù)后傳送給CPU;或者從CPU發(fā)出并行數(shù)據(jù),轉(zhuǎn)換成串行數(shù)據(jù)后輸出給外部邏輯單元。
串行接口至少包含一個接收器和一個發(fā)送器。
6. 51串行接口
51單片機(jī)內(nèi)部有一個功能很強(qiáng)的全雙工的串行接口電路單元UART(即通用異步接收器/發(fā)送器,Universal Asynchronous Receiver/Transmitter),發(fā)送時數(shù)據(jù)由TXD端送出,接收時數(shù)據(jù)由RXD端輸入,有兩個緩沖器SBUF,一個作發(fā)送緩沖器,另一個作嫌收緩沖器。該串行口有4種工作方式,波特率可用軟件設(shè)置,由片內(nèi)的定時/計(jì)數(shù)器產(chǎn)生。串行口接收或發(fā)送數(shù)據(jù)均可觸發(fā)中斷系統(tǒng),使用十分方便。
6.1. 串行口的組成
6.1.1. 串行口控制寄存器SCON,其格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI RI
(1) SM0,SM1:串行口工作方式控制位,具體工作方式見表6-1:



表6-1 串行口工作方式控制
SM0 SM1 工作方式 說明 波特率
0 0 方式0 同步移位寄存器 fOSC/12
0 1 方式1 10位異步收發(fā) 由定時器控制
1 0 方式2 11位異步收發(fā) fOSC/32或fOSC/64
1 1 方式3 11位異步收發(fā) 由定時器控制
(2) SM2:多機(jī)通信控制位(方式2,3)
1->只有接收到第9位(RB8)為1,RI才置位;
0->接收到字符,RI就置位。
(3) REN:串行口接收允許位
1->允許串行口接收;
0->禁止串行口接收。
(4) TB8:方式2和方式3時,為發(fā)送的第9位數(shù)據(jù),也可以作奇偶校驗(yàn)位。
(5) RB8:方式2和方式3時,為接收到的第9位數(shù)據(jù);方式1時,為接收到的停止位。
(6) TI:發(fā)送中斷標(biāo)志
由硬件置位,必須由軟件清零
(7) RI:接收中斷標(biāo)志
由硬件置位,必須由軟件清零
6.1.2. 電源控制寄存器PCON:
PCON的第7位SMOD是與串行口的波特率設(shè)置有關(guān)的選擇位。
D7 D6 D5 D4 D3 D2 D1 D0
SMOD
(1) SMOD:串行口波特率加倍位
1->方式1和方式3時,波特率=定時器1溢出率/16;方式2波特率= fOSC/32;
0->方式1和方式3時,波特率=定時器1溢出率/32;方式2波特率= fOSC/64;
通常情況下,使用單片機(jī)的串行口時,選用的晶振比較固定,一般為6MHz,12MHz和11.0592MHz,常用于與微機(jī)的通信;選用的波特率也相對固定。串行口常用的波特率及相應(yīng)的設(shè)置見表6-2:
表6-2 串行口常用波特率
串行口工作方式 波特率 fOSC = 6 MHz fOSC = 12 MHz fOSC = 11.0592 MHz
SMOD TMOD TH1 SMOD TMOD TH1 SMOD TMOD TH1
方式0 1M × × ×
方式2 375K 1 × ×
187.5K 1 × × 0 × ×




方式1






方式3 62.5K 1 20 FFH
19.2K 1 20 FDH
9.6K 0 20 FDH
4.8K 1 20 F3H 0 20 FAH
2.4K 1 20 F3H 0 20 F3H 0 20 F4H
1.2K 1 20 E6H 0 20 E6H 0 20 E8H
600 1 20 CCH 0 20 CCH 0 20 D0H
300 0 20 CCH 0 20 98H 0 20 A0H
137.5 1 20 1DH 0 20 1DH 0 20 2EH
110 0 20 72H 0 20 FEEBH 0 10 FEFFH
7. 實(shí)例
單片機(jī)串行口發(fā)送/接收程序,每接收到字節(jié)即刻發(fā)送出去;和微機(jī)相接后微機(jī)鍵入的字符回顯在屏幕上。代碼如下:

/******************************************************
* Title: 串口接收發(fā)送程序(字母)
* Description:
* Copyright:
* Company:
* @author Enron
*******************************************************/
#include

#define uchar unsigned char

/******************************************************
主函數(shù)
*******************************************************/
void main()
{
uchar a;

TMOD=0x20;
TL1=0xfd; // 采用11.0592MHz的晶振,波特率9600bps
TH1=0xfd;
SCON=0xd8;
PCON=0x00;
TR1=1;

while(1)
{
while(RI==0);
RI=0;
a=SBUF;
SBUF=a;
while(TI==0);
TI=0;
}
}

解釋一下:TMOD = 0x20 即
D7 D6 D5 D4 D3 D2 D1 D0
GATE T/C 1 M1 M0 GATE T/C 0 M1 M0
0 0 1 0 0 0 0 0
看出來,我們使用定時器 1 的工作方式1,即定時器 1 為自動重設(shè)初值的8位定時/計(jì)數(shù)器。

TH1 = 0xFd; //在11.0592MHz下,設(shè)置串行口波特率為9600,方式3
TL1 = 0xFd;
串行口工作方式 波特率 fOSC = 6 MHz fOSC = 12 MHz fOSC = 11.0592 MHz
SMOD TMOD TH1 SMOD TMOD TH1 SMOD TMOD TH1
方式0 1M × × ×
方式2 375K 1 × ×
187.5K 1 × × 0 × ×




方式1






方式3 62.5K 1 20 FFH
19.2K 1 20 FDH
9.6K 0 20 FDH
4.8K 1 20 F3H 0 20 FAH
2.4K 1 20 F3H 0 20 F3H 0 20 F4H
1.2K 1 20 E6H 0 20 E6H 0 20 E8H
600 1 20 CCH 0 20 CCH 0 20 D0H
300 0 20 CCH 0 20 98H 0 20 A0H
137.5 1 20 1DH 0 20 1DH 0 20 2EH
110 0 20 72H 0 20 FEEBH 0 10 FEFFH
按照表來看我們的在11.0592MHZ下,串口的波特率為9.6K也就是9600,那么TH1 TL1設(shè)置為0xFD
SCON = 0xd8; //串口控制
D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI RI
1 1 0 1 1 0 0 0
表6-1 串行口工作方式控制
SM0 SM1 工作方式 說明 波特率
0 0 方式0 同步移位寄存器 fOSC/12
0 1 方式1 10位異步收發(fā) 由定時器控制
1 0 方式2 11位異步收發(fā) fOSC/32或fOSC/64
1 1 方式3 11位異步收發(fā) 由定時器控制
也就是說串行口的工作方式3,11位異步收發(fā)波特率由定時器控制的。REN:1->允許串行口接收。TB8:方式2和方式3時,為發(fā)送的第9位數(shù)據(jù),也可以作奇偶校驗(yàn)位。RB8:方式2和方式3時,為接收到的第9位數(shù)據(jù);方式1時。TI:發(fā)送中斷標(biāo)志,由硬件置位,必須由軟件清零。RI:接收中斷標(biāo)志,由硬件置位,必須由軟件清零。

PCON = 0x00;
D7 D6 D5 D4 D3 D2 D1 D0
SMOD
0 0 0 0 0 0 0 0
1->方式1和方式3時,波特率=定時器1溢出率/16;方式2波特率= fOSC/32;
0->方式1和方式3時,波特率=定時器1溢出率/32;方式2波特率= fOSC/64
TR1 = 1; //啟動定時器T1
也就是啟動定時器
while (1)
while(RI==0); //串口接收
RI = 0;
c = SBUF;
SBUF = c;
while(TI==0); //串口發(fā)送
TI=0;
while(RI==0); RI為0則等待(不為0就執(zhí)行下一句)
RI = 0; 執(zhí)行這句說明RI不再為0(接收結(jié)束),這里強(qiáng)制RI為0
c = SBUF; 接收字符
SBUF = c; 發(fā)送字符
while(TI==0); TI為0則等待,否則執(zhí)行下一句
TI=0; 執(zhí)行到這句說明TI不為0(即發(fā)送結(jié)束),強(qiáng)制令TI為0
這里的意思是說判斷RI是否為0當(dāng)RI==0時就一直循環(huán)判斷,當(dāng)RI不等與0時就執(zhí)行下面的語句。RI=0是重置。然后就接收數(shù)據(jù)SBUF就是串口數(shù)據(jù)寄存地方。當(dāng)C=SBUF時就收到了串口數(shù)據(jù)然后在吧原來的數(shù)據(jù)在發(fā)到出去SBUF=C,while(TI==0)是說當(dāng)TI為0是就一直等待。不為0時就執(zhí)行TI=0重置TI。
將前面的程序編譯后寫入單片機(jī),并連好串口線。通過串口調(diào)試助手向單片機(jī)發(fā)送字符,會發(fā)現(xiàn)發(fā)送的內(nèi)容被原樣發(fā)送回來。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計(jì)中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計(jì)工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉