基于at89s51单片机的交通灯设计内容摘要:
态扫描:需要使用 4 个数码管分别显示东西、南北的倒计时数字,将暂存各状态剩余时间的数字从变量中提取出 “十位 ”和 “个位 ”,用动态扫描的方式在数码管中显示。 整个程序依据定时器的溢出数来计时,每计时 1S 则相应状态的剩余时间减 1,一直减到 0 时触发下一个状态的开始。 ( 2)单片机型号及所需外围器件型号,单片机硬件电路原理图 图 35 交通灯硬件电路原理图 选用 MCS51 系列 AT89S51 单片机作为微控制器,选择两个四联的共阴极数码管组成 8 位显示模块,由于 AT89S51 单片机驱动能力有限,采用两片 74HC244 实现总线的驱动,一个 74HC244 完成共阴极数码管位控线的控制和驱动,另一个 74HC244 完成数码管的 7 段码输出,在 7 段码输出口上各串联一个 100 欧姆的电阻对 7 段数码管限流。 用 P3 口的 完成发光二极管的控制,实现交通灯信号的显 示,每个发光二极管串联 500 欧姆电阻起限流作用。 硬 件电路原理图如图 35 所示。 ( 3)程序设计思路,单片机资源分配以及程序流程 ① 单片机资源分配 单片机 P3 口的 引脚用作输出,控制发光二极管的显示。 在计时模块中,需要定义两个数组变量( init_sn[3], init_ew[3])来存储东西、南北两个方向在不同状态中倒计时的初始值,题目中每个方向的交通灯共有 3 种显示状态,因此数组元素个数为 3。 还需要定义两个变量 ( t_ sn, t_ ew)暂存东西、南北两个方向的倒计时剩余时间。 在状态的切换中,为了明确当前处于哪种状态,东西、 南北方向各设置一个状态变量 (state_val_sn, state_val_ew),当倒计时的剩余时间到零时,状态变量增 1,表示启动下一个状态,当该变量增到 3 时变为 0,回到序号为 1 的状态。 ② 程序设计思路 在设计中,由于没有键盘功能,因此只涉及定时计数和动态扫描功能。 主程序将变量初始化之 后,设置单片机定时器和中断特殊功能寄存器的初始值,将定时器 T1 的工作方式设置为 8 位自动 装载模式,定时器每隔 250us 产生一次溢出。 在初始化变量与寄存器后,主程序进入一个循环结构,在循环中只做动态扫描的工作,根据东西、 南北两向的剩余时时间进行动态扫描显示。 计时以及状态的切换通过定时器的中断服务程序来实现,在中断服务程序中,每计时到一秒时,则各方向当前状态的剩余时间减 1,一直减到 0 时触发下一个状态的开始,改变交通灯的指示。 ③ 程序流程 ( 4)软硬件调试方案 软件调试方案:伟福软件中,在 “文件 \新建文件 ”中,新建 C 语言源程序文件,编写相应的程序。 在 “文件 \新建项目 ”的菜单中,新建项目并将 C 语言源程序文件包括在项目文件中。 在 “项目 \编译 ”菜单中将 C 源文件编译,检查语法错误及逻辑错误。 在编译成功后,产生以 “*.hex”和 “*.bin” 后缀的目标文件。 硬件调试方案:在设计平台中,将单片机的 分别与独立式键盘的相应位通过插线连接起来。 在伟福中将程序文件编译成目标文件后,运行 “MCU下载程序 ”,选择相应的 flash 数据文件,点击 “编程 ”按钮,将程序文件下载到单片机的 Flash 中。 然后,上电重新启动单片机,检查所编写的程序是否达到题目的要求,是否全面完整地完成试题的内容。 程序设计(仅供参考的 C 语言源程序) //晶振: T1250 微秒溢出一次 /*变量的定义 : show_val_sn,show_val_ew: 显示的值 059 state_val_sn,state_val_ew: 状态值 南北方向 0绿灯亮。 1黄灯亮。 2红灯亮 T1_t: 定时器计数溢出数 t_sn,t_ew: 倒计时的数值 init_sn[3],init_ew[3] 倒计时 led_seg_code:数码管 7 段码 */ include sbit SN_green=P3^2。 //南北方向绿灯 sbit SN_yellow=P3^1。 //南北方向黄灯 sbit SN_red=P3^0。 //南北方向红灯 sbit EW_green=P3^5。 //东西方向绿灯 sbit EW_yellow=P3^4。 //东西方向黄灯 sbit EW_red=P3^3。 //东西方向红灯 unsigned char data t_sn,t_ew。 unsigned int data T1_t。 unsigned char data state_val_sn,state_val_ew。 char code led_seg_code[10]={0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。 char code init_sn[3]={24,4,29}。 char code init_ew[3]={29,24,4}。 // void delay(unsigned int i)//延时 { while(i)。 } // void led_show(unsigned int u,unsigned int v) { unsigned char i。 i=u%10。 //暂存个位 P0=led_seg_code[i]。 P2=0xbf。 delay(100)。 //延时 i=u%100/10。 //暂存十位 P0=led_seg_code[i]。 P2=0x7f。 delay(100)。 //延时 i=v%10。 //暂存个位 P0=led_seg_code[i]。 P2=0xfe。 delay(100)。 //延时 i=v%100/10。 //暂存十位 P0=led_seg_code[i]。 P2=0xfd。 delay(100)。 //延时 } // void timer1() interrupt 3 //T1 中断 { T1_t++。 if(T1_t3999) //如果计数 3999, 计时 1s { T1_t=0。 if (t_sn!=0) //南北方向计时 { t_sn。 } else { state_val_sn++。 if (state_val_sn2) state_val_sn=0。 t_sn=init_sn[state_val_sn]。 switch (state_val_sn) //根据状态值,刷新各信号灯的状态 { case 0: SN_green=0。 //南北方向绿灯 SN_yellow=1。 //南北方向黄灯 SN_red=1。 //南北方向红灯 break。 case 1: SN_green=1。 //南北方向绿灯 SN_yellow=0。 //南北方向黄灯 SN_red=1。 //南北方向红灯 break。 case 2:SN_green=1。 //南北方向绿灯 SN_yellow=1。 //南北方向黄灯 SN_red=0。 //南北方向红灯 break。 } } if (t_ew!=0) //东西方向计时 { t_ew。 } else { state_val_ew++。 if (state_val_ew2) state_val_ew=0。 t_ew=init_ew[state_val_ew]。 switch (state_val_ew) //根据状态值,刷新各信号灯的状态 { case 0: EW_green=1。 //东西方向绿灯 EW_yellow=1。 //东西方向黄灯 EW_red=0。 //东西方向红灯 break。 case 1: EW_green=0。 //东西方向绿灯 EW_yellow=1。 //东西方向黄灯 EW_red=1。 //东西方向红灯 break。 case 2: EW_green=1。 //东西方向绿灯 EW_yellow=0。 //东西方向黄灯 EW_red=1。 //东西方向红灯 break。 } } } } // main() {//初始化各变量 t_sn=init_sn[0]。 t_ew=init_ew[0]。 T1_t=0。 state_val_sn=0。 //启动后,默认工作在序号为 1 的状态 state_val_ew=0。 //初始化各灯的状态 SN_green=0。 //南北方向绿灯亮 SN_yellow=1。 //南北方向黄灯灭 SN_red=1。 //南北方向红灯灭 EW_green=1。 //东西方向绿灯灭 EW_yellow=1。 //东西方向黄灯灭 EW_red=0。 //东西方向红灯亮 //初始化 51 的寄存器 TMOD=0x20。 //用 T1 计时 8 位自动装载定时模式 TH1=0x19。 //0x4b。 //500 微秒溢出一次。 250=(256x)*12/ x= TL1=0x19。 EA=1。 //开中断 ET1=1。 TR1=1。 //开定时器 T1 while(1) { led_show(t_sn,t_ew)。 }} 实训四 交通灯控制系统 当今 ,社会上的汽车越来越多,并且交通事故愈演愈烈,为了要减少此类的事情的发生,必须加强道路的管理。 因此、合理设计交通灯控制系统可以大大减少此类事情发生。 一、 系统功能要求: 1. 设计任务在一十字路口设置交通灯,并用单片机对其进行合理的控制。 时间方向 控制要求 白天 东西 绿灯 黄灯 红灯 南北 红灯 绿灯 黄灯 晚上 东西 黄灯 南北 红灯。 本设计采用一主干道(南北方向),一从干道(东西方向)的路口,即主干道的通行时间为从干道的 2倍。 在正常情况下,两干道的交通灯按图 1进行转换,并以倒计数的方式将剩余时间显示在每个干道对应的两位 LED 上;另发挥部分为当出现紧急情况时,路口的交通灯全为红灯,紧急情况解除时,恢复到原来的状态。 二、 总体设计方案提示:。 初始状态 0 为东西红灯,南北红灯。 然后转状态 1 东 西绿灯通车,南北红灯。 过一段时间转状态。 ,黄灯闪烁几次,南北仍然红灯。 再转状态。 ,东西红灯。 过一段时间转状态。 ,闪几次黄灯,延时几秒,东西仍然红灯。 最后循环至状态 1。 三.硬件设计 电路原理图如下: G1F2C O M3A4B5E6D7C O M8C9DP10U38L E D10111213141516G1F2C O M3A4B5E6D7C O M8C9DP10U48L E D10111213141516G1F2C O M3A4B5E6D7C O M8C9DP10U78L E D10111213141516G1F2C O M3A4B5E6D7C O M8C9DP10U88L E D10111213141516G1F2C O M3A4B5E6D7C O M8C9DP。基于at89s51单片机的交通灯设计
相关推荐
第一个月的时候,我的工作主要是省模,画线,钻孔,攻丝,这些都是基础的工作,是每个投身到机械行业的人都应该会,而且必须会的基础。 刚开始的时候,我画线又慢又不准,老是耽误别人的进度,后来经过师傅的教导,自己也慢慢的摸索,渐渐地掌握了画的技巧,画线的速度也越来越快了。 我一直以为攻丝都是用机械来攻的,哪知道原来不是这样的,在广州的很 多厂中,攻丝都是靠人工来攻的,并不是像我们想的那样是靠机器来攻的
ML 5 提供了一些新的元素和属性,反映典型的现代用法 网站。 其中有些是技术上类似 div和span标签,但有一定含义,例如 nav(网站导航块)和 footer。 这种标签将有利于 搜索引擎 的索引整理、小屏幕设备和视障人士使用。 同时为其他浏览要素提供了新的功能,通过一个标准接口,如 audio和 video标记。 为了使 HTML5的新元素或新属性获取最大化的兼容性
的线程中。 敌方子弹仅需要扫描用户坦克,而用户坦克需要在每一步扫描所有的敌方坦克。 这需要对所有的对象有较好的控制。 另外,子弹在运行过程中也需要实时扫描是否 碰撞到了相关障碍物或屏幕边界。 如此过多的线程同时在本来效率就不高的 KVM 虚拟机上运行,也许会导致程序的缓慢。 5. 双方的坦克在前进时也需要考虑到是否碰撞到相关物体或对方坦克,以免重叠运行,造成许多物理上不可能的情况,缺乏真实感。
经营阶段。 向双星下订单的外国运动鞋品牌商主要来自美国,它们是布瑞克、布鲁克斯、 EXO、菲拉等公司。 1988 年双星的 OEM 订单总额达 100 万美元。 到 2020 年,双星实现销售收入 27 亿元,出口 5000 万美元。 主要出口到美国、日本、俄罗斯、新加坡等 100 多个国家和地区,其中 80%的产 品多采用 OEM 方式。 双星的 OEM 国际化方式与其历史有关 ——
习与工作两重任务。 向单位员工一样上下班,完成单位工作;又以学生身份虚心学习,努力汲取实践知识。 主要有四个方面。 一是通过直接参与企业的运作过程,学到了实践知识,同时进一步加深了对理论知识的理解,使理论与实践知识都有所提高,圆满地完成了教学的实践任务。 二是提高了实际工作能力,为就业和将来的工作取得了一些宝贵的实践经验。 三是在实习单位受到认可并促成就业 ...... 本文来自公务员之家
污染严重而不能利用; 管理性缺水 —— 由于不合理开发利用和水的浪费所造成。 简述给水管网布置的两种形式及其 特点 ,适用范围。 答: 树状网 ,其 特点为 : ,构造简单,投资省; b.安全可靠性差; ,易产生 “死水区 ”,末端水流停滞影响水质。 适用范围对供水安全可靠性要求不高的小城市和小型工业企业。 环状网 ,其特点为: ,投资大; ; ,不易产生 “死水区 ”,水锤危害轻。