|
剛才重點想程序去了,沒有把波特率為什么那么設(shè)置說清楚,補充一下。
在本站的下載的波特率計算器,計算就可以知道:
第一:對于51單片機(jī)的晶振為11.0592MHz時,任何波特率都可以,誤差都為零。高波特率時,加倍反而誤差大。
第二:對于晶振為12MHz的,波特率一大,誤差就很大,即,你發(fā)送的數(shù)據(jù),當(dāng)51單片機(jī)接收到時,已經(jīng)變成另一個數(shù)據(jù)了,所以就不能完成相應(yīng)的控制。你原來的程序就是這樣(我猜,你的晶振也是12M的),而原來的波特率為9600,看看我截取的圖片,就可以知道誤差多大。所以,必須小于等于4800,這是我試驗出來的最大波特率、且誤差最小。
第三:原程序為什么只有一個聲音?就是因為串口輸送的數(shù)據(jù),單片機(jī)接收到的是錯的,所以只以初始化的數(shù)據(jù)在發(fā)聲音,我試驗過,輸送任何數(shù)據(jù)都是一個聲音,關(guān)不了(原程序輸送4是關(guān)聲音)。改為4800且加倍的波特率后,就好了。
可能當(dāng)時郭天祥老師在做這個例子時,是講過這個內(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 上傳
|