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