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

        ?

        標(biāo)準(zhǔn)51單片機(jī)在任意時鐘頻率下產(chǎn)生任意波特率的獨(dú)特方法

        2017-03-17 07:34:16林志琦任超越
        關(guān)鍵詞:波特率串口時鐘

        林志琦, 任超越, 張 睿

        (長春工業(yè)大學(xué) 電氣與電子工程學(xué)院, 吉林 長春 130012)

        0 引 言

        隨著計算機(jī)網(wǎng)絡(luò)化與微機(jī)分級分布式應(yīng)用系統(tǒng)的發(fā)展,通信在各方面顯得尤為重要。通信是指計算機(jī)與外界進(jìn)行信息傳輸,既包含計算機(jī)和計算機(jī)之間的傳輸,也包括計算機(jī)和外部設(shè)備,例如終端、掃描儀和移動硬盤等設(shè)備之間的傳輸[1]。單片機(jī)的串口通信是自動化工業(yè)、智能終端、光電系統(tǒng)等領(lǐng)域非常重要的信息傳輸手段。在光電系統(tǒng)中,單片機(jī)一般充當(dāng)控制器的角色,通過串口發(fā)送一定格式的數(shù)據(jù)來控制與之相連設(shè)備的動作,同時設(shè)備也會將一些自身的狀態(tài)信息反饋給單片機(jī),供單片機(jī)進(jìn)行判斷并進(jìn)行相應(yīng)的控制[2]。例如對云臺的控制,當(dāng)鍵盤輸入信息時,單片機(jī)和軟件相互配合對信息進(jìn)行識別,根據(jù)所識別的信息向云臺中的步進(jìn)電機(jī)發(fā)出指令,實現(xiàn)對方向角、俯仰角控制、速度控制和程序控制等功能[3]。云臺控制器通常以單片機(jī)為核心,通過單片機(jī)串口通信實現(xiàn)控制。

        文中對標(biāo)準(zhǔn)51單片機(jī)串口數(shù)據(jù)傳輸?shù)姆绞竭M(jìn)行了改進(jìn)。標(biāo)準(zhǔn)51單片機(jī)在進(jìn)行串口傳輸數(shù)據(jù)時存在不足,當(dāng)串口傳輸速度增加時,波特率誤差將會增大,隨著誤差的增大,傳輸?shù)臄?shù)據(jù)會出現(xiàn)錯誤,直接影響了串口傳輸?shù)馁|(zhì)量。文中經(jīng)過對標(biāo)準(zhǔn)51單片機(jī)傳輸方式的改進(jìn),串口波特率誤差明顯減小,串口傳輸質(zhì)量顯著提高。

        1 51單片機(jī)的結(jié)構(gòu)及傳輸方式

        標(biāo)準(zhǔn)的51單片機(jī)有2個16位的定時計數(shù)器,2個外部中斷,5個中斷源,1個全雙工的異步串行通信接口[4]。在標(biāo)準(zhǔn)的51單片機(jī)中,沒有專門的波特率發(fā)生器,而是由定時計數(shù)器T1的溢出作為串口數(shù)據(jù)傳輸?shù)亩〞r基準(zhǔn)。在標(biāo)準(zhǔn)51單片機(jī)剛推出時,串口的數(shù)據(jù)傳輸速率在300~2 400 bit/s,傳輸每位二進(jìn)制數(shù)的時間在416~3 300 μs之間,而當(dāng)時的51單片機(jī)指令周期為1 μs,采用8位自動加載的工作方式時,最大溢出時間為256 μs,不能達(dá)到傳輸一位數(shù)據(jù)所需的時間。為了滿足416~3 300 μs的定時時間,標(biāo)準(zhǔn)51單片機(jī)的設(shè)計者在定時T1的溢出與串行數(shù)據(jù)收發(fā)移位寄存器之間加入了一個16/32進(jìn)制可選的計數(shù)器,對定時計數(shù)器的溢出進(jìn)行分頻,使其定時時間得到延長,從而滿足416~3 300 μs的定時需求[5],其工作原理如圖1所示。

        圖1 51單片機(jī)波特率發(fā)生器工作原理圖

        2 標(biāo)準(zhǔn)51單片機(jī)串口傳輸?shù)恼`差分析

        標(biāo)準(zhǔn)51單片機(jī)每計一個數(shù)的時間為一個機(jī)器周期,一個機(jī)器周期等于12個時鐘周期,如果用12 MHz晶振時產(chǎn)生9 600 bit/s的波特率,其誤差為3.3%,它是指傳輸一位數(shù)據(jù)的誤差,當(dāng)傳輸一幀數(shù)據(jù)時的誤差為33%,隨著誤差的增大,傳輸?shù)臄?shù)據(jù)會出現(xiàn)錯誤,其誤差過大的原因如下:

        采用波特率計算公式:

        (1)

        (2)

        式中:X----定時器初值。

        這里以晶振頻率12 MHz,SMOD=0,波特率=9 600 bit/s為例, 根據(jù)式(1)、式(2)推導(dǎo)出:

        (3)

        由式(3)可以看出,如果定時器初值X想得到一個整數(shù)值,那么晶振頻率必須是波特率乘以32再乘以12的整數(shù)倍,通過計算可知6、12、 24 MHz等晶振頻率都不是波特率乘以32再乘以12的整數(shù)倍,所以X不可能為整數(shù)值,然而在裝載定時器初值時,X必須為整數(shù)(因為單片機(jī)計時時只能記錄整數(shù)個時鐘周期),所以產(chǎn)生誤差,其誤差產(chǎn)生的來源是由于T1溢出率存在誤差。選擇9 600 bit/s的波特率,傳送一個位數(shù)據(jù)所需要的時間為104.167 μs,那么

        (4)

        其中,T1溢出率在6、12、24 MHz等晶振頻率下(見圖1),經(jīng)過16分頻和2分頻,在SMOD=0時,根據(jù)式(4)T1的誤差放大了32倍,造成了誤差大于3.3%無法發(fā)送準(zhǔn)確數(shù)據(jù)的情況,所以51單片機(jī)在6、12、24 MHz等晶振頻率下無法產(chǎn)生任意波特率。

        由于標(biāo)準(zhǔn)的51單片機(jī)的這種結(jié)構(gòu),當(dāng)串口通信速度由300~2 400 bit/s提高到9 600~115 200 bit/s,甚至256 000 bit/s時,就會出現(xiàn)誤差大于3.3%的情況,這也是標(biāo)準(zhǔn)51單片機(jī)設(shè)計的一個缺陷。以9 600 bit/s的波特率為例進(jìn)行分析。9 600 bit/s的串行數(shù)據(jù)傳輸速率,傳輸每位二進(jìn)制數(shù)據(jù)所需的時間為1/9 600=104.167 μs,這時要求T1的溢出時間為104.167 μs/32=3.255 μs或104.167 μs/16=6.510 μs,在通常的12 MHz時鐘頻率下,計數(shù)時間單位是1 μs,要產(chǎn)生3.255 μs或6.510 μs的延時,只能用3 μs或4 μs近似,這時的誤差為

        這樣采取舍入的方法誤差見表1。

        由表1可見,誤差已超過了最大誤差3.3%。標(biāo)準(zhǔn)51單片機(jī)發(fā)送一幀數(shù)據(jù)時,每3位檢測一次,以每個數(shù)據(jù)幀10位數(shù)據(jù),能識別的最大誤差為33%計算,則每個數(shù)據(jù)位的誤差應(yīng)小于(33%)/10=3.3%。

        表1 在時鐘頻率為12 MHz、波特率為9 600 bit/s的情況下傳輸每位二進(jìn)制數(shù)的時間誤差

        通過上面的分析知道,在波特率增加后,每位二進(jìn)制數(shù)據(jù)位的傳輸時間變短,而這個時間的16或32分之一就更小,而這時定時計數(shù)器以1 μs為時間單位的情況下,小數(shù)點后面的舍取對定時時間的影響很大,即這個誤差被放大了16倍或32倍[6]。定時時間大一個或小一個時間單位,它們的誤差都超過了3.3%。也就是由于標(biāo)準(zhǔn)51單片機(jī)波特率產(chǎn)生方式的特殊結(jié)構(gòu),在6、12、24 MHz等時頻都超過了3.3%。也就是說,由于標(biāo)準(zhǔn)51單片機(jī)波特率產(chǎn)生方式的特殊結(jié)構(gòu),在6、12、24 MHz等時頻率下產(chǎn)生不了任意的波特率。

        在實際工作中,通常采用可行的方法是選擇一個小數(shù)時鐘頻率,如11.059 2 MHz,或22.118 4 MHz,此時可以產(chǎn)生9 600,19 200和38 400的波特率,但很難產(chǎn)生57 600和115 200等其他波特率。同時由于采用非整數(shù)時鐘頻率,使得定時很難產(chǎn)生整數(shù)的定時時間。而在標(biāo)準(zhǔn)的51單片機(jī)中為了產(chǎn)生整數(shù)的定時時間,通常采用6、12、24 MHz等時鐘頻率,為了解決這一矛盾,文中提出了一種可以讓標(biāo)準(zhǔn)51單片機(jī)在6、12、24 MHz等時鐘頻率下產(chǎn)生任意波特率的獨(dú)特、新穎的方法。

        3 任意時鐘頻率下產(chǎn)生任意的波特率的方法

        由以上分析可知,產(chǎn)生波特率誤差的原因由于對定時器T1的溢出時間進(jìn)行了1/16或1/32的分頻,使得定時器T1的溢出時間變短并且?guī)в行?shù),同時誤差也被放大了,實現(xiàn)這種去掉誤差放大現(xiàn)象的方法如圖2所示。

        (a) 累積誤差

        (b) 特殊方法

        (c) 自動重新加載

        標(biāo)準(zhǔn)51單片機(jī)的波特率累計誤差信號的產(chǎn)生見圖2(a),從圖中可以看到,收發(fā)一位串行數(shù)據(jù)的時間被平均分為16份或32份,這樣對每份的精度要求就提高了很多,如果采取特殊的方法,不是平均分配每次溢出的時間,那么就可以減小對每次溢出的精度要求,基于這種想法,我們將16次(或32次)溢出分為兩部分,一部分是連續(xù)的快速15次(或31次)溢出[7],此時定時器T1的初值為0FFH,定時器只需一個定時脈沖就可以溢出,這樣需要15個(或31個)時間單位,另外一部分定時時間為串行數(shù)據(jù)傳輸一位所需的時間減去那15(或31個)個單位時間,此時上電初始化的TL1的值由這個時間確定:

        (5)

        標(biāo)準(zhǔn)51單片機(jī)的定時器工作方式為自動重新加載方式[8],開始定時由TL1中的初值開始進(jìn)行加計數(shù),加到0FFH后再加一溢出,同時把其他TH1中的數(shù)值0FFH自動加載到TL1中,繼續(xù)進(jìn)行第二次定時,在上電初始化時TL1滿足傳輸一位二進(jìn)制數(shù)減去15(或31)的定時時間值,這樣就可以高精度的實現(xiàn)總的溢出時間為傳輸一位二進(jìn)制數(shù)時間的波特率(發(fā)生器見圖2(b))。當(dāng)然還有一個最大的問題,這種方法只能產(chǎn)生一次,滿足要求的波特率發(fā)生器定時,因為除了第一次的定時時間為初始化時的TL1值外,以后就都是由重新加載值0FFH了,為了重復(fù)以上過程,不斷產(chǎn)生滿足要求的波特率信號,在連續(xù)送15(31)次連續(xù)快速的溢出后要重新初始化一次TL1,這個任務(wù)由定時器T0完成[9]。

        將T0定時時間為傳輸一幀數(shù)據(jù)的時間[10]。在T0中斷服務(wù)程序中,對TL1重新初始化一次,TH1仍然保持0FFH不變,就可以使上面的高精度波特率發(fā)生過程不斷重復(fù)下去(見圖2(c))。

        經(jīng)過在多種型號的標(biāo)準(zhǔn)51單片機(jī)上實驗驗證時得到的實驗數(shù)據(jù)見表2。

        表2 標(biāo)準(zhǔn)51單片機(jī)在6、12、24 MHz的時鐘頻率下產(chǎn)生任意的波特率的初始值

        根據(jù)實驗,傳輸一位數(shù)據(jù)的時間波形如圖3所示。

        (a) 改善之前

        (b) 改善之后

        沒有改進(jìn)之前的波形見圖3(a),傳輸一位數(shù)據(jù)所需要的時間為94.57 μs,而理論上波特率為9 600時,所需要的時間為104.167 μs,此時傳輸每位二進(jìn)制數(shù)的誤差為-9.21%。不能準(zhǔn)確收發(fā)數(shù)據(jù),改進(jìn)之后傳輸數(shù)據(jù)波形見圖3(b)。傳輸一位數(shù)據(jù)所需要的時間為104.63 μs,此時傳輸每位二進(jìn)制數(shù)據(jù)的誤差為0.44%;數(shù)據(jù)收發(fā)無誤。

        標(biāo)準(zhǔn)51單片機(jī)在6、12、24 MHz的時鐘頻率下產(chǎn)生任意的波特率的測試程序:

        #include /* special function register declarations */

        void main (void)

        {

        PCON = 0x80;

        SCON = 0x50;/* SCON: mode 1, 8-bit UART, enable rcvr */

        TMOD |= 0x22; /* TMOD: timer 1, timer 0, mode 2, 8bit reload */

        TH1 = 0xff; /* TH1: reload value for 1200 baud @ 16MHz */

        TL1 = 237; /*show tab 1*/

        TH0 = 231; /*abut baud show tab 1 */

        TL0 = 231; /*show tab 1*/

        TCON = 0x50; /* :timer 1 & timer 0 run whih one time */

        PT0 = 1;

        ET0 = 1;

        EA = 1;

        while (1) { /* test progrqm loop output to uart 0~255 */

        char i;

        for(i=0;i<255;i++)

        {

        SBUF=i;

        while (!TI)

        {}

        TI=0;

        }

        }

        }

        void plus_int1(void) interrupt 1

        {

        TL1 = 237; /*show tab 1*/

        }

        4 結(jié) 語

        根據(jù)標(biāo)準(zhǔn)51單片機(jī)串口傳輸?shù)娜毕荩岢隽宋闹刑厥飧倪M(jìn)方法,并介紹了這種特殊方法的工作原理。實驗結(jié)果證明,對標(biāo)準(zhǔn)51單片機(jī)串口傳輸?shù)姆绞礁倪M(jìn)后,串口傳輸一位的誤差為0.44%,相比改進(jìn)之前的誤差有了明顯的改善。實現(xiàn)了標(biāo)準(zhǔn)51單片機(jī)在6、12、24 MHz等時鐘頻率下能夠產(chǎn)生任意的波特率。

        [1] 李鵬.MCS-51系列單片機(jī)串行通信波特率的研究[J].電腦知識與技術(shù),2013(28):6265-6267.

        [2] 宣明.微型機(jī)械及相關(guān)理論和技術(shù)[J].光學(xué)精密工程,1994,2(3):1-5.

        [3] 韓雙喜.基于DSP的運(yùn)動姿態(tài)控制系統(tǒng)設(shè)計[J].世界電子元器件,2013(2):44-47.

        [4] 陳粵初,竇振中.單片機(jī)應(yīng)用系統(tǒng)設(shè)計與實踐[M].北京:北京航空航天大學(xué)出版社,1991.

        [5] 李會杰,李俊廷,張偉,等.一種51系列單片機(jī)的解密方法[J].長春工業(yè)大學(xué)學(xué)報,2017,38(4):335-339.

        [6] 于建群,王立鼎,劉軍山.集成毛細(xì)血管電泳芯片的結(jié)構(gòu)及其制作技術(shù)研究進(jìn)展[J].中國機(jī)械工程,2003,14(2):166-175.

        [7] 徐駿平,胡兵,馬平化,等.USB接口技術(shù)在激光打標(biāo)中的應(yīng)用[J].激光雜志,2006,27(3):77-78.

        [8] 陳翠華,柴金華.模數(shù)轉(zhuǎn)換與波特率設(shè)置對大氣激光語音通信質(zhì)量的影響[J].量子電子學(xué)報,2006,32(2):225-230.

        [9] 林志琦,李會杰,郎永輝,等.用四象限光電探測器獲得光斑參數(shù)[J].光學(xué)精密工程,2009,17(4):764-770.

        [10] 張新寶,王海璇,周勝利,等.基于串口提高M(jìn)CU-51矩形單脈沖脈寬精度的方法[J].吉林大學(xué)學(xué)報,2016,34(4):496-500.

        猜你喜歡
        波特率串口時鐘
        別樣的“時鐘”
        淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
        古代的時鐘
        CAN 總線波特率自適應(yīng)程序設(shè)計
        智能制造(2020年5期)2020-07-03 06:24:00
        基于FPGA的異步串行通信波特率容錯設(shè)計
        電子測試(2018年7期)2018-05-16 06:27:18
        有趣的時鐘
        時鐘會開“花”
        USB接口的多串口數(shù)據(jù)并行接收方法探索
        基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實時無線通信
        地礦測繪(2015年3期)2015-12-22 06:27:26
        基于并行控制的FPGA多串口拓展實現(xiàn)
        国产精品久久国产三级国电话系列| 国产美女冒白浆视频免费| 国产白浆流出一区二区| 久久精品国产亚洲av影院毛片| 一本色道久久亚洲综合| 三年中文在线观看免费大全| 日韩精品大片在线观看| 亚洲色欲久久久综合网| 少妇人妻字幕一区二区| 情爱偷拍视频一区二区| 欧美成人免费全部| 亚洲中文字幕在线爆乳| 性色av一区二区三区四区久久| 放荡成熟人妻中文字幕| 浓毛老太交欧美老妇热爱乱| 国语精品一区二区三区| 久久精品国产热| 美国又粗又长久久性黄大片| 无套内谢孕妇毛片免费看| 男女性高爱潮免费网站| 亚洲h视频| 国产精品一区二区资源| 国产一级r片内射免费视频| 中文字幕乱码亚洲在线| 国产 精品 自在 线免费| 日本护士吞精囗交gif| 午夜无码无遮挡在线视频| 白白色福利视频在线观看| 红桃av一区二区三区在线无码av | 我把护士日出水了视频90分钟| 99在线播放视频| 男女视频网站免费精品播放| 免费av片在线观看网址| 国自产精品手机在线观看视频 | 综合久久久久6亚洲综合| 久久亚洲精精品中文字幕早川悠里| 丰满女人猛烈进入视频免费网站 | 国产啪精品视频网站| 国产999视频| 日韩精品极品免费在线视频 | 日本少妇浓毛bbwbbwbbw|