任务10 模拟交通灯控制任务10 模拟交通灯控制.doc

任务10 模拟交通灯控制任务10 模拟交通灯控制.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学 科 单片机控制系统运行与检修 授课班级 10411-10414 日期 5.16 课 题 任务10 模拟交通灯控制 授课类型 项目教学 课时 2 教 材 单片机应用技术(C语言版) 任课教师 课序 1-2 教学目标 认知目标 了解单片机中断系统的结构及与中断有关的寄存器、中断的开放与禁止 能力目标 掌握中断程序的编写技巧 情感目标 1、通过任务驱动项目教学培养学生学习电子专业单片机课程的浓厚兴趣; 2、养成做事耐心、细致、严谨的科学作风; 3、提高学生“6S管理”意识。 教学重点 中断程序的编写技巧 教学难点 中断程序的编写技巧 教学方法 讲练结合 课前准备 教师准备:1、教案设计2、课件准备; 学生准备:1、学生预习2、完成预习报告,明确任务 设计意图 教师要求学生课前预习,明确本次课学习的内容。教师在单片机实训室按照实训指导书的要求一步步完成相关的实训内容。在教师做适当讲解后尽量让学生自主学习,讨论学习,展示成果。进行总结。 教 学 过 程 教 学 内 容 教师活动 学生活动 一、实训目的 通过采用1个按键输入的可控交通灯系统的制作,了解单片机中断系统的结构及与中断有关的寄存器、中断的开放与禁止,以及中断程序的编写技巧。 二、实训要求 在任务3电路的基础上,增加一个按键,通过按键改变交通灯的显示方式。要求正常情况下8个交通灯依次顺序点亮,循环显示,时间间隔为1S。按键按下后8个交通灯同时亮灭一次,时间间隔为0.5S。用T1、工作方式1编制延时程序,按键动作采用外部中断INT0实现。 三、实训电路 可控交通灯电路如下图所示,与任务3电路相比,该电路只增加了一个按键,改按键与MCS-51系列单片机的外部中断INT0的终端输入引脚连接,当按键按下时,在引脚产生一个下降沿,向CPU申请中断 四、参考程序 //程序:ex4_3.c //功能:可控信号灯程序 #include reg51.h //函数名:delay0_5s //函数功能:用T0的方式1编制0.5秒延时程序,假定系统采用12MHz晶振,定 // 时器1、工作方式1定时50ms,再循环10次即可定时到0.5秒 //形式参数:无 //返回值:无 void delay0_5s() { unsigned char i; for(i=0;i0x0a;i++) // 设置10次循环次数 { TH0=0x3c; // 设置定时器初值 TL0=0xb0; TR0=1; // 启动T0 while(!TF0); // 查询计数是否溢出,即定时50ms时间到,TF0=0 TF0=0; // 50ms定时时间到,将定时器溢出标志位TF0清零 } } //函数名:delay_t //函数功能:实现0.5秒~128秒延时 //形式参数:unsigned char t; // 延时时间为0.5秒×t //返回值:无 void delay_t(unsigned char t) { unsigned char i; for(i=0;it;i++)delay0_5s(); } //函数名:int_0 //函数功能:外部中断0中断函数,当CPU响应外部中断0的中断请求时,自动执行该 // 函数,实现八个信号灯闪烁 //形式参数:无 //返回值:无 void int_0() interrupt 0 //外部中断0的中断号为0 { P1=0x00; //熄灭八个信号灯 delay0_5s(); //调用0.5秒延时函数 P1=0xff; //点亮八个信号灯 delay0_5s(); //调用0.5秒延时函数 } void main() //主函数 { unsigned char i,w; EA=1; // 打开中断总允许位 EX0=1; // 打开外部中断0允许位 IT0=1; // 设置外部中断为边沿(下降沿)触发方式 TMOD=0x01; // 设置T0为工作方式1 while(1) { w=0x01; // 显示码初值为01H for(i=0;i8;i++) { P1=~w; // w取反后送P1口,点亮相应LED灯 w=1; // 点亮灯的位置移动 delay_t(2); // 调用延时函数delay_t(),实际参数为2,延时1秒 }

文档评论(0)

cduutang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档