讲道理都tm大三暑假了还搞51单片机而且关键是还遇到了一个问题解决了一天才解决出来真的是很丢人了。

不过我会珍惜这个机会的,毕竟这有可能是我辈子最后一次跟着老师搞这个破玩意了。

好了不废话了 收!

昨天遇到的问题是单片机用串口给电脑发数据,本人用串口助手查看时乱码了,发送的数据是英文和数字,没有存在中文,马上进行问题排除:

解决方案一:printf的原因吗?

代码里用piintf函数来进行串口发送数据,可能printf只适合于stm32不能适用于51,但是仔细一想又不对啊,我tm大三上的单片机大作业就是用printf函数进行串口发送数据的啊,怎么当时就可以啊。于是我把当时的代码拿过来修改,还是不行。

解决方案一卒。

解决方案二:硬件芯片的原因吗?

换了另外一块芯片,还是不行。

解决方案二卒。

解决方案三:晶振的原因吗?

赶紧查看开发板上面的晶振,刻着12Mhz,在keil4软件里面查看晶振,晶振的设置是12Mhz,这里算是对上了。想起上个学期的单片机晶振是11.0592Mhz,可能是这个原因吧,但是没有办法啊,晶振已经焊上去了,我能怎么办我也很绝望啊。

解决方案三卒。

解决方案四:波特率的原因吗?

这里要感谢一篇博客给我的启发,详见参考资料。

和博主一样,使用波特率9600,TL1和TH1都设置成0xfd,不管是中文还是英文都是乱码,那肿么办呢?波特率换成2400,2400,2400,重要的事情说三遍!!!TL1和TH1都设置成0xf3。

哈哈哈哈终于不乱码了,开心。


总结:没什么好总结了,就是菜。就是一个菜鸡发现了9600到2400的过程。

参考资料:

https://zhidao.baidu.com/question/110468495.html?fr=qrl&index=3