
| 第2章 端口操作 | |||||
| 课题 | 项目四 红绿灯控制的设计 | 课时 | 4学时 | ||
| 教学内容 | 1、认识并搭建外围电路 2、红绿灯程序的编写、编译与下载 | ||||
| 教学目标 | 1、认知目标:进一步学习单片机端口外围电路的搭建和控制(红绿灯),了解局部变量和全局变量的概念。 2、技能目标:学会红绿灯控制的程序编写。 3、情感目标:培养学生探究、创新的学习能力。 | ||||
| 教学重点 | 红绿灯编程实现 | ||||
| 教学难点 | 红绿灯程序设计 | ||||
| 教学方法 | 设疑法、讲解法、提问法、示范法、仿真演示法 | ||||
| 教学过程 | 学生活动 | ||||
| 一、创设意境,导入新课
导入:复习延时小灯控制(LED灯如何实现亮灭,LED灯如何延时控制),引入新课程红绿灯设计。 从以上几幅图我们知道每个十字路口都有指挥交通的红绿灯,那同学们想过这个红绿是怎么样做的吗?怎么样实现控制的呢?结合我们现在学习单片机知识想一下是否可以利用单片机来设计红绿灯控制呢?那今天我们一起来学习制作简单的红绿灯。任务: 1、单方向红绿灯设计,电路、程序编写和硬件测试。 2、全红绿灯设计,电路、程序编写和硬件测试。 二、新课教学 任务一、认识并搭建外围电路(第一节课实操演示教学) 1、认识电路(仿真演示) 如图1所示是除单片机最小系统工作电路外所需要搭建的外围电路,其中P1.0脚外接绿灯、P1.1脚外接黄灯、P1.2脚外接红灯。 图1 搭建的外围电路 2、搭建电路 仿真电路 实物连接电路 任务二、程序的设计思路、编写、编译与下载 1、单方向红绿灯设计思路 2、程序编写 步骤1:在自己的文件夹中新建一个名为led-4的文件夹。 步骤2:在led-4文件夹下,新建一个名为led-4的工程。 步骤3:在led-4工程中,新建一个名为led-4.c的文件。 步骤4:回到工程编辑界面,编写程序。 #include #define uchar unsigned char //宏定义 #define uint unsigned int //宏定义 void delay(uchar utime); //声明子函数 sbit green=P1^0; //位定义 sbit yellow=P1^1; sbit red=P1^2; void main() //主函数 { while(1) //大循环 { green=0; //绿灯亮 delay(45); //延时45s green=1; yellow=0; //黄灯亮 delay(2); //延时2s yellow=1; red=0; //红灯亮 delay(45); //延时45s red=1; } } void delay(uchar utime) { uint i,j,k; for(k=utime;k>0;k--) for(i=1000;i>0;i--) for(j=115;j>0;j--); } 步骤5:输入完程序,将程序存盘。 3、程序编译参考项目二和项目三的具体过程。 任务三、程序中相关语句与函数的学习(第二节课理论教学) 1、#define 宏定义 格式:#define 新名称 原内容,相当于给“原内容”重新起了一个比较简单的“新名称”。本项目程序中,将unsigned char 用“uchar”代替。 2、带参数函数的写法及调用 本项目所写的程序中包含如下子函数体。 void delay(uchar utime) { uint i,j,k; for(k=utime;k>0;k--) for(i=1000;i>0;i--) for(j=115;j>0;j--); } 上面子函数中,delay后面的括号中多了“uchar utime”,这就是这个函数所带的一个参数,utime是一个unsigned char型变量,称为这个函数的形参,在调用此函数时,用一个具有真实的数据代替此形参,这个真实数据称为实参,形参被实参代替之后,在子函数内部,所有和形参名相同的变量都被实参代替。 任务四、Keil软件仿真下I/O口与变量状态的观察 1、进入Keil软件模拟调试模式 进入Keil软件模拟调试模式的具体操作步骤参照项目三中的相关内容,如图2所示 图2 进入软件模拟调试模式界面 2、查看单步执行时I/O口的变化状态 步骤1:先将硬件I/O口模拟器打开,单击【Peripherals】|【I/O-Port 1】菜单项,如图3所示,弹出如图4所示的对话框。 图3 选择I/O口状态 图4 查看I/O口状态 图4显示的是软件模拟出的单片机P1口8位端口的状态,单片机上电后I/O口状态全为1,即十六进制的0XFF。 步骤2:单击单步执行快捷图标,这时观察到“green=0”,语句前面有一个黄色的小箭头,说明下一步将要执行该语句,状态如图5所示: 图5 执行green=0;语句前P1口状态 步骤3:再次单击单步执行,这时观察到黄色小箭头向下移动一行,指向“delay(45)”;延时子函数,这说明green=0,这条语句已执行结束。此时观察到P1口的8位端口状态为11111110,如图6所示: 图6 执行green=0;语句前P1口状态 执行完“green=0”,这条语句后,P1.0脚已经变为低电平0。 任务五、红绿灯程序设计编写实训(第三节课实训) 1、红绿灯仿真电路搭接实训。(参考仿真电路) 2、红绿灯程序设计思路 3、红绿灯参考程序 #include #define uchar unsigned char #define uint unsigned int //定义北面的LED sbit N_Red = P1^0; sbit N_Yellow = P1^1; sbit N_Green = P1^2; //定义东面的LED sbit E_Red = P1^3; sbit E_Yellow = P1^4; sbit E_Green = P1^5; //定义南面的LED sbit S_Red = P1^6; sbit S_Yellow = P1^7; sbit S_Green = P2^0; //定义西面的LED sbit W_Red = P2^1; sbit W_Yellow = P2^2; sbit W_Green = P2^3; /******************************************************************** * 名称 : Delay() * 功能 : 延时,延时时间为 10ms * del ***********************************************************************/ void Delay(uint del) { uint i,j; for(i=0; i } /******************************************************************** * 名称 : Main() * 功能 : 实现灯的闪烁 ***********************************************************************/ void Main(void) { while(1) { /*南北红灯亮、东西绿灯亮、持续时间20秒*/ N_Red = 0; N_Yellow = 1; N_Green = 1; E_Red = 1; E_Yellow = 1; E_Green = 0; S_Red = 0; S_Yellow = 1; S_Green = 1; W_Red = 1; W_Yellow = 1; W_Green = 0; Delay(2000); /*南北红灯亮、东西黄灯亮、持续时间5秒*/ N_Red = 0; N_Yellow = 1; N_Green = 1; E_Red = 1; E_Yellow = 0; E_Green = 1; S_Red = 0; S_Yellow = 1; S_Green = 1; W_Red = 1; W_Yellow = 0; W_Green = 1; Delay(500); /*南北绿灯亮、东西红灯亮、持续时间20秒*/ N_Red = 1; N_Yellow = 1; N_Green = 0; E_Red = 0; E_Yellow = 1; E_Green = 1; S_Red = 1; S_Yellow = 1; S_Green = 0; W_Red = 0; W_Yellow = 1; W_Green = 1; Delay(2000); /*南北黄灯亮、东西红灯亮、持续时间5秒*/ N_Red = 1; N_Yellow = 0; N_Green = 1; E_Red = 0; E_Yellow = 1; E_Green = 1; S_Red = 1; S_Yellow = 0; S_Green = 1; W_Red = 0; W_Yellow = 1; W_Green = 1; Delay(500); } } 4、红绿灯硬件电路连接(参考接法,可以使用其他端口) 任务六、红绿灯功能测试 1、红绿灯硬件电路连接测试 2、红绿灯程序设计测试 3、红绿灯实现功能测试 法律知识:《道路交通安全法》 第二十五条 全国实行统一的道路交通信号。 交通信号包括交通信号灯、交通标志、交通标线和交通的指挥。 交通信号灯、交通标志、交通标线的设置应当符合道路交通安全、畅通的要求和国家标准,并保持清晰、醒目、准确、完好。根据通行需要,应当及时增设、调换、更新道路交通信号。增设、调换、更新性的道路交通信号,应当提前向社会公告,广泛进行宣传。 第二十六条 交通信号灯由红灯、绿灯、黄灯组成。红灯表示禁止通行,绿灯表示准许通行,黄灯表示警示。 三、课堂小结 本项目的学习让同学知道了交通灯是怎么样设计的,交通灯的控制方法。但是在程序设计的过程中,学生学习起来还是有点困难。因此在教学中我多分析,多演示,这样学生学习起来更加容易。 4、课后作业 1、红绿灯程序编写绿灯黄灯快要结束时进行亮灭变化显示,延时函数通过参数方式编写控制。(实训) 2、动手操作和思考练习P54页。(实训) 五、开拓思维,同时提出新的问题 通过交通灯的设计我们知道了不同时间段可以控制不同阶段的LED灯,那程序设计中的相关语句和I/O口变量的状态怎么样想知道吗?实际应用中红绿灯还需要加上那些功能。 | 观察学生反映(对导入是否产生兴趣): 学生听课状态: 学生练习情况: 学生兴趣焦点总结: | ||||
| 课后反思 | |||||
