计算机科学与技术带数码管的交通指示灯系统设计_第1页
计算机科学与技术带数码管的交通指示灯系统设计_第2页
计算机科学与技术带数码管的交通指示灯系统设计_第3页
计算机科学与技术带数码管的交通指示灯系统设计_第4页
计算机科学与技术带数码管的交通指示灯系统设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、期末大作业 题 目: 带数码管的交通指示灯系统设计 院(系): 物联网工程学院 专 业: 计算机科学与技术 班 级: 计科1105班 姓 名: 学 号: 03041105 指导老师: 庄春兴 设计时间: 13-14 学年 2 学期 2014年5月目录0 引言21 设计原理31.1 交通信号灯的工作原理31.2 s3c2440-gpio介绍31.2.1 gpxcon寄存器41.2.2 gpxdat寄存器41.2.3 gpxup寄存器41.3 带数码管的交通信号灯设计42 设计步骤42.1 设计思路42.2 设计框图52.3显示模块62.4刷新与延时模块73 实验结果及结果分析73.1实验代码73

2、.2实验步骤113.3结果分析114 心得体会12参考文献120 引言 随着科学技术发展的日新日异,arm嵌入式系统1已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握嵌入式的开发技术是十分重要的。本文硬件设计,实现了利用s3c2440芯片来完成带数码管的交通指示灯设计2,培养自己综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练,加深对arm芯片的了解;熟悉arm芯片各个引脚的功能,工作方式,计数/定时,i/o口,中断等相关原理,巩固学习嵌入式的相关内容知识。学习led显示控制方法并掌握基于arm

3、开发板对i/o编程的方法3。通过实验测试可以证明本文的设计原理和设计步骤都是正确的。1 设计原理1.1 交通信号灯的工作原理 一般情况下,红绿灯设在十字路口,或在多干道的交叉口上,目的是为了调整交叉口的交通秩序使各干道来往车辆能够有条不紊地行驶,否则将造成意想不到的严重后果。当然在交叉口设置合理的红绿灯后,也可以大大减少交通管理部门的人力、屋里。 交叉口交通信号等的基本作用:红灯亮表示车辆、行人禁止通行,绿灯亮表示车辆、行人可以通行,绿灯转换成红灯前几秒,可用黄灯亮来暗示驾驶员或行人即将禁止通行。该系统的屏幕时间显示用倒计时方式表示红绿灯的切换时间,时间显示其的作用是协助红绿灯工作,跟随红、绿

4、灯反复地进行切换。目的是为了使驾驶员和行人能够看见红绿灯亮的时间还剩几秒,以便停车线以内的驾驶员和行人能够更清楚地知道此时该继续通行或减速,才不会使驾驶员盲目地加速或减速停车而阻碍另一干道车辆或行人的通行,从而可以提高交叉口车辆及行人的流通率,当然也可以减少事故的发生,为交通安全提供保障。 交通信号灯的工作原理:当东西组红灯亮绿灯灭时,南北组就会绿灯亮红灯灭。对东西组或南北组而言,每当绿灯亮转换成红灯亮前几秒(具体时间视实际情况而定)黄灯亮,当绿灯灭时黄灯也同时熄灭。1.2 s3c2440-gpio介绍 gpio,通用输入输出(general purpose i/o)的简称4,其引脚可以供编程

5、使用。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备,对这些设备的控制,有时只需要一位控制信号就够了,即只需要开/关两种状态就够了,比如灯亮与灭。对这些设备的控制,使用传统的串行口和并行口都不合适。所以在微控制器芯片上一般都会提供一个“通用可编程i/o接口”,即gpio。 s3c2440有130个gpio口,分为a到j共9组:gpa、gpb、gpc.gpj。通过设置相应寄存器,可以选择某个gpio口是用于输入、输出还是其他特殊功能。例如可以设置gph6作为一般的输入、输出端口,或者用于串口。每组gpio(gpagpj),都可以通过3个寄存器来控制与访问,这3个寄存器分别为:gpxco

6、n:gpio配置寄存器、gpxdat:gpio数据寄存器、gpxup:上拉电阻控制寄存器(其中x为:a、b.h、j)。1.2.1 gpxcon寄存器 从寄存器的名字可以看出它属于配置(confugure)寄存器选择gpio口的功能。其中porta与portbportj在功能选择方面有所不同。gpacon中每一位对应一个io口(共23个)。当某位为0时,相应的io为输出;当某位被置为1时,相应的引脚为地址线或用于地址控制。portbportj在寄存器操作方面完全相同,gpxcon中每两位控制一个引脚:00表示输入,01表示输出,10表示特殊功能,11保留不用。1.2.2 gpxdat寄存器 gp

7、xdat寄存器用于读/写引脚:当引脚被设置为输入时,读此寄存器可知相应引脚电瓶状态是高还是低;当引脚被设为输出时,写此寄存器相应的位可令此引脚输出高电平或低电平。1.2.3 gpxup寄存器 gpxup寄存器某位为1时,相应引脚无内部上拉电阻;为0时相应的引脚使用内部上拉电阻。(上拉电阻:由于管脚悬空比较容易受到外界的电磁干扰,因此通过一个电阻来将此管脚与高电平相连,让其固定在高电平,这样的电阻称之为上拉电阻。)1.3 带数码管的交通信号灯设计 本文通过利用arm芯片模拟来实现带数码管的交通信号灯设计。用arm实验箱的led和七段数码管模拟十字路口的交通灯。将led的数码管分成两组,分别代表一

8、个路口的东西向和南北向红黄绿三色交通灯。数码管计时显示剩余时间,绿灯显示27秒,然后黄灯显示3秒,红灯显示30秒。南北与东西向的交通灯协同工作,循环显示,一个周期一分钟。一个复位按钮,按一下双向黄灯闪烁,计时20秒后恢复到初始状态,然后继续工作5。2 设计步骤2.1 设计思路本文是利用s3c2440arm芯片来实现带数码管的交通信号灯设计。 在实现红、绿、黄灯的循环控制上,通过使用红、黄、绿三种不同颜色的led灯实现此功能。南北方向绿、黄、红三个灯依次接在p0.20、p0.21、p0.22上,东西方向的绿、黄、红三个灯依次接在p0.16、p0.17、p0.18上,用软件控制灯的亮与灭来控制车辆

9、和行人的通行。在实现用数码管显示倒计时的过程中,可以利用动态显示或静态显示,串行并出或者并行并出实现。采用两位数码显示器显示南北方向时间,采用两位数码显示器显示东西方向时间,交通灯控制器工作流程如图1所示:南北方向绿灯亮27秒,东西方向红灯亮27秒南北方向黄灯亮3秒,东西方向红灯亮3秒南北方向红灯亮27秒,东西方向绿灯亮27秒南北方向红灯亮3秒,东西方向黄灯亮3秒 图1 交通灯控制器工作流程图2.2 设计框图 本设计采用s3c2440作为系统的主控芯片,控制交通灯的循环点亮时间,并采用倒计时显示。基本框图是主要有三部分组成:s3c2440最小系统、交通灯循环模块、倒计时显示模块。其系统框图如图

10、2所示:倒计时显示模块s3c2440最小系统 交通灯循环模块 图2 系统框图 其主程序流程图如图3所示:开始初始化东西南北方向黄色交通灯显示东西南北方向红绿交通灯显示东西南北方向红绿交通灯交替显示图3 主程序流程图2.3显示模块采用共阳极七段数码管显示交通灯倒计时,东西、南北两个方向各用两个数码管显示时间。设置红绿灯时间为27秒,当南北方向绿灯倒计时为0后,黄灯倒计时延时3秒。3秒后,南北方向交通灯变为红灯,而东西方向交通灯变为绿灯,倒计时3秒整个交通灯倒计时用循环模块无限制循环。南北方向绿、黄、红三个灯依次接在p0.20、p0.21、p0.22上,东西方向的绿、黄、红三个灯依次接在p0.16

11、、p0.17、p0.18上,p0.0-p0.7引脚连接数码管段选位,p0.12-p0.15引脚连接数码管位选位。本设计采用共阳七段数码管,故有效电平为低电平,根据引脚0xffbfffff或者0xfffbffff代表红灯亮,其中b(1011);0xffefffff或者0xfffeffff代表红灯亮,其中e(1110);0xffdfffff或者0xfffdffff代表红灯亮,其中d(1101)。通过i00pin=(i00pin&0xffff0fff)(weiweishu8),将i00的32位接口按位与“ffff0fff”,把p0.12-p0.15端口清零,同时将位码左移8位,因为在开始的位码数组中

12、定义的值是在4-7位,但是在芯片上接口在12-15位,所以需要左移8位。i00pin=(i00pin&0xffffff00)(led_numshumessage)/比较case osm_key: onkey(pmsg-wparam, pmsg-lparam);/键盘消息响应 break;ostimdly(1000);/修改任务时间参数deletemessage(pmsg);/删除消息void led_taskvoid*id)/创建数码管任务队列 int eastwest = 1; /正为东西绿灯亮,负为难背绿灯亮 count = 30; /红绿灯备亮30秒 for(;) /死循环if(coun

13、t0)if(is_ working = =true) /东西通行if(eastwest0) if(count4) io0dir=0xeb; /东西绿灯,南北黄灯 else io0dir=0xe7; /东西绿灯,南北红灯else/南北通行if(count4) io0dir=0xbe; /东西黄灯,南北绿灯else io0dir = 0x7e; /东西红灯,南北绿灯ostimedly(1500);/修改任务时间参数elseio0dir=0xbb; /黄灯亮ostimedly(500);/修改任务时间参数io0dir=oxff; /黄灯灭ostimedly(1000);/修改任务时间参数count-

14、; e1seis_ working = ture /工作状态eastwest = -eastwest;count=30;void onkey(int nkey,int fnkey) /键盘消息处理函数(if(nkey = =15)is_ working=false; /工作状态为复位状态count=20; /计时设为20秒3.2实验步骤1.在ads1.2中,使用已经创建好的模板,新建一个项目traffic。把操作系统所需要的头文件和库文件加入工程中。2.把交通灯文件夹中的c语言源文件加入。3.打开main.c文件,在main( )数中创建3个任务:(1) key_task负责接收键盘消息,执行

15、工作状态的控制;(2) led_task负责发光二极管的显示,同时负责每秒将count时间计数器减1;(3) display_task负责数码管的动态显示,显示count剩余时间。全局变量count用来记录剩余时间;全局变量is_working用来控制工作状态。led_task任务局部变量eastwest用来记录当前通行方向,1为东西向,-1为南北向。4.在key_task任务中添加代码,主要任务是初始化一些变量,启动消息循环,等待键盘扫描任务发来的消息(osm_ key),并调用onkey函数进行处理。5.完成交通灯控制任务和数码管显示任务。数码管显示任务交替显示计时的十位和个位。交通灯控制

16、任务实现通行方向的控制。6.用ads1.2编译、下载并调试上述程序,检查运行结果。7.生成*.bin文件,通过usb下载到嵌入式开发板中,运行并检查输出结果。3.3结果分析 代码成功运行后可以观察到led的数码管被分成了两组,它们分别代表一个路口的东西向和南北向红黄绿三色交通灯。数码管计时显示剩余时间,绿灯显示27秒,然后黄灯显示3秒,红灯显示30秒。南北与东西向的交通灯可以协同工作,循环显示,一个周期一分钟。按一下复位按钮双向黄灯闪烁,计时20秒后恢复到初始状态,然后继续工作。实验可以证明本文的设计原理和步骤都是正确的,能达到预期的设计目标。4 心得体会 回顾带数码管的交通指示灯设计的过程,

17、我受益匪浅。不仅培养了我综合运用所学知识、独立分析和解决实际问题的能力,而且还培养创新意识和创新能力,让我进一步了解所选择的arm芯片各个引脚功能,工作方式,计数/定时,i/o口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。同时也让我亲自将书本上的理论和实际操作相结合,通过软硬件设计实现利用arm芯片完成带数码管的交通灯控制功能。首先,我通过查阅相关文献资料,熟悉所选arm芯片。其次,在总体设计步骤中,设计车辆遇到红灯停绿灯行情况,红绿灯时间均为30s,黄灯闪烁时间为5s。再次,了解了系统硬件设计,熟悉勒i/o接口以及定时器计数器工作原理。最后,对系统软件的设计包括交通信号灯的工作流程软件实现,用c语言编程进一步提高了我的计算能力,绘图能力,熟

温馨提示

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

评论

0/150

提交评论