交通灯控制器课程设计报告_第1页
交通灯控制器课程设计报告_第2页
交通灯控制器课程设计报告_第3页
交通灯控制器课程设计报告_第4页
交通灯控制器课程设计报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、河南科技大学课 程 设 计 报 告 课程名称 _单片机原理课程设计_ 题目名称 _ 交通灯控制器设计 学生学院 _ 信息工程学院_专业班级 _ 自动化114 _学 号 学生姓名 _ _ _ _指导教师 _ _ _2014 年 6 月 5 日课程设计任务书(指导教师填写)课程设计名称 单片机原理 学生姓名 专业班级 自动化114 设计题目 交通灯控制器设计 一、 课程设计目的1. 培养学生文献检索的能力,如何利用Internet检索需要的文献资料。2. 培养学生综合分析问题、发现问题和解决问题的能力。3. 培养学生综合运用知识的能力和工程设计的能力。4. 培养学生理论联系实际的能力。5. 提高学

2、生课程设计报告撰写水平。二、 设计内容、技术条件和要求1设计内容交通灯控制器设计主要功能是用单片机控制LED灯模拟指示。模拟东西南北方向的十字路口交通灯信号控制情况。以89C51单片机为核心芯片,采用中断方式实现控制。(1)数码管选用2位共阴极显示的数码管,共4个;(2)东西通行时间为80s,南北通行时间为60s,缓冲时间为3s;2 设计要求 设计单片机最小系统(包括复位按钮、晶振电路等); 绘制实现本设计内容的硬件电路(原理图),系统的组成框图。 相应的控制状态表; 编写本课程设计内容的软件设计(包含程序流程图和对程序注释)。 硬件实验部分可选用实验箱测试或Proteus仿真软件实现。3 总

3、体设计思想(供参考) 利用定时器T0产生每10ms一次的中断,每100次中断为1s; 对两个方向分别显示红、绿、黄灯的剩余时间即可; 用MAX7219芯片实现共阴极显示驱动; A方向的红灯时间=方向的绿灯时间+黄灯缓冲时间。4 设计参考交通灯控制器设计有电源电路、单片机主控电路、显示电路、信号灯电路等组成,如图1所示:5 知识点准备: +5V电源原理及设计; MAX7219工作原理; 单片机复位电路工作原理及设计(元件选择的依据); 单片机晶振电路工作原理及设计(元件选择的依据); 数码管显示特性、驱动设计及应用; LM1602液晶显示屏特性、驱动设计及应用; 89C51单片机引脚资源、引脚分

4、配等; 单片机汇编语言及程序设计(中断、延时子程序的设计)。图1 交通灯控制器设计框图三 时间进度安排按教学计划规定,单片机原理课程设计总学时为1周,其进度安排和时间大致分配如下:1. 十五周周一至周二 查阅资料、进行软、硬件初步设计;2. 十五周周三至周四 上机调试,发现问题,解决问题,完善课程设计;3. 十五周周五 总结设计过程,编写课程设计报告书。四 主要参考文献1、何立民. 单片机高级教程 第1版北京:北京航空航天大学出版社,20012、徐爱钧 KEIL Cx V7.0单片机高级语言编程与uVision2应用实践,北京,电子工业出版社,20043、李全利、仲伟峰、徐军,单片机原理及应用

5、,北京:清华大学出版社,2006五、设计分组及选题安排 自动化114班所有学生。指导教师签字: 2014年05月30日单片机课程设计报告一、 设计项目简介随着人类科技文明的发展,人们对于日常交通便利的要求在不断地提高。交通信号灯被看成一种用来指挥交通的工具,当前高精度、多功能、小体积、低功耗,是现代交通信号灯发展的趋势。本课题设计正是基于这个方向设计一个符合指标要求的模拟交通信号灯控制器。单片机在电子产品中的应用越来越广泛,特别是51系列的单片机,由于其使用方便、价格低廉等优势,在市场上占有很大的份额。AT89C51就是51系列中的一个比较成熟的型号,它完全兼容51单片机的指令。本课题设计是基

6、于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计出的一个模拟交通信号灯控制系统。该控制系统包括了按键复位电路、定时控制电路、显示电路等几部分的组成。设计以硬件和软件相结合为指导思想,通过软件编程实现系统大部分功能,电路简单明了,系统稳定性高。本次课程设计所设计的交通灯控制器实现了以下几点功能:一、 显示电路实现显示各方向上红、绿、黄三种交通信号灯的剩余时间。二、 信号灯电路实现显示各路口的红黄绿交通信号灯。三、 按键复位电路实现对信号灯控制器的复位功能。二、总体设计利用AT89C51单片机,LED灯,共阴极数码管和MAX7219芯片来设计并

7、实现交通灯控制系统,用单片机控制LED灯模拟指示。模拟东西南北方向的十字路口交通灯信号控制情况,并用MAX7219控制共阴极数码管来倒计时显示红灯、绿灯、黄灯的时间。利用中断方式实现以上功能,设置定时器T0为工作方式1并装初值来实现数码管中的时间的倒计时。定时器T0产生每10ms一次的中断,每100次中断为1s;本次交通灯控制器电路有以下几个电路模块组成,电源电路、单片机主控电路、显示电路、信号灯电路,各个电路之间相互联系,并用编程的方式对单片机各个引脚进行定义,从而实现交通灯的功能。电路的各个模块之间的总体框图如下:单片机最小系统(复位,晶振电路)AT89C51单片机8段LED数码管显示电路

8、MAX7219控制芯片定时器T0中断电路单片机交通控制系统的通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表示亮,白色表示灭。通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下:东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时80秒。此状态下,东西向禁止通行,南北向允许通行。东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时3秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮

9、,倒计时60秒。此状态下,东西向允许通行,南北向禁止通行。南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时3秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。三、硬件设计AT89C51单片机简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工

10、业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51单片机的主要特性与MCS-51 兼容 ,4K字节可编程闪烁存储器 ,寿命:1000写/擦循环,数据保留时间:10年,全静态工作:0Hz-24Hz,三级程序存储器锁定,128*8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源(两个外部中断源和3个内部中断源) ,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时

11、钟电路。时钟电路:时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。中断系统:中断系统的作用主要是对外部或内部的终端请求进行管理与处理。AT89C51共有5个中断源,其中又2个外部中断源和3个内部中断源。AT89C51系列单片机的内部结构示意图如下:AT89C51主要引脚功能:VCC:电源电压GND:接地P0口:P0口是一组8位双向I0口。P0口即可作地址数据总线使用,又可以作为通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了。在访问期间激活要使用上拉电阻。P1口:Pl 是一个带内部上拉电阻的8准位双向IO口,

12、P1作为通用的I/O口使用。P2 口:P2 是一个带有内部上拉电阻的8 位准双向IO 口,P2即可作为通用的I/O口使用,也可以作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址。P3 口:P3 口是一组带有内部上拉电阻的8 位准双向I0 口。P3 口除了作为通用的I/O口使用之外,每个引脚还具有第二功能。具体如下表所示:端口引脚第二功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外中断0)P3.3/ INT1(外中断1)P3.4T0(定时计数器0外部输入)P3.5T1(定时计数器1外部输入)P3.6/ WR(外部数据存储器写选通)P3

13、.7/ RD外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。单片机最小系统设计如下图,其包含晶振电路与复位电路: 单片机最小系统MAX7219共阴极数码管驱动芯片简介:MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传

14、输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。 MAX7129芯片外部引脚分配图各引脚的功能为:DIN:串行数据输入端DOUT:串行数据输出端,用于级连扩展LOAD:装载数据输入CLK:串行时钟输入 DIG0DIG7:8位LED位选线,从共阴极LED中吸入电流SEG ASEG G DP 7

15、 段驱动和小数点驱动ISET: 通过一个10k电阻和Vcc相连,设置段电流MAX7219芯片电路连接图:显示电路:1、 八段共阴极数码管: LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。八段共阴管它有8个发光二极管(比七段多一个发光二极管,用来显示dP,即点),每个发光二极管的阴极连在一起,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。2、 发光二极管: 根据本设计的特点,红绿灯的显示不可少,红绿灯的显示采用普通的 发光二极管。每个方向上设置

16、红绿黄灯,总共4组。如果东西红灯亮,那南北方向就是绿灯亮,反之亦然。总电路设计图:显示效果图: 南北通行: 东西通行: 黄灯显示:四、软件设计主程序开始设置中断工作方式、触发方式、初始化是否有中断运行过程执行中断YN中断结束,退出中断,返回T0中断定时计数初值10计数(count)加1判断1S(count=100?)count清0Time_SN-;Time_EW-恢复现场中断返回NY运行过程SN:绿灯(60),EW:红灯是否到3秒SN:黄灯亮,EW:红灯Count<10?SN:黄灯灭,EW:红灯是否到0秒NYYNNEW:绿灯(80),SN:红灯是否到3秒EW:黄灯亮,SN:红灯Count

17、<10?EW:黄灯灭,EW:红灯是否到0秒YYYNNNLED显示缓冲区 Y五、程序清单# include <reg52.h># define uchar unsigned char# define uint unsigned int# include "MAX.h"uchar code tab = 0x06, 0x05, 0x03; /显示绿、黄、红的段码uchar count; /记录定时中断次数uchar flag; / 记录南北时间到零的次数uchar flag1; / 记录东西时间到零的次数uchar SN= 82; /南北方向红灯显示初始时间uc

18、har EW = 79; /东西方向绿灯显示初始时间/*/void display(uchar num1, uchar num2)/向MAX7219送数据并显示函数write_7219(0x1, num1 / 10);write_7219(0x2, num1 % 10);write_7219(0x3, num2 / 10);write_7219(0x4, num2 % 10);/*/void init_time(void)/定时器的初始化函数TMOD = 0x01; /设定时器0为模式1,16位模式TH0 = 0xd8;TL0 = 0xf0;/设定时值为10000us(10ms)EA = 1;

19、IT0 = 1;ET0 = 1; /定时器0中断打开TR0 = 1;/*/void t0_time() interrupt 1/定时器0中断函数TH0 = 0xd8; /装初值TL0 = 0xf0;count+; /中断一次计数加1if(count = 100) /1S时间到count = 0; if(SN = 0 ) /判断南北时间是否到0flag+; / 南北时间到零的次数+1if(flag % 3 = 1) / 如果是周期内第1次南北时间到零SN = 60; /给南北显示时间重新赋值,绿灯显示时间P1 = tab0; / 南北方向绿灯亮else if(flag % 3 = 2) / 如果

20、是周期内第2次南北时间到零SN = 3;/给南北显示时间重新赋值,黄灯显示时间P1 = tab1; / 南北方向黄灯亮 else SN = 82;/给南北显示时间赋值,红灯灯显示时间P1 = tab2;/ 南北方向红灯灯亮flag = 0;/计数清零,进入下一个循环if(EW = 0)/判断东西时间是否到0 flag1+;/ 东西时间到零的次数+1if(flag1 % 3 = 1) / 如果是周期内第1次东西时间到零EW = 3; /给东西显示时间重新赋值,黄灯显示时间P0 = tab1; / 南北方向黄灯亮else if(flag1 % 3 = 2)EW = 63;/给东西显示时间重新赋值,

21、红灯显示时间P0 = tab2; / 南北方向红灯亮else EW = 79;/给南北显示时间重新赋值,绿灯显示时间P0 = tab0; / 南北方向绿灯亮flag1 = 0; /计数清零,进入下一个循环display(EW-, SN-);/将东西、南北时间送到MAX7219并显示/*主函数*/void main()init_time(); /调用定时器初始化函数init_7219(); /调用MAX7219初始化函数display(EW-, SN-); /将初始东西、南北显示时间送入MAX7219并显示P0 = tab0; /南北方向显示绿灯P1 = tab2; /东西方向显示红灯while

22、(1); /死循环,等待中断/*MAX7219头文件包含数据的写入与发送*/# ifndef _MAX_H_# define _MAX_H_sbit DIN = P30;/MAX7219 片选 P30 脚sbit LOAD = P31; /MAX7219 串行数据 P31 脚sbit CLK = P32;/MAX7219 串行时钟 P32 脚/*地址、数据发送子程序*/void write_7219(uchar add, uchar dat) uchar i;LOAD = 0; /拉低片选线,选中器件/*发送地址*/for(i = 0; i < 8; i+) /移位循环8次 CLK =

23、0; /清零时钟总线DIN = (bit)(add & 0x80); /每次取高字节add <<= 1; /左移一位CLK = 1; /时钟上升沿,发送地址/*发送数据*/for(i = 0; i < 8; i+)CLK = 0;DIN = (bit)(dat & 0x80);dat <<= 1;CLK = 1; /时钟上升沿,发送地址LOAD = 1; /发送结束,上升沿锁存数据/*MAX7219初始化,设置MAX7219内部的控制寄存器*/void init_7219(void)write_7219(0x0c, 0x01); /开启正常工作模式(0xX1)write_7219(0x0f, 0x00); /选择工作模式(0xX0)write_7219(0x09, 0xff); /选用全译码模式write_7219(0x0b, 0x07); /8 只LED全用write_7219(0x0a, 0x04); /设置初始亮度# endif六、收获及体会经过一周的努力工作,终于完成了自己的单片机课程设计。虽说忙碌了点,但我觉得这样的生活充实且有成就感,当然,也获益匪浅。 整个课程设计过程我还掌握了一下几点:(1)掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法。(2)理解了最单片机的各部分组成及

温馨提示

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

评论

0/150

提交评论