導航:首頁 > 操作系統 > 單片機波特率選擇程序

單片機波特率選擇程序

發布時間:2022-09-08 03:24:23

Ⅰ 如何設置波特率

51單片機波特率設置主要有以下兩種方式:1) 工作方式0 ,2)工作方式1 。
1) 工作方式0
SM0=0且SM1=0時,串口選擇工作方式0,實質這是一種同步移位寄存器模式。 其數據傳輸的波特率固定為Fosc/12,數據由RXD引腳輸入或輸出,同步時鍾由TXD引腳輸出。
2)工作方式1
當SM0=0且SM1=1時,串口選擇工作方式1,其數據傳輸的波特率由定時/計數器T1、T2的溢出速率決定,可通過程序設定。當T2CON寄存器中的RCLK和TCLK置位時,用T2作為發送和接收波特率發生器,而RCLK=TCLK=0時,用T1作為波特率發生器,兩者還可以交叉使用,即發送和接收採用不同的波特率。數據由TXD引腳發送,由RXD引腳接收。

Ⅱ 51單片機串口通信時,程序波特率設定4800同時使SMOD=1波特率倍增

使SMOD=1的時候是指將波特率2400加倍,最終加倍後的為波特率4800,因此通信速率增大
程序波特率設定4800並且使SMOD=0時,這時候應該使用波特率2400進行通信,通信速率降低。
當單片機晶振使用12MHZ的時候,串口通信會有誤差,使用SMOD加倍會減少誤差。
--------網上搜不到答案,所以查詢資料後回答,供後人參考

Ⅲ 51單片機波特率如何設置

51單片機波特率設置主要有以下兩種方式:1) 工作方式0 ,2)工作方式1 。
1) 工作方式0
SM0=0且SM1=0時,串口選擇工作方式0,實質這是一種同步移位寄存器模式。 其數據傳輸的波特率固定為Fosc/12,數據由RXD引腳輸入或輸出,同步時鍾由TXD引腳輸出。
2)工作方式1
當SM0=0且SM1=1時,串口選擇工作方式1,其數據傳輸的波特率由定時/計數器T1、T2的溢出速率決定,可通過程序設定。當T2CON寄存器中的RCLK和TCLK置位時,用T2作為發送和接收波特率發生器,而RCLK=TCLK=0時,用T1作為波特率發生器,兩者還可以交叉使用,即發送和接收採用不同的波特率。數據由TXD引腳發送,由RXD引腳接收。

Ⅳ 單片機波特率怎麼選擇

一般最小用最小那個,最大用最大那個, 不會有什麼問題,會根據時鍾自己選合適的波特率

Ⅳ MCS-51單片機串口四種工作方式的波特率如何確定

1、串口屏和軟體成功聯機之後,左上角會顯示當前波特率。

Ⅵ 51單片機波特率如何設置啊

串列口的四種工作方式對應三種波特率。由於輸入的移位時鍾的來源不同,所以,各種方式的波特率計算公式也不相同。
方式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;
}

Ⅶ 我用STC15W408AS單片機,晶振選11.0592M,要實現波特率9600,用P3.0,P3.

你生成波特率的時候選擇12T
試試哦,
我上次就是這樣的,
選成12T的,生成的波特率就很好用了
SCON
=
0x50;
//8位數據,可變波特率
AUXR
&=
0xBF;
//定時器1時鍾為Fosc/12,即12T
AUXR
&=
0xFE;
//串口1選擇定時器1為波特率發生器
TMOD
&=
0x0F;
//設定定時器1為16位自動重裝方式
TL1
=
0xE8;
//設定定時初值
TH1
=
0xFF;
//設定定時初值
ET1
=
0;
//禁止定時器1中斷
TR1
=
1;
//啟動定時器1
就是這個,,,,,,數據位8位,定時器1
16位自動重裝,,11.0592M

9600波特率
不要忘了ES
=1
;EA=
1;

閱讀全文

與單片機波特率選擇程序相關的資料

熱點內容
phpurl中文亂碼問題 瀏覽:889
程序員那麼可愛大結局陸漓產子 瀏覽:534
java如何從雲伺服器讀取本地文件 瀏覽:915
壓縮空氣軟管製作方法 瀏覽:907
天河三號演算法 瀏覽:924
php隊列教程 瀏覽:632
洪水命令 瀏覽:529
安卓怎麼弄成蘋果在線 瀏覽:435
谷歌web伺服器地址 瀏覽:898
安卓鎖屏圖片如何刪除 瀏覽:719
python3多進程編程 瀏覽:714
證明代碼是程序員寫的 瀏覽:397
演算法錯誤發現辦法 瀏覽:410
河南省醫院掛號是哪個app 瀏覽:629
冬日戀歌哪個APP能看 瀏覽:673
委內瑞拉加密貨 瀏覽:10
程序員寫日記哪個軟體好 瀏覽:108
加密機操作手冊 瀏覽:860
dos命令自動關閉 瀏覽:328
心田花開app在哪裡評價 瀏覽:449