久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 23624|回復(fù): 21
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)12Mhz晶振精準(zhǔn)設(shè)置波特率

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 海洋漁業(yè) 于 2019-2-10 00:05 編輯

相信很多朋友在學(xué)習(xí)串口通訊的時(shí)候,因?yàn)榫д袷?2Mhz而不能設(shè)置4800bps以上的波特率,我在學(xué)習(xí)中也是如此,網(wǎng)上也沒有什么靠譜的方法。
作為一個(gè)新時(shí)代的青少年,通過不懈的學(xué)習(xí)(其實(shí)是看器件手冊(cè)無意間看到的)終于有了突破。
1:晶振為11.0592Mhz
我們知道T1可以作為波特率發(fā)生器,也知道波特率計(jì)算公式(方式1、3):2的SMOD的次方除以32再乘T1溢出率(晶振頻率除以12乘(256-TH1));
即:波特率=(2的SMOD次方/32)X晶振頻率/[12x(256-TH1)]

我們可以輕松的算出TH1和TL1內(nèi)的值,列如:
計(jì)算9600bps ,設(shè)SMOD=1;

9600bps=(2/32)X[11059200/12X(256-TH1)]
算得(256-TH1)=6,則TH1=250 (0XFA);

計(jì)算波特率為9600、串口工作方式為方式1的程序:
void init_serial()
{
     TMOD=0X20;//設(shè)置T1工作方式為8位自動(dòng)重裝
     SCON=0X50;//設(shè)置串口工作方式為10位異步收發(fā)器
     PCON=0X80;//SMOD置為1
     TH1=(256-6);//6的由來[(11059200/12)/16]/9600 (9600為所求波特率)
     TL1=(256-6);
     EA=1;//開總中斷
     ES=1;//開串口中斷
     TR1=1;//啟動(dòng)T1
}
2:晶振為12Mhz
如果我們繼續(xù)將T1作為波特率發(fā)生器,那么計(jì)算的公式也沒變化。
列如:
波特率為2400,SMOD=1;
2400bps=(2/32)X[12000000/12X(256-TH1)]
算得(256-TH1)=26.041666,是個(gè)無限循環(huán)小數(shù),如果取26帶進(jìn)公式里算,波特率四舍五入后是2404,誤差不是很大。
  1. void init_serial()
  2. {
  3.     TMOD=0X20;//設(shè)置T1工作方式為8位自動(dòng)重裝
  4.     SCON=0X50;//設(shè)置串口工作方式為10位異步收發(fā)器
  5.     PCON=0X80;//SMOD置為1
  6.     TH1=(256-26);
  7.     TL1=(256-26);
  8.     EA=1;//開總中斷
  9.     ES=1;//開串口中斷
  10.     TR1=1;//啟動(dòng)T1
  11. }
復(fù)制代碼



如果4800bps,SMOD=1;
4800bps=(2/32)X[12000000/12X(256-TH1)]

算得(256-TH1)=13.0208333,也是個(gè)無限循環(huán)小數(shù),取13,算出波特率約為4808,誤差也不大。

  1. void init_serial()
  2. {
  3.     TMOD=0X20;//設(shè)置T1工作方式為8位自動(dòng)重裝
  4.     SCON=0X50;//設(shè)置串口工作方式為10位異步收發(fā)器
  5.     PCON=0X80;//SMOD置為1
  6.     TH1=(256-13);
  7.     TL1=(256-13);
  8.     EA=1;//開放總中斷
  9.     ES=1;//開放串口中斷
  10.     TR1=1;//啟動(dòng)T1
  11. }
復(fù)制代碼


那么,就T1作為波特率發(fā)生器就夠了嗎?不行,高波特率誤差大。

如:9600bps,SMOD=1;
9600bps=(2/32)X[12000000/12X(256-TH1)]
算得(256-TH1)=6.510416(6的循環(huán))
如果我們?nèi)?,則計(jì)算出來的波特率為8928.571428(571428的循環(huán)),取6,波特率則為10416.66666(6的循環(huán)),誤差太大。

這該怎么辦呢?
有兩種方法:1.換晶振(不推薦)  2.使用T2作為波特率發(fā)生器(推薦)
以下是有關(guān)T2的器件手冊(cè)截圖



這里著重注意TCLK與RCLK,手冊(cè)上的描述是:RCLK=0時(shí),將定時(shí)器1的溢出率脈沖作為串口模式1和模式3的接受時(shí)鐘,TCLK=0時(shí),將定時(shí)器1的溢出率脈沖作為串口模式1和模式3的(這個(gè)“的”是我加上的,不知道為什么前面有后面沒有)發(fā)送時(shí)鐘。
這兩句話講的已經(jīng)夠清楚了,我們只把RCLK置為1,那我們的接受波特率就是(2的SMOD的次方/32)X(T2溢出率);如果我們只把TCLK置為1,那么我們的發(fā)送波特率就為(2的SMOD的次方/32)X(T2溢出率);如果我們將RCLK與TCLK都置為1,那么我們的波特率就是(2的SMOD的次方/32)X(T2溢出率)。
T2溢出率和T1溢出率不同它的計(jì)算公式為:晶振頻率/[2X(65536-RCAP2H RCAP2L)],此外T2是一個(gè)16位的定時(shí)/計(jì)數(shù)器,不像T0、T1既是8位又是16位

使用T2作為波特率發(fā)生器的波特率計(jì)算公式為:(2的SMOD的次方/32)X(T2溢出率)
波特率=
(2的SMOD的次方/32)X晶振頻率/[2X(65536-RCAP2H RCAP2L)];

按照T2的波特率計(jì)算公式我們就可以隨著自己的想法設(shè)置波特率了,列如我們要設(shè)置9600bps,SMOD=1:
將9600bps代入
波特率=
(2的SMOD的次方/32)X晶振頻率/[2X(65536-RCAP2H RCAP2L)],

得:
           9600bps=(2/32)X12000000/[2X(65536-RCAP2H RCAP2L)]
算得(65536-RCAP2H RCAP2L)=39;
所以有
  1. void init_serial()//設(shè)值9600bps的程序,大家可以試試
  2. {
  3.         SCON=0X50; //設(shè)置串口工作模式為10位異步收發(fā)器               
  4.         T2CON=0X34; //RCLK=1,TCLK=1,TR2=1               
  5.         PCON=0X80; //SMOD=1               
  6.         RCAP2H=(65536-39)/256; // 裝入計(jì)算好的值,這是我喜歡的懶方法
  7.         RCAP2L=(65536-39)%256;//同上,不過這是對(duì)(65536-39)求余,前者是求模(也就是求商)
  8.         ES=1;//開串口中斷
  9.         EA=1;//開總中斷
  10. }
復(fù)制代碼
本人屬于發(fā)貼新手和單片機(jī)新手,如有錯(cuò)誤請(qǐng)您委婉點(diǎn)地指出。
感謝您的瀏覽,同時(shí)也要謝謝審核我的管理員,真是麻煩您了!

【這是我第一次發(fā)稿】


評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏15 分享淘帖 頂5 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:475247 發(fā)表于 2019-2-10 15:12 | 只看該作者
很不錯(cuò)的資料,收下了
回復(fù)

使用道具 舉報(bào)

板凳
ID:137231 發(fā)表于 2019-2-17 12:20 來自觸屏版 | 只看該作者
沒那么麻煩,用內(nèi)部晶振,完全匹配
回復(fù)

使用道具 舉報(bào)

地板
ID:440534 發(fā)表于 2019-2-28 13:40 | 只看該作者
樓主東西不錯(cuò),解決了我的問題。
回復(fù)

使用道具 舉報(bào)

5#
ID:401113 發(fā)表于 2019-3-31 18:35 | 只看該作者
faxa1 發(fā)表于 2019-2-17 12:20
沒那么麻煩,用內(nèi)部晶振,完全匹配

請(qǐng)問什么是內(nèi)部晶振?我讀書少
回復(fù)

使用道具 舉報(bào)

6#
ID:73182 發(fā)表于 2019-4-1 15:24 | 只看該作者
贊一個(gè)
回復(fù)

使用道具 舉報(bào)

7#
ID:502872 發(fā)表于 2019-4-2 10:00 來自觸屏版 | 只看該作者
太好了,剛遇到一個(gè)問題,解決了
回復(fù)

使用道具 舉報(bào)

8#
ID:411550 發(fā)表于 2019-11-17 15:52 | 只看該作者
好帖子!解決了想要精準(zhǔn)定時(shí)和串口通信的問題
回復(fù)

使用道具 舉報(bào)

9#
ID:74784 發(fā)表于 2019-11-18 02:29 | 只看該作者
我習(xí)慣用11.0592Mhz~~~~~~~~~
回復(fù)

使用道具 舉報(bào)

10#
ID:25310 發(fā)表于 2019-12-25 10:47 | 只看該作者
直接24MHZ ,速度快,波特率都沒問題
回復(fù)

使用道具 舉報(bào)

11#
ID:117433 發(fā)表于 2019-12-25 11:19 | 只看該作者
STC單片機(jī)都不用接晶振了,內(nèi)部的就夠用了
回復(fù)

使用道具 舉報(bào)

12#
ID:728623 發(fā)表于 2020-5-10 17:58 | 只看該作者
很有用,謝謝分享
回復(fù)

使用道具 舉報(bào)

13#
ID:110875 發(fā)表于 2020-5-10 22:17 | 只看該作者
一個(gè)善于鉆研的人,值得尊敬。
回復(fù)

使用道具 舉報(bào)

14#
ID:65956 發(fā)表于 2020-5-11 08:14 | 只看該作者
51單片機(jī)用12M的晶振設(shè)置波特率是有誤差沒錯(cuò),但這種通訊波特有他的誤差范圍,聽我們這邊的工程師說,誤差到0.3%都沒問題,所以用這個(gè)晶振最大只能9600都可以用的
回復(fù)

使用道具 舉報(bào)

15#
ID:67085 發(fā)表于 2020-7-9 10:42 | 只看該作者
給樓主點(diǎn)個(gè)贊。
回復(fù)

使用道具 舉報(bào)

16#
ID:550624 發(fā)表于 2020-10-20 19:23 | 只看該作者
樓主,這個(gè)解決了大問題,很感謝
回復(fù)

使用道具 舉報(bào)

17#
ID:891323 發(fā)表于 2021-3-12 21:19 | 只看該作者
太好了,剛遇到一個(gè)問題,解決了  贊贊
回復(fù)

使用道具 舉報(bào)

18#
ID:892209 發(fā)表于 2021-3-20 10:44 | 只看該作者
xizhe2005 發(fā)表于 2019-12-25 11:19
STC單片機(jī)都不用接晶振了,內(nèi)部的就夠用了

內(nèi)部怎么調(diào)用?
回復(fù)

使用道具 舉報(bào)

19#
ID:748788 發(fā)表于 2021-3-20 16:32 | 只看該作者
rootn 發(fā)表于 2021-3-20 10:44
內(nèi)部怎么調(diào)用?

沒有晶振的stc下載時(shí)有設(shè)置頻率的選項(xiàng),見下圖:

回復(fù)

使用道具 舉報(bào)

20#
ID:1005936 發(fā)表于 2022-3-15 10:01 | 只看該作者
感謝分享,幫助很大
回復(fù)

使用道具 舉報(bào)

21#
ID:969210 發(fā)表于 2022-5-31 11:50 來自觸屏版 | 只看該作者
贊贊贊,才發(fā)現(xiàn)是晶振的問題,沒想到9600差這么大,換2400就好了
回復(fù)

使用道具 舉報(bào)

22#
ID:891089 發(fā)表于 2022-6-5 10:20 來自觸屏版 | 只看該作者
不錯(cuò),用得到
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线日韩欧美 | 91在线电影| 欧美成人精品激情在线观看 | 在线视频一区二区 | 精品无码久久久久久国产 | 国产一区二区不卡 | 色悠悠久| 午夜一级黄色片 | 性高湖久久久久久久久 | 国产精品3区 | 国产黄色大片在线观看 | 久操伊人 | 久久久久九九九女人毛片 | 日韩成人精品在线 | 国产成人叼嘿视频在线观看 | 国产一区久久精品 | 狠狠爱网址| 国产在视频一区二区三区吞精 | 亚洲va欧美va人人爽午夜 | 欧美一区二区三区四区视频 | 欧美极品在线观看 | 国产精品一区二区久久 | 国产剧情一区 | 97伦理最新伦理 | 可以免费看的毛片 | 91精品免费 | 日韩视频区 | 欧美精品一区二区免费 | 色伊人网 | 久综合 | 69亚洲精品 | 日日操日日干 | 99久久久国产精品 | 久久久久久国模大尺度人体 | 992tv人人草 久久精品超碰 | 欧美日韩专区 | 欧美精品乱码99久久影院 | 91在线精品视频 | 7777奇米影视 | 欧美激情视频一区二区三区在线播放 | 欧美成年黄网站色视频 |