亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        單片機(jī)在C語言串口通信中的應(yīng)用解析

        2016-02-27 06:32:25孫衛(wèi)喜
        關(guān)鍵詞:單片機(jī)程序

        孫衛(wèi)喜

        (渭南師范學(xué)院 網(wǎng)絡(luò)安全與信息化學(xué)院,陜西 渭南 714099)

        單片機(jī)在C語言串口通信中的應(yīng)用解析

        孫衛(wèi)喜

        (渭南師范學(xué)院 網(wǎng)絡(luò)安全與信息化學(xué)院,陜西 渭南 714099)

        在分析了單片機(jī)涵義和串口通信工作方式的基礎(chǔ)上,結(jié)合前期采用匯編語言編寫的單片機(jī)應(yīng)用系統(tǒng)程序可讀性差、可移植性不好,且程序編寫周期長、調(diào)試比較困難等問題,文中倡導(dǎo)以C語言作為編寫單片機(jī)應(yīng)用系統(tǒng)的編程語言,從而使得單片機(jī)能巧妙利用C語言實(shí)現(xiàn)單片機(jī)之間的多機(jī)高效通信,充分展示出單片機(jī)使用壽命長、運(yùn)行速度快、低噪音、技術(shù)可靠的特征。實(shí)驗(yàn)結(jié)果表明,單片機(jī)應(yīng)用系統(tǒng)中使用C語言編寫的程序可讀性、可移植性、穩(wěn)健性更強(qiáng),能使串口通信更加高效、便捷、可靠。同時使得價格低、穩(wěn)定性強(qiáng)、功能好、功耗小等這些單片機(jī)的特點(diǎn)得到更充分的發(fā)揮。

        單片機(jī);C語言應(yīng)用;程序編寫;串口通信

        1 概 述

        單片微型計算機(jī)(Single Chip Microcomputer)是單片機(jī)的簡稱,它將CPU(中央處理器)、串并行I/O接口電路、EPROM(可編程存儲器)、ROM(只讀存儲器)、內(nèi)外部系統(tǒng)總線、計數(shù)器/定時器等計算機(jī)的主要部件都集成到一塊芯片中,特別適合控制系統(tǒng)的數(shù)據(jù)處理,因而也稱為微控制器(Microcontroller),它是個完整的微型計算機(jī)[1]。隨著技術(shù)的不斷發(fā)展,單片機(jī)在結(jié)構(gòu)上采用雙CPU結(jié)構(gòu)使運(yùn)算速度及處理能力得以提高;在制造工藝上芯片朝著低功耗及高集成化方面邁進(jìn);增加浮點(diǎn)運(yùn)算單元、PWM輸出、通信控制器、PCA可編程計數(shù)器陣列等功能部件;新型串行總線結(jié)構(gòu)的使用給擴(kuò)充配置提供了便利。技術(shù)的不斷更新使單片機(jī)在網(wǎng)絡(luò)、數(shù)據(jù)處理、通信、工業(yè)控制等領(lǐng)域得到廣泛應(yīng)用。

        單片機(jī)的發(fā)展歷程可分為5個階段。

        (1)初期的4位微處理器Inter 4004(MCS-4)到Intel 8008 8位微處理器。

        (2)低性能8位機(jī),如MCS-48系列。此時的CPU、計數(shù)器、I/O接口均為8位,雖說此時的單片機(jī)系統(tǒng)簡單、尋址范圍不大、容量有限,但已基本具備了普通儀表、過程控制的需要。

        (3)高性能帶有串行口及多級中斷處理系統(tǒng),如MCS-51系列。此時的單片機(jī)在尋址范圍、芯片容量、系統(tǒng)功能等方面都得到很大的提高,應(yīng)用范圍也在逐步擴(kuò)大。

        (4)16位單片機(jī)的使用使單片機(jī)芯片容量、運(yùn)算速度、控制功能等大幅提高,如16位MCS-96系列。

        (5)90年代后單片機(jī)朝著高集成化及低功耗等方向發(fā)展[2]。

        目前市面上流行的單片機(jī)系列產(chǎn)品較多,主要生產(chǎn)廠家有:Intel、ADM、Philips等。單片機(jī)的應(yīng)用可分為單機(jī)應(yīng)用和多機(jī)應(yīng)用。單機(jī)方面主要應(yīng)用在測控系統(tǒng)(如普通的頁面控制及順序控制等)、智能儀表(如壓力測量及儀表控制等)、機(jī)電一體化(如醫(yī)療器械及數(shù)控機(jī)床等)、智能接口(如數(shù)據(jù)大型采集及誤差修正等)、智能民用產(chǎn)品(如家電及電子秤等)[3]。多機(jī)方面主要應(yīng)用在功能集散系統(tǒng)(如計算機(jī)同時控制機(jī)床對刀系統(tǒng)及刀庫管理等多個系統(tǒng))、并行多機(jī)控制系統(tǒng)(如圖像實(shí)時處理及并行數(shù)據(jù)采集等)、局部網(wǎng)絡(luò)系統(tǒng)(如通信控制等)。

        總之,隨著單片機(jī)在功能方面的進(jìn)一步增強(qiáng),它將在機(jī)電一體化、工業(yè)控制等方面得到更廣泛的應(yīng)用,人們在日常生活中使用的手機(jī)、游戲機(jī)、鼠標(biāo)、汽車配件及各種電子設(shè)備及機(jī)械產(chǎn)品中都能見到單片機(jī)的身影。特別是微控制技術(shù)(軟件代替硬件的控制技術(shù))的使用,即可用軟件方法由單片機(jī)完成以前數(shù)字電路或模擬電路完成的很多功能,使控制系統(tǒng)傳統(tǒng)的設(shè)計方法與設(shè)計思想得以改變。

        2 單片機(jī)的特點(diǎn)

        (1)單片機(jī)設(shè)計采用總線結(jié)構(gòu)內(nèi)部布線很短,將各功能的部件都集成在一塊芯片上,常數(shù)和程序指令等在ROM中固化,因而,體積小、性能穩(wěn)定、抗干擾能力強(qiáng)。

        (2)單片機(jī)指令豐富簡單,CPU通過對多個I/O的邏輯操作、位操作等實(shí)現(xiàn)對設(shè)備的控制,特別適合工業(yè)控制[4]。

        (3)單片機(jī)工作電流為μA級,工作電壓在2.2V以下,因而功耗低、便于攜帶。

        (4)單片機(jī)性能價格比極高,隨著技術(shù)的發(fā)展及單片機(jī)尋址范圍和ROM容量的擴(kuò)大,再加之單片機(jī)開發(fā)周期短、硬件結(jié)構(gòu)簡單,使單片機(jī)在技術(shù)性能及產(chǎn)品價格上更具優(yōu)勢。

        (5)對單片機(jī)系統(tǒng)通過編寫不同的程序高效穩(wěn)定地實(shí)現(xiàn)設(shè)備的不同功能特征,特別是用C語言編程的單片機(jī)系統(tǒng)程序可讀性更強(qiáng),易于理解,也有利于程序的移植。

        (6)單片機(jī)提供了多個并串行I/O接口及用于擴(kuò)展的三總線,使單片機(jī)極易組成不同類型的應(yīng)用系統(tǒng)。

        3 串行通信

        這里的通信即信息交換,是在計算機(jī)之間或計算機(jī)與外部設(shè)備間進(jìn)行的。并行通信與串行通信是通信的兩種基本方式。并行通信是利用多條數(shù)據(jù)線,每次同時并行傳輸多位數(shù)據(jù),如打印機(jī)接口8條數(shù)據(jù)線同時傳送數(shù)據(jù)一次傳送一個字節(jié)。并行通信的優(yōu)點(diǎn)是傳輸速度很快,缺點(diǎn)是成本高、通信線路比較復(fù)雜。串行通信的特征是數(shù)據(jù)一位跟著一位順序傳送,通信線路一對就可以,因而簡單、成本低,多用于遠(yuǎn)距離通信,不足之處是速度慢。

        串行通信與并行通信相比更適合較遠(yuǎn)距離的計算機(jī)之間或計算機(jī)與終端設(shè)備間的信息傳輸,它的應(yīng)用范圍更廣。單片機(jī)的串行通信是通過內(nèi)部的串口電路來實(shí)現(xiàn)的,異步傳送與同步傳送是串行通信的兩種基本方式。異步傳送方式是以一個起始位表示字符的開始用停止位結(jié)束字符,以單個字符為單位傳送數(shù)據(jù),在約定的波特率下發(fā)送端與接收端同步要求不很嚴(yán)格,只要頻率誤差在1/10內(nèi)兩端即能正常通信。同步通信時發(fā)送端與接收端在約定的波特率下,保持發(fā)送與接收數(shù)據(jù)的每一位同步,因此信息的傳送位數(shù)不受限制,一次可以傳送多個字節(jié)。同步通信的缺點(diǎn)是設(shè)備較復(fù)雜、成本高。相比之下,異步通信雖然在傳輸信息時因增加了附加信息而增大了傳輸?shù)男畔⒘浚@種信息傳輸方式易于實(shí)現(xiàn)且可靠,因而被廣泛應(yīng)用。

        生產(chǎn)廠商生產(chǎn)的微處理器有可編程的輸入輸出通用接口,這些接口功能性很強(qiáng),可以通過編寫程序指揮其完成相應(yīng)的功能。例如,Intel公司在80系列微處理器中使用的8250可編程串行接口使用方便且功能性強(qiáng),被廣泛使用[5]。MCS-51單片機(jī)系列產(chǎn)品有全雙工串行可編程通信接口,初始化編程時使用PCON與SCON特殊寄存器對串口實(shí)行控制,由軟件設(shè)置波特率,通過芯片內(nèi)的計數(shù)器/定時器產(chǎn)生,采用8位、10位和11位三種幀格式,使用更方便。

        3.1 串行接口的控制寄存器

        SCON(Serial CONtrol register)與PCON(Power CO-Ntrol register)是串行接口兩個有特殊功能的控制寄存器。SCON有位尋址功能,字節(jié)地址為98H,指示串口的狀態(tài),接收與發(fā)送串行通信的方式選擇。PCON(功率控制寄存器)單元地址是87H,控制位有SMOD、SMOD0、LVDF、POF、GF1、GF0、PD、IDL等,在MCS-51系列中定時器2發(fā)生的波特率的倍率用SMOD控制[6-7],進(jìn)入掉電模式是PD(Power Down),進(jìn)入空閑模式是IDL(IDLe)。

        3.2 串行接口工作方式

        按SCON中的SMO與SM1不同選擇將串行口工作方式分為四種。

        (1)方式0。

        圖1、圖2是串行接口方式0的發(fā)送接收時序圖。該方式波特率是fosc/12,為同步移位寄存器工作方式。如圖1所示,發(fā)送數(shù)據(jù)時引腳TXD輸出同步脈沖,發(fā)送數(shù)據(jù)由引腳RXD串行發(fā)送SBUF中的數(shù)據(jù)。串行接口在數(shù)據(jù)到來時,將8位數(shù)據(jù)從RXD引腳以振蕩頻率(fosc)的1/12固定波特率由高位至低位依次輸出,完成后終端標(biāo)志TI置1,下次發(fā)送數(shù)據(jù)前將TI清0。如圖2所示,接收數(shù)據(jù)時串行接口處于方式0輸入且RI置0及REN置1,這時數(shù)據(jù)輸入端是RXD同步信號,輸出端是TXD,采樣RXD引腳輸入數(shù)據(jù)時接收器的波特率為fosc/12,完成8位數(shù)據(jù)接收后將中斷標(biāo)志RI置1,下次接收數(shù)據(jù)前將RI清0。同步位移寄存器方式是串行接口工作方式0采用的工作方式,即該工作方式輸入輸出采用的是8位移位寄存器,主要用于輸入輸出端口的擴(kuò)展[8]。工作時SCON的SM2位應(yīng)為0,用該方式完成8位數(shù)據(jù)的接收或發(fā)送后用硬件置RI或TI標(biāo)志,由軟件清除RI或TI。

        圖1 串行接口方式0的發(fā)送時序

        圖2 串行接口方式0的接收時序

        (2)方式1。

        圖3、圖4是串行接口方式1的發(fā)送接收時序圖。該方式通信接口是波特率可變的8位異步UART接口。如圖3所示,方式1發(fā)送數(shù)據(jù)時由TXD輸出數(shù)據(jù)位,1幀10位信息發(fā)送時起始位占1位,接著是從低位至高位的8位數(shù)據(jù)位,最后是1位停止位。發(fā)送緩沖區(qū)SBUF接收到1條CPU的寫入指令,執(zhí)行發(fā)送過程,數(shù)據(jù)發(fā)送完成后將TI(中斷標(biāo)志)置1。波特率的確定在方式1傳送中是由PCON(特殊功能寄存器)中SMOD的值和定時器TI的溢出率(定時器1秒的溢出次數(shù))共同決定的,可以表示為:波特率=2SMOD/32×(定時器TI的溢出率)。通過編程可以設(shè)置波特率,1位程控位SMOD有1和0兩種取值,SMOD值取1時的波特率為:1/16×(定時器TI的溢出率),SMOD值取0時的波特率為:1/32×(定時器TI的溢出率)。如圖4所示,方式1接收數(shù)據(jù)時REN為1,串行口為方式1輸入狀態(tài),采樣RXD引腳狀態(tài)是所選波特率的16倍速率,接收器是在采樣從1至0的負(fù)跳變時啟動,為確保接收信息準(zhǔn)確性,接收值應(yīng)為3次采樣至少2次相同的值[9]。在檢查到起始位有效時接收1幀的其他信息。同樣1幀10位信息接收時起始位占1位,接著是從低位至高位的8位數(shù)據(jù)位,最后是1位停止位。方式1接收有效信息時RI為0且SM2為0或停止位為1,否則該組數(shù)據(jù)丟失,接收完1幀數(shù)據(jù)時RI要清0,重新檢測RXD上1至0的負(fù)跳變。

        圖3 串行接口方式1的發(fā)送時序

        圖4 串行接口方式1的接收時序

        (3)方式2。

        圖5、圖6是串行接口方式2的發(fā)送接收時序圖。該方式通信接口是9位UART接口。SMOD為1時波特率為fosc/32;SMOD為0時波特率為fosc/64。如圖5所示,方式2TXD為發(fā)送數(shù)據(jù)輸出端,1幀11位信息發(fā)送時起始位占1位,接著是從低位至高位的8位數(shù)據(jù)位,下來是可控位1位,最后是1位停止位,其中第9位是SCON中的TB8,可作數(shù)據(jù)的奇偶校驗(yàn)位或通信中數(shù)據(jù)及地址的標(biāo)志位。SBUF接收到1條CPU的寫入指令后執(zhí)行發(fā)送過程,數(shù)據(jù)發(fā)送完成后將TI(中斷標(biāo)志)置1,向CPU再次申請中斷,下1幀信息發(fā)送前TI需清0。如圖6所示,方式2接收數(shù)據(jù)時REN為1,RXD為數(shù)據(jù)輸入端,同樣1幀11位信息接收時起始位占1位,接著是從低位至高位的8位數(shù)據(jù)位,下來是可控位1位,最后是1位停止位。方式2中接收器是在采樣從1至0的負(fù)跳變且起始位有效后接收1幀數(shù)據(jù),第9位數(shù)據(jù)接收后若RI為0并且SM2為0或接收到的第9位數(shù)據(jù)為1,則將接收到的第9位數(shù)據(jù)送入RB8,接收到的數(shù)據(jù)送入接收緩沖器(SBUF),再將RI置1。如果不滿足上述條件則數(shù)據(jù)丟失。

        圖5 串行接口方式2的發(fā)送時序

        圖6 串行接口方式2的接收時序

        (4)方式3。

        方式3通信接口是波特率可變的9位異步串行口,除波特率為:(2SMOD/32)×(定時器TI的溢出率),可設(shè)置多種波特率外,其他同方式2。

        4 單片機(jī)與電腦串口通信的C程序?qū)嵗?/h2>

        程序?qū)嵗缦耓10-13]:

        void Serial_Init(void)

        {

        TMOD=0x20; //方式2TI

        PCON=0x00; //進(jìn)入掉電模式SMOD=0,PCON=00H,PD=PCON.2=1

        TL1=TH1=BAUD_9600; //BAUD:9600

        SCON=0x50; //允許接收,REN=1,串行通信方式1

        ET1=0; //不允許中斷

        TR1=1; //開啟定時器1

        IE=0; //關(guān)閉所有中斷允許位

        memset(&SerialBuf, 0x00, SERIAL_BUF_LEN); //初始化SerialBuf[SERIAL_BUF_LEN]

        }

        /******************************************************

        ***名稱:SendByte()

        ***功能:串口發(fā)送一個字節(jié)

        ***輸入:ucData

        ***返回:無

        ***說明:無

        ******************************************************/

        void SendByte(unsigned char ucData)

        {

        SBUF=ucData;

        while(!TI)

        {

        _CLRWDT_;

        }

        TI=0;

        }

        5 結(jié)束語

        實(shí)驗(yàn)結(jié)果表明,使用C語言編寫單片機(jī)的系統(tǒng)程序,能使系統(tǒng)程序變得更易于理解,可讀性更強(qiáng),也有利于程序的移植,同時程序的穩(wěn)健性也較好。所以使用C語言編寫的單片機(jī)系統(tǒng)程序在串口通信中更加實(shí)用、便捷、可靠。

        [1] 胡漢才.單片機(jī)原理及其接口技術(shù)[M].北京:清華大學(xué)出版社,2004.

        [2] 楊恢先.單片機(jī)原理及應(yīng)用[M].長沙:國防科技大學(xué)出版社,2003.

        [3] 陳麗芳.基于單片機(jī)的嵌入式系統(tǒng)開發(fā)[J].電子測試,2015(10):13-14.

        [4] 王玉喜.淺析單片機(jī)在網(wǎng)絡(luò)中的應(yīng)用[J].黑龍江科技信息,2013(17):138-138.

        [5] 洪 沙,陽翰凌.單片機(jī)多機(jī)通信中從機(jī)串口中斷服務(wù)程序設(shè)計[J].微處理機(jī),2008,29(6):153-155.

        [6] 熊益銘.C語言在單片機(jī)串口通信中的應(yīng)用[J].電子科技,2005(8):39-42.

        [7] Dunkels A,Gronvall B,Voig T.Contiki-a lightweight and flexible operating system for tiny networked sensors[C]//Proceedings of the 29th annual IEEE international conference on local computer networks.Washington,DC,USA:IEEE Computer Society,2004:455-462.

        [8] 朱振亞.8051單片機(jī)串口通信中的檢錯方法[J].科技創(chuàng)新導(dǎo)報,2011(23):76-77.

        [9] Bhattii S,Carlson J,Dai H,et al.MANTIS OS:An embedded multithreaded operating system for wireless micro sensor platforms[J].Mobile Networks and Applications,2005,10(4):563-579.

        [10] 黃曉峰.論單片機(jī)課程教學(xué)中C語言編程的規(guī)范性[J].科教導(dǎo)刊,2015(8):127-128.

        [11] 余 勍,王 捷.淺談C語言編程技巧在C語言學(xué)習(xí)中的應(yīng)用[J].信息通信,2013(7):108-108.

        [12] 顧泰龍,李遠(yuǎn)靜.基于C語言的計算機(jī)軟件編程實(shí)驗(yàn)研究[J].軟件工程師,2013(8):39-41.

        [13] Bait R,Bicket J C,Dantas D S,et al.On the need for system-level support for ad hoc and sensor networks[J].SIGOPS Oper,2002,36(2):1-5.

        Analysis of Application of Single Chip Microcomputer in Serial Port Communication of C Language

        SUN Wei-xi

        (College of Network Security and Information Technology,Weinan Normal University,Weinan 714099,China)

        After analyzing the meaning of Single Chip Microcomputer (SCM) and the manner of work in serial port communication,combined the problem of poor readability and portability,long programming cycle and difficult debugging for single chip application system written by assembly language,it advocates to C language as programming language to write single-chip microcomputer application system in this paper and makes SCM to realize the efficient connection in many SCMs by C language,which fully shows the characteristics of SCM,such as long service life,fast operation,low noise,and reliable technique.The experiment shows that the program which made in C language is better in readability,transportability and stability.It makes serial port communication more efficient,easy and reliable and the characteristics of SCM to get more sufficient play,including low prices,strong stability,good function,and low consumption and so on.

        single chip microcomputer;application of C language;program writing;serial port communication

        2015-09-27

        2015-12-30

        時間:2016-05-25

        2012年陜西省科技計劃項(xiàng)目(2012JM8048);陜西省渭南市科技創(chuàng)新扶持資金(2012KYJ-6)

        孫衛(wèi)喜(1965-),男,高級工程師,研究方向?yàn)榫W(wǎng)絡(luò)安全、網(wǎng)絡(luò)應(yīng)用。

        http://www.cnki.net/kcms/detail/61.1450.TP.20160525.1711.064.html

        TP39

        A

        1673-629X(2016)07-0160-04

        10.3969/j.issn.1673-629X.2016.07.034

        猜你喜歡
        單片機(jī)程序
        基于單片機(jī)的SPWM控制逆變器的設(shè)計與實(shí)現(xiàn)
        電子制作(2019年13期)2020-01-14 03:15:28
        基于單片機(jī)的層次漸變暖燈的研究
        電子制作(2019年15期)2019-08-27 01:12:10
        基于單片機(jī)的便捷式LCF測量儀
        電子制作(2019年9期)2019-05-30 09:42:02
        試論我國未決羈押程序的立法完善
        小議PLC與單片機(jī)之間的串行通信及應(yīng)用
        電子制作(2018年12期)2018-08-01 00:48:04
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        基于單片機(jī)的平衡控制系統(tǒng)設(shè)計
        電子制作(2017年19期)2017-02-02 07:08:27
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        亚洲中国精品精华液| 国产精品无码不卡在线播放| 国产成人激情视频在线观看| 二区视频在线免费观看| 亚洲成熟丰满熟妇高潮xxxxx| 国产男女猛烈视频在线观看| 麻豆变态另类视频在线观看| av最新版天堂在资源在线| 午夜精品久久99蜜桃| 午夜男女很黄的视频| 国产欧美一区二区精品性色| 欧美亚洲国产丝袜在线| 亚洲综合在不卡在线国产另类| av无码电影一区二区三区| 性动态图av无码专区| 精品久久亚洲一级α| 亚洲不卡av二区三区四区| 内射干少妇亚洲69xxx| 亚洲va中文字幕无码久久不卡| 天堂av一区二区在线观看| 亚洲国产综合精品一区| 久久不见久久见免费视频6 | 午夜一区二区三区观看| 亚洲中文字幕无码一久久区| 欧美aⅴ在线| 手机av在线观看视频| 日本道免费一区二区三区日韩精品| 亚洲人成人网站在线观看| 人妻少妇不满足中文字幕| 在线观看国产av一区二区| 国产成人精品免费久久久久 | 亚洲中文字幕熟女五十| 草逼短视频免费看m3u8| 欧美金发尤物大战黑人| 美女污污网站| 久久精品国产亚洲av网在 | 亚洲国产精品综合久久网各| 亚洲国产麻豆综合一区| 人妻熟女中文字幕av| 欧美老熟妇乱xxxxx| 精品久久久久久无码国产|