西北民族大学 王晓燕 刘明华
串口通信是单片机课程学习中的重要内容,但学生普遍反应该部分内容抽象,难以理解,不会编程等问题,导致本部分的教学效果不尽人意,针对此类现象,进行了串口通信部分授课内容的梳理和实验内容的改革,教学效果显示该教学改革能有效激发学生的学习兴趣和学习主动性,显著提高学生对于该部分内容的应用水平,达到较好效果。
单片机因其体积小,功能强,价格低等特点,在各行业获得了广泛应用,单片机课程也成了各大综合性院校自动化、通信、电气等专业的必修课程,因单片机需与各种不同类型的传感器间进行相互通信,而不同类型的传感器所具有的通信接口大部分是串口通信,故学生对于单片机的串口通信结构与功能的理解与掌握是非常有必要的。
现有的《单片机原理及接口技术》课程的大纲中,所规定的该部分内容讲授重点:单片机串行口的工作方式及波特率。讲授难点:单片机串行口的应用。课程思政:教会学生理解秩序的重要性,秩序即规则对人的强制约束性,没有规矩不成方圆,人人遵守秩序,才能构建和谐安稳的社会环境。理论学时:6学时,课程教学目标1(知识):培养学生掌握单片机系统设计的软硬件基础理论知识,具有硬软件系统设计技能,能胜任系统设计分析、系统测试、功能实现等。课程教学目标2(能力):培养学生基本的专业素养,掌握主流单片机的结构与原理、掌握一个单片机系统应用,熟悉单片机软硬件开发流程并至少做过一个单片机系统项目。课程教学目标3(素质):培养学生全局观念和系统观念,通过大量的实验、实践环节和科研项目来提高单片机系统理论与实际产品开发紧密结合能力。
该部分内容是学生深入理解单片机串口通信的硬件基础,示意图如图1所示,主要通过多媒体讲授的方式,将单片机实现串口通信的硬件结构划分为多个模块,如接收缓冲器、发送缓冲器、移位寄存器、定时计数器T1等,通过分别讲述各部分的作用,让学生理解串口通信的本质及串口通信的传输速率的决定因素等问题,为进一步掌握穿透通信的编程技巧奠定理论基础。
图1 串行口简化结构
与串行口有关的特殊功能寄存器有2个,分别是串行口控制寄存器SCON和功率控制寄存器PCON,在课堂讲授过程中通过逐位讲解的方式,让学生掌握串行通信的方式选择、控制数据的接收和发送、进行串行口状态的判断等内容,还需向学生说明利用PCON进行波特率倍增的方法,即改变最高位SMOD的值,该位为0时不倍增,为1时进行波特率倍增。如图2所示。
图2 与串口有关的两个特殊功能寄存器
在串行通信中,收发双方对发送或接收数据的速率要有约定,在上课讲授过程中,通过复习T1作为定时器时的工作原理,引出溢出率的概念,给学生强调,利用T1作为波特率发生器时,其典型用法是使T1工作在自动重装的8位定时方式,溢出率取决于TH1中的初值,并进一步讲解T1初值的计算方法,展示波特率与不同计数初值之间对应关系的表格,告诉学生如何根据不同的波特率要求及是否进行波特率倍增等要求进行T1初值的查找。
通过特殊功能寄存器SCON中SM0 SM1两位的4种状态组合讲解串行口的工作方式。方式0、方式1、方式2与方式3,其中需特别强调方式0表明串行口工作与移位寄存器方式,此时不是工作于穿行发送与接收方式,而是需外接移位寄存器,方式1工作于双机通信模式,方式2和方式3工作于多机通信模式。在不同的工作方式下,需特别注意波特率的设置问题,方式0和方式2为固定波特率,方式1和方式3需要利用T1溢出率自行设置波特率。如表1所示。
表1 串行口的工作方式
串行口中断是51系列单片机的5个中断源之一,中断入口地址为0023H,中断标志位为RI和TI的或逻辑,而当串口接收完一帧数据或者串口发送完一帧数据之后都可能引发中断,即TI为发送中断标志位,RI为接收中断标志位,两者共用同一中断入口地址,并需向学生强调,TI和RI中断标志位需用软件清零。
进行校验是保证串行通信传输准确率的有效方法,常用的校验方法有奇偶校验和代码和校验,通过明确进行校验时发送方跟接收方所需要完成的工作让学生理解校验的作用及实现方法,如对于奇偶校验,发送方所需完成的工作为向接收方发送一帧内容,并统计该帧中1的个数,若为奇数个,则该帧内容之后紧跟的校验位的值为1,否则为0.而接收方所要完成的工作为接收对方发送过来的一帧内容,统计该帧中1的个数,若统计结果与接收过来的奇数或者偶数一致,则认为数据传输过程准确,否则以为传输出现错误,要求发送方重新发送。
通过单片机自发自收验证串口通讯功能;熟悉单片机串行口工作原理及简单三线式通讯的方法;了解实现串行通讯的硬件环境、数据格式及数据交换的协议;学习串口通讯中断方式和查询方式编程方法,实验内容细分为以下几点
在指导学生实验过程中,为了更直观的演示双机通信的过程及控制方法,将实验设计由单个单片机自收发改为两个单片机双向通信,在硬件设计上采用短距离通信的方式,摒弃RS232中间转接,将两块单片机的收发端分别直接相连,示意图如图3所示,简化了设计,便于学生更好地理解数据收发的概念。
图3 双机通信连接示意图
进行软件设计时,分别编写两片单片机所对应的双向通信控制程序,采用模块化编程的方法,将整体程序划分为波特率设定,发送过程,接收过程,校验过程等几个模块。对于波特率设定部分,程序的结构比较固定,主要是完成T1工作模式的设置、初值的选择和T1计数的启动。对于发送过程,主要给学生强调发送过程的启动是通过给发送缓冲器赋值来实现的,及汇编语言的MOV SBUF,A,启动发送过程之后,SBUF中的内容在时钟信号控制下,一位位地串行发送到接收机,当发送完一帧内容之后,TI标志位的值为1.根据标志位值的变化,采用中断方式或者查询方式确定该帧数据是否发送完。对于接收过程,当接收完一帧内容之后RI标志位的值为1,通过不停地查询标志位的值JNB RI,$,或者采用中断的方式,可及时地将传送过来的数据存放到数据缓冲区,以进行后续的处理。对于校验过程,实现约定通信双方的校验方法,接收方根据约定的校验方法进行奇偶校验或者代码和校验,以确定接收数据的准确性。
在进行实验编程过程中,串行口的初始化程序较为固定,可进行模块化的设计,便于移植到其他应用场合,初始化步骤包括确定T1的工作方式,计算T1的初值,装载TH1和TL1,启动T1,确定串行口工作方式,进行中断设置。
为了让学生更好地理解单片机串口通信的方式2和方式3,在原有的双机通信实验之外额外增加了三机通信的内容,实验设定单片机A为主机,单片机BC为从机,主机A可分别向从机BC发送指令及数据,从机BC接收数据并进行显示,为了简单起见,未设置校验过程。该部分向学生重点强调主机向从机发送的是地址信息还是数据信息的区分,在特殊功能寄存器SCON中,通过SM2位定义地址帧还是数据帧,SM2=1表示地址帧,SM2=0表示数据帧,对于从机接收过来信息之后则需要判断是地址帧还是数据帧,若是地址帧且与自己的地址一致,则接收随之而来的数据帧,否则不予接收。
原来该实验成绩的评定依据主要是实验报告的书写是否认真,实验报告内容否完整,该评定方式只关注了实验的表面,学生以为只要认真书写实验报告便能有效完成该实验。实验内容改革后的成绩评定更倾向于实验过程的考核和实验结果的验证,在实验过程中,教师根据学生电路图的设计、接线的熟练程度、实验结果的正确性及学生能力的拓展部分依次给分,此种改革方式解决了实验成绩只依据书写的弊端,激发了学生实验的积极性,提高了学习效率。
通过上述串口通信部分教学内容的改革实践,有效理清了课堂讲授时的授课思路,使重点难点更加突出,有利于学生更好地接受串口通信的概念、硬件结构、波特率等内容,并通过实验内容的改革,将课堂上的理论内容与实践有效结合,使学生在实验过程中更好地理解课堂内容,并通过实验成绩评定方法的改革,激发学生进行实验的积极性与主动性,帮助学生更好地理解串口通信的内容。