1、项目7单片机应用技能实训C语言教案单片机应用技能实训(C语言)教案项目7项目7 单片机双机通信电路制作任务1 项目相关基本知识学习一、案头任务项目相关基本知识学习授课时间年 月 日授课班级教学形式讲授、讨论授课时数2课时教学用具教学资源项目制作成品、课件课前准备教学目标1、了解串行通信波特率的概念。2、理解串行口4种工作方式的波特率。3、掌握串行口方式1、2、3的应用。4、了解多机通信原理。教学重点串行口工作方式1的应用。教学难点1、对串行口方式1波特率的理解。2、多机通信原理。教学过程1、通过复习提问,引出项目任务。2、串行通信的波特率。3、串行口工作方式1、2、3。4、串行口应用举例。5、
2、多机通信原理简介。教学后记二、教学实施过程实施环节教学内容导学方法组织教学1、检查学生出勤情况并做好记录。2、调整学生的注意力,为上课作准备。互动交流复习提问1、串行口方式0是如何完成串行数据的发送的?2、方式0主要用于什么?方式0能用于双机通信吗?本项目的终极目标是制作单片机双机通信电路。提问导思导入在项目8中学习了串行口方式0的应用,但要进行双机通信时,要采用串行口的其他工作方式。下面,我们在进行项目制作之前,学习项目相关基本知识。启发学习积极性讲授新课一、MCS-51单片机串行口的波特率波特率是反映串行通信快慢的一个物理量,串行口每秒钟发送或接收二进制数据的位数称为波特率,单位为b/s,
3、即位/秒。串行口有四种工作方式,这四种工作方式对应三种波特率。工作方式0:波特率为=fsoc/12,不受SMOD位影响。工作方式2: 波特率=2SMODfsoc/64 (9-1)工作方式1和方式3:波特率=2SMOD(T1溢出率)/32 (9-2)T1溢出率即为一次定时时间的倒数,即T1溢出率= (9-3)其中 x为定时初值,M由T1的工作方式决定,一般置T1工作方式2,M=8。将式9-3代入9-2,并整理后得:波特率= (6-4)当已知晶振频率和所需的波特率时,可由式6-4计算定时器的初值。二、MCS-51单片机串行口工作方式1、2、3及应用1、方式1方式1是波特率可调的8位数据异步通信方式
4、,发送或接收一帧信息为10位,其中包括1位起始位0,8位数据位和1位停止位1。方式1的发送是在T1=0的条件下,由任何一条以SBUF为目的地址的数据传送指令作为启动发送开始的。数据从TXD引脚输出。当发送完一帧数据后,置中断标志TI为1。串行口置为方式1,若RI=0,REN=1时,允许串行口接收数据。串行口采样RXD(P3.0引脚),当采样到由1到0跳变时,确认是起始位“0”,便开始接收一帧数据。方式1接收时,必须同时满足以下两个条件:(1)RI=0;(2)停止位为1或SM2=0。在满足以上两个条件后,8位数据存入SBUF,停止送入RB8位,同时置中断标志RI为1。若不满足这两个条件,接收到数
5、据不能存入SBUF,此组数据丢失。2、方式2方式2是9位数据异步通信方式,发送一帧信息为11位,其中一位起始位0、8位数据位、第9位数据位和一位停止位1。方式2的发送方法方式1类似,区别是发送前,第九位数据先送入TB8,8位数据发送之后,发送第九位数据,最后自动生成停止位1。串行口置为方式2,若RI=0,REN=1时,允许串行口接收数据。串行口采样RXD(P3.0引脚),当采样到由1到0跳变时,确认是起始位“0”,便开始接收一帧数据。方式2接收时,必须同时满足以下两个条件:(1)RI=0;(2)SM2=0或收到的第九位数据等于1。在满足以上两个条件后,8位数据存入SBUF,第九位数据进入RB8
6、位,置中断标志RI为1。若不满足这两个条件,接收到数据不能存入SBUF,此组数据丢失。3、方式3方式3为波特率可调的9位异步通信方式,除了波特率有所区别之外,其余都与方式2相同。4、应用举例方式2和方式3主要用于多机通信,我们放在“项目相关知识延伸”中进行介绍。这里举例说明方式1的使用方法。例7-1 置串行口方式1,允许发送和接收,采用中断方式。初始化完成后,将串行口接收到的数据存于40H单元,再将该数据通过串行口方式1发送。试编写应用程序。解:该程序包括三部分,初始化、串行口发送和串行口中断服务程序,流程图如图7-2所示。根据流程图,编写参考程序如下:#includeunsigned cha
7、r data a _at_ 0x40;unsigned char *zz;/*以下是初始化函数*/void start()zz=&a; *zz=0;SCON=0X50;TMOD=0X21;TL1=0XF4; TH1=0XF4;EA=1; ES=1; TR1=1;/*以下是串行口中断函数*/void series() interrupt 4if(RI=1)*zz=SBUF;RI=0;TI=0;SBUF=a;if(TI=1)TI=0;/*以下是主函数*/void main()start();while(1); 图7-2 例7-1程序流程图 三、单片机多机通信简介 1、多机通信原理单片机多机通信一般
8、采用主从式多机通信方式。将一台设为主机,其他N台为从机,系统连接结构示意图如图7-10所示。多机通信原理如下: 图7-10 多机通信示意图(1)主机发出的信息有两类,一类是地址信息,用来确定需要和主机通信的从机,其特征是主机串行发送的第九位数据TB8为1,即主机令TB8为1来呼叫从机;另一类是命令或数据信息,特征是串行传送的第九位数据TB8为0,实现主从间的数据传送。(2)各从机使SM2=1时,只能接收到主机发来的地址信息;使SM2=0时,接收主机发送的命令或数据信息。(3)各从机只能发送数据信息,其特征是第九位数据TB8为0。主从式多机通信的一般过程如下:(1)使所有从机的SM2=1,以便接
9、收主机发来的地址码。(2)主机发出一帧地址信息,其中包括8位需要与之通信的从机地址码和第九位特征码TB8=1。(3)各从机接收到地址信息后,将其与自己的地址码相比较,若与本机地址相同,则该从机使SM2清0以接收主机随后发来的命令或数据信息;对于地址不相同的从机,仍保持SM2=1的状态,对主机随后发来的数据不予理睬。(4)主机给已被寻址的从机发送命令或数据(第九位数据TB8=0)。当通信需要进行波特率设置时,应采用方式1或方式3。此时要计算定时器T1初值,并常设为方式2以获得需要的波特率。重点说明如何启动发送以及如何将接收到的数据进行保存。在黑板上绘制流程图,并通过对流程图讲解,使学生理解编写思
10、路。由老师与同学共同进行程序编写。简明介绍多机通信原理。课堂小结1、串行口波特率。2、串行口工作方式1、2、3及其应用。3、方式1应用举例。4、多机通信简介。课后作业自我测评1题、2题、3题。任务2 双机通信电路的硬件、软件设计一、案头任务双机通信电路的硬件、软件设计授课时间年 月 日授课班级教学形式讲授、讨论授课时数2课时教学用具教学资源课件、单片机应用制作成品课前准备教学目标1、掌握串行口工作方式1、2、3的应用。2、掌握双机通信电路的整体构成。3、掌握C语言指针的使用。4、理解应用程序的编程思路。教学重点1、串行口工作方式1的应用。2、应用程序的编程思路及相关指令使用。教学难点1、应用程
11、序的编写思路及相关程序。教学过程1、复习提问串行口方式1、2的使用方法。2、介绍项目任务要求。3、根据项目任务要求引导设计硬件电路。4、C语言指针介绍。5、应用程序流程图绘制。6、应用程序设计。教学后记二、教学实施过程实施环节教学内容导学方法组织教学1、检查学生出勤情况并做好记录。2、调整学生的注意力,为上课作准备。互动交流复习提问1、串行口方式1、2的使用方法?2、使用方式1时,初始化程序主要有哪些?提问导思导入在学习了串行口方式1、2、3的应用后,我们应用串行口方式1来完成双机通信,项目要求如下:(1)甲机用一个按键来控制发送,每按一下按键,将数据缓冲区的一个数据发送给乙机。(2)乙机接收
12、,每接收到一个数据,将数据送接收数据缓冲区,并将该数据送P1口输出,由发光二极管显示。启发学习积极性讲授新课一、双机通信电路设计1、双机通信电路方案设计根据项目要求,本项目硬件由甲机和乙机两部分构成。甲机包括最小应用系统和按键电路(发送控制),乙机包括最小应用系统和LED显示电路(用于输出显示)。2、电路设计根据电路构成方案设计硬件电路原理如图7-3所示。图7-3 电路原理图3、元件选择 (1)复习晶振电路元件及复位电路元件的选择。(2)复习发光二极管电路元件选择。二、应用程序编写1、C语言指针指针是存放变量地址的变量,分为通用指针和存贮器指针。(1)通用指针定义方法如下变量类型 *变量名称;
13、(2)存贮器指针定义方法如下变量类型 存储类型 *变量名称;例如:char xdata *dp;/定义外部存贮器变量地址的指针dp。(3)指针变量的赋值将一个变量的地址赋予指向相同数据类型的指针,例如:int a,*ap;ap=&a;将一个指针的值赋予指向相同变量的另一个指针,例如:int a,*ap,*bp;ap=&a; bp=ap;在定义中直接赋值,例如:int data *zh1=0x30;/将0x30 直接赋予指针zh1。2、甲机发送程序设计 流程图设计甲机的发送采用查询方式,发送程序的流程图如图7-4所示。图7-4 甲机发送程序流程图根据流程图编写程序如下:#includesbit
14、S1=P10;unsigned char disp_buf16=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;unsigned char data *sr0;void send(); /串行口发送函数void start(); /串行口发送初始化函数void delay(); /延时函数/*以下是数据发送函数*/void send()SBUF=*sr0;while(TI=0);TI=0;/*以下是初始化函数*/void start()TMOD=0x21;TL1=0xf4; TH1=0xf4; TR1=1;SCON=0x50;/*以下是主函数*/void main(
15、)unsigned char i;start();while(1)sr0=&disp_buf;for(i=16;i0;i-)while(S1=1);while(S1=0);send();delay();sr0=sr0+1;3、乙机接收程序设计乙机接收程序与例7-1类似,采用中断方式,参考程序如下:#includeunsigned char disp_buf16;void start();/定义初始化函数/*以下是中串行口中断函数*/void series() interrupt 4unsigned char i=0;RI=0; ES=0;disp_bufi=SBUF;P1=disp_bufi;
16、i+;if(i=16)i=0;ES=1;/*以下是主函数*/void main()start();while(1);老师和同学共同讨论电路构成方案。老师和同学共同在黑板上绘制电路原理图。可省略晶振电路和复位电路。简单说明两种指针的使用区别。在老师引导下由同学老师共同完成流程图绘制。同学们可自行计算初值为F4H时的波特率。在老师引导下与同学一起完成应用程序设计。课堂小结1、双机通信电路设计。2、C语言指针的使用。3、应用程序设计,重点是甲机发送程序流设计。课后作业自我测评4题、6题。任务3 单片机双机通信电路的计算机仿真一、案头任务单片机双机通信电路的计算机仿真授课时间年 月 日授课班级教学形式
17、老师演示、学生操作授课时数2课时教学用具教学资源机房、多媒体、相关课件课前准备教学目标1、单片机双机通信电路设计的计算机仿真验证。2、提高工具软件的使用熟练程度。3、熟练C语言指针的使用及电路应用程序设计。教学重点1、双机通信电路设计的计算机仿真验证。2、相关指令的使用及程序编写与修改。教学难点1、仿真电路运行出错时的修改调试。教学过程1、proteus仿真电路绘制步骤复习。2、用keil进行程序汇编步骤复习。3、布置练习作业,学生进行练习并验证电路效果,老师进行指导。教学后记二、教学实施过程实施环节教学内容导学方法组织教学1、检查学生出勤情况并做好记录。2、调整学生的注意力,为上课作准备。互
18、动交流复习提问1、本项目设计的双机通信电路都有哪些功能?提问导思导入刚才同学们对双机通信电路的功能作了叙述,下面就根据上次课进行的电路软硬件设计,用计算机仿真验证本次项目设计的正确性和运行效果。启发学习积极性讲授新课一、使用proteus绘制仿真电路图的步骤参照图7-3进行仿真电路绘制。1、将所需元器件加入到对象选择器窗口AT89S51用AT89C51代替,红色发光二极管的英文符号是“LED-RED”;电阻、电容、电解电容、按键、晶振的英文符号分别是“RES”、“CAP”“CAP-ELEC”、“BUTTON”、“CRYSTAL”。2、放置元器件至图形编辑窗口3、移动、删除对象和调整对象朝向4、
19、放置电源及接地符号5、元器件之间的连线6、编辑对象的属性设置元件参数二、使用keil进行程序汇编的步骤1、源文件的建立输入完源程序后,保存该文件,注意必须加上扩展名.c。2、建立工程文件点击“Project-New Project”菜单,出现一个对话框,要求给将要建立的工程起一个名字,-。3、工程的设置在 OutPut 页面,勾选“ Creat Hex file”选项。4、编译、连接在设置好工程后,即可进行编译、连接。点击按钮,对当前工程中的文件进行编译然后再连接,生成目标代码。编译过程中的信息将出现在输出窗口中的Build页中,如果源程序中有语法错误,会有错误报告出现。三、布置作业学生练习,
20、老师指导。1、双机通信电路仿真验证。2、修改应用程序验证运行效果。3、试一试,使用方式2或3进行双机通信,是否也能顺利实现功能。利用机房相关软件进行操作演示。讲解个步骤的含义。学生操作,老师指导。课堂小结1、proteus的基本操作步骤。2、keil的操作步骤。3、单片机双机通信电路的仿真验证。课后作业技能反复训练与思考题4题、5题。任务4 单片机双机通信电路的制作与调试一、案头任务单片机控制广告灯电路的制作与调试授课时间年 月 日授课班级教学形式学生动手操作、老师指导授课时数2课时教学用具 万用表、电烙铁等教学资源实训设备、电路制作成品课前准备项目3制作成品、相关电子元件采购、准备。教学目标
21、1、掌握双机通信的连接方法。2、加深对项目7的电路构成理解及应用程序。3、掌握使用仪表进行电路测试方法,提高仪表使用的熟练程度。4、掌握数字时钟电路构成及硬件、软件调试。教学重点1、复习项目3应用程序及电路构成。2、掌握双机通信电路构成及硬件、软件调试。教学难点1、电路调试中的故障查找。教学过程1、强调实训室操作规程,注意操作安全。2、复习项目3电路结构及应用程序。3、对项目3成品进行运行试验。4、由两个小组之间进行通信电路连接。5、根据硬件电路实际对应用程序进行修改并进行运行调试。教学后记二、教学实施过程实施环节教学内容导学方法组织教学1、检查学生出勤情况并做好记录。2、调整学生的注意力,为
22、上课作准备。互动交流复习提问1、项目3制作成品的功能如何?2、双机通信的电路连接如何?提问导思导入 强调操作纪律及操作安全注意事项。下面由两个小组结合,用项目3成品进行通信连接,编写应用程序进行难。期待同学们成功展示作品的时刻。启发学习积极性项目制作一、项目3成品运行试验及调试1、分发给各小组项目3成品进行运行试验,若有问题则进行调试。2、打开项目3程序进行复习。二、分组进行项目7制作1、每两个小组结合为对子进行通信连接。一个设为发送,另一个设为接收。 2、各自编写相应应用程序并进行汇编。 3、写入各自的单片机芯片应用程序进行运行实验。4、将写入程序进行交换验证运行效果。三、修改程序,完善功能
23、双机通信实验成功后,再进行程序修改完善,以期能有更多的通信功能和效果。四、制作总结项目制作到今天,已经完成了7个项目的制作,请同学们进行各项目的制作总结,包括元件测试方法,电路构成及制作过程中出现的问题及解决方法。通过7个项目的制作,在相关单片机基本知识方面都学到了什么。学生分组进行动手制作,老师巡回指导或示范操作。项目制作小结1、双机通信的电路连接。3、应用程序编写及编译。4、程序写入与运行调试。课后作业1、将项目制作调试时测试数据列表并分析。2、总结本项目制作中出现问题及解决方法。3、自我测评7题。单片机应用技能实训(C语言)教案项目8项目8 数字显示交通灯控制电路制作任务1 项目相关知识
24、学习一、案头任务项目相关知识学习授课时间年 月 日授课班级教学形式讲授、讨论授课时数2课时教学用具教学资源项目制作成品或元件、课件课前准备教学目标1、掌握简单I/O端口扩展的接线方法。2、掌握简单I/O端口扩展应用程序的编写。3、熟悉在C51中直接插入汇编语言程序的编程方法。教学重点1、简单I/O端口扩展的接线方法。2、简单I/O端口扩展应用程序的编写。教学难点1、对同时扩展8位并行输出和输入的理解。教学过程1、通过对交通灯功能的讨论,引出项目任务。2、简单I/O端口扩展的芯片简介。3、简单I/O端口扩展的接线方法及程序编写。4、在C51中直接插入汇编语言程序的编程方法。教学后记二、教学实施过
25、程实施环节教学内容导学方法组织教学1、检查学生出勤情况并做好记录。2、调整学生的注意力,为上课作准备。互动交流复习提问1、根据前面所学知识,如何进行I/O端口的扩展?2、交通灯的作用是什么?有什么功能?本项目的终极目标是制作一个单片机控制的能显示倒计时时间的交通灯控制电路。提问导思导入在项目6中用数码管显示时间,为了不造成资源浪费,我们利用串行口方式0进行输出口扩展。但利用串行口方式0扩展并行输出口,在使用上有一定局限性,所以,我们在进行项目制作之前,学习MCS-51单片机简单I/O口的扩展方法。启发学习积极性讲授新课一、并行I/O端口的扩展由于简单I/O端口扩展方法简单实用,下面对该方法加以
26、介绍。1、简单I/O端口扩展芯片简介通常采用三态缓冲器(例如74LS244、74LS541)来扩展并行输入,用8D锁存器(例如74LS373、74HC573)来扩展并行输出。图8-2是74LS541和74HC573的逻辑符号图。74LS541是三态缓冲器,74HC573是8D锁存器,采用20脚双列直插封装。图8-2 74LS541 74HC573逻辑符号图2、简单I/O端口扩展举例例8.1 利用两个8D锁存器74HC573扩展两个8位并行输出口。单片机扩展两个8位并行输出端口的硬件电路如图10-3所示,在预处理命令中将p20定义为P2.0,将p21定义为P2.1。当需要将A中数据从U2输出时,
27、执行如下指令:p20=0; /U2锁存数据p21=0; /U3锁存数据P0=ACC; /将ACC数据送给P0p20=1; /数据从U2输出p20=0; /U2锁存数据当需要将A中数据从U3输出时,执行如下指令:p20=0; /U2锁存数据p21=0; /U3锁存数据P0=ACC; /将ACC数据送给P0p21=1; /数据从U3输出p21=0; /U3锁存数据 图8-3 扩展并行输出采用本例方法,利用P0、P2最多可扩展8个8位并行输出端口。例8.2 采用74LS541和74LS373为单片机扩展8位并行输入和8位并行输出端口。扩展输入输出端口的硬件电路如图8-4所示,将74LS541和74L
28、S373作为单片机的外部数据存贮器单元来进行操作。由于74LS541和74LS373通过逻辑电路只与16位地址线中的P2.0相连,都是在P2.0为0时被选通的,所以二者的口地址都为FEFFH。图8-4当需要输入和输出数据时可通过如下程序完成。char xdata *p1=0xfeff; /定义外部数据地址unsigned char a=0x02;a=*p1; /将74LS541对应端口数据输入*p1=a; /输出数据给74LS373对应端口二、C51中插入与汇编语言程序1、在C51中直接插入汇编语言程序方法当需要在C51源程序中插入汇编语言程序时,可使用#pragma asm和#pragma endasm语句包含插入的汇编语言程序。格式如下:#pragma asm汇编语言程序#pragma endasm例如编写程序从P2.7输出
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1