導航:首頁 > 操作系統 > 51單片機波特率的計算

51單片機波特率的計算

發布時間:2022-11-28 18:14:55

① 已經51單片機的晶振頻率是12MHZ 要產生4800BPS的波特率 問波特率的計算公式 還有 計算 TH1 TL1的初始值

串列口的四種工作方式對應三種波特率。由於輸入的移位時鍾的來源不同,所以,各種方式的波特率計算公式也不相同。
方式0的波特率 = fosc/12
方式2的波特率 =((2^SMOD)/64)• fosc
方式1的波特率 =((2^SMOD)/32)•(T1溢出率)
方式3的波特率 =((2^SMOD)/32)•(T1溢出率)
注意:SMOD為PCON寄存器的最高位(即PCOM<7>)。
T1 溢出率 = fosc /{12×[256 -(TH1)]} --將該公式代人方式1或3
最後推出公式:TH1=256-(fosc*2^SMOD)/(baudrate*12*32);
呵呵
如果你用方式2(波特率 =((2^SMOD)/64)• fosc )的話
12M的晶振就不能得到9600波特率了(除非你改變你的晶振,但是那樣的晶振好像沒有賣) 所以你只能選擇方式1或3
而且12M的晶振在串口傳輸時會有誤差,就如你上面算的那樣結果會有小數點
TH1又只能是整數的 所以傳輸時會有誤差.
參考:
#include<reg51.h>
#define baudrate 9600UL
#define fosc 11059200UL//其中,UL是不能省略的,代表長整型。
unsigned char a,flag;
void serial_init(void)
{ unsigned char S_MOD=1;
TMOD=0x20;//T1工作在方式2
SCON=0x50;//SM0=0 SM1=1->串口通信在模式1,
//SM2=0->多級通信中使用的位,REN=1;
PCON=0;
if((PCON&0x80)==0x80) S_MOD=2;
TH1=256-(fosc*S_MOD)/(baudrate*12*32);//其中SMOD=0,
TL1=256-(fosc*S_MOD)/(baudrate*12*32);
TR1=1;ES=1;EA=1;
}

② 51單片機中波特率設置計算問題

波特率應該和T1有關,和T0沒有什麼關系。

11059200是晶振頻率,baud是波特率,例如 9600

12是指時鍾周期數。

③ 51單片機定時計數器溢出率計算和串口的波特率之間的關系

串口工作在方式1和3,則波特率由定時器T1的溢出率來決定,關系如下:
波特率 = ((2^SMOD)/32)*T1溢出率,
這里T1溢出率 = fosc/[12×(28-X)],則:
波特率=((2^SMOD)/32)×fosc/[12×(28-X)]
2^SMOD是2的SMOD次方,SMOD是波特率是否要加倍的控制位,默認是0,
fosc就是晶振的值,
X就是裝入TH1的值。

④ 51單片機串列口工作在方式0,如何求波特率,及定時器初值!

方式0的波特率是系統時鍾的十二分之一,為固定波特率,與定時器無關
定時器計算: 溢出中斷的定時器 指令周期是 系統時鍾的十二分之一 ,16方式
fosc=11.0592M
fcyc=11059200/12 , 定時時間 tmer ms
TH=(65535-timer*1000/fcyc)/256
TL=(65535-timer*1000/fcyc)%256

⑤ 單片機:請教一下,這里的波特率是怎麼算的呢

這個應該是標準的51,以12除頻來計算的,51晶元的串口工作模式0的波特率是固定的,為fosc/12,以一個12M的晶振來計算,那麼它的波特率可以達到1M。模式2的波特率是固定在fosc/64或fosc/32,具體用那一種就取決於PCON寄存器中的SMOD位,如SMOD為0,波特率為focs/64,SMOD為1,波特率為focs/32。因此1除以12再除以32就是除以384.

⑥ 單片機波特率計算問題

溢出速率=fosc/[12*(256-TH1初值)]

比如晶振為11.0592MHz,波特率不加倍,那麼

波特率=(1/32)*11059200/12/(256-TH1初值)

如果波特率要求為9600

那麼TH1初值=256-11059200/12/32/9600=256-3

⑦ 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單片機波特率公式

而:

溢出速率=(計數速率)/(256-TH1初值) =(fosc/12)/(256 - TH1初值)

先記住吧;

另外,糾正一下,不是一個位元組要採集16次檢測,而是一個二進制位要採集16次;

⑩ 單片機串列口方式0、方式1的初始化,方式1波特率的計算

51單片機 波特率= 計數器或定時器的溢出速率 / n
在用串口方式1時 計數器或定時器的溢出速率=計數速率 / (256-THx)
這中的n與你單片機在PCON中SMOD位的設置有關,
SMOD設為 1 時 n=32
SMOD設為 0 時 n=16
因T1在做波特率發生器時TH1中是重(再)裝載的值
發送完成 SCON中的 ti 位為 1
新接收到信息 SCON中的 ri 位為 1
特別要注意的是二個中斷標志位和其它的中斷標志位全不一樣,中斷RETI返回指令不能對它們清除
必須在程序中用軟體去清除,否則會對你無完無了的中斷,嘿嘿!

閱讀全文

與51單片機波特率的計算相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:736
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163