1、单片机应用技能实训 (C 语言)教案 项目 8项目 8 数字显示交通灯控制电路制作任务 1 项目相关知识学习一、案头任务 项目相关知识学习授课时间 年 月 日 授课班级教学形式 讲授、讨论 授课时数 2 课时教学用具 教学资源 项目制作成品或元件、课件课前准备教学目标 1、掌握简单 I/O 端口扩展的接线方法。2、掌握简单 I/O 端口扩展应用程序的编写。3、熟悉在 C51 中直接插入汇编语言程序的编程方法。教学重点 1、简单 I/O 端口扩展的接线方法。2、简单 I/O 端口扩展应用程序的编写。教学难点 1、对同时扩展 8 位并行输出和输入的理解。教学过程 1、通过对交通灯功能的讨论,引出项
2、目任务。2、简单 I/O 端口扩展的芯片简介。3、简单 I/O 端口扩展的接线方法及程序编写。4、在 C51 中直接插入汇编语言程序的编程方法。教学后记二、教学实施过程实施环节 教学内容 导学方法组织教学 1、检查学生出勤情况并做好记录。2、调整学生的注意力,为上课作准备。互动交流复习提问 1、根据前面所学知识,如何进行 I/O 端口的扩展?2、交通灯的作用是什么?有什么功能?本项目的终极目标是制作一个单片机控制的能显示倒计时时间的交通灯控制电路。提问导思导入 在项目 6 中用数码管显示时间,为了不造成资源浪费,我们利用串行口方式 0 进行输出口扩展。但利用串行口方式 0 扩展并行输出口,在使
3、用上有一定局限性,所以,我们在进行项目制作之前,学习 MCS-51 单片机简单 I/O 口的扩展方法。启发学习积极性讲授新课 一、并行 I/O 端口的扩展由于简单 I/O 端口扩展方法简单实用,下面对该方法加以介绍。1、简单 I/O 端口扩展芯片简介通常采用三态缓冲器(例如 74LS244、74LS541 )来扩展并行输入,用 8D 锁存器(例如 74LS373、74HC573)来扩展并行输出。图 8-2 是 74LS541 和 74HC573 的逻辑符号图。74LS541 是三态缓冲器,74HC573 是 8D 锁存器,采用 20 脚双列直插封装。图 8-2 74LS541 74HC573
4、逻辑符号图2、简单 I/O 端口扩展举例例 8.1 利用两个 8D 锁存器 74HC573 扩展两个 8 位并行输出口。单片机扩展两个 8 位并行输出端口的硬件电路如图 10-3 所示,在预处理命令中将 p20 定义为 P2.0,将 p21 定义为 P2.1。当需要将 A 中数据从 U2 输出时,执行如下指令:p20=0; /U2 锁存数据p21=0; /U3 锁存数据P0=ACC; /将 ACC 数据送给 P0用多媒体展示图 8-2 进行介绍。重点介绍引脚使用。p20=1; /数据从 U2 输出p20=0; /U2 锁存数据当需要将 A 中数据从 U3 输出时,执行如下指令:p20=0; /
5、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 和74LS373 作为单片机的外部数据存贮器单元来进行操作。由于74LS541 和 74LS373 通过逻辑电路只与 16 位地址线中的 P2.0相连,都是在 P2.0 为 0 时
6、被选通的,所以二者的口地址都为FEFFH。图 8-4当需要输入和输出数据时可通过如下程序完成。用多媒体展示图 8-3,介绍连接方法,重点介绍编程方法。char xdata *p1=0xfeff; /定义外部数据地址unsigned char a=0x02;a=*p1; /将 74LS541 对应端口数据输入*p1=a; /输出数据给 74LS373 对应端口二、C51 中插入与汇编语言程序1、在 C51 中直接插入汇编语言程序方法当需要在 C51 源程序中插入汇编语言程序时,可使用#pragma asm 和 #pragma endasm 语句包含插入的汇编语言程序。格式如下:#pragma a
7、sm汇编语言程序#pragma endasm例如编写程序从 P2.7 输出方波,要求在 C51 程序中直接插入汇编语言程序。程序如下:#includesbit p27=P27;void main()while(1)P27=!p27;#pragma asmMOV R1,#250D1:DJNZ R1,D1#pragma endasm图 8-5 激活 SRC_CONTROL2、使用 keil c 进行编译注意事项(1)将 SRC_CONTROL 激活。激活方法是:在 Project 窗口用多媒体展示图 8-4,介绍连接方法。重点介绍编程方法。中包含汇编语言程序的 C 文件上右击鼠标,从弹出的快捷菜单
8、中选择 Options for file 命令,双击右边的 Generate Assembler SRC File 和 Assemble SRC File,使复选框由无效变为有效状态。如图 8-5 所示。(2)根据选择的编译模式,把相应的库文件(如 Small 模式,库文件为keilC51LIBC51S.LIB)加入的工程中。课堂小结 1、简单 I/O 端口扩展方法及芯片介绍。2、简单 I/O 端口扩展的接线及编程。3、C51 中插入与汇编语言程序。课后作业 自我测评 1 题、2 题。任务 2 数字显示交通灯控制电路硬件、软件设计一、案头任务 数字显示交通灯控制电路硬件、软件设计授课时间 年
9、月 日 授课班级教学形式 讲授、讨论 授课时数 2 课时教学用具 教学资源 课件、单片机应用制作成品课前准备教学目标 1、掌握简单 I/O 端口扩展的应用。2、掌握数字显示交通灯控制电路的整体构成。3、理解应用程序的编程思路。教学重点 1、应用 I/O 扩展完成数字显示交通灯控制电路设计。2、应用程序的编程思路。教学难点 1、应用程序的编写思路。教学过程 1、复习提问简单 I/O 端口扩展方法,讨论交通灯控制特点。2、介绍项目任务要求。3、根据项目任务要求引导设计硬件电路。4、应用程序流程图绘制。5、应用程序设计。教学后记二、教学实施过程实施环节 教学内容 导学方法组织教学 1、 检查学生出勤
10、情况并做好记录。2、 调整学生的注意力,为上课作准备。互动交流复习提问 1、I/O 端口的扩展有哪几种方法?2、数码管的动态显示方法?3、讨论交通灯控制的功能特点?提问导思导入 在学习了简单 I/O 口扩展方法后,我们利用所学知识进行项目硬件电路设计。项目要求如下:(1)东西、南北各用两位数码管显示相应路口的倒计时时间。(2)东西、南北各用三个灯(红、黄、绿)来指挥交通。 (3)装一个紧急事件按键(或开关) ,当该按键闭合时,进入紧急事件状态,使各方向均亮红灯。启发学习积极性讲授新课 一、项目硬件电路设计1、电路构成方案设计根据项目要求,本项目硬件由按键电路(紧急事件) 、单片机最小应用系统、
11、扩展输出电路、数码管显示电路和交通灯电路(发光二极管代替)构成。扩展输出用芯片 74HC73 来完成。2、电路设计根据电路构成方案进行设计,关键是扩展输出及显示电路的设计。硬件原理图如图 8-7 所示。图 8-7 交通灯控制电路原理图3、元件选择 (1)复习晶振电路元件及复位电路元件的选择。(2)复习发光二极管电路元件选择。老师和同学共同讨论电路构成方案。由老师讲解,老师和同学共讨论设计,用多媒体展示图 8-7。通过提问或讨论方式由同学进行使用练习。(3)数码管及限流电阻的选择。(4)扩展芯片选择:74HC573,上拉电阻 R2R9:10K。二、应用程序编写1、应用程序流程图绘制根据交通灯的实
12、际转换规律,每隔一定时间要进行倒计时时间及灯控数据的变换,由 4 组数据周期交替变换,其变化规律如表 8-1所示。当紧急事件按键按下时,东西南北均亮红灯。表 8-1 交通灯控制信号变化规律表数组 灯控信号数据 变换数据时间间隔东西倒计时时间南北倒计时时间第一组 东西绿灯、南北红灯25 秒 25 秒 30 秒第二组 东西黄灯、南北红灯5 秒 5 秒 5 秒第三组 东西红灯、南北绿灯25 秒 30 秒 25 秒第四组 东西红灯、南北黄灯5 秒 5 秒 5 秒该程序设计可考虑由倒计时时间显示函数、外部中断 0 的中断函数、定时器 T0 的中断函数、交通灯状态查询与转换控制函数、主函数等几部分组成。关
13、键是交通灯状态查询与转换控制函数,其作用是:不断的查询交通灯的状态,当倒计时时间为 0 时,进行交通灯状态的转换,该函数的参考流程图如图 8-8 所示。用多媒体展示图 8-8。图 8-8在该流程图中,交通灯状态用变量 dzt 值来表示。定义如下:2、程序设计由于程序比较大,课上只进行关键程序的编写。程序如下:#include /含_nop_()函数#include #define EWGNSR 0 /东西绿南北红#define EWYNSR 1 /东西黄南北红#define EWRNSG 2 /东西红南北绿#define EWRNSY 3 /东西红南北黄#define LINIT 4 /初始化
14、 #define JJSJ 5 /紧急事件sbit NS_R = P27;/南北红sbit NS_G = P25;/南北绿sbit NS_Y = P26;/南北黄sbit EW_R= P24;/东西红sbit EW_G = P22;/东西绿sbit EW_Y= P23;/东西黄sbit U2_LE = P21;/锁存sbit U3_LE = P20;/sbit p10=P10;unsigned char t0cs; /1 秒定时次数unsigned char NSsj; /南北倒计时时间unsigned char EWsj;/东西倒计时时间unsigned char dzt; /交通灯状态un
15、signed char code_data10= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /显示数字段码数组void Light(void); /交通灯状态查询及转换控制子函数 void Display(void); /倒计时时间显示子函数void delay(void); /延时子函数void Emergency() interrupt 0;/外部中断 0/*以下是交通灯状态查询及转换控制子函数 */void Light(void)if(dzt=EWGNSR)/东西绿南北红if(EWsj=0)/东西 25s 时间到EWsj=5;/
16、5s 东西黄灯NSsj=5;dzt =EWYNSR; /转换交通灯状态NS_R = 1;/南北红亮NS_G = 0;/南北绿灭NS_Y = 0;/南北黄亮EW_R = 0;/东西红灭EW_G = 0;/东西绿灭EW_Y = 1;/东西黄亮else if(dzt = EWYNSR)/东西黄南北红if(EWsj=0)/东西 5s 时间到dzt = EWRNSG;/转换交通灯状态EWsj=30;NSsj=25;NS_R = 0; NS_G = 1;NS_Y = 0; EW_R = 1;EW_G = 0;EW_Y = 0;else if(dzt = EWRNSG)/东西红南北绿if(NSsj=0)/南
17、北 25s 时间到dzt = EWRNSY;/转换交通灯状态NSsj= 5;EWsj=5;NS_R = 0;NS_G = 0;NS_Y = 1;EW_R = 1;EW_G = 0; EW_Y = 0;else if(dzt = EWRNSY)/东西红南北黄if(NSsj=0)/南北 5S 时间到dzt = EWGNSR;NSsj= 30;EWsj= 25;NS_R = 1; NS_G = 0; NS_Y = 0; EW_R = 0;EW_G = 1;EW_Y = 0;else if(dzt = LINIT)/初始化中if(NSsj=0)/初始状态时间到dzt = EWGNSR;NSsj=30;
18、EWsj=25;NS_R = 1;NS_G = 0;NS_Y = 0;EW_R = 0;EW_G = 1;EW_Y = 0;else if(dzt = JJSJ)/紧急事件NSsj = 30;EWsj= 30;NS_R = 1;NS_G = 0;NS_Y = 0;EW_R = 1;EW_G = 0;EW_Y = 0;/*以下是主函数*/void main(void)IP = 0x02;TMOD = 0x01; TL0 = (65536 - 50000)%256;/50TH0 = (65536 - 50000)/256;TCON = 0x51; /启动 T0 计数,外中断 0 边沿触发。IE =
19、 0x83; /T0 中断开,开总中断位。U2_LE = 0; /使 U2 处数据锁存状态 U3_LE = 0; t0cs =10; /置定时次数dzt = LINIT ; /初始化状态NSsj = 5; EWsj= 5; NS_R = 0;NS_G = 0;NS_Y = 1; EW_R = 0;EW_G = 0;EW_Y = 1;while(1)Light(); /调用灯状态查询及转换控制函数 Light()Display();/调用时间显示函数3、讨论应用程序可否进行修改课堂小结1、数字显示交通灯控制电路设计。2、C 语言相关指令使用。3、应用程序设计,关键是程序流程图设计。课后作业1、自
20、我测评 6 题。2、编写交通灯应用程序之倒计时时间显示函数、外部中断 0 的中断函数、定时器 T0 的中断函数。任务 3 数字显示交通灯控制电路的计算机仿真一、案头任务 数字显示交通灯控制电路的计算机仿真授课时间 年 月 日 授课班级教学形式 老师演示、学生练习 授课时数 2 课时教学用具 教学资源 机房、多媒体、相关课件课前准备教学目标 1、数字显示交通控制电路设计的计算机仿真验证。2、提高工具软件的使用熟练程度。3、熟练相关指令的使用及电路应用程序设计。教学重点 1、数字显示交通灯控制电路设计的计算机仿真验证。2、程序编写与修改。教学难点 1、仿真电路运行出错时的修改调试。教学过程 1、p
21、roteus 仿真电路绘制步骤复习。2、用 keil 进行程序汇编步骤复习。3、布置练习作业,学生进行练习并验证电路效果,老师进行指导。教学后记二、教学实施过程实施环节 教学内容 导学方法组织教学 1、检查学生出勤情况并做好记录。2、调整学生的注意力,为上课作准备。互动交流复习提问 1、数字显示交通灯控制电路都有哪些功能? 提问导思导入 刚才同学们对数字显示交通灯控制电路的功能作了叙述,下面就根据上次课进行的电路设计及程序编写,用计算机仿真验证本次项目设计的正确性和运行效果。启发学习积极性讲授新课 一、使用 proteus 绘制仿真电路图的步骤参照图 8-6 进行仿真电路绘制。利用多媒体机房相
22、关软件进行操作演示。讲解个步骤的含义。图 8-6 交通电路原理图1、将所需元器件加入到对象选择器窗口电阻、电容、电解电容、按键、晶振的英文符号分别是“RES”、 “CAP”“CAP-ELEC”、 “BUTTON”、 “CRYSTAL”;共阳红色两位数码管的英文符号是“7SEG-MPX2-CA ”;交通灯的英文符号是“TRAFFIC LIGHTS” 。2、放置元器件至图形编辑窗口3、移动对象和调整对象朝向4、放置电源及接地符号5、元器件之间的连线6、编辑对象的属性设置元件参数二、使用 keil 进行程序汇编的步骤1、源文件的建立输入完源程序后,保存该文件,注意必须加上扩展名.c。2、建立工程文件
23、点击“Project-New Project”菜单,出现一个对话框,要求给将要建立的工程起一个名字,-。3、工程的设置在 OutPut 页面,勾选“ Creat Hex file”选项。4、编译、连接在设置好工程后,即可进行编译、连接。点击按钮 ,对当前工程中的文件进行编译然后再连接,生成目标代码。编译过程中的信息将出现在输出窗口中的 Build 页中,如果源程序中有语法错误,会有错误报告出现。三、布置作业学生练习,老师指导。1、数字显示交通灯控制电路仿真验证。2、紧急事件处理是否能不采用中断方式?在电脑上仿真试试。课堂小结 1、proteus 的基本操作步骤。2、keil 的操作步骤。3、数
24、字显示交通灯控制电路的仿真验证。课后作业 技能反复训练与思考题 3 题、4 题。任务 4 数字显示交通灯控制电路的制作与调试一、案头任务 数字显示交通灯控制电路的制作与调试授课时间 年 月 日 授课班级教学形式 学生动手操作、老师指导 授课时数 2 课时教学用具 万用表、电烙铁等 教学资源 实训设备、电路制作成品课前准备 数字显示交通灯控制电路 PCB 板、相关电子元件采购、准备。教学目标 1、掌握项目相关元件的测试方法。2、掌握使用相关工具进行电路制作的操作方法。3、掌握使用仪表进行电路测试方法,提高仪表使用的熟练程度。4、掌握数字显示交通灯控制电路构成及硬件、软件调试。教学重点 1、掌握相
25、关元件测试方法。2、掌握数字显示交通灯控制电路构成及硬件、软件调试。教学难点 1、电路调试中的故障查找。教学过程 1、强调实训室操作规程,注意操作安全。2、数字显示交通灯控制电路各元件及使用工具简介。3、学生进行元件测试。4、分组进行硬件电路制作。5、分组进行硬件电路调试。6、根据硬件电路实际对应用程序进行修改并进行运行调试。教学后记二、教学实施过程实施环节 教学内容 导学方法组织教学 1、检查学生出勤情况并做好记录。2、调整学生的注意力,为上课作准备。互动交流复习提问 1、紧急事件按键可否不采用中断方式?2、如何对数码管进行简单测试?提问导思导入 强调操作纪律及操作安全注意事项。经过前面几个
26、项目的制作,同学们已经有了制作经验,但本项目比较复杂,我们用PCB 板进行硬件制作,同学们在 2 学时内完成项目制作调试并启发学习积极性有满意的效果。由学生分组展开实际操作。建议每组 2 人,最好每组不超过 3 人。项目制作 一、认识项目相关元件及元件测试1、复习发光二极管、电阻等元件测试方法并进行操作练习。2、复习 4 位一体数码管测试方法并进行测试。二、按元件高低层次依次进行插装与焊接1、电阻的插装与焊接。2、电容、晶振的插装与焊接。3、40 脚及 20 脚 IC 插座插装与焊接。4、按键及数据线插座的插装与焊接。5、电解电容、发光二极管、数码管的插装与焊接。三、电路连接完成各元件的连接后
27、,将电源线引出或将 USB 座焊接在电路板上,使用电脑上的 5V 电源。往届学生制作成品如图所示。四、硬件电路调试1、通电之前,先用万用表检查各电源线与地线之间是否有短路现象,测试 40 脚及 20 脚 IC 插座各脚对地电阻值并记录,分析各电阻值是否合理。若发现有不合理值,则要进行分析查找及处理。点按控制按键,测量相应引脚电阻是否为 0。2、不插单片机芯片,接通电源,检查所有插座或器件的电源端是否有符合要求的电压值,如发现电压值偏离较多,应立即中断供电并检查处理。接地端电压是否为 0V,测试 40 脚及 20脚 IC 插座各脚对地电压并记录,分析各电压值是否合理。3、在不插上单片机芯片时,接
28、通电源,模拟单片机输出低电学生分组进行动手制作,老师巡回指导或示范操作。由学生动手操作,老师进行巡回指导,必要时进行示范操作。将所测试数据列表记录并妥善保存。平(将对应引脚接地) ,检查相应的外部电路是否正常(观察发光二极管是否点亮) 。模拟 74HC573 输出相应电平,检查数码管相应位是否点亮。五、写入应用程序试运行学生动手实际操作,根据硬件电路实际对应用程序进行修改后,编译生成目标文件写入单片机芯片进行运行调试。运行正常后,再对应用程序进行修改以期能有更好的效果实现。项目制作小结1、元件测试方法。2、元件插装与焊接及电路连接。3、硬件电路调试。4、程序写入与运行调试。课后作业 1、将项目制作调试时测试数据列表并分析。2、总结本项目制作中出现问题及解决方法。