单片机应用技能实训(C语言)教案—项目2项目2广告灯电路制作任务1MCS-51单片机I/O端口及C语言相关指令一、案头任务MCS-51单片机并行接口及C语言相关指令授课时间年月日授课班级教学形式讲授授课时数2课时教学用具多媒体教学资源课件、单片机应用制作成品课前准备教学目标1、了解MCS-51单片机并行接口的结构。2、掌握MCS-51单片机并行接口的使用方法。3、掌握项目相关C语言指令的作用及使用方法。教学重点1、MCS-51单片机并行接口的使用方法。2、项目相关C语言指令的作用及使用方法。教学难点1、MCS-51单片机并行接口结构原理。2、项目相关C语言指令的灵活使用。教学过程1、通过生活中实际情境的介绍,引出项目任务。2、MCS-51单片机P0口结构原理,重点学习P0口的使用方法。3、P1~P3口结构原理及使用方法。4、项目相关C语言指令的作用及使用方法。教学后记二、教学实施过程实施环节教学内容导学方法组织教学1、检查学生出勤情况并做好记录。2、调整学生的注意力,为上课作准备。互动交流复习提问1、MCS-51单片机由哪几部分组成?2、MCS-51单片机有多少个I/O口引脚?提问导思导入夜晚的商业街上,各种各样的广告彩灯光彩夺目,变幻无穷,非常好看。那么功能强大的单片机是否能完成广告彩灯的控制任务呢?本项目的任务就是制作一个用单片机控制的广告灯电路。为完成项目制作,先进行相关基本知识的学习。启发学习积极性讲授新课一、MCS-51单片机并行接口1、P0口的结构和工作原理P0口每一位的结构如图2-2所示,它由一个输出锁存器,上下两个三态缓冲器,一个输出驱动电路和一个输出控制电路组成。图2-2P0口的结构从P0口输出数据的方法有两种,一种是执行以P0口为目的操作数的数据传送指令来实现,另一种是执行以P0口位为目的操作数的位操作指令来实现。分别举例如下:P0=0x66;//将立即数66H送到P0口P0_0=0;//将P0.0清0。P0口的主要功能如下:(1)作为通用I/O端口输出数据。使用时注意外接上拉电阻。该功能在前面已介绍过。(2)作为通用I/O端口输入数据。在输入数据时,要先向锁存器写“1”。(3)扩展外部设备时,作为低8位地址线和8位数据线分时复用。2、P1口的结构和工作原理P1口每一位的结构如图2-13所示。由P1口的结构图可以得知P1口的主要功能是:(1)作为通用I/O端口输出数据。由于P1口已有内部上拉电阻,输出数据时不必外接上拉电阻。使用多媒体展示图2-2。参照图2-2介绍其工作原理。说明为什么接上拉电阻,输入数据为什么是先写1。使用多媒体展示图2-13,重点介绍使用方法。(2)作为通用I/O端口输入数据。在输入数据时,要先向锁存器写“1”。图2-13图2-143、P2口的结构和工作原理P2口的位结构如图2-14所示,P2口的主要功能是:(1)作为通用I/O端口输出数据。输出数据时可以不外接上拉电阻。(2)作为通用I/O端口输入数据。在输入数据时,要先向锁存器写“1”。(3)系统扩展外部设备时,作为高8位地址总路线使用。4、P3口的结构和工作原理图2-15P3口的位结构如图2-15所示,P3口的主要功能如下:(1)作为通用I/O接口输出数据,输出数据时可以不外接上拉电阻。(2)作为通用I/O接口输入数据。同样,在输入数据时,要先向锁存器写“1”。(3)每位都有专有的第二功能(替代的输入或输出)。二、项目相关C语言指令下面我们进行C语言相关知识的介绍,以便顺利地编写项目应用程序。1、KeilC的预处理命令预处理命令是指先经过预处理处理器处理过后,才进行编译的命令。通常,预处理命令放在整个程序的开头。(1)文件包含命令#include是一个文件包含命令,其功能是将一些必要的头文件加入到程序体中。例如:#includereg51.h//将头文件reg51.h加入到程序体中。同上同上(2)宏定义命令#define是一个宏定义命令,它常用来指定常数、字符串或者宏函数的代用标识符。其指令格式如下。#define代名词常数(字符串或者宏函数)例如:#defineoutputsP0//定义使用outputs代替P0。定义后,当程序中用P0口输出时,如P0=0xFF就可以用outputs=0xFF代替。2、KeilC的循环指令当我们需要将程序流程控制在某个指定的循环里面时,就会用到循环指令,直到符合指定的结束条件才会结束循环。KeilC提供了for语句、while语句、do-while语句几种循环指令。(1)计数循环for语句是一个计数循环语句,其格式如下。for(表达式1;表达式2;表达式3){语句;…}其中表达式1是循环的初始值,表达式2是判断的条件,表达式3是循环变量增值,其中;为分隔符,不能被省略。举例说明一下。for(inti=0;i8;i++){…}该语句先给i置0,大括号中的语句循环执行8次后,i不小于8,循环结束。当循环语句中的条件判断部分缺省时,无论另外两个表达式怎样,这个for循环语句成为死循环。若该循环只需要执行一条指令时,可省略大括号。例如:for(inti=0;i8;i++)P0=i;//P0=i循环执行8次。若循环未达到跳出条件而需要强制跳出时,可在循环内加入其他条件和break指令。例如:for(inti=0;i8;i++){相关指令作为重点进行讲授,除教案中的举例之外,还要再通过更多的例子让学生练习以达到理解和灵活运用指令编写程序的目的。…if(sw==0)break;//当sw=0时,跳出循环体。…}(2)前条件循环while语句将判断条件放在语句开始,称为前条件循环,其特点是先判断再执行。使用格式如下:while(表达式){语句;…}其中表达式是循环语句的判断条件,当条件满足时,循环执行大括号中的语句;当条件不满足时,循环结束。当表达式条件始终满足时,该语句成为无限循环。与for循环语句一样,若大括号内只有一条指令,则可以省略大括号。若循环未达到跳出条件而需要强制跳出时,可在循环内加入其他条件和break指令。(3)后条件循环dowhile语句将判断条件放在后面,称为后条件循环,其特点是先执行再判断。格式如下:do{语句;…}while(表达式);在这个循环语句里,会先执行一次循环后,再判断表达式条件是否成立,若成立则继续执行循环体语句,若不成立则跳出该循环语句。三、指令周期与延时估算1、几个概念(1)时钟周期:单片机时钟振荡电路的振荡周期。(2)机器周期:单片机执行一种基本操作所用的时间,1个机器周期等于12个振荡周期。(3)指令周期:单片机执行一条指令所用的机器周期数。设单片机系统晶振频率fsoc=6MHz,则机器周期为:对while语句也要根据学生的理解情况进行相适应的举例说明。机器周期=12fsoc1=1210616=2s2、延时程序的延时时间粗略计算根据for语句和while语句的特点,我们可以利用它们编写简单的延时程序,来满足粗略的延时要求。以6MHZ晶振为例。(1)利用for语句进行简单延时。Voiddelay(intx){inti,j;for(i=0;ix;i++)//计数x次,延迟约xmsfor(j=0;j60;j++);//计数60次,延迟约1ms}(2)利用while语句进行延时。Voiddelay(unsignedchari){while(--i);//约延迟i*4s}一般来说,我们用for语句来进行相对较长的时间延迟,而用while语句来进行时间相对较短的延迟。课堂小结1、MCS-51单片机并行接口结构原理及使用方法。P0口用于输出时,注意外接上拉电阻,P1~P3口可直接用于输出。P0~P3口用于输入时,要先向端口写1再输入。2、相关C语言指令:#include命令、#define命令、for语句、while语句。3、指令周期与延时估算。课后作业自我测评1题、2题、3题、4题。任务2广告灯电路的硬件、软件设计一、案头任务广告灯电路的硬件、软件设计授课时间年月日授课班级教学形式讲授、讨论授课时数2课时教学用具多媒体教学资源课件、单片机应用制作成品课前准备教学目标1、掌握单片机并行接口用于输出时与外部电路的连接方法。2、了解发光二极管工作原理,理解广告灯电路构成,掌握单片机控制广告灯电路的整体构成。3、理解应用程序的一般结构,掌握广告灯程序的编程思路。4、理解程序流程图的作用,掌握流程图的画法。教学重点1、单片机并行接口用于输出时与外部电路的连接及整体电路构成。2、应用程序的的编程思路。教学难点1、对电路构成的理解和应用。2、灵活应用指令进行程序设计。教学过程1、使用发光二极管模拟广告灯,复习发光二极管特点。2、I/O端口控制发光二极管接线方法、亮灭控制原理及元件参数选择。3、在老师引导下,由同学或大家一起画出项目电路原理图。4、应用程序的一般结构。5、广告灯电路程序设计。6、程序流程图绘制。教学后记二、教学实施过程实施环节教学内容导学方法组织教学1、检查学生出勤情况并做好记录。2、调整学生的注意力,为上课作准备。互动交流复习提问1、将单片机P0口用于输出时,需要注意什么?2、发光二极管的特点?提问导思导入经过前面的相关知识学习,我们已经可以设计制作发光二极管广告灯电路了,下面我们根据发光二极管特点及所学相关知识来设计广告灯电路。首先看发光二极管与单片机的连接方法。启发学习积极性讲授新课一、广告灯电路设计1、发光二极管与单片机的连接由于单片机I/O端口输出高电平时的驱动能力较小,所以常使用低电平驱动方式,即将发光二极管通过限流电阻接于电源正极和单片机I/O端口引脚之间,如图所示。当端口输出0时,发光二极管点亮,当端口输出1时,发光二极管熄灭。2、广告灯电路原理图设计根据上述接线原理,可设计出由P0口输出控制8个发光管模拟广告灯的电路原理图。广告灯电路原理图3、元件选择本项目涉及到的元件选择主要有发光二极管和限流电阻两种元件。发光管的选择主要考虑颜色、亮度和直径;限流电阻的选择依据是发光管的工作电压和工作电流。请同学们来选择。二、应用程序设计1、项目程序设计考虑到本项目要求广告灯有的两种变化效果,现设计第一种变化为8个彩灯反复亮灭,第二种为流水灯效果。参考程序如下:(1)控制8个彩灯反复亮灭#includereg51.h//定义8051寄存器的头文件voiddelay(int);//声明延时函数/******以下是主程序***************/main()//主程序开始{老师直接在黑板上绘制。老师和同学共同完成电路原理图设计由同学选择,老师指导。在老师引导下与同学一起完成应用程序设计。P0=0xFF;//给P0口赋初值,全灭while(1)//进入死循环{P0=~P0;//P0口取反delay(500);//延时约0.5s(6MHZ晶振)}}//主程序结束/*******以下是延时子函数************/voiddelay(intx)//延时函数开始{inti,j;//声明变量i,jfor(i=0;ix;i++)//计数x次,延迟约xms(6MHZ晶振)for(j=0;j60;j++);//计数60次,延迟约1ms(6MHZ晶振)}//延时函数结束(2)控制8个彩灯产生流水灯效果2、应用程序的基本结构为了使应用程序清晰明了,方便编写和修改,我们通过本项目8个彩灯反复亮灭的例程来说明一下应用程序的基本结构。#includereg51.h//预处理命令,定义8051寄存器的头文件voiddelay(int);//声明延时子函数main()//主函数{…while(1)//while循环{…delay(500);//在主函数中调用延时子程序}}voiddelay(intx)//延时子程序{inti,j;//声明整型变量i,j…}(1)一个C语言源程序可以由一个或多个源文件组成。每个对于流水灯效果程序主要由学生来完成设计。时间允许时,可由同学设计其它广告变化程序。源文件可以由一个或多个函数组成。(2)一个源程序不论由多