单片机C语言红绿灯

合集下载

红绿灯C语言程序

红绿灯C语言程序

红绿灯C语言程序(P0口接数码管,平口接发光二极管)#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar i=0,c=0,s=1;//m_flag=1;////////////////////////////////////////void dxlv1_nbh1(void) //{P1=0x5a;}void dx0_nbh1(void) //{P1=0x0a;}void dxh1_nbl1(void) //{P1=0xa5;}void dxh1_nb0(void) //{P1=0xa0;}void nbs(void) // 南北灯闪{if(m_flag==1){dxh1_nb0();}else {dxh1_nbl1();}}void dxs(void){ // 东西灯闪if(m_flag==1){dx0_nbh1();}else {dxlv1_nbh1();}}//////主程序//////////////////void main(){TMOD=0x01;//定时器0工作在方式1TH0=-5000/256;//50msTL0=-5000%256;//20msIE=0x82;///允许定时器0中断TR0=1;///启动定时器0while(1){//0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6fif(s==10){P0=0x3f;} // 东西绿灯亮,南北红灯亮倒计时开始if(s==9)P0=0x06;if(s==8)P0=0x5b;if(s==7)P0=0x4f;if(s==6)P0=0x66;if(s==5)P0=0x6d;if(s==4)P0=0x7d;if(s==3)P0=0x07;if(s==2)P0=0x7f;if(s==1){P0=0x6f;P1=0x5a;}if(s>9&&s<13){dxs();} //10秒结束南北红灯继续,东西绿灯一秒一闪闪三次if(s==13){dxh1_nbl1(); P0=0x6f; }//东西红灯亮,南北绿灯亮倒计时开始if(s==22){P0=0x3f;}if(s==21)P0=0x06;if(s==20)P0=0x5b;if(s==19)P0=0x4f;if(s==18)P0=0x66;if(s==17)P0=0x6d;if(s==16)P0=0x7d;if(s==15)P0=0x07;if(s==14)P0=0x7f;if(s>21&&s<25){nbs();} //10秒结束东西向红灯亮继续,南北绿灯一秒一闪三次if(s==25){s=1; }// s归位}}/////T0中断子程序////////////void T0_INT()interrupt 1{TH0=-50000/256;//50msTL0=-50000%256;if(c==10)m_flag=0;c++;if(c==20)//50ms*20=1s{m_flag=1;c=0;s++;//s清零}}。

红绿灯C语言程序

红绿灯C语言程序

红绿灯C语言程序(P0口接数码管,平口接发光二极管)#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar i=0,c=0,s=1;//m_flag=1;////////////////////////////////////////void dxlv1_nbh1(void) //{P1=0x5a;}void dx0_nbh1(void) //{P1=0x0a;}void dxh1_nbl1(void) //{P1=0xa5;}void dxh1_nb0(void) //{P1=0xa0;}void nbs(void) // 南北灯闪{if(m_flag==1){dxh1_nb0();}else {dxh1_nbl1();}}void dxs(void){ // 东西灯闪if(m_flag==1){dx0_nbh1();}else {dxlv1_nbh1();}}//////主程序//////////////////void main(){TMOD=0x01;//定时器0工作在方式1TH0=-5000/256;//50msTL0=-5000%256;//20msIE=0x82;///允许定时器0中断TR0=1;///启动定时器0while(1){//0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6fif(s==10){P0=0x3f;} // 东西绿灯亮,南北红灯亮倒计时开始if(s==9)P0=0x06;if(s==8)P0=0x5b;if(s==7)P0=0x4f;if(s==6)P0=0x66;if(s==5)P0=0x6d;if(s==4)P0=0x7d;if(s==3)P0=0x07;if(s==2)P0=0x7f;if(s==1){P0=0x6f;P1=0x5a;}if(s>9&&s<13){dxs();} //10秒结束南北红灯继续,东西绿灯一秒一闪闪三次if(s==13){dxh1_nbl1(); P0=0x6f; }//东西红灯亮,南北绿灯亮倒计时开始if(s==22){P0=0x3f;}if(s==21)P0=0x06;if(s==20)P0=0x5b;if(s==19)P0=0x4f;if(s==18)P0=0x66;if(s==17)P0=0x6d;if(s==16)P0=0x7d;if(s==15)P0=0x07;if(s==14)P0=0x7f;if(s>21&&s<25){nbs();} //10秒结束东西向红灯亮继续,南北绿灯一秒一闪三次if(s==25){s=1; }// s归位}}/////T0中断子程序////////////void T0_INT()interrupt 1{TH0=-50000/256;//50msTL0=-50000%256;if(c==10)m_flag=0;c++;if(c==20)//50ms*20=1s{m_flag=1;c=0;s++;//s清零}}。

单片机红绿灯

单片机红绿灯

P1^2 南北绿灯P1^5 东西红灯P1^3 南北黄灯P1^6 东西绿灯P1^4 南北红灯P1^7 东西黄灯P3^2 外部中断#include <AT89X52.H>#include "LCD.h"#define N_GREEN P1_2 //定义南北交通灯接口#define N_YELLOW P1_3#define N_RED P1_4#define E_GREEN P1_6 //定义东西交通灯接口#define E_YELLOW P1_7#define E_RED P1_5#define count_M1 50000 //T0的计数值,晶振为12MHZ时0.05s,晶振为24MHZ时0.025s#define TH_M0 (65536-count_M1)/256 //T0计数值高八位,方式1#define TL_M0 (65536-count_M1)%256 //T0计数值低八位,方式1char count_T0=0; //定时器中断的次数char flag=0; //交通灯转化标志位,满2秒T0中断标志位char inter_flag=0; //外部中断标志,0表示中断次数为偶次,1表示中断次数为奇次unsigned int up=1500; //左轮运动参数变量unsigned int down=1500; //右轮运动参数变量unsigned int pulse=1; //增量/*************定时器0初始化**************/void init_time0(void){TMOD|=0X01; //定时器0,模式1;IE|=0X82; //定时器0允许;TH0=TH_M0; //定时器0高八位初始值TL0=TL_M0; //定时器0低八位初始值}/*************外部中断0初始化***********/void init_INT0(void){TCON|=0X01; //设置外部中断0为下降沿引起IE|=0X81; //外部中断0允许}/*************定时器0中断程序***********/void inter_time0_2s(void) interrupt 1{TH0=TH_M0;TL0=TL_M0;if(++count_T0==120) {count_T0=0;flag=1; //交通灯转换标志位,满2秒标志位}}/**********加速运动*************/void speed_up(void){up=up+pulse;if(up>=1700){up=1700;}down=down-pulse;if(down<=1300){down=1300;}P1_1=1;delay_nus(up);P1_1=0;P1_0=1;delay_nus(down);P1_0=0;delay_nms(20);}/**********减速运动*************/void speed_down(void){up=up-4*pulse;if(up<=1500) //限定左轮运动参数大于1500{up=1500;}down=down+4*pulse;if(down>=1500) //限定右轮运动参数小于1500{down=1500;}P1_1=1;delay_nus(up);P1_1=0;P1_0=1;delay_nus(down);P1_0=0;delay_nms(20);}/************南北绿灯,东西红灯********/void GREEN(void){char num;num=0;Write_Command_LCM(0x01); //清屏while(num<2) //定时0~4秒时{if(inter_flag) //外部中断0动作,跳出子函数{return ;}speed_up(); //机器人加速运动子函数Display_List_Char(0, 0,"green "); //LCD显示Display_List_Char(1, 0,"up ");if(flag==1){num++;flag=0;}N_GREEN=0; //南北绿灯亮E_RED=0; //东西红灯亮}N_GREEN=1; //南北绿灯熄灭// E_RED=1; //东西红灯熄灭,}/************南北黄灯*******************/void YELLOW(void){Write_Command_LCM(0x01); //清屏while(!flag) //定时满2秒,跳出循环{if(inter_flag) //外部中断0动作,跳出子函数{return ;}speed_down(); //机器人减速子函数Display_List_Char(0, 0,"yellow"); //LCD显示Display_List_Char(1, 0,"down ");N_YELLOW=0; //南北黄灯闪烁亮delay_nms(20);N_YELLOW=1;delay_nms(20);E_RED=0; //东西红灯亮}flag=0;N_YELLOW=1; //南北黄灯熄灭E_RED=1; //东西红灯熄灭}/***********南北红灯*******************/void RED(void){char num;num=0;up=1500;down=1500;Write_Command_LCM(0x01); //清屏while(num<3){if(inter_flag) //外部中断0动作,跳出子函数{E_GREEN=1;N_RED=1;return ;}Display_List_Char(0, 0,"red"); //LCD显示Display_List_Char(1, 0,"stop");if(num<2) //定时0~4秒时。

单片机实现红绿灯控制

单片机实现红绿灯控制

单片机实现红绿灯控制概述:红绿灯是城市交通管理中非常重要的设备之一,它通过不同颜色的信号指示交通参与者何时停车和何时通行。

在传统的红绿灯控制中,通常使用机械定时器来控制交通信号的转换。

而现代交通系统中,单片机已经成为了控制红绿灯的主要方法之一,它可以通过程序灵活地控制交通信号的转换,实现更加精确、方便和智能的交通管理。

基本原理:单片机实现红绿灯控制的基本原理是通过控制红绿灯的电源开关来实现信号的转换。

该电源开关可以由单片机的输出引脚触发,从而通过控制电路来控制红绿灯的亮灭状态。

在控制红绿灯的周期中,单片机首先将红灯点亮一段时间,然后再将黄灯点亮一段时间,最后再将绿灯点亮一段时间。

这个周期会不断地循环,以实现红绿灯信号的不断转换。

具体实现:1.硬件连接:首先要将单片机与红绿灯的控制电路连接起来。

可以使用继电器或者晶体管等组件来控制红绿灯的电源开关。

通过控制这些电器元件的通断状态,可以实现红绿灯信号的转换。

2.程序设计:编写程序来实现红绿灯的控制逻辑。

需要设置好红绿灯的亮灭时间和切换周期。

程序中通过控制单片机的输出引脚的高低电位来控制电器元件的通断状态,从而实现红绿灯信号的转换。

案例分析:以8051单片机为例,实现一个红绿灯交替闪烁的控制系统。

以下是一个基本的程序框架:```#include <reg52.h>#define RED_LED P1#define GREEN_LED P2void delay(int ms)int i, j;for (i = 0; i < ms; i ++)for (j = 0; j < 123; j ++); void mainwhile (1)RED_LED=0;//红灯亮GREEN_LED=1;//绿灯灭delay(1000); // 延时1秒RED_LED=1;//红灯灭GREEN_LED=0;//绿灯亮delay(1000); // 延时1秒}```以上是一个简单的红绿灯控制程序,通过循环不断地点亮和熄灭红、绿灯,以实现红绿灯的闪烁效果。

单片机c语言程序设计---C51-交通灯实验报告

单片机c语言程序设计---C51-交通灯实验报告

单片机c语言程序设计---C51-交通灯实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称: C51-交通灯实验一、实验目的和要求1.熟悉单片机的硬件结构及其工作原理2.掌握单片机的C51编程二、实验内容和原理(1)硬件设计使用P1端口连接VD1、VD2、VD3,模拟路口东面的红、黄、绿灯;P0端口连接VD9、VD10、VD11,模拟路口西面的红、黄、绿灯;P3端口连接VD17、VD18、VD19,模拟路口南面的红、黄、绿灯;P2端口连接VD25、VD26、VD27,模拟路口北面的红、黄、绿灯。

路口红绿灯的显示规律为:①南面和北面显示红灯(即VD17和VD25为红灯)时,东面和西面显示绿灯(即VD3和VD11为绿灯)。

②南面和北面,东面和西面都变成黄灯。

③南面和北面显示绿灯,东面和西面显示红灯④南面和北面,东面和西面都变成黄灯,然后再从①进行循环(需注意:此处设置的黄灯显示时长应短于红灯或绿灯的显示时长)(2)protues仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

三、主要仪器设备四、操作方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。

2.在keil上进行编译后生成“xxx.hex”文件。

3.编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

五、实验结果与分析void S_N(void){VD1=0;VD9=0;VD19=0;VD27=0;Delay(1000);VD1=1;VD9=1;VD19=1;VD27=1;}int main (void) {while(1){E_W();NOT();S_N();NOT();}}六、讨论和心得。

单片机C语言红绿灯

单片机C语言红绿灯

摘要我所做的就是在一个51单片机开发板上模拟出一个简易的十字路口的交通灯,包含了时间,红灯,黄灯,绿灯等信息。

What I did was (to) on a 51 MCU development board to simulate a simple traffic lights at an intersection, contains the time, the red light, yellow light, green light and other information.关键词定时器中断的用法编程的逻辑位选控制段码控制目录摘要 (1)关键词 (1)正文: (3)1.功能 (3)2.硬件电路 (3)3.软件编写 (5)4.结论 (8)5.对课程建议 (9)正文1.功能交通灯通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。

绿灯亮时,准许车辆通行,黄灯亮时,已越过停止线的车辆可以继续通行;红灯亮时,禁止车辆通行。

2.硬件电路3.软件编写4.结论本系统就是利用了AT90C51芯片的I/O引脚。

系统采用美国ATMEL公司生产的单片机AT90C51,以及其它芯片(如:74HC164、74LS04六位反向器、L7805三端稳压电源)来设计交通灯控制器,实现了红灯亮40秒,绿灯亮20秒,黄灯亮3秒。

并通过AT90C51来控制74LS04芯片的输出口设置红、绿灯燃亮的功能和控制74HC164来实现在七段数码管上的时间显示;为了系统稳定可靠系统内集成了“看门狗”芯片,避免了系统因为死机而停止工作的情况发生。

系统设计简便、实用性强、操作简单、程序设计简便。

系统不足:只有横纵双向,没有转向灯。

还没有充分考虑的把现代管理、人工智能运用到交通的控制中,来计算交通控制点之间的距离,来更合理的安排红、绿灯的持续时间,使城市的交通管理更加人性化。

使人们远离目前的交通拥塞的现象。

5.对课程建议感谢老师对我们的教导,希望老师能够讲得生动一点,最好再带有实物的讲解,以便我们更能直观的了解。

单片机控制交通灯

单片机控制交通灯

单片机控制交通灯标题:单片机控制交通灯交通信号灯作为城市交通管理的重要组成部分,通过控制红绿灯的变化来引导车辆和行人的通行,起到维护交通秩序、提高交通效率的作用。

在现代城市中,越来越多的交通信号灯采用了单片机技术来进行控制,本文将介绍单片机控制交通灯的原理和实现方法。

一、交通灯控制原理交通信号灯一般采用红、黄、绿三种颜色,分别表示停止、警告和通行。

在单片机控制下,交通信号灯的控制可以通过三个IO口实现。

其中,一个IO口控制红灯,一个IO口控制黄灯,一个IO口控制绿灯。

通过控制这三个IO口的高低电平状态,可以实现交通灯的变化。

二、单片机控制交通灯的实现方法为了实现交通灯的自动切换,可以使用定时器中断和状态机两种方法。

1. 定时器中断方法定时器中断方法是通过设置一个定时器,在规定的时间间隔内触发中断,从而实现交通灯的切换。

具体实现步骤如下:(1)初始化定时器:设置定时器的工作模式和计数值,使其在固定时间内触发一次中断。

(2)设置中断优先级:为了确保定时器中断能够正常执行,需要设置中断优先级。

(3)编写中断服务函数:中断服务函数中通过改变IO口的电平状态,来控制交通灯的切换。

2. 状态机方法状态机方法是通过一个状态机来记录当前交通灯的状态,并根据一定的规则不断切换状态,实现交通灯的自动切换。

具体实现步骤如下:(1)定义状态枚举:定义一个枚举类型,用于表示交通灯的不同状态,例如红灯、黄灯、绿灯。

(2)初始化状态机:将状态机的初始状态设置为红灯。

(3)编写状态切换规则:根据交通灯的切换规则,编写代码来实现状态的切换。

(4)控制交通灯:根据状态机的当前状态,通过改变IO口的电平状态,来控制交通灯的切换。

三、单片机控制交通灯的优势相比传统的交通灯控制方法,单片机控制交通灯具有以下几个优势:1. 精确控制:单片机具有较高的计算精度和处理能力,可以精确控制交通灯的时间和变化方式。

2. 灵活性:通过编程修改程序和参数,可以很容易地调整交通灯的控制策略,适应不同的交通状况。

单片机控制的交通灯C语言编程

单片机控制的交通灯C语言编程

单片机控制的交通灯红灯停,绿灯行,黄灯闪烁提示行人红绿灯即将切换。

四个方向各有一个红、黄、绿显示和两个数码管。

东西道为人行道(20秒),南北道为车行道(60秒),黄灯延时最后三秒时,闪烁并切换。

三、硬件电路设计此电中路设计采用AT89C51单片机,74LS47(数码管驱动)74LS373(数码管驱动输出锁存),8个数码管显示其延时值,四个红、黄、绿指示灯。

硬件设计关键在于,延时显示时,要考虑到当个位数字显示时,要确保十位数字显示输出的不变。

因此,可加输出锁存器。

在延时最后三秒时,要让黄灯进行闪烁,并同时显示数字(这一步在软件设计上很关键)。

四、软件程序(C语言)以下是整个设计的软件程序,直接可以编译成*。

Hex代码。

通过以上电路,下载到单片机,可直接运行。

//*****************************////程序名:十字路口交通灯控制//编写人:黄庭剑//初写时间:2009年1月2日//程序功能:南北为车行道,延时60秒;东西方向为人行道,延时20秒,且在最后3秒黄灯显示2秒钟再实现切换.//CPU说明:AT89C51型单片机; 24MHZ晶体振荡器//完成时间:2009年1月6日//*****************************//#include<stdio.h>#include<reg51.h>#include<intrins.h>sfr p0 = 0x80;sfr p1 = 0x90;sfr p2 = 0xA0;sfr p3 = 0xb0; //这部分内容其实在“#include<reg51.h>”里已经有,但里面定义的必须区分大小写,在这里,因为我程序采用的是小写,reg51.h里对各个端口与寄存器的定义都是大写,所以在编译连接时,会报错,所以,在本设计程序里,我只用到了端口,在这里也就只定义了四个,而没有去改reg51.h里面的内容。

单片机红绿灯程序完整版2篇

单片机红绿灯程序完整版2篇

单片机红绿灯程序完整版2篇第一篇:单片机红绿灯程序完整版(上)单片机红绿灯是一个经典的实验案例,它展示了单片机在控制和管理车辆行驶过程中的应用。

通过编写程序,我们可以模拟交通信号灯的运行,实现流畅和安全的交通流。

在这篇文章中,我将详细介绍单片机红绿灯程序的完整版,并向读者提供逐步实现该程序的指南。

我将从前期准备开始,包括所需材料和工具的概述,然后进入程序编写和单片机烧录的具体步骤。

最后,我将展示运行红绿灯程序的效果。

首先,让我们看一下所需的材料和工具。

为了完成这个项目,你将需要一块单片机开发板(如Arduino Uno),几个LED灯(红色、黄色和绿色),杜邦线,以及一台电脑。

需要特别注意的是,开发板和电脑之间需要通过USB线连接,以便将程序烧录到开发板中。

在准备好所有材料后,我们可以开始编写红绿灯程序。

我们将使用C语言来编写程序,并使用Arduino IDE作为代码编辑器。

首先,打开IDE并创建一个新的工程。

然后在代码编辑窗口中输入相关代码。

程序的主要逻辑是模拟交通信号灯的运行。

我们将交替点亮红、黄、绿三个LED灯,并设置不同的时间间隔来模拟红绿灯的变化。

例如,可以将红灯亮5秒钟,黄灯亮2秒钟,绿灯亮5秒钟。

然后,程序将循环执行这个过程,以实现连续的红绿灯变化。

在编写完程序后,我们需要将其烧录到单片机开发板中。

首先,通过USB线将开发板与电脑连接。

然后,在IDE中选择正确的开发板和端口,并点击“上传”按钮。

IDE将自动编译和烧录程序到开发板中。

一旦程序烧录完成,我们可以断开USB线,将开发板连接到电源,然后观察红绿灯的变化。

通过实验,我们可以看到红绿灯不断地在变化。

这个程序模拟了真实的交通信号灯,给我们提供了一个清晰的视觉指示,用于控制和管理车辆的行驶过程。

这个实验不仅展示了单片机的应用能力,还培养了我们对交通规则和安全的意识。

在红色、黄色和绿色的灯光交替运行中,我们可以思考如何实现更多的功能和效果。

51单片机用C语言实现交通灯

51单片机用C语言实现交通灯

51单片机用C语言实现交通灯51 单片机用C 语言实现交通灯(红绿灯)源程序交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。

源程序如下:#include bit red,green,yellow,turnred; //定义红、黄、绿及转红标志code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管0- 9unsigned char Dis_Shiwei;//定义十位unsigned char Dis_Gewei; //定义个位void delay(unsigned int cnt) //用于动态扫描数码管的延时程序{while(--cnt);}main() {TMOD |=0x01;//定时器设置10ms in 12M crystal 定时器0,工作方式1,16 位定时器TH0=0xd8; //65535-10000=55535=D8F0(十六进制)TL0=0xf0;IE= 0x82; //中断控制,EA=1 开总中断,ET0=1:定时器0 中断允许TR0=1; //开定时器0中断P1=0xfc;//红灯亮,根据红黄绿接灯的顺序。

red =1;while(1) {P0=Dis_Shiwei;//显示十位,这里实现用8 位数码管,即左1 位P2=0;delay(300); //短暂延时P0=Dis_Gewei; //显示个位,左数,2 位P2=1;delay(300);}}void tim(void) interrupt 1 using 1{static unsigned char second=60,count; //初值60TH0=0xd8;//重新赋值,10 毫秒定时TL0=0xf0;count++;if (count==100) {count=0;second--;//秒减1if(second==0){ //这里添加定时到0 的代码,可以是灯电路,继电器吸合等,或者执行一个程序if(red) //红灭,先转黄{red=0;yellow=1;second=4;P1=0xF3;//黄灯亮4 秒,黄灯为过渡灯,再根据情况转绿或转红}else if(yellow && !turnred){yellow=0;green=1;second=25;P1=0xCF;// 绿灯亮25 秒,}else if(green){yellow=1;green=0;second=4;P1=0xF3;//黄灯亮4 秒turnred=1;}else if(yellow && turnred) //绿灯灭,转黄灯,后红灯,turnred=1 时{red=1;yellow=0;P1=0xFC;//红灯亮60 秒second=60;turnred=0; //接下来是转黄,绿。

用C语言控制灯的亮灭

用C语言控制灯的亮灭

硬件连接
将LED灯的正极连接到单片机的某个 GPIO口,负极接地。
根据单片机的电源和地线,给单片机 供电。
硬件初始化
打开电源,给单片机上电。
根据单片机的型号和开发环境,编写初始化代码,配置GPIO口为输出模 式。
通过烧录器将代码烧录到单片机中,或者通过串口等通信方式将代码上传 到单片机中。
02
如果LED灯不亮或常亮,可能是代码逻辑错误或硬件连接问题,需 要进一步排查。
LED灯闪烁异常
如果LED灯闪烁异常,可能是代码逻辑错误或微控制器响应超时, 需要检查代码和硬件连接。
05
总结与展望
项目总结
实现功能
通过C语言编程,成功实现了对灯的亮灭控制。程 序能够根据用户的输入指令,通过串口通信发送 相应指令给硬件设备,从而控制灯的开关状态。
代码实现
01 wiringPiSetup(); 02 // 设置控制灯的引脚为输出模式
03
pinMode(1, OUTPUT); // 假设使用引脚1控制灯
代码实现
01
// 控制灯的亮灭
02
digitalWrite(1, HIGH); // 打开灯
03
delay(1000); // 等待1秒(1000毫秒)
烧录程序
将可执行文件烧录到微控制器 中。
检查错误
如果LED灯没有按照预期亮灭, 检查代码中的逻辑错误和语法 错误,并修正。
测试环境
硬件环境
微控制器、LED灯、电源、杜邦线等。
软件环境
C编译器、烧录器、调试器等。
测试结果
LED灯按照预期亮灭
如果LED灯按照预期亮灭,说明代码逻辑正确,调试成功。
LED灯不亮或常亮

单片机红绿灯实训日记

单片机红绿灯实训日记

单片机红绿灯实训日记
XXXX年XX月XX日星期X 晴
实训目的:掌握单片机的应用,通过制作红绿灯模型,了解实际交通信号灯的工作原理和控制方式。

实训器材:单片机开发板、LED灯(红、绿、黄各一个)、杜邦线若干、面包板、电脑及编程软件。

实验步骤:
搭建硬件电路:将LED灯分别接到单片机开发板的对应引脚上,使用杜邦线连接电源。

编写程序:使用C语言编写程序,控制单片机输出高低电平,实现红绿灯的亮灭。

调试程序:将程序编译后下载到单片机开发板上,观察LED灯是否按照预期亮灭。

优化程序:根据实际情况调整程序,实现红绿灯的定时切换和倒计时功能。

记录与发现:在编写程序过程中,我发现通过调整延时函数的参数,可以改变红绿灯切换的时间间隔。

同时,使用定时器中断可以更加精确地控制时间。

实训心得:通过这次实训,我深入了解了单片机的应用和编程技巧。

在制作过程中,我不仅学会了如何搭建硬件电路,还掌握了LED灯的控制方法。

此外,这次实训也锻炼了我的逻辑思维和解决问题的能力。

在今后的学习和实践中,我将继续努力,提高自己的技能水平。

基于c语言单片机交通灯

基于c语言单片机交通灯

1设计课题设计要求及总体方案介绍1.1 设计课题任务设计一个具有特定功能的十字路口交通灯。

该交通灯上电或按键复位后能自动显示系统提示符“d.1004-16”,进入准备工作状态。

按开始键则开始工作,按结束键则返回“d.1004-16”状态。

1.2 功能要求说明要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车道,每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮3秒,并且1秒闪烁一次。

有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。

1.3 交通灯总体方案介绍及工作原理说明1.3.1 电源提供方案为使模块稳定工作,须有可靠电源,采用单片机控制模块提供电源。

此方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。

1.3.2 复位方案复位方式有两种:按键复位与软件复位。

由考虑到程序的简洁,避免冗长,本设计采用按键复位,在芯片的复位端口外接复位电路,通过按键对单片机输入一个高电平脉冲,达到复位的目的。

1.3.3 输入方案直接在IO口线上接上按键开关。

因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用2个按键,分别是K1、K2。

由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用1.3.4 显示界面方案该系统要求完成倒计时、状态灯等功能。

采用数码管与点阵LED (点阵式和8段式LED)相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。

这种方案既满足系统功能要求,又减少了系统实现的复杂度。

权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。

2交通灯硬件系统的设计2.1 交通灯硬件系统各模块功能简要介绍2.1.1 设计方框图图2-12.1.2 复位电路模块复位方式有多种,本设计采用按键复位,在设定的定时时间内,89S52必须在RST引脚产生一个由高到低的电平变化,以清内部定时器。

单片机-交通灯程序(C语言)

单片机-交通灯程序(C语言)

/****************************************************************************** ** 实验名: 动态显示数码管实验* 使用的IO :* 实验效果: 数码管显示76543210。

* 注意:当位选用P1口的时候注意可能会有一位不亮,那么调整J21******************************************************************************* /#include<reg51.h>//--定义使用的IO口--//#define GPIO_DIG P0#define GPIO_PLACE P1#define GPIO_TRAFFIC P2sbit RED10 = P2^0; //上人行道红灯sbit GREEN10 = P2^1; //上人行道绿灯sbit RED11 = P2^2;sbit YELLOW11= P2^3;sbit GREEN11 = P2^4;sbit RED00 = P3^0; //右人行道红灯sbit GREEN00 = P3^1; //右人行道绿灯sbit RED01 = P2^5;sbit YELLOW01= P2^6;sbit GREEN01 = P2^7;//--定义全局变量--//unsigned char code DIG_PLACE[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制查表的方法控制unsigned char code DIG_CODE[17] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char DisplayData[8];//用来存放要显示的8位数的值unsigned char Time, Second; //用来存放定时时间//--声明全局函数--//void DigDisplay(); //动态显示函数void Timer0Cofig(void);/****************************************************************************** ** 函数名: main* 函数功能: 主函数* 输入: 无* 输出: 无******************************************************************************* /void main(void){Second = 1;Timer0Cofig();while(1){if(Second == 70){Second = 1;}//--宝田路通行,30秒--//if(Second < 31){DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(30 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(30 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();//--宝田路通行--//GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭RED00 = 1;GREEN00 = 1;GREEN11 = 0; //宝田路绿灯亮GREEN10 = 0; //宝田路人行道绿灯亮RED01 = 0; //前进路红灯亮RED00 = 0; //前进路人行道红灯亮}//--黄灯等待切换状态,5秒--//else if(Second < 36){DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(35 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(35 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();//--黄灯阶段--//GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭RED00 = 1;GREEN00 = 1;YELLOW11 = 0; //宝田路黄灯亮RED10 = 0; //宝田路人行道红灯亮YELLOW01 = 0; //前进路红灯亮RED00 = 0; //前进路人行道红灯亮}//--前进路通行--//else if(Second < 66){DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(65 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(65 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();//--黄灯阶段--//GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭RED00 = 1;GREEN00 = 1;RED11 = 0; //宝田路红灯亮RED10 = 0; //宝田路人行道红灯亮GREEN01 = 0; //前进路绿灯亮GREEN00 = 0; //前进路人行道绿灯亮}//--黄灯等待切换状态,5秒--//else{DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(70 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(70 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();//--黄灯阶段--//GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭RED00 = 1;GREEN00 = 1;YELLOW11 = 0; //宝田路黄灯亮RED10 = 0; //宝田路人行道红灯亮YELLOW01 = 0; //前进路红灯亮RED00 = 0; //前进路人行道红灯亮}}}/****************************************************************************** ** 函数名: DigDisplay* 输入: 无* 输出: 无******************************************************************************* /void DigDisplay(){unsigned char i;unsigned int j;for(i=0; i<8; i++){GPIO_PLACE = DIG_PLACE[i]; //发送位选GPIO_DIG = DisplayData[i]; //发送段码j = 10; //扫描间隔时间设定while(j--);GPIO_DIG = 0x00; //消隐}}/****************************************************************************** ** 函数名: Timer0Cofig* 函数功能: 配置定时器* 输入: 无* 输出: 无******************************************************************************* /void Timer0Cofig(void){TMOD = 0x01; //定时器0选择工作方式1TH0 = 0x3C; //设置初始值,定时50MSTL0 = 0xB0;EA = 1; //打开总中断ET0 = 1; //打开定时器0中断TR0 = 1; //启动定时器0}/****************************************************************************** ** 函数名: Timer0* 输入: 无* 输出: 无******************************************************************************* /void Timer0() interrupt 1{TH0 = 0x3C; //设置初始值TL0 = 0xB0;Time++;if(Time == 20){Second ++;Time = 0;}}。

单片机C语言交通灯设计

单片机C语言交通灯设计

单片机C语言交通灯设计交通灯是城市中至关重要的设施之一,它可以引导车辆和行人的行为,并维持市民的出行秩序。

单片机C语言交通灯设计项目旨在使用C语言编程语言,通过单片机的控制,实现交通灯的开关并维护路面交通秩序。

本文将介绍单片机C语言交通灯设计的背景、基本原理以及设计过程。

一、背景随着城市化的快速发展,交通流量急剧增加,城市中交通拥堵、交通安全等问题越来越严重。

为了能够有效维护交通秩序,交通灯成为城市交通管理中必不可缺的部分。

为了更好地控制交通灯的开关,我们需要借助单片机这个高效的控制设备。

二、基本原理单片机指的是集成了中央处理器、存储器、输入输出端口、定时器/计数器、中断控制器等模块的芯片。

通过单片机的控制,可以对交通灯的开关进行精准控制,并实现不同路段之间的时序交替配合。

具体实现过程如下:1. 单片机需要连接交通灯的各个灯组,包括红灯、黄灯、绿灯等。

2. 设计好程序后,单片机开始运作,不断循环,按照预定的时间间隔实现各种信号灯的交替亮起。

3. 单片机可以根据交通灯的需求,设定不同的工作模式。

例如,可以在繁忙路段长亮绿灯,而在交通流量较少的路段则可以将绿灯调整为短亮,以节约能源。

4. 当有行人或车辆通过交通灯时,单片机可以自动检测,即时调整信号灯的亮灭状态,以避免事故发生。

三、设计过程实现单片机C语言交通灯设计,需要进行以下步骤:1. 确定交通灯需要工作的时间,例如绿灯需要亮的时间、红灯需要亮的时间等。

2. 编写程序,使用C语言完成程序设计。

可以通过调用预先定义好的控制函数,实现对单片机的控制。

3. 程序编写完成后,将程序通过编译器编译,并将二进制代码下载到单片机中,以实现程序运行。

4. 调试程序,确保程序可以正常运行,交通灯的不同信号灯可以按照预定时间间隔交替亮灭。

5. 根据实际情况进行程序优化,例如可以增加灯光亮度控制、检测模块和声音提示器等功能,以提高交通灯的安全性和可靠性。

四、总结在现代城市中,交通灯成为了城市交通管理不可或缺的部分。

基于单片机的交通灯设计c语言程序

基于单片机的交通灯设计c语言程序

基于单片机的交通灯设计c语言程序交通信号灯是城市交通中非常常见的设施之一,起到了引导和控制车辆、行人通行的重要作用。

基于单片机的交通信号灯设计是一个非常典型的实际应用案例,通过编写C语言程序,可以实现对交通信号灯状态的控制和调节。

首先,我们需要了解交通信号灯的基本原理和工作流程。

一般而言,交通信号灯包括红灯、黄灯和绿灯三种状态,分别对应停止、准备和通行的指示。

交通信号灯会按照一定的时间间隔,循环地在这三个状态之间切换,以控制车辆和行人的通行。

在基于单片机的交通信号灯设计中,我们可以借助定时器和IO口来实现状态的切换和指示灯的亮灭。

下面是一个简单的C语言程序示例:```c#include <reg52.h>sbit red = P1^0; //红灯控制引脚sbit yellow = P1^1; //黄灯控制引脚sbit green = P1^2; //绿灯控制引脚void delay(unsigned int xms) //延时函数{unsigned int i, j;for(i=xms; i>0; i--){for(j=110; j>0; j--);}}void main(){while(1){red = 1; //红灯亮yellow = 0; //黄灯灭green = 0; //绿灯灭delay(3000); //延时3秒red = 0; //红灯灭yellow = 1; //黄灯亮green = 0; //绿灯灭delay(2000); //延时2秒red = 0; //红灯灭yellow = 0; //黄灯灭green = 1; //绿灯亮delay(5000); //延时5秒}}```上述程序通过P1口的不同引脚控制红灯、黄灯和绿灯的亮灭。

通过循环的方式,定时器每隔一段时间就切换交通信号灯的状态,从而实现交通信号灯的正常工作。

这只是一个简单的交通信号灯设计示例,实际的交通信号灯设计还可能涉及到更多的状态和控制逻辑。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要
我所做的就是在一个51单片机开发板上模拟出一个简易的十字路口的交通灯,包含了时间,红灯,黄灯,绿灯等信息。

What I did was (to) on a 51 MCU development board to simulate a simple traffic lights at an intersection, contains the time, the red light, yellow light, green light and other information.
关键词
定时器中断的用法编程的逻辑位选控制段码控制
目录
摘要 (1)
关键词 (1)
正文: (3)
1.功能 (3)
2.硬件电路 (3)
3.软件编写 (5)
4.结论 (8)
5.对课程建议 (9)
正文
1.功能
交通灯通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。

绿灯亮时,准许车辆通行,黄灯亮时,已越过停止线的车辆可以继续通行;红灯亮时,禁止车辆通行。

2.硬件电路
3.软件编写
4.结论
本系统就是利用了AT90C51芯片的I/O引脚。

系统采用美国ATMEL公司生产的单片机AT90C51,以及其它芯片(如:74HC164、74LS04六位反向器、L7805三端稳压电源)来设计交通灯控制器,实现了红灯亮40秒,绿灯亮20秒,黄灯亮3秒。

并通过AT90C51来控制74LS04芯片的输出口设置红、绿灯燃亮的功能和控制74HC164来实现在七段数码管上的时间显示;为了系统稳定可靠系统内集成了“看门狗”芯片,避免了系统因为死机而停止工作的情况发生。

系统设计简便、实用性强、操作简单、程序设计简便。

系统不足:只有横纵双向,没有转向灯。

还没有充分考虑的把现代管理、人工智能运用到交通的控制中,来计算交通控制点之间的距离,来更合理的安排红、绿灯的持续时间,使城市的交通管理更加人性化。

使人们远离目前的交通拥塞的现象。

5.对课程建议
感谢老师对我们的教导,希望老师能够讲得生动一点,最好再带有实物的讲解,以便我们更能直观的了解。

参考文献
《51单片机工程师是怎样炼成的——基于C语言+Proteus仿真》——电子工业出版社
《新概念51单片机C语言教程——入门、提高、开发、拓展全攻略》——电子工业出版社。

相关文档
最新文档