2020年11月20日,虽然时间上已过去三周,但单片机的课程环环相扣、有条不紊的进行了下来。初二(1)班全体同学开始了电子通信控制第五课。
书接上回,同学们用自己手中的单片机创造了一段段的或优美或奇异的音乐,这次同学们将学习串口通信,让单片机“说起话”来。
徐教授指出,串口通信应先把单片机上的两个小零件扭转过来。进行串口后,使用Ardublock中淡灰色的编程模块“串口打印”或代码“printIn”。在示范中,老师首先让串口监视器打出“Hello”字样,换行打出模拟量“100.56”,然后再换行打出数字量“1”。这说明串口打印可以打出文字、模拟量或数字量。
为了将知识点与练习进行合理的结合,老师给大家留下了一道思考与练习:设计一个简易的发声控制器,通过按键调整声音频率:第一次按下时播放“1”,第二次按下时播放“2”,再按下时停止播放声音;同时,在电脑上显示声音频率的数值。这个练习真是“雪中送炭”,“挽救”了同学们即将遗忘的“按钮触发”知识点;并将其与串口通信相糅合。同学们都做出了自己的程序和答案。
同学们开始学习Ardublock的控制模块,进入到微控制器应用实践的下一部分。一组组金灿灿的小方块以“丰腴”的身姿跃入了同学们的眼帘。其中有同学们所认识的老朋友:“主程序”以及“如果”“重复”等逻辑关系模块。
为了使大家更容易理解这些模块执行过程,徐教授用PPT列出这些模块,并在旁边写上流程图。比如最简单的“如果/否则”,它有条件满足、执行和否则执行三栏。流程图上赫然写着:输入条件是否满足——如果满足则进行操作1;如果不满足则进行操作2。清晰易懂,一目了然。
紧接着区分“while”和“do while”2种模块的区别。这两个看起来长得很像模块,实际上有不同的用途。“while”是先有检测,再有执行,而“do while”则是先有执行再有检测。
还有更加复杂的模块,比如带有变量的重复,以及对变量的起始值和终止值做了限定的重复,这些模块都需要同学们在一遍又一遍的练习中进行巩固加深。同学们所做的程序利用到前文所提的几个模块中的代码也需要进行优化。另外,老师还提了模拟输出中重要的占空比知识点。
随后进入大家动手实践的过程,同学们利用各种各样的控制模块编出了不同的程序来达到显示乘法口诀表的目的。看到单片机在监视器中打印出一串串的乘法口诀,像级了小学时“挣扎”着背乘法口诀表的同学们,可把大家乐坏了。同学们又不断地优化和调整自己的程序。0和1的组合竟能产生这样神奇的效果,单片机真的“说起话”来了。
文稿 郎军超
编辑 罗洛晨