单片机实验4(交通灯)
- 格式:pdf
- 大小:935.63 KB
- 文档页数:5
一、引言随着我国经济的快速发展,城市交通问题日益突出,交通拥堵、事故频发等问题严重影响了市民的生活质量。
为了解决这些问题,智能交通系统应运而生。
单片机作为一种高效、低成本的微控制器,在智能交通系统中扮演着重要角色。
本实训报告以单片机为控制核心,设计并实现了一套交通灯控制系统,旨在提高交通效率,保障交通安全。
二、实训目标1. 熟悉单片机的基本原理和编程方法。
2. 掌握交通灯控制系统的设计方法。
3. 学会使用单片机进行交通灯控制。
4. 提高动手实践能力和团队协作能力。
三、实训内容1. 系统组成本系统采用AT89C52单片机作为核心控制单元,通过外围电路实现交通灯的控制。
系统主要由以下模块组成:(1)单片机模块:负责整个系统的控制和数据处理。
(2)信号灯模块:包括红、黄、绿三个信号灯,用于指示交通灯状态。
(3)按键模块:用于手动控制交通灯状态。
(4)数码管模块:用于显示交通灯倒计时时间。
(5)电源模块:为整个系统提供稳定的电源。
2. 系统工作原理系统启动后,单片机首先进行初始化设置,包括设定交通灯状态、倒计时时间等。
然后进入主循环,不断检测按键状态,并根据交通灯状态和倒计时时间进行控制。
(1)正常状态:系统按照预设的交通灯状态和时间进行控制,绿灯亮30秒,黄灯亮5秒,红灯亮25秒。
(2)紧急状态:当检测到紧急车辆时,系统立即切换到紧急状态,所有交通灯亮红灯,直到紧急车辆通过。
(3)手动控制:用户可以通过按键手动控制交通灯状态,实现交通灯的切换。
3. 程序设计程序采用C语言编写,主要包括以下部分:(1)初始化函数:设置单片机的工作模式、IO口状态、定时器等。
(2)主循环函数:检测按键状态,控制交通灯状态和倒计时时间。
(3)中断服务程序:处理按键中断和定时器中断。
四、实训过程1. 硬件设计根据系统组成,设计并焊接电路板,包括单片机模块、信号灯模块、按键模块、数码管模块和电源模块。
2. 软件设计使用Keil uVision软件编写程序,并进行编译、下载和调试。
单片机交通灯实验报告一、实验目的二、实验原理三、实验器材四、实验步骤五、实验结果六、实验分析与讨论七、实验总结一、实验目的:本次单片机交通灯实验的主要目的是通过使用单片机控制LED灯的亮灭,模拟交通信号灯的运行状态,并能够正确地掌握单片机编程技巧和硬件连接技术。
二、实验原理:本次交通灯实验采用了单片机作为中央处理器,通过编写程序控制LED灯的亮灭来模拟交通信号灯。
在程序中,我们需要使用到延时函数和条件判断语句。
具体来说,在红绿黄三个LED灯之间切换时,需要设定一个时间段,并在该时间段内循环执行红绿黄三个LED灯亮度变化的循环语句。
三、实验器材:1. 单片机开发板一块;2. LED 灯若干;3. 杜邦线若干。
四、实验步骤:1. 将红色 LED 灯连接至 P0 口;2. 将黄色 LED 灯连接至 P1 口;3. 将绿色 LED 灯连接至 P2 口;4. 将单片机开发板与电脑连接,打开 Keil 软件;5. 编写程序,将红色 LED 灯亮起来;6. 编写程序,将黄色 LED 灯亮起来;7. 编写程序,将绿色 LED 灯亮起来;8. 编写程序,模拟交通信号灯的运行状态。
五、实验结果:在完成了上述步骤后,我们成功地模拟出了交通信号灯的运行状态。
具体来说,在程序中我们设定了一个时间段为10s,在这个时间段内,红灯亮 5s,黄灯亮 2s,绿灯亮 3s。
在这个时间段结束后,循环执行该过程。
六、实验分析与讨论:通过本次交通灯实验,我们学习到了如何使用单片机控制LED灯的亮灭,并能够正确地编写程序模拟交通信号灯的运行状态。
在编写过程中需要注意以下几点:1. 在使用延时函数时要注意时间单位和精度;2. 在编写条件判断语句时要注意逻辑结构和语法规范;3. 在硬件连接时要注意杜邦线的颜色对应关系和插口位置。
七、实验总结:本次单片机交通灯实验是一次非常有意义的实践活动。
通过此次实验,我们掌握了单片机编程技巧和硬件连接技术,并能够正确地模拟交通信号灯的运行状态。
一、实验目的1. 理解交通灯控制系统的工作原理。
2. 掌握使用单片机进行交通灯控制系统的设计与实现。
3. 提高动手实践能力和问题解决能力。
二、实验原理交通灯控制系统通常采用单片机作为核心控制单元,通过编程实现对交通灯的红、黄、绿三种灯光状态的切换。
本实验采用单片机(如STC89C52)作为核心控制单元,利用定时器实现灯光的定时切换,并通过LED灯模拟交通灯的灯光状态。
三、实验器材1. 单片机开发板(如STC89C52开发板)2. LED灯(红、黄、绿各一个)3. 电阻(根据LED灯的规格选择)4. 跳线5. 编程器6. 计算机四、实验步骤1. 硬件连接:- 将红、黄、绿LED灯分别连接到单片机的P1.0、P1.1、P1.2端口。
- 将电阻串联在每个LED灯的两端,防止LED灯过载。
- 将跳线连接到单片机的相关引脚,用于编程和调试。
2. 软件编程:- 使用Keil软件编写单片机程序,实现交通灯的控制逻辑。
- 设置定时器,实现灯光的定时切换。
- 编写主循环程序,根据定时器的值切换LED灯的状态。
3. 程序调试:- 将程序烧录到单片机中。
- 使用示波器或逻辑分析仪观察LED灯的状态,确保程序运行正常。
4. 实验验证:- 将LED灯连接到实际交通灯的位置。
- 启动单片机,观察LED灯的状态是否符合交通灯的控制逻辑。
五、实验结果与分析1. 实验结果:- 红灯亮时,表示禁止通行。
- 绿灯亮时,表示允许通行。
- 黄灯亮时,表示准备切换到红灯。
2. 实验分析:- 通过本次实验,掌握了使用单片机进行交通灯控制系统的设计与实现。
- 了解了定时器在实现灯光切换中的作用。
- 提高了动手实践能力和问题解决能力。
六、实验总结1. 优点:- 实验操作简单,易于上手。
- 理论与实践相结合,提高了学生的动手能力。
2. 不足:- 实验内容较为简单,未能涉及到复杂交通灯控制系统的设计。
- 实验器材较为有限,限制了实验的拓展性。
七、实验拓展1. 研究复杂交通灯控制系统的设计,如多路口交通灯协同控制。
一、实训背景与目的随着城市化进程的加快,交通流量日益增大,传统的交通灯控制系统已经无法满足日益复杂的交通需求。
为了提高交通效率,减少交通拥堵,本实训项目旨在设计并实现一套基于单片机的智能交通灯控制系统。
通过本实训,学生可以深入了解单片机原理,掌握单片机编程与调试技巧,同时锻炼动手实践能力和团队协作精神。
二、系统设计1. 系统组成本系统主要由以下模块组成:单片机模块:采用AT89C52单片机作为核心控制单元,负责接收传感器信号、处理数据、控制交通灯状态等。
传感器模块:包括红外传感器、地磁传感器等,用于检测车辆和行人,实时获取交通信息。
执行模块:包括LED灯、继电器等,用于驱动交通灯和信号灯。
显示模块:采用LCD显示屏,用于显示交通灯状态、倒计时等信息。
电源模块:为系统提供稳定电源。
2. 工作原理系统工作原理如下:(1)单片机初始化,设置各模块参数。
(2)单片机通过传感器模块检测交通情况,如车辆和行人数量。
(3)单片机根据检测到的交通情况,控制交通灯和信号灯的亮灯状态。
(4)LCD显示屏显示交通灯状态和倒计时信息。
(5)当系统检测到紧急情况时,如行人过马路,系统自动切换到紧急模式,确保行人安全。
三、硬件设计1. 单片机模块选用AT89C52单片机作为核心控制单元,具有以下特点:内置8K字节闪存,可存储程序和数据。
内置8位定时器/计数器,可进行定时或计数操作。
内置串行通信接口,可进行数据通信。
2. 传感器模块红外传感器:用于检测车辆和行人,实现自动控制。
地磁传感器:用于检测车辆行驶方向,实现左转和直行控制。
3. 执行模块LED灯:用于显示交通灯状态。
继电器:用于驱动信号灯。
4. 显示模块采用LCD显示屏,用于显示交通灯状态、倒计时等信息。
5. 电源模块采用DC 12V电源,为系统提供稳定电源。
四、软件设计1. 编程语言采用C语言进行编程,具有以下优点:语法简单,易于理解。
可移植性好,可在不同平台上运行。
《单片机》技术期末总结报告基于单片机的交通灯控制器设计一、目的利用发光二极管模拟交通灯的控制。
二、程序功能模拟交通灯显示。
八位发光二极管分成2组,分别代表交通路口甲、乙两个方向的信号灯(红、黄、绿、左转)。
其中,红灯与绿灯显示时间均为50s,左转显示时间为15s,黄灯显示5s。
其状态表如下:在信号灯亮的同时,在LED数码管上显示响应的时间(每个方向用2个数码管,倒计时)。
三、电路原理图发光二极管电路图:数码管电路图: R00Q20 R201-2 LCD 2-3 DSYP00 P01 P02 P03 P04 P05 P06 P07abcdefgdpR01R02R03R04R05R06R07R21R22R23R24R25a b c d e f g dpa b c d e f g dpR26R27abfcgdedpabfcgdedpabfcgdedp1298DIG1DIG2DIG3123457111a b c d e f g dpabfcgdedpDIG46DS1P20 P21 P22 P23 P24 P25 P26 P271234JP23-4 LEDVCCabfcgdedpabfcgdedpabfcgdedp1298DIG1DIG2DIG3123457111a b c d e f g dpabfcgdedpDIG46DS2Q21Q22Q23Q24Q25Q26Q27四、程序流程:五、程序源码(应有必要的注释):程序功能:模拟交通灯显示。
其中,红灯与绿灯显示时间均为50s,中间的黄灯显示时间为15s。
绿灯用八位发光二极管流动闪烁作代表;红灯用八位发光二极管全亮作代表;黄灯用八位发光二极管全亮全灭闪烁作代表。
刚开始显示的为绿灯。
显示顺序:绿--黄--红--黄--绿--黄--红--………………#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;sbit beep=P2^3;unsigned int pp;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar j,k,l=255;uchar a1,a0;uchar shijian,deng=2;void delay(unsigned int i) //延时程序{ for(j=i;j>0;j--)for(k=125;k>0;k--);}void display(unsigned char sh_c,unsigned char g_c) //定义灯亮的方式函数{ dula=0;P0=table[sh_c];dula=1;dula=0;wela=0;P0=0xfe;wela=1;wela=0;delay(5);P0=table[g_c];dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(5);}void main() //主函数{ TMOD=0x01;TR0=1;TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。
二、用51单片机设计交通灯、彩灯控制器一、可实现功能:1)通过51单片机,在面包板上模拟交通红绿灯。
分为主干道和支干道,每条道上安装红、绿、黄三种颜色的灯,并用两位八段数码管显示主干道三种灯亮的时间,由程序控制自动循环,红灯40秒,绿灯35秒,黄灯5秒;2)用单片机的外部中断0的产生来控制六路彩灯,此处只设计了四种花型。
二、电路原理图:三、源程序如下:#include "reg51.h"#include <intrins.h>void display(unsigned int digital);void delay(unsigned int time);void colour();unsigned shu[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; Unsignedled[41]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff,0xdf,0xcf,0xc7,0xc3,0xc1,0xc0,0xc1,0xc3,0xc7,0xcf,0xdf,0xff, 0xf3,0xe1,0xc0,0xe1,0xf3,0xff,0xde,0xcc,0xc0,0xcc,0xdf,0xff, 0xdb,0xed,0xf6,0xed,0xdb,0xff,0xc0,0xff,0xc0,0xff,0xc0,0xff};sbit a=P2^6;sbit b=P2^7;sbit G=P2^0;sbit Y=P2^1;sbit R=P2^2;sbit g=P2^3;sbit y=P2^4;sbit r=P2^5;int flag=0;//全局变量,当它为1时显示彩灯,当它为0时,显示交通灯#define state_1 G=0;Y=1;R=1;g=1;y=1;r=0//主干道绿,支干道红#define state_2 G=1;Y=0;R=1;g=1;y=1;r=0//主干道黄,支干道红#define state_3 G=1;Y=1;R=0;g=0;y=1;r=1//主干道红,支干道绿#define state_4 G=1;Y=1;R=0;g=1;y=0;r=1//主干道红,支干道红void main(void){unsigned int i;EA=1; //首先开启总中断EX0=1; //开启外部中断 0IT0=1; //设置触发方式为下降沿触发while(1){while(flag==0){state_1;for(i=35;i>0;i--)delay(1);state_2;for(i=5;i>0;i--){delay(i);y1=~y1;}state_3;for(i=20;i>0;i--)delay(i);state_4;for(i=5;i>0;i--){delay(i);y2=~y2;}}while(flag==1) colour();}}//显示子程序,实现用两位数码管显示灯亮的时间void display(unsigned int digital){ unsigned int k;unsigned int ge=digital%10,shi=digital/10;//将十位与个位分离for(k=0;k<30000;k++){ a=1;b=0;P0=shu[ge];P0=0;a=0;b=1;P0=shu[shi];P0=0;}}//实现彩灯控制void colour(){ P1=0xff;P3=0x00;P2=0xff;while(1){ unsigned int j;for(j=0;j<41;j++)//循环程序演示四种花型{ P2=led[j];delay(1);} delay(5);}}//中断函数void key_scan() interrupt 0 //关键字"interrupt" ,这是C语言的中断函数表示法,,单片机有6个中断口,外部中断0的优先级最高,在程序里我们只用外部中断0 {flag++;if(flag==2) flag=0;}//延时程序void delay(unsigned int time) //参数time大小决定延时时间长短{ unsigned int j,k;time=time*5;for(j=0;j<time;j++)for(k=0;k<10000;k++);}四、源程序分析1、在电路设计时我用了共阴极八段数码管来显示时间:unsigned shu[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};数组中十个数分别表示0到9十个数;2、在设计彩灯时,我直接利用交通灯的主干道和支干道的六个灯设计彩灯:unsignedled[48]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff,0xdf,0xcf,0xc7,0xc3,0xc1,0xc0,0xc1,0xc3,0xc7,0xcf,0xdf,0xff,0xf3,0xe1,0xc0,0xe1,0xf3,0xff,0xde,0xcc,0xc0,0xcc,0xdf,0xff,0xdb,0xed,0xf6,0xed,0xdb,0xff,0xc0,0xff,0xc0,0xff,0xc0,0xff};数组中的48个数共演示了四种花型3、void display(unsigned int digital){ unsigned int k;unsigned int ge=digital%10,shi=digital/10;//将十位与个位分离for(k=0;k<30000;k++){ a=1;b=0;P0=shu[ge];P0=0;a=0;b=1;P0=shu[shi];P0=0;}}显示子程序中将时间的十位与个位分离,用a、b来选择数码管将个位与十位分时输出。
单片机交通灯实验报告实验目的:1.熟悉单片机的基本工作原理和编程方法。
2.学习如何使用单片机控制交通灯的运行。
3.加深对电子元器件和电路原理的理解和掌握。
实验器材:1.51系列单片机开发板:包括单片机主控板、显示器板、外部扩展板等。
2.LED灯:红色、黄色、绿色各一颗。
3.电阻:用于限流。
4.连接线:用于连接各个电子元器件。
实验原理:在交通中,红灯代表停止、黄灯代表警告、绿灯代表通行。
在本实验中,我们将使用单片机控制三个LED灯实现交通灯的运行。
具体原理如下:1.使用单片机的IO口控制LED灯的亮灭。
2.根据交通灯的运行状态,通过改变LED灯的亮灭顺序来模拟交通的运行。
实验步骤:1.连接电路:将三个LED灯连接到单片机的IO口,并通过电阻限流。
2.编写程序:使用C语言编写程序,在主函数中设置交通灯的运行状态和亮灭顺序。
3.烧写程序:将编写好的程序烧写到单片机中。
4.运行实验:启动单片机,观察LED灯的亮灭情况,验证交通灯是否能正常工作。
实验结果:经过实验,我们成功地实现了单片机交通灯的控制。
在程序运行过程中,红灯先亮,表示停止;然后黄灯亮,表示警告;最后绿灯亮,表示通行。
整个过程循环不断,符合实际交通灯的运行规律。
实验总结:通过这次实验,我深入了解了单片机的基本工作原理和编程方法,掌握了使用单片机控制交通灯的技巧。
同时,我也加深了对电子元器件和电路原理的理解和掌握。
这些知识将对我今后的学习和工作产生积极影响。
然而,在实验过程中也遇到了一些问题。
比如,如果LED灯连接不正确或程序编写有误,交通灯可能无法正常运行。
因此,在进行单片机实验时,我们需要仔细检查电路连接和程序编写,确保一切正常。
总之,单片机交通灯实验是一次充满趣味和挑战的实践活动。
通过这次实验,我不仅学到了许多知识,而且培养了动手能力和实践能力。
希望将来能有更多这样的实验机会,继续提升自己的电子技术水平。
单片机课程设计
在单片机课程设计中,学生通常会接触到各种实际的应用场景,比如交通灯控
制和秒表功能。
这些实际项目既能帮助学生巩固所学的理论知识,又能培养他们的实际动手能力和解决问题的能力。
交通灯设计
项目简介
交通灯控制是一个常见的单片机应用项目,通过控制红绿灯的亮灭顺序,模拟
实际道路的交通流量控制。
学生可以通过这个项目了解控制流程和时序控制。
设计思路
在这个项目中,学生可以设计一个简单的交通灯系统,包括红灯、黄灯和绿灯。
他们需要考虑如何控制各个灯的亮灭顺序,以及红绿灯的时间间隔。
实现步骤
1.设计红绿灯的控制逻辑,确定各个灯的亮灭顺序。
2.编写程序,实现控制逻辑。
3.测试程序,检查红绿灯的切换顺序和时间间隔是否符合要求。
秒表设计
项目简介
秒表是用来计时的工具,通常用于测量短暂时间间隔。
在单片机课程设计中,
学生可以通过设计秒表项目来巩固定时器的使用和计时逻辑。
设计思路
学生可以设计一个简单的秒表系统,通过单片机的定时器功能实现计时功能。
他们需要考虑如何初始化计时器、开始计时、暂停计时和重置计时。
实现步骤
1.初始化定时器,设置时间间隔。
2.编写计时功能的程序,包括开始、暂停和重置功能。
3.测试程序,检查计时功能是否准确。
总结
通过交通灯和秒表项目的设计,学生可以巩固单片机的编程技能和实际应用能力。
这些项目不仅有助于加深对单片机工作原理的理解,还可以培养学生解决实际问题的能力。
希望学生在完成这些项目的过程中,能够不断学习和进步,成为优秀的单片机工程师。
单片机交通灯实验报告交通灯是城市交通管理的重要组成部分,它能够规范车辆和行人的通行秩序,保障交通安全。
为了进一步学习交通灯的原理和掌握其设计,我们进行了一次单片机交通灯实验。
本次实验使用单片机和几个LED灯,通过对单片机的编程控制来实现交通灯的自动切换。
下面是我对该实验进行的详细记录和分析。
首先,我们需要连接电路。
我们采用的是STC89C52单片机,使用3个LED灯来模拟红灯、黄灯和绿灯。
利用杜邦线将LED灯连接到单片机的GPIO口,另外还需要连接一个电位器到单片机的模拟口,用来控制红灯亮灭的时间。
接下来,我们进行了单片机的编程。
我们使用C语言编写程序,利用单片机提供的GPIO口控制LED灯的亮灭,从而实现交通灯的控制。
我们通过控制红灯、黄灯和绿灯的亮灭时间,模拟真实交通灯的工作。
在编写程序的过程中,我们首先做了一些准备工作。
我们初始化了单片机的GPIO口,设定了红灯、黄灯和绿灯的引脚。
然后,我们使用一个循环语句不断地进行交通灯的切换。
具体来说,我们将交通灯控制划分为红灯、绿灯和黄灯三个状态,利用if-else语句对不同状态进行判断并进行相应的控制。
通过对红灯亮灭时间的控制,我们能够实现交通灯的自动切换。
在程序设计的过程中,我们还考虑了交通灯的变化时间。
我们在红灯和绿灯之间设置了一个黄灯过渡时间,以模拟真实交通灯的工作。
同时,我们还设置了一个迟滞时间,使得每个状态之间的切换更加顺滑。
通过这次实验,我们进一步了解了交通灯的工作原理和掌握了单片机的编程技巧。
通过对交通灯的模拟,我们成功地实现了交通灯的自动切换。
总结起来,这次实验不仅提高了我们对交通灯的认识,还锻炼了我们的动手能力和创新思维。
在今后的学习和工作中,我们将继续学以致用,将所学的知识应用到实际问题中。
让我们共同努力,为交通安全做出贡献。