㈠ 什麼是波特率在51單片機中如何使用
波特率就是一秒種傳輸0或1的個數,若波特率是9600那麼它傳輸一位0或1的時間就是1/9600秒如果串口工作在方式一下波特率是9600晶振是11059200
定時器選用timer1的自動重裝模式
即1/9600=定時時間
就是1/9600=(12*32/11059200)*(256-定時初值)。那麼
定時初值=256-(11059200/(12*32*9600));
這里的32是51單片機的硬體典型結構,串口通信使用的頻率是晶振頻率的1/32或者1/16,但是這種模式下,限制了波特率的提高,因此,現在一些改進的51單片機是1/2分頻。
㈡ MCS-51單片機串口四種工作方式的波特率如何確定
1、串口屏和軟體成功聯機之後,左上角會顯示當前波特率。
㈢ 51單片機波特率計算公式和定時器初值
51單片機晶元的串口可以工作在幾個不同的工作模式下,其工作模式的設置就是使用SCON 寄存器。它的各個位的具體定義如下:
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0、SM1 為串列口工作模式設置位,這樣兩位可以對應進行四種模式的設置。串列口工作模式設置。
波特率在使用串口做通訊時,一個很重要的參數就是波特率,只有上下位機的波特率一樣時才可以進行正常通訊。波特率是指串列埠每秒內可以傳輸的波特位數。這里所指的波特率,如標准9600 不是每秒種可以傳送9600個位元組,而是指每秒可以傳送9600 個二進位,而一個位元組要8 個二進位,如用串口模式1 來傳輸那麼加上起始位和停止位,每個數據位元組就要佔用10 個二進位,9600 波特率用模式1 傳輸時,每秒傳輸的位元組數是9600÷10=960 位元組。
51晶元的串口工作模式0的波特率是固定的,為fosc/12,以一個12M 的晶振來計算,那麼它的波特率可以達到1M。模式2的波特率是固定在fosc/64 或fosc/32,具體用那一種就取決於PCON 寄存器中的SMOD位,如SMOD 為0,波特率為focs/64,SMOD 為1,波特率為focs/32。
模式1和模式3的波特率是可變的,取決於定時器1或2(52晶元)的溢出速率,就是說定時器1每溢出一次,串口發送一次數據。那麼我們怎麼去計算這兩個模式的波特率設置時相關的寄存器的值呢?可以用以下的公式去計算。
上式中如設置了PCON寄存器中的SMOD位為1時就可以把波特率提升2倍。通常會使用定時器1工作在定時器工作模式2下,這時定時值中的TL1做為計數,TH1做為自動重裝值,這個定時模式下,定時器溢出後,TH1的值會自動裝載到TL1,再次開始計數,這樣可以不用軟體去干預,使得定時更准確。在這個定時模式2下定時器1溢出速率的計算公式如下:
溢出速率=(計數速率)/(256-TH1初值)
溢出速率=fosc/[12*(256-TH1初值)]
上式中的「計數速率」與所使用的晶體振盪器頻率有關,在51 晶元中定時器啟動後會在每一個機器周期使定時寄存器TH 的值增加一,一個機器周期等於十二個振盪周期,所以可以得知51晶元的計數速率為晶體振盪器頻率的1/12,一個12M 的晶振用在51晶元上,那麼51的計數速率就為1M。通常用11.0592M 晶體是為了得到標準的無誤差的波特率,那麼為何呢?計算一下就知道了。如我們要得到9600 的波特率,晶振為11.0592M 和12M,定時器1 為模式2,SMOD 設為1,分別看看那所要求的TH1 為何值。代入公式:
11.0592M
9600=(2÷32)×((11.0592M/12)/(256-TH1))
TH1=250
12M
9600=(2÷32)×((12M/12)/(256-TH1))
TH1≈249.49
上面的計算可以看出使用12M晶體的時候計算出來的TH1不為整數,而TH1的值只能取整數,這樣它就會有一定的誤差存在不能產生精確的9600 波特率。當然一定的誤差是可以在使用中被接受的,就算使用11.0592M 的晶體振盪器也會因晶體本身所存在的誤差使波特率產生誤差,但晶體本身的誤差對波特率的影響是十分之小的,可以忽略不計。
㈣ 51單片機串口通信波特率若可變,由誰確定
您好!很高興為您解答問題,以下是我為您提供的解答內容:
你串口初始化那裡的設置波特率是4800而不是9600
你在主程序中已經無條件地執行了這個display(dat - 48)程序,你可以把while(1)改成由標志位判定有無接收到串口數據,有才置位標志位,進行顯示。
㈤ 51單片機的串口波特率問題
51串口有幾種工作方式,每種波特率都不盡相瞎明同,最常用的是方式一,其波特芹余率由定時器T1的溢出率決定,T1溢出率=Fosc/{12*【256-TH1】}
baudrate=(2^SMOD/32)*T1溢磨首告出率
一般默認SMOD=0;無需設置,需要波特率翻倍時SMOD=1
Fosc=22.1184M,你可以計算一下最高波特率,整數的....
㈥ 51單片機波特率如何設置
51單片機波特率設置主要有以下兩種方式:1) 工作方式0 ,2)工作方式1 。x0dx0a1) 工作方式0 x0dx0aSM0=0且SM1=0時,串口選擇工作方式0,實質這是一種同步移位寄存器模式。 其數據傳輸的波特率固定為Fosc/12,數據由RXD引腳輸入或輸出,同步時鍾由TXD引腳輸出。x0dx0a2)工作方式1 x0dx0a當SM0=0且SM1=1時,串口選擇工作方式1,其數據傳輸的波特率由定時/計數器T1、T2的溢出速率決定,可通過程序設定。當T2CON寄存器中的RCLK和TCLK置位時,用T2作為發送和接收波特率發生器,而RCLK=TCLK=0時,用T1作為波特率發生器,兩者還可以交叉使用,即發送和接收採用不同的波特率。數據由TXD引腳發送,由RXD引腳接收。