999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

單片機在C語言串口通信中的應用解析

2016-02-27 06:32:25孫衛喜
計算機技術與發展 2016年7期
關鍵詞:單片機程序

孫衛喜

(渭南師范學院 網絡安全與信息化學院,陜西 渭南 714099)

單片機在C語言串口通信中的應用解析

孫衛喜

(渭南師范學院 網絡安全與信息化學院,陜西 渭南 714099)

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

單片機;C語言應用;程序編寫;串口通信

1 概 述

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

單片機的發展歷程可分為5個階段。

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

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

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

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

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

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

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

2 單片機的特點

(1)單片機設計采用總線結構內部布線很短,將各功能的部件都集成在一塊芯片上,常數和程序指令等在ROM中固化,因而,體積小、性能穩定、抗干擾能力強。

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

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

(4)單片機性能價格比極高,隨著技術的發展及單片機尋址范圍和ROM容量的擴大,再加之單片機開發周期短、硬件結構簡單,使單片機在技術性能及產品價格上更具優勢。

(5)對單片機系統通過編寫不同的程序高效穩定地實現設備的不同功能特征,特別是用C語言編程的單片機系統程序可讀性更強,易于理解,也有利于程序的移植。

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

3 串行通信

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

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

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

3.1 串行接口的控制寄存器

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

3.2 串行接口工作方式

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

(1)方式0。

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

圖1 串行接口方式0的發送時序

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

(2)方式1。

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

圖3 串行接口方式1的發送時序

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

(3)方式2。

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

圖5 串行接口方式2的發送時序

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

(4)方式3。

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

4 單片機與電腦串口通信的C程序實例

程序實例如下[10-13]:

void Serial_Init(void)

{

TMOD=0x20; //方式2TI

PCON=0x00; //進入掉電模式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; //關閉所有中斷允許位

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

}

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

***名稱:SendByte()

***功能:串口發送一個字節

***輸入:ucData

***返回:無

***說明:無

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

void SendByte(unsigned char ucData)

{

SBUF=ucData;

while(!TI)

{

_CLRWDT_;

}

TI=0;

}

5 結束語

實驗結果表明,使用C語言編寫單片機的系統程序,能使系統程序變得更易于理解,可讀性更強,也有利于程序的移植,同時程序的穩健性也較好。所以使用C語言編寫的單片機系統程序在串口通信中更加實用、便捷、可靠。

[1] 胡漢才.單片機原理及其接口技術[M].北京:清華大學出版社,2004.

[2] 楊恢先.單片機原理及應用[M].長沙:國防科技大學出版社,2003.

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

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

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

[6] 熊益銘.C語言在單片機串口通信中的應用[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].科技創新導報,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] 黃曉峰.論單片機課程教學中C語言編程的規范性[J].科教導刊,2015(8):127-128.

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

[12] 顧泰龍,李遠靜.基于C語言的計算機軟件編程實驗研究[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年陜西省科技計劃項目(2012JM8048);陜西省渭南市科技創新扶持資金(2012KYJ-6)

孫衛喜(1965-),男,高級工程師,研究方向為網絡安全、網絡應用。

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

猜你喜歡
單片機程序
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
小議PLC與單片機之間的串行通信及應用
電子制作(2018年12期)2018-08-01 00:48:04
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于單片機的平衡控制系統設計
電子制作(2017年19期)2017-02-02 07:08:27
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 国产在线视频自拍| 色综合天天操| 日本道综合一本久久久88| 玖玖精品视频在线观看| 欧美人人干| 久久黄色免费电影| 免费A级毛片无码免费视频| 黄色福利在线| 日韩欧美国产精品| 日韩中文无码av超清| 国产91特黄特色A级毛片| 国产在线精品美女观看| 日韩免费毛片视频| 伊人天堂网| 亚洲婷婷丁香| 美女无遮挡免费网站| 久久美女精品国产精品亚洲| 亚洲成在人线av品善网好看| 最近最新中文字幕免费的一页| 久久久久久久97| 免费高清a毛片| 女人18毛片久久| 69综合网| a亚洲天堂| 亚洲 欧美 偷自乱 图片| 这里只有精品在线| 精品国产网站| 欧美在线网| 欧美在线视频不卡| 午夜激情福利视频| 亚洲最黄视频| 国产精品一区二区在线播放| 久久久黄色片| 国产va免费精品观看| 特级做a爰片毛片免费69| 国产精品妖精视频| 欧美a在线看| 精品亚洲国产成人AV| 国产美女丝袜高潮| 99久久精品久久久久久婷婷| 97在线国产视频| 国产精品黑色丝袜的老师| 日韩一级二级三级| 91精品综合| 成人午夜福利视频| 亚洲午夜综合网| 999精品免费视频| 露脸一二三区国语对白| 99视频有精品视频免费观看| 国产精品无码制服丝袜| 一级在线毛片| 亚洲一级毛片在线观播放| 国产精品亚洲专区一区| 欧美人在线一区二区三区| 国产欧美另类| 999国产精品| 国产精品福利导航| 亚洲综合在线最大成人| 一级毛片中文字幕| 午夜国产大片免费观看| 国产精品一区二区无码免费看片| 国产三级毛片| аv天堂最新中文在线| 亚洲婷婷在线视频| 日本午夜三级| 亚洲国产精品成人久久综合影院| 国产亚洲欧美在线专区| 日韩A∨精品日韩精品无码| 日本尹人综合香蕉在线观看 | 99久久无色码中文字幕| 亚洲91在线精品| 亚洲成人播放| 在线观看亚洲精品福利片| 欧美精品在线视频观看| 人妻一区二区三区无码精品一区| 国内a级毛片| 久久性视频| 亚洲成在线观看| 国内丰满少妇猛烈精品播| 99久久精品免费视频| 在线看国产精品| 欧美色视频网站|