实验(八):交通灯控制

这篇具有很好参考价值的文章主要介绍了实验(八):交通灯控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的与任务

实验目的:

        1. 学习模拟交通灯控制的实现方法;

        2. 掌握Proteus硬件仿真与调试。

任务:

        1.根据要求编写程序,并写出原理性注释;

        2. 将检查程序运行的结果,分析一下是否正确;

        3. 完成所建工程的仿真及调试。

二、实验内容

按照电路要求在Protues中设计电路图。编程实现如下功能:

用单片机端口作输出口,控制四个方向共12个发光二极管亮灭,模拟交通灯管理。功能描述如下:初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,之后重复以上过程。

三、实验内容

(1)软件实现:

实验步骤:

        1.运行Keil uVision5 开发环境,按照“模块化单片机教学实验平台配套的实验指导书1.2.3 节”介绍的方法建立程esimlab4. uvproj,CPU 为AT89S51,包含启动文件STARTUP.A51。

       2. 输入源程序,在Keil uVision5 开发环境中,建立源程序esimlab8.c,将上述程序加入该程序文件。并将该文件加入工程esimlab4.uvproj。

        3.设置工程esimlab8 uvproj 属性,将其晶振频率设置为11.0592MHz,选择输出可执行文件(HEX 文件),仿真方式为“Use Simulator”。

       4. 构造(Build)工程esimlab8.uvproj。如果输入有误进行修改,直至构造正确,生成可执行程序 esimlab8.hex 为止。

程序流程图如图1:

交通灯流程图,单片机,实验报告,单片机,嵌入式硬件,51单片机

图1 交通灯控制流程图

(2)Proteus仿真:

实验步骤:

        1.运行Proteus 开发环境,建立工程,新建原理图设计文件esimlab8. pdsprj。

        2.设置单片机属性,将其晶振频率设置为11.0592MHz,载入KEIL生成的文件esimlab8.hex。

        3.运行仿真并观察结果。

(3)开发板实验验证:

实验步骤:

        1.关掉实验箱电源。将CPU 板插接在JK1、JK2 上,注意CPU 板的插接方向。按照实验四说明书连接关系表将硬件连接好。

交通灯流程图,单片机,实验报告,单片机,嵌入式硬件,51单片机

图1 实验板连接线表

        2.将AT89S52 芯片插在CPU 板的CPU 插座上(注意不要插反)。母板上电。

        3.通过PROGISP 烧写软件,利用ISP 下载线(见“模块化单片机教学实验平台配套的实验指导书1.3 节”)把HEX (esimlab8.hex)文件下载到单片机中。

        4.下载成功后,通过按键,观察母板上的交通灯工作情况。

四、实验报告

main.c

#include <reg52.h>
#include <absacc.h>

#define PA	 XBYTE[0x7FFC]   //PA端口地址
#define PB	 XBYTE[0x7FFD]		
#define PC	 XBYTE[0x7FFE]
#define COM	 XBYTE[0x7FFF]

char code dx516[3] _at_ 0x003b;

unsigned char Second[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10};  
unsigned char count = 0, total = 0;

/**************8255初始化******************************/
void init_8255(void)
{
	COM = 0x80;	// 方式0,C = out B=out A = out
	PA = 0xFF;
	PB = 0xFF;
}

/**************定时器1初始化******************************/
void init_T1(void)
{
	TMOD &= 0x0F;//设置定时器模式
	TMOD |= 0x10;//设置定时器模式
	TL1 = 0x00;	//设置定时初值
	TH1 = 0x4C;	//设置定时初值
	TF1 = 0;//清除TF1标志
	ET1 = 1; //允许定时器中断1
	EA = 1;	//开总中断
	TR1 = 0;//定时器1先不工作 
}

//-------------------
// 函数名称: void delay_s(unsigned t)
// 函数功能: 利用定时器延时t*0.5秒子程序
//-------------------
void delay_s(unsigned char t)
{  
	TR1 = 1;//启动定时器1
	total = t * 10;
	count = 0;
	while(1)
	{
	  if(count == total)//定时时间到
		{
			count = 0;	
			total = 0;
			TR1 = 0;
			return;
		}
	}
}

void timer1() interrupt 3       //定时器1
{     
	TR1 = 0;
	TL1 = 0x00;	//设置定时初值
	TH1 = 0x4C;	//设置定时初值
	count++;
	TR1 = 1;
}

void main(void)
{
	unsigned char i = 0;
	init_8255();//初始化8255
	init_T1();//初始化定时器1
	while(1)
	{	
		//东西方向->南北方向
		for(i = 10;i > 0;i--)
		{
			PC = Second[i];			
			if(i < 4)//东西方向绿灯/南北方向红灯闪烁3秒
			{
				PA = 0xFF;
				PB = 0xFF;				
				delay_s(1);
				PA =0xF6;
				PB =0xDB;
				delay_s(1); 	
			}
			else
			{
				PA = 0xF6;	//东西绿灯亮
				PB = 0xDB;	//南北红灯亮 
				delay_s(2);
			}
		}
		
		for(i = 3;i > 0; i--)
		{
			PC = Second[i];
			PA = 0xED;//东西黄灯亮
			PB = 0xED;//南北黄灯亮				
			delay_s(1);
			PA = 0xFF;
			PB = 0xFF;    
			delay_s(1); 
		}
	 
		//南北方向->东西方向
		for(i = 10;i > 0;i--)
		{
			PC = Second[i];			
			if(i < 4)//南北方向绿灯/东西方向红灯闪烁3秒
			{
				PA = 0xFF;
				PB = 0xFF;	
				delay_s(1);
				PA = 0xDB;  //东西红灯亮
				PB = 0xF6;  //南北绿灯亮
				delay_s(1); 	
			}
			else
			{
				PA = 0xDB;	 //东西红灯亮
				PB = 0xF6;   //南北绿灯亮
				delay_s(2);
			}
		}
		
		for(i = 3;i > 0;i--)
		{
			PC = Second[i];
			PA = 0xED;//东西黄灯亮
			PB = 0xED;//南北黄灯亮				
			delay_s(1);
			PA = 0xFF;
			PB = 0xFF;  
			delay_s(1); 
		}
	}	
}

交通灯流程图,单片机,实验报告,单片机,嵌入式硬件,51单片机

 

        在实验过程中,由于刚开始计算红绿灯对应的十六进制数据时没看清哪个对应的红黄绿,导致第一次运行仿真时信号灯颜色乱闪。在后续使用时应认真仔细分析题目。

        通过本次实验深入理解了模块化编程,熟悉了8255芯片的工作方式和中断的使用。在本次实验过程中掌握了8255 芯片的硬件连接方法、内部结构、工作原理和工作方式,熟悉了8255片的初始化编程,再一次编写中断程序,使我更熟悉了中断的原理和过程,能更熟练地编写中断服务程序。同时在实验中将一些外设的启动初始化抽取到相应的初始化函数中,通过调用初始化函数启动,这样不仅增加了代码的可阅读性,而且减少了代码堆积,便于修改。实验中结合定时器进行延迟,减小了延迟函数对主程序的影响,提高了软件资源的利用率。文章来源地址https://www.toymoban.com/news/detail-776104.html

到了这里,关于实验(八):交通灯控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • EDA实验(Quartus Ⅱ+fpga) (四)---交通灯设计

    前言: 本文主要介绍了EDA原理与应用这门课程的相关实验及代码。使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cycloneⅤ 5CSEMA5F31C6。 (一)实验目的 (1)熟悉交通灯控制器的工作原理; (2)了解设计中的优化方案; (3)进一步掌握状态机的设计; (4)学习较复杂数字系

    2024年02月02日
    浏览(42)
  • 红绿灯交通灯控制逻辑电路设计

    最近无聊整理一下以前的笔记之类的,发现以前的课设,简陋粗糙,还是记录下吧。 此设计有具体接线说明 实验箱大概如下图 课设任务及要求 1、满足如图 1 顺序工作流程 t为时间单位 2、满足两个方向的工作时序 即东西方向亮红灯时间应等于南北方向亮黄、绿灯时间之和,

    2024年02月10日
    浏览(43)
  • 基于数电的交通灯控制器

    由一条主干道和一条支干道的汇合点形成十字交叉路口,为确保车辆安全、迅速地通行,在交叉路口的每个人口处设置了红、绿、黄三色信号灯。 (1)用红、绿、黄三色发光二极管作信号灯,用传感器或逻辑开关代替传感器做检测车辆是否到来的信号,设计制作一个交通灯

    2024年02月09日
    浏览(38)
  • 基于单片机控制的交通灯系统设计

    本设计是交通灯的控制实验,必须要先了解实际交通灯的变化规律。假设一个路口为东西南北走向,即十字路口,初始状态零为东西南北灯都熄灭。然后转状态一东西绿灯通车,南北为红灯。过段时间转状态二,东西绿灯闪几次转黄灯,延时几秒,南北仍为红灯。再转状态三

    2024年02月08日
    浏览(45)
  • 基于机器视觉的交通灯控制系统设计

    随着工业自动化和汽车行业的发展,汽车数量猛增,导致交通故障和城市交通拥堵发生的现象越来越频繁。即使道路日益扩宽,但仍无法解决现有存在问题,交通环境问题仍日趋严重。为了解决该问题,本文对交通灯配时控制器展开设计和研究,提出了一种基于机器视觉的交

    2024年02月04日
    浏览(33)
  • 电子技术课程设计—交通灯控制系统设计

    目录 摘要 1 设计目的及要求 1.1设计目的 1.2 题目与要求 2 总体方案设计 2.1 提出原理方案 方案(1):基于同步模型的电路设计 方案(2):基于异步模型的加法计数电路设计 方案(3):基于异步模型的减法计数电路设计 2.2 原理方案的确定 3 单元电路设计及仿真 3.1 秒脉冲电

    2024年02月03日
    浏览(44)
  • FPGA智能交通灯控制器系统系统设计

    把由5OM的有源晶振产生的现场可编程逻辑器件FPGA 的系统时钟输入到分频模块,经分频模块分频产生频率为1Hz的时钟脉冲,作为控制定时模块、控制模块、紧急模块、计数模块的时钟信号,然后再由定时模块来控制紧急模块和控制模块,按照交通管理规则控制交通工作状态的

    2024年02月04日
    浏览(33)
  • 【超详细】基于单片机控制的十字道路口交通灯控制

    目录 最终效果 一、设计任务 二、设计报告 1 设计说明    1.1功能分析 1.1.1整体系统功能分析 1.1.2显示状态功能分析 1.1.3设置状态功能分析 1.1.4紧急状态功能分析 1.2方案比选 1.2.1车辆LED数码管倒计时显示板块 1.2.2车辆信号灯显示板块 1.2.3行人信号灯显示板块 1.2.4键盘输入板块

    2024年02月04日
    浏览(33)
  • 基于Verilog的十字路口交通灯控制电路设计

    设计并实现一个简单的十字路口交通灯控制电路。以4个红色指示灯、4个绿色指示灯和4个黄色指示灯模拟路口东西南北4个方向的红绿黄交通灯。控制这些灯,使它们安下列规律亮灭。 1、东西方向绿灯亮,南北方向红灯亮。东西方向通车,时间30秒; 2、东西方向黄灯闪烁,南

    2024年02月03日
    浏览(32)
  • 【论文笔记】IntelliLight智能交通灯:一种基于强化学习的智能交通信号灯控制方法

    博客声明:本文仅为个人论文阅读笔记,大部分原文对照的中文为翻译而来,只对其中错误明显的部分作了修改。其他一些个人理解不到位或有误的地方也尽请见谅。 标题原文: IntelliLight:A Reinforcement Learning Approach for Intelligent Traffic Light Control 论文来源: Proceedings of the 24

    2024年04月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包