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