|
剛才重點(diǎn)想程序去了,沒有把波特率為什么那么設(shè)置說清楚,補(bǔ)充一下。
在本站的下載的波特率計(jì)算器,計(jì)算就可以知道:
第一:對(duì)于51單片機(jī)的晶振為11.0592MHz時(shí),任何波特率都可以,誤差都為零。高波特率時(shí),加倍反而誤差大。
第二:對(duì)于晶振為12MHz的,波特率一大,誤差就很大,即,你發(fā)送的數(shù)據(jù),當(dāng)51單片機(jī)接收到時(shí),已經(jīng)變成另一個(gè)數(shù)據(jù)了,所以就不能完成相應(yīng)的控制。你原來的程序就是這樣(我猜,你的晶振也是12M的),而原來的波特率為9600,看看我截取的圖片,就可以知道誤差多大。所以,必須小于等于4800,這是我試驗(yàn)出來的最大波特率、且誤差最小。
第三:原程序?yàn)槭裁粗挥幸粋(gè)聲音?就是因?yàn)榇谳斔偷臄?shù)據(jù),單片機(jī)接收到的是錯(cuò)的,所以只以初始化的數(shù)據(jù)在發(fā)聲音,我試驗(yàn)過,輸送任何數(shù)據(jù)都是一個(gè)聲音,關(guān)不了(原程序輸送4是關(guān)聲音)。改為4800且加倍的波特率后,就好了。
可能當(dāng)時(shí)郭天祥老師在做這個(gè)例子時(shí),是講過這個(gè)內(nèi)容的,只不過我們沒有看到罷了。
|
-
1.jpg
(16.31 KB, 下載次數(shù): 79)
下載附件
2017-6-3 11:04 上傳
-
2.jpg
(15.96 KB, 下載次數(shù): 102)
下載附件
2017-6-3 11:04 上傳
-
3.jpg
(15.83 KB, 下載次數(shù): 87)
下載附件
2017-6-3 11:05 上傳
-
4.jpg
(16.42 KB, 下載次數(shù): 106)
下載附件
2017-6-3 11:05 上傳
-
5.jpg
(16.27 KB, 下載次數(shù): 83)
下載附件
2017-6-3 11:05 上傳
-
6.jpg
(15.25 KB, 下載次數(shù): 91)
下載附件
2017-6-3 11:05 上傳
|