|
刚才重点想程序去了,没有把波特率为什么那么设置说清楚,补充一下。
在本站的下载的波特率计算器,计算就可以知道:
第一:对于51单片机的晶振为11.0592MHz时,任何波特率都可以,误差都为零。高波特率时,加倍反而误差大。
第二:对于晶振为12MHz的,波特率一大,误差就很大,即,你发送的数据,当51单片机接收到时,已经变成另一个数据了,所以就不能完成相应的控制。你原来的程序就是这样(我猜,你的晶振也是12M的),而原来的波特率为9600,看看我截取的图片,就可以知道误差多大。所以,必须小于等于4800,这是我试验出来的最大波特率、且误差最小。
第三:原程序为什么只有一个声音?就是因为串口输送的数据,单片机接收到的是错的,所以只以初始化的数据在发声音,我试验过,输送任何数据都是一个声音,关不了(原程序输送4是关声音)。改为4800且加倍的波特率后,就好了。
可能当时郭天祥老师在做这个例子时,是讲过这个内容的,只不过我们没有看到罢了。
|
-
1.jpg
(16.31 KB, 下载次数: 71)
-
2.jpg
(15.96 KB, 下载次数: 99)
-
3.jpg
(15.83 KB, 下载次数: 81)
-
4.jpg
(16.42 KB, 下载次数: 100)
-
5.jpg
(16.27 KB, 下载次数: 78)
-
6.jpg
(15.25 KB, 下载次数: 86)
|