24 交通灯电路(程序)_第1页
24 交通灯电路(程序)_第2页
24 交通灯电路(程序)_第3页
24 交通灯电路(程序)_第4页
24 交通灯电路(程序)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 堂 教 学 教 案 授 课 章 节 名 称 24 定时器实现倒计时交通灯程序部分 课型 实践 授 课 日 期 年 月 日 第 周 课时数 2 教 学 目 标 知识与技能: 1、 正确分析交通灯电路的结构、工作流程 2、 能够根据工作流程完成程序的编制并调试 过程与方法: 1、掌握模块化编程的方法 情感态度价值观: 1、培养分块分析、软件硬件相结合的逻辑思维 教 学 重 点 能够根据工作流程完成程序的编制并调试 教 学 难 点 能够根据工作流程完成程序的编制并调试 教 学 方 法 讲授法、演示法、实验法 教 学 资 源 PPT、计算机、仿真软件 课 外 作 业 实训报告 教 学 后 记 教学实践 教学环节与主要教学内容 具体教学目标 教学活动 【新课讲授】 任务三、定时器中断实现倒计时交通灯控制电路部分 一、复习电路结构 图 3-18 交通灯控制系统硬件原理图 系统中,用 P3.5 控制机动车道下路口绿灯,P3.6 控制机 动车道下路口黄灯,P3.7 控制机动车道下路口红灯。因为上路 口的红绿灯状态和下路口的红绿灯状态是相同的,因此,将上 路口的红黄绿灯和下路口的红黄绿灯接在一起。 P3.3 接行人红灯,P3.4 接行人绿灯。INT0 连接一个按键 作为行人优先系统的输入端。P0 口做数码管的段选端口,P2.0 和 P2.1 分别做两个数码管的位选端口。 二、分析任务流程 在单片机系统中,系统总是工作在不同的状态的,当满足 一定的条件时,状态之间就会产生转移,系统从一个状态转移 到另一个状态的过程叫做状态切换。一个复杂的系统可能具有 数十个状态,而且有的状态本身还会具有包含于自身内部的子 状态。而一个完好的单片机系统最首要的就是保证各个状态之 间的切换不能产生错误。在本任务中,系统的状态只有三个, 即红灯状态,黄灯状态和绿灯状态。 为了达到系统状态正确切换的目的,人们发明了很多种系 统程序编写的方法,其中前后台系统就是一种简单且常用的系 统编程方法。 前台是指系统中具有较高实时性的部分。一般来说,前台 由各个中断服务程序组成,当中断条件满足时,通过中断服务 程序快速地将一些具有实时性要求的标志进行置位或复位操作, 以供后台程序能够及时查询到响应的系统变化而执行相关的操 作。另一方面,前台程序可以完成一些影响用户操作体验的程 序,比如按键输入扫描和数码管的动态扫描显示等,前者要求 无论何时都不能遗漏用户的输入操作,后者要求用户的视觉体 验要没有明显不适,这类需要定时扫描的模块一般也会放在前 台中。 分析电路结构 做好仿真任务 准备 教师讲授 学生记录 学生讨论 后台是指系统中实时性要求不是很高的部分。一般来说, 后台就是主函数中由 while(1)限定的循环部分。比如数码管 显示秒计数的时候,如果存在数十毫秒的误差,这样微小的时 间差一般不会引起人感官上的差别,因此这样的程序部分就可 以放在后台中。后台一般也用于通过扫描系统各个标志位的变 化来切换系统的状态。需要注意的是,在采用前后台的系统中, 一般后台部分的程序比较庞大,所以在后台程序中应该避免甚 至杜绝延时类的程序,以免某些后台程序响应过慢。 在本任务中,主函数作为后台部分,完成系统状态切换, 数码管缓冲刷新,读秒等操作。INT0、T0、T1 作为前台部分, 实现行人实时优先,数码管动态扫描和秒信号发生等操作。 三、任务实施 1、编写程序 系统源程序如下: /* 交通信号灯演示程序 */ #include “reg52.h“ typedef unsigned char U8; /定义 8 位无符号数据类 型 #define DM P0 /数码管数据端口 P0 #define ZT_LV 0 /定义绿灯状态号为 0 #define ZT_HUANG 1 /定义黄灯状态号为 1 #define ZT_HONG 2 /定义红灯状态号为 2 #define LV_SJ 40 /定义绿灯起始秒数为 40s #define HUANG_SJ 4 /定义黄灯起始秒数为 4s #define HONG_SJ 20 /定义红灯起始秒数为 20s #define KAI 0 #define GUAN 1 sbit XR_HONG=P33; /定义行人红灯硬件接口为 P3.3 sbit XR_LV=P34; /定义行人绿灯硬件接口为 P3.4 sbit LV=P35; /定义绿灯硬件接口为 P3.5 sbit HUANG=P36; /定义黄灯硬件接口为 P3.6 sbit HONG=P37; /定义红灯硬件接口为 P3.7 sbit SMG0=P20; /数码管位选端口为 P2.0 和 P2.1 sbit SMG1=P21; U8 flag=0; /数码管扫描标志,用于确定当前需要扫描的位 U8 zou_miao=0; /走秒标志,当为 1 时,秒减 1 U8 miao=0; /秒变量 U8 jie_pai=0; /系统节拍计数器 U8 zhuang_tai=0; /系统状态变量 U8 shan_shuo=0; /黄灯闪烁亮灭切换标志 U8 smg2=0; /数码管显示缓冲数组 教师讲授 U8 code dm =0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x ff; /* 主函数:系统初始化 系统状态切换; 填充数码管显示缓冲; 黄灯闪烁; */ 以下程序供参考 void main() TMOD=0x11;/定时器 T0 和 T1 均工作在定时器模式,方式 1,不 带门控 IT0=1; /外部中断 0 为跳沿(下降沿)触发方 式 TH0=0x3c; /T0 置初值(50ms) TL0=0xb0; TH1=0xf8; /T1 置初值(2ms) TL1=0xcc; EA=ET0=ET1=EX0=1;/打开 T0,T1,INT0 中断允许控制位 TR0=TR1=1; /T0,T1 开始走时 zhuang_tai=ZT_LV; /系统以绿灯状态开始 miao=LV_SJ; LV=KAI; XR_HONG=KAI; /行人红灯亮,行人绿灯 灭 XR_LV=GUAN; while(1) if(miao5) /如果剩余秒数大于 5 miao=4; /直接将秒降到 4 /* * 定时器 T0 中断服务函数: 走秒信号和黄灯闪烁信号都在这里产生 * */ void T0_INTR(void) interrupt 1 TH0=0x4c; /初始值重置 TL0=0x00; jie_pai+; /节拍计数器加 1 if(zhuang_tai=ZT_HUANG) /如果当前是黄灯状态 if(jie_pai%10=0) /如果节拍计数器是 10 的倍 数(即半秒时间到) shan_shuo=1; /置位闪烁标志 if(jie_pai=20) /如果节拍计数器达到 20(即 1s 时间到) jie_pai=0; /重置节拍计数器 zou_miao=1; /置位走秒标志 /* 定时器 T1 中断服务函数: 与显示函数配合实现数码管动态扫描 */ void T1_INTR(void) interrupt 3 TH1=0xf8; TL1=0xcc; xian_shi(smg); 2、程序分析 主函数中,程序先完成对各个中断和定时器的初始化,并 确定系统运行时的初始状态(本任务是绿灯状态)。然后后台 部分启动(即主函数中的 while(1)部分),在后台中完成下 列操作: (1)根据变量 miao 的值刷新数码管显示缓冲; (2)扫描 zou_miao 信号,进行秒倒计时; (3)根据 miao 的下溢出切换系统状态。 三个中断服务函数完成前台工作,包括: (1)INT0 用于行人优先控制; (2)T0 产生秒信号和 zou_miao 标志的置位,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论