導航:首頁 > 操作系統 > 51單片機串口波特率設置

51單片機串口波特率設置

發布時間:2023-03-24 22:05:43

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 的晶體振盪器也會因晶體本身所存在的誤差使波特率產生誤差,但晶體本身的誤差對波特率的影響是十分之小的,可以忽略不計。

2. 串口通信方式1的波特率是通過單片機的那個模塊來設置的

串口通信方式1的波特率是通過單片機的T1定時/計數器模塊來設置的。要與PC通信必須慶悉指遵守規則,也就譽配是必須有相同的發送/接收頻率(波特率)陸灶51單片機中使用T1定時/計數器來設置波特率定時器溢出一次代表傳輸一次數據。

3. 51單片機 設置串口波特率115200初值怎麼弄 呢 單片機是11.0592的晶振

void UartInit(void) //[email protected]
{
PCON &= 0x7f; //波特率不倍速
SCON = 0x50; //8位數據,可變波特率
AUXR |= 0x40; //定時器1時鍾為Fosc,即1T
AUXR &= 0xfe; //串口1選擇定時器1為波特率發生器
TMOD &= 0x0f; //清除定時器1模式位
TMOD |= 0x20; //設定定時器1為8位自動重裝方式
TL1 = 0xFD; //設定定時初值
TH1 = 0xFD; //設定定時器重裝值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器1
}

void UartInit(void) //[email protected]
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位數據,可變波特率
AUXR &= 0xbf; //定時器1時鍾為Fosc/12,即12T
AUXR &= 0xfe; //串口1選擇定時器1為波特率發生器
TMOD &= 0x0f; //清除定時器1模式位
TMOD |= 0x20; //設定定時器1為8位自動重裝方式
TL1 = 0xFF; //設定定時初值
TH1 = 0xFF; //設定定時器重裝值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器1
}

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

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

2、打開指令助手,點擊「設備配置」,此時進入設備配置界面,如圖所示。

3、修改之前需解除默認配置,點擊「解除系統配置」,指令助手會發送對應指令。NANO型串口屏出廠波特率為115200,其它型號串口屏出廠波特率為19200。

4、修改波特率,波特率可修改范圍為1200-2000000,點擊「_」,選擇對應的波特率,點擊「設置」。例如選擇波特率為19200,點擊「設置」,指令助手發送對應的指令。

5、如果需要重新鎖定,點擊「鎖定系統配置」。

6、重新聯機,此時的波特率為19200。

7、工程編譯無誤之後,直接點擊「LOAD」,此時串口屏通過USB線下載工程。

5. 51單片機串口通信波特率若可變,由誰確定

您好!很高興為您解答問題,以下是我為您提供的解答內容:
你串口初始化那裡的設置波特率是4800而不是9600
你在主程序中已經無條件地執行了這個display(dat - 48)程序,你可以把while(1)改成由標志位判定有無接收到串口數據,有才置位標志位,進行顯示。

6. 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 #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; }

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

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

8. 如何設置波特率

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單片機串口波特率設置相關的資料

熱點內容
美國電影消失的眼角膜完整版電影 瀏覽:312
愛搞電影 瀏覽:702
日本電影鍵下載 瀏覽:621
人版泰山1995女演員 瀏覽:418
小電影免費小電影 瀏覽:413
三個鬼猜拳是什麼電影 瀏覽:106
法國愛情免費觀看love 瀏覽:655
查理九世百度網盤txt下載 瀏覽:171
守望者監獄潑油第幾集 瀏覽:972
那種電影在線觀看 瀏覽:123
電影演員表名字有個方框 瀏覽:675
日本生活中的瑪麗女主是誰 瀏覽:482
明天我打算去看電影英文 瀏覽:153
cofax傳真伺服器怎麼用 瀏覽:538
三極僵屍片 瀏覽:869
加工中心pdf 瀏覽:571
如何解除自動加密軟體 瀏覽:574
壓縮文件無損傳輸 瀏覽:539
歐美一部在經期也做的電影 瀏覽:232
地球電影名字 瀏覽:861