LED模拟交通灯设计
实验报告二-模拟交通灯实验

实验报告二模拟交通灯实验序号:5 姓名: 学号:11121549一、实验目的1. 学习在PC机系统中扩展简单I/O 接口的方法。
2. 进一步学习编制数据输出程序的设计方法。
3. 学习模拟交通灯控制的方法。
二、实验内容用8255做输出口,控制十二个发光管(4组红绿黄灯)的亮灭,模拟十字路口交通灯管理。
三、电路图四、实验程序框图五、编程CODE SEGMENTASSUME CS:CODEORG 1200HSTART: MOV AL,80HMOV DX,PTDOUT DX,AL ;设置8255各口为输出模式,工作在方式0MOV DX,PTBMOV AL,0FFHOUT DX,AL ;所有黄灯熄灭MOV DX,PTCMOV AL,0F0HOUT DX,AL ;所有红灯全亮CALL DELAY3 ;延时LOP: MOV AL,10100101BMOV DX,PTCOUT DX,AL ;点亮1,3路口绿灯,点亮2,4路口红灯CALL DELAY ;延时MOV AL,11110101BOUT DX,AL ;熄灭1,3路口绿灯MOV CX,8H ;1,3路口黄灯灯闪烁8次LOP1: MOV DX,PTBMOV AL,10101111BOUT DX,AL ;1,3路口黄灯亮CALL DELAY2 ;延时MOV AL,0FFHOUT DX,AL ;1,3路口黄灯灭CALL DELAY2 ;延时LOOP LOP1 ;循环8次MOV DX,PTCMOV AL,0F0HOUT DX,AL ;所有红灯全亮CALL DELAY3 ;延时MOV AL,01011010BOUT DX,AL ;点亮2,4路口绿灯,点亮1,3路口红灯CALL DELAY ;延时MOV AL,11111010BOUT DX,AL ;熄灭2,4路口绿灯MOV CX,8H ;2,4路口黄灯灯闪烁8次LOP2: MOV DX,PTBMOV AL,01011111BOUT DX,AL ;2,4路口黄灯亮CALL DELAY2MOV AL,0FFHOUT DX,AL ;2,4路口黄灯灭CALL DELAY2LOOP LOP2MOV DX,PTCMOV AL,0F0HOUT DX,AL ;所有红灯亮CALL DELAY3JMP LOPDELAY: PUSH AX ;延时子程序1PUSH CXMOV CX,0030HL1: CALL DELAY2LOOP L1POP CXPOP AXRETDELAY2: PUSH CX ;延时子程序2MOV CX,0D000HL2: LOOP L2POP CXRETDELAY3: PUSH CX ;延时子程序3MOV CX,0FFFFHL3: LOOP L3POP CXRETCODE ENDSEND START六、调试过程:1. 按连线图连接好,检查无误后打开实验箱电源。
LED模拟交通灯实验实训报告

LED模拟交通灯实验实训报告实验报告:LED模拟交通灯实训1.实验目的本实验旨在通过搭建一个LED模拟交通灯电路,了解LED的使用原理和掌握LED的亮灭控制方法,同时培养学生的实际动手能力和问题解决能力。
2.实验原理LED即发光二极管,是一种能够将电能转化为光能的器件。
它通过直流电流的作用下,在两个半导体材料之间产生电子的跃迁并发出光效果。
模拟交通灯一般由红、黄、绿三种颜色的灯组成,分别代表停、等待和通行三种状态。
在电路中,通过对LED正、负极的控制,可以使LED达到闪烁或亮灭的效果。
3.实验器材- Arduino开发板-面包板-LED灯(红、黄、绿各一个)-杜邦线-220欧姆电阻(3个)4.实验步骤(1)将Arduino开发板与面包板相连。
(2)使用杜邦线将三个LED灯插入面包板上。
(3)将每个LED的一个端口连接到Arduino上的数字输出口。
(4)通过220欧姆电阻的插入,将每个LED的另一个端口与地板(GND)连接。
(5)通过Arduino开发环境编写程序,实现交通灯的闪烁或亮灭效果。
(6)将Arduino开发板与电脑相连,将程序上传至Arduino。
(7)通过Arduino的电源供电,观察LED的亮灭效果。
5.实验结果实验中搭建了一个模拟交通灯电路,通过Arduino控制LED的亮灭效果。
实验结果如下:-红灯亮5秒,绿灯灭;-红灯灭,黄灯亮3秒;-绿灯亮5秒,黄灯灭;-绿灯灭,红灯亮5秒。
6.实验分析本实验通过搭建一个LED模拟交通灯电路,实现了交通灯亮灭的效果,通过Arduino编程控制灯的状态以达到交通灯运行的效果。
实验结果符合预期。
在实验过程中,需要注意以下问题:(1)正确连接LED灯和电阻,确保电流能够正确流过LED灯,避免LED损坏。
(2)编写程序时,需要注意正确选择数字输出口和对应的LED灯,以避免控制错误。
7.实验总结通过本次实验,我了解了LED的使用原理和掌握了LED的亮灭控制方法。
交通灯控制系统模拟设计

附件1:学号:0121018700XXX课程设计题目交通灯控制系统模拟设计学院物流工程专业物流工程班级物流工程卓越1001姓名XXX指导教师朱宏辉2013 年 6 月28 日交通灯控制系统模拟设计XXX武汉理工大学物流工程卓越1001摘要:随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。
因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。
根据交通灯在实际控制中的特点,结合单片机的控制功能,提出了一种用单片机自动控制交通灯的简易方法。
设计中包括硬件电路的设计和程序设计两大步骤,对单片机学习中的几个重要内容都有涉足。
本系统采用AT89C51单片机为中心器件来设计交通灯控制器,实现了红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管);以及实现3种工作模式:正常情况、繁忙情况、特殊情况及报警功能。
本系统实用性强、操作简单、扩展功能强。
关键字:交通灯;AT89C51;数码管;三种工作模式Design of traffic light control system simulationZhiming GuoLogistics Engineering College Logistics zy1001Abstract: With the development of economy, the sharp increase in the number of cars, increasingly crowded city roads, traffic congestion has become an international problem. Therefore, multi-function traffic light control system design of reliable, safe, convenient and of great practical necessity. According to the characteristics of traffic lights in the actual control, combined with the control function of single chip, this paper presents a simple method for automatic control of traffic lights with single chip microcomputer. In the design of hardware circuit design and program design includes two steps, on several important single-chip learning have to get involved in. The system centric devices to design the traffic light controller AT89C51, realizes the cycle traffic lights lit, countdown 5 seconds left when the yellow light flashing warning (traffic light signal output, display time through the output port P0 to two digital tube through the P1 port); 3 work modes: normal, busy and implementation situation, special circumstances and alarm function. The system practical, simple operation, strong function expansion.Key words: raffic lights, AT89C51, LED, three work modes目录课程设计任务书 (1)第1章前言 (2)1.1交通灯发展概述 (2)1.2 课题背景及意义 (2)1.3课题任务及主要实现内容 (3)1.4 原理分析 (4)1.4.1交通灯显示时序的理论分析 (4)1.4.2 交通灯显示的理论分析 (5)第2章设计方案分析 (6)2.1 单片机与外围接口部件 (6)2.2 倒计时显示界面 (6)2.3 交通灯 (6)第3章硬件系统设计 (8)3.1 单片机的选择 (8)3.1.1 AT89C51单片机简介 (8)3.1.2 AT89C51单片机的主要特性 (8)3.1.3主要引脚功能 (9)3.1.4 C51的中断源 (11)3.2 硬件电路实现 (11)3.2.1 最小系统设计 (11)3.2.2 显示设计 (13)3.2.3 发光二极管模拟红绿灯 (16)3.2.4 按键模块 (16)第4章软件电路设计 (17)4.1 软件编译环境测试 (17)4.1.1 C语言介绍 (17)4.1.2 Keil uVision4介绍 (17)4.2软件总体设计 (17)结论 (20)参考文献 (21)源程序: (22)课程设计任务书学生姓名:XXX专业班级:物流工程卓越1001指导教师:朱宏辉工作单位:物流工程题目:交通灯控制系统模拟设计初始条件:1. 熟悉背景资料和任务:熟悉给定的背景资料和数据,明确系统设计的任务要求;拟订设计计划和初步方案。
毕业作品 模拟交通灯设计

模拟交通灯设计
近年来我国的运输行业是越来越发达,马路上的车也是越来越多。
交通红绿灯是必不可少的交通规则指示工具。
交通灯电路简要说明:
交通灯电路是由:5v电源电路,stc编程下载电路,单片机控制电路,led红黄绿指示灯电路,和数码管计时电路组成。
电路还设置有紧急通车,和夜间模式两种功能。
电路功能:
K1是电源控制开关,按下sw整机通电,数码管和led可以模拟的显示交通灯的状态。
Sw1是切换模式按键,东南西北四个方向和夜间模式的切换。
Sw2是将电路状态从其他模式切换到正常倒计时的状态下。
Sw是单片机的上电复位电路的操作电路。
电路原理图如下:。
一种模拟交通灯系统的设计与实现

● ●
3 2 1 —畔
该系统的软件流程 如图3 示。 所
舶 1 变 强 灯 设计 方 寮
灯l 与灯4 为红灯, 与灯5 灯2 为黄灯, 与灯6 灯3 为绿 灯, 我们在模拟交通灯 系统设 计中, 用一个红绿黄三色L D表示一个路 口 E 信号灯, 么整 个东西与南 那 北走向的交叉路 口 用四个三色L D E 显示。
数据端 口: 个8 2 位端 I P P ) 2 " 位端 n P 高/ 位)与T L : A、 B 、 -4 l ( f ( C 低4 T 电平
兼 容
数据 传送方式 : 无条件 、 查询 、 中断三种传送 方式 , 对应的工作方式 : 方
式0 方式】 、 及方式2 寄存器种类 : 数据 口、 控制 口和状 态口 选择数据 口C 口作为数 据输出方式 工作在方式 0  ̄ P 口 下,l C 上与红灯端相 1 ] 连, C口 P 下与绿 灯端相连 , 黄灯显示时则红灯端 与绿灯端同时有效。 32 硬件电路连 线 .
L D 由一个红色L D E 是 E 管芯和 一个绿色L D E 管芯封 装在一起, 公用负端 。 当
红色 正端加高电平, 绿色正端加低 电平 时, 红灯亮 ; 红色正端加 低电平 , 绿色 正端加高电平时, 灯亮, 绿 两端都加高电平时, 黄灯亮。
t●
4 模拟 交通 灯系统的软件设计
交 通规 划原则上 的规 划管理要求我们要对景区、 客、 游 服务设施等多方面的因 素进行深入的, 多角度、 多层次 的调查和 研究 , 以使 游览标识 系统得到不断完 善和优化 。 再者, 我们应该将游览标 识系统 的规 划放在凤景旅游 区意 、 整合, 通过恰当的色调、 图形、 材料 来把握景区环境与标识 ( ) 牌 信息传达 的一致性 。 ②在文字内容上要简明扼要, 览标识系统设置的本质就是将游览信息 游 的科学性 、 艺术性 通过 图形 、 图表表 现出来, 其更加 形象化 , 让 工具化 。 求 追 “ 即是 “ , 少” 多 即简洁、 科学 、 理性, 且采用标 准化文字、图示达到能与国际
单片机模拟交通灯综合实训

C51单片机模拟交通灯综合实训背景:设计模拟交通灯,东南西北各有红绿黄3只led灯。
工作状态:初始化全部灯亮,并闪烁三次;东西绿灯亮20s(南北红灯亮),黄灯亮并闪烁3次(每次0.5s),然后红灯亮,切换到南北绿灯亮,时间与点亮规律同东西方向,循环重复上述过程。
任务:1设计流程说明。
2系统框图设计。
3硬件电路设计。
4 软件设计及调试。
P1、简要说明设计流程及各环节的工作内容和目的。
1、确定任务:对任务进行分析,确定功能、性能要求,制定总体方案2、总体设计:系统功能分配,确定软件硬件功能关系,拟定调试方案3、硬件设计:绘制硬件原理图,绘制印制板图,配置元器件,硬件功能分配4、软件设计:确定算法与数据结构,程序模块划分,绘制程序流程图,程序编写与仿真调试5、系统调试:包括硬件调试和软件调试P2、根据系统需求,设计并画出系统功能模块框图,说明产品总体工作原理和各模块的功能。
交通灯模块工作原理是通过单片机控制实现灯的亮灭功能是实现东西南北的红、黄、绿灯的亮灭情况数码管模块工作原理是从单片机I/O口接出,实现数字显示功能是实现计时20S倒数和3秒倒数P3、根据系统框图,设计单片机应用系统和接口驱动电路图,标注电路中元器件型号和参数。
电路图用到得元器件如下表设计单片机应用系统和接口驱动电路图P4、编写软件代码,仿真、下载运行验证,实现要求的功能1.软件代码#include <reg51.h>unsigned char second=20, time0 =100 ,time1=50,county=6;unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char con[]={0xfd,0xfe};sbit NB_G=P1^0;sbit NB_Y=P1^1;sbit NB_R=P1^2;sbit DX_G=P1^3;sbit DX_Y=P1^4;sbit DX_R=P1^5;bit DXT=1;unsigned int i,j;void showtime();main(){for(j=6;j>=1;j--){P0=~P0;for(i=50000;i>0;i--);}P0=0xFF;for(i=50000;i>0;i--);NB_R=0;DX_G=0;showtime();TMOD=0X11;TL0=-10000;TH0=-10000>>8; TL1=-10000;TH1=-10000>>8;EA=1;ET0=1;ET1=1;TR0=1;while(1);}void isr_time0() interrupt 1{ showtime();TL0=-10000;TH0=-10000>>8; time0--; showtime(); if (time0==0){time0=100;second--;if (second==0){TR0=0; TR1=1;second=3;showtime();if (DXT){ DX_G=1;DX_Y=0; }else { NB_G=1;NB_Y=0; } }}}void isr_time1()interrupt 3{TL1=-10000;TH1=-10000>>8;time1--;showtime();if(time1==0){time1=50;if (county%2!= 0){second--;}county--;if(county){if(DXT) DX_Y=~DX_Y;else NB_Y=~NB_Y; }else{county=6;if (DXT){ DX_Y=1;DX_R=0; NB_R=1;NB_G=0;} else{DX_R=1 ;DX_G=0; NB_Y=1;NB_R=0;}TR1=0;TR0=1;DXT=~DXT;second=20;showtime();}}}void showtime(){unsigned int i,j;unsigned char time[2];time[0]=second/10;time[1]=second%10;P2=con[0];P0=seg[time[0]];for(j=100;j>0;j--);P2=con[1];P0=seg[time[1]];}2.仿真电路如图所示M1、分析并列出软件设计中需用到的单片机特殊功能寄存器(SFR)及其功能设置。
单片机课程设计交通灯总结

单片机课程设计交通灯总结在单片机课程设计中设计交通灯控制系统是一个常见而有趣的项目。
以下是一个关于交通灯控制系统单片机课程设计的总结:设计目标:实现一个模拟交通路口的交通灯控制系统,包括红灯、绿灯、黄灯状态的切换,考虑不同方向车辆的通行情况。
硬件与软件要求:1.使用单片机(如AT89C51)作为主控制器。
2.连接LED灯模拟交通灯的红、黄、绿三个状态。
3.设置按钮或传感器来模拟车辆和行人的触发信号。
4.使用编程语言(如C语言)编写单片机程序,实现交通灯的状态切换逻辑。
设计步骤:1.确定交通灯状态:定义红、黄、绿三个状态,确定每个状态的持续时间。
2.设计状态切换逻辑:编写程序逻辑,根据不同的触发条件切换交通灯的状态。
例如,通过按钮触发或设置定时器来模拟车辆和行人的触发。
3.处理不同方向的通行:考虑路口不同方向的车辆通行情况,确保交通灯切换的合理性。
可以设置不同方向的灯的状态互斥。
4.实现程序代码:使用C语言等编写程序代码,并通过编译器将代码烧录到单片机中。
5.调试与优化:在实际硬件上进行调试,确保交通灯的状态切换和触发条件的逻辑正确。
根据实际情况优化代码,提高系统的稳定性和可靠性。
设计成果:成功设计并实现了一个交通灯控制系统,具有良好的交互性和可扩展性。
系统能够模拟真实路口的交通流量情况,通过合理的状态切换实现车辆和行人的有序通行。
学到的知识与技能:1.掌握单片机编程技能,包括IO口控制、定时器使用等。
2.熟悉硬件与软件协同设计的过程。
3.提高了系统设计和调试的能力。
4.学习了如何考虑不同方向车辆通行情况,提高了系统的实用性。
反思与展望:通过这个项目,我更深入地理解了单片机的工作原理和编程技术。
在未来,可以考虑增加更多的功能,如紧急情况下的交通灯切换、LED显示屏显示等,以提高系统的智能化和实用性。
这个课程设计不仅锻炼了我的技术能力,也培养了我对系统设计的整体思考能力。
模拟交通灯实验报告

单片机综合实验报告题目: 模拟真实交通灯班级:姓名:学号:指导老师:时间:一、实验内容:用8255芯片的PA、PB口低四位做输出口,控制十二个发光二极管燃灭,模拟十字路口交通灯管理,并利用数码显示器进行倒计时显示(采用单片机内部定时器定时)。
通过外部中断能使交通灯暂停运行,并点亮4个红灯。
通过16*16点阵中的图形模拟控制行人过马路的人形“走”、“停”指示灯,可参考下图所示。
选做增加项目:在交通灯开始之前可通过开关对红绿灯亮灭时间的初始值进行增、减设定或者交通灯暂停时加上乐曲报警。
二、实验电路及功能说明电路:74LS138译码器电路8255与发光二极管连线图数码LED显示器电路(不需接线)16×16LED点阵显示电要求:交通灯亮灭过程同“8255控制交通灯实验”,倒计时显示只需两位数(0~99),用定时器定时进行倒计时,每秒钟减1。
在16*16点阵中显示的人形“走”、“停”标志可自定义,由专门软件可转换为相应显示代码,不需自己推理。
三、实验程序流程图:主程序:子程序:详细程序请参考程序清单。
四、实验结果分析对程序进行仿真可以观察到:点阵中交替显示如图(a)、(b)所示图像,且交替显示时间为30秒。
当显示图像为(a)时,表示可以容行人通过,限时30秒;当显示图像为(b)时,表示不容行人通过,也限时30秒。
如此,在十字路口各置一对点阵即可模拟实景。
五、心得体会通过此次实验,对单片机的I/O口的使用的条件有了更深的理解,对单片机的各个管脚功能的理解也加深了,以及在常用编程设计思路技巧的掌握方面也向前迈了一大步。
这次的课程设计让我把单片机的理论知识应用在实践中,实现了理论和实践相结合,从中更懂得理论是实践的基础,实践有助于检验理论的正确性的道理,对我以后参加工作或者继续学习深造将产生巨大的帮助和影响。
六、程序清单#include <reg51.h>#include <absacc.h>#define uchar unsigned char#define uint unsigned int#define ROW1 XBYTE[0XFFE3]#define ROW2 XBYTE[0XFFE0]#define COL1 XBYTE[0XFFE2]#define COL2 XBYTE[0XFFE1]#define PA XBYTE[0xffd8]#define PB XBYTE[0xffd9]#define CTL XBYTE[0xffdb]#define SEG XBYTE[0xffdc]#define BIT XBYTE[0xffdd]#define allredend 10#define ewredend 2*ewstarter+allredend#define snyellowend ewredend+10#define snredend snyellowend+2*snstarter#define ewyellowend snredend+10sbit KEY1=P1^0;sbit KEY2=P1^1;sbit KEY3=P1^2;sbit P32=P3^2;uchar tongBu;uchar code ewTable[]={0xb6,0x75,0xf3,0xf7,0xae,0x9e,0xbe};uchar code nsTable[]={0xd,0xd,0xc,0xd,0xb,0x7,0xf};//uchar tempa,tempb;int time=1,cnt,change,intflag,inttime=1,ewstarter=10,snstarter=15;int tempseg;uchar key1=0;uchar buffer[]={0,0,0,0,0,0};uchar table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};/*-- 行走--*//*-- 宽度x高度=16x16 --*/uchar code led1[]={0x01,0x80,0x02,0x40,0x02,0x40,0x01,0x80,0x03,0xC0,0x06,0x60,0x0A,0x50,0x0A,0x5 0,0x0B,0xD0,0x12,0x48,0x02,0x40,0x02,0x60,0x04,0x20,0x04,0x20,0x08,0x20,0x18,0x60};/*-- 停止--*//*-- 宽度x高度=16x16 --*/uchar code led2[]={0x01,0x80,0x02,0x40,0x02,0x40,0x01,0x80,0x07,0xE0,0x7E,0x7E,0x02,0x40,0x02,0x40 ,0x03,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0xC0};/*-- 文字: 高--*//*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --uchar code led2[]={0x02,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x0F,0xE0,0x08,0x20,0x0F,0xE0,0x00,0x0 0,0x7F,0xFC,0x40,0x04,0x4F,0xE4,0x48,0x24,0x48,0x24,0x4F,0xE4,0x40,0x14,0x40,0x08};*/ void delayshort(){char n;for(n=50;n>0;n--);}uchar changeleft(uchar led){uchar temp;temp=0;temp|=(led<<7)&0x80;temp|=(led<<5)&0x40;temp|=(led<<3)&0x20;temp|=(led<<1)&0x10;temp|=(led>>1)&0x08;temp|=(led>>3)&0x04;temp|=(led>>5)&0x02;temp|=(led>>7)&0x01;return(temp);}void led16_16display(uchar *table,uchar length){uchar i=length/2,scan1=0x1,scan2=0x1;for(i=0;i<16;i++){if(i<8){ROW1=0;ROW2=0;COL1=scan1;COL2=0;ROW1=changeleft(table[2*i]);ROW2=table[2*i+1];COL1=scan1;COL2=0;delayshort();scan1<<=1;}else{ROW1=0;ROW2=0;COL1=0;COL2=scan2;ROW1=changeleft(table[2*i]);ROW2=table[2*i+1];COL1=0;COL2=scan2;delayshort();scan2<<=1;}}}void changeseg(){if(key1==0){buffer[3]=10;buffer[0]=10;buffer[5]=tempseg%10;buffer[4]=tempseg/10;buffer[2]=tempseg%10;buffer[1]=tempseg/10;}else if(key1==1){buffer[3]=10;buffer[0]=10;buffer[5]=ewstarter%10;buffer[4]=ewstarter/10;buffer[2]=ewstarter%10;buffer[1]=ewstarter/10;}else{buffer[3]=10;buffer[0]=10;buffer[5]=snstarter%10;buffer[4]=snstarter/10;buffer[2]=snstarter%10;buffer[1]=snstarter/10;}}void timer1()interrupt 3{static uchar temp=0x20,cnt1;TH1=(65536-1000)/256;TL1=(65536-1000)%256;changeseg();SEG=0xff;SEG=table[buffer[cnt1]];cnt1++;if(cnt1==6)cnt1=0;BIT=temp;temp>>=1;if(temp==0)temp=0x20;}void int_0()interrupt 0{delayshort();if(P32==0){PA=0xB6;PB=0xd;PT0=1;PT1=1;intflag=1;while(inttime<=20)led16_16display(led2,32);inttime=1;intflag=0;PT0=0;PT1=0;PA=ewTable[tongBu];PB=nsTable[tongBu];}}void timer0()interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;cnt++;if(cnt==5){cnt=0;if(intflag==1){inttime++;tempseg=10-inttime/2;}else{time++;if(time<=allredend){tongBu=0;PA=ewTable[tongBu];PB=nsTable[tongBu];tempseg=allredend/2-(time+1)/2;}else if((time>allredend)&&(time<=ewredend)){tongBu=1;PA=ewTable[tongBu];PB=nsTable[tongBu];tempseg=ewstarter+allredend/2-(time+1)/2;}else if((time>ewredend)&&(time<=snyellowend)){if(change==0){tongBu=2;PA=ewTable[tongBu];PB=nsTable[tongBu];change=1;}else{tongBu=3;PA=ewTable[tongBu];PB=nsTable[tongBu];change=0;}tempseg=ewstarter+allredend/2+5-(time+1)/2;}else if((time>snyellowend)&&(time<=snredend)){tongBu=4;PA=ewTable[tongBu];PB=nsTable[tongBu];tempseg=ewstarter+allredend/2+5+snstarter-(time+1)/2;}else if((time>snredend)&&(time<=ewyellowend)){if(change==0){tongBu=5;PA=ewTable[tongBu];PB=nsTable[tongBu];change=1;}else{tongBu=6;PA=ewTable[tongBu];PB=nsTable[tongBu];change=0;}tempseg=ewstarter+10+allredend/2+snstarter-(time+1)/2;}else{tongBu=1;time=allredend+1;PA=ewTable[tongBu];PB=nsTable[tongBu];tempseg=ewstarter+allredend/2-(time+1)/2;}}}}void key(){uchar keynum;keynum=~(P1|0XF8);switch(keynum){case 0x1:while(KEY1==0)led16_16display(led2,32);key1++;TR0=0;if(key1==3){key1=0;TR0=1;}break;case 0x2:while(KEY2==0)led16_16display(led2,32);if(key1==1){ewstarter++;if(ewstarter==100)ewstarter=0;}if(key1==2){snstarter++;if(snstarter==100)snstarter=0;}break;case 0x4:while(KEY3==0)led16_16display(led2,32);if(key1==1){ewstarter--;if(ewstarter==-1)ewstarter=99;}if(key1==2){snstarter--;if(snstarter==-1)snstarter=99;}break;default:break;}}void main(){IE=0x8b;IT0=1;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-1000)/256;TL1=(65536-1000)%256;CTL=0x80;tongBu=0;TR1=1;PA=ewTable[tongBu];PB=nsTable[tongBu];tempseg=allredend/2-(time+1)/2;TR0=1;while(1){key();if(intflag==0){if(key1==0){if(time<=allredend)led16_16display(led2,32);else if(time>allredend&&time<=snyellowend)led16_16display(led1,32);else if(time>snyellowend&&time<=ewyellowend)led16_16display(led2,32);}elseled16_16display(led2,32);}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.设计任务功能及技术指标要求设计交通灯的基本要求:设计一个十字路口交通灯控制电路,要求主干道与支干道交替通行。
主干道通行时,主干道绿灯亮,支干道红灯亮,时间为60秒。
支干道通行时,主干道绿灯亮,主干道红灯亮,时间为30秒。
设计内容按设计技术指标进行交通灯的硬件和软件设计。
熟悉使用Keil软件和Proteus软件。
设计思路及关键技术一个完整的交通灯相当于一个简单的单片机系统,该系统有交通灯设置电路、单片机、显示电路等构成。
单片机是集成的IC芯片,只需根据实际设计要求选型。
其他部分都需要根据应用要求和性能指标自行设计。
基于单片机的交通灯的设计时要充分的认识以下两个问题:1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
再转状态3,东西绿灯通车,南北红灯。
过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态1。
2.双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
2.总体方案设计系统总体结构开始↓四个路口红灯亮东西红灯亮,南北黄灯闪烁,延时↓单片机2.2.1单片机简介单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O 设备。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可用它来做一些控制电器一类不是很复杂的工作足矣了。
我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。
2.2.2单片机的发展历史单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。
SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。
“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。
在开创嵌入式系统独立发展道路上,Intel公司功不可没。
MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。
它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。
从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。
在发展MCU方面,最著名的厂家当数Philips公司。
向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。
随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。
因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
2.2.3单片机的基本结构单片机的结构大体相同,只是在功能上存在着差异。
现以MCS-51单片机为例来对单片机的内部功能结构进行介绍。
MCS-51单片机主要包括9个部分:CPU、8KB Flash ROM、256B RAM(128B SFR)、16位×3个定时器/计数器、中断控制器、8位×4个并行口、可编程全双工串行口、时钟电路、64KB总线扩展控制器。
(1)一个8位的微处理器CPU。
(2)8KB的片内程序存储器Flash ROM(基本型的Flash ROM位128B),用于烧录运行的程序、常数数据。
(3)256B的片内数据存储器RAM(基本性的RAM为128B),在程序运行时可以随时写入和读出数据,用于存放函数相互传递的参数、接收的外部数据、运算的中间结果、最后结果及现实的数据等;128B特殊功能寄存器(SFR)控制单片机各个部件的运行。
(4)3个16位的定时器/计数器(基本型仅有2个定时器),每个定时器/计数器可以设置为计数方式,用于对外部事件信号进行计数,也可以设置为定时方式,满足各种定时要求。
(5)有一个管理6个中断源(基本形式5个中断源)、2个优先级的中断控制器。
(6)4个8位并行I/O端口,每个端口即可以用作输入,也可以用作输出。
(7)一个全双工的UART(通用异步接收发送器)串行I/O口,用于单片机之间的串行通信,或者单片机与PC机、其他设备、其他芯片之间的串行通信。
(8)片内振荡电路和时钟发生器,只需外面接上一晶振获输入振荡信号,就可以产生单片机的控制电路。
(9)有一个可寻址64KB外部数据存储器、还可以寻址64KB外部程序存储器的三总线的控制电路。
以上各个部分通过片内总线相连,在CPU的控制下协调工作,实现用户程序的各种功能。
2.2.4单片机AT89C51AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51单片机.芯片主要性能指标2.3.1 功能特性与MCS-51 兼容4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路2.3.2.管脚说明:VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能RXD(串行输入口)TXD(串行输出口)/INT0(外部中断0)/INT1(外部中断1)T0(记时器0外部输入)T1(记时器1外部输入)/WR(外部数据存储器写选通)/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
2.3.3振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。