利用单片机控制3种颜色灯亮——简易的交通灯控制。

作者&投稿:蠹龙 (若有异议请与网页底部的电邮联系)
利用单片机的P1.0、P1.1、P1.2控制3个LED指示灯,模仿交通控制灯: 红灯亮5秒;黄灯亮~

还没见过这种交通灯的···如此奇葩···

参考:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/06021410473191cba6ef3faa.html

  #include <reg51.h>
  #include <intrins.h>
  sbit wei=P2^7;
  sbit duang=P2^6;
  char a,b,c,d,t0,dx,nb,flag,flag1;
  int t;
  unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,
  0x6D,0x7D,0x07,0x7F,0x6F};
  void delay()
  {
  int x=300;
  while(x--);
  }
  void init(void)
  {
  dx=20;
  nb=20;
  a=2;
  b=0;
  c=2;
  d=0;
  P1=0xee;
  EA=1;
  TMOD=0x01;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  ET0=1;
  TR0=1;
  }
  void time() interrupt 1
  {
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  t++;t0++;
  if(t0==20)
  {
  t0=0;
  dx--;nb--;
  a=nb/10;b=nb%10;
  c=dx/10;d=dx%10;
  if(nb==0&&flag!=1&&flag!=2){flag=1;nb=4;}
  if(dx==0&&flag1!=1&&flag1!=2){dx=20;flag1=1;}
  if(nb==0&&flag==1){nb=20;flag=2;}
  if(dx==0&&flag1==1){dx=4;flag1=2;}
  if(nb==0&&flag==2){nb=20;flag=0;}
  if(dx==0&&flag1==2){dx=20;flag1=0;}
  }
  if(t==400)P1=0xf3;
  if(t==410)P1=0xf7;
  if(t==420)P1=0xf3;
  if(t==430)P1=0xf7;
  if(t==440)P1=0xf3;
  if(t==450)P1=0xf7;
  if(t==460)P1=0xf3;
  if(t==470)P1=0xf7;
  if(t==480)P1=0xf5;
  if(t==800)P1=0xdd;
  if(t==810)P1=0xfd;
  if(t==820)P1=0xdd;
  if(t==830)P1=0xfd;
  if(t==840)P1=0xdd;
  if(t==850)P1=0xfd;
  if(t==860)P1=0xdd;
  if(t==870)P1=0xfd;
  if(t==880){P1=0xee;t=0;}
  }
  void display(char a,char b,char c,char d)
  {
  wei=1;
  P0=0xfe;
  wei=0;
  P0=0xff;
  duang=1;
  P0=table[a];
  duang=0;
  P0=0xff;
  delay();

  wei=1;
  P0=0xfd;
  wei=0;
  P0=0xff;
  duang=1;
  P0=table[b];
  duang=0;
  P0=0xff;
  delay();

  wei=1;
  P0=0xfb;
  wei=0;
  P0=0xff;
  duang=1;
  P0=table[c];
  duang=0;
  P0=0xff;
  delay();

  wei=1;
  P0=0xf7;
  wei=0;
  P0=0xff;
  duang=1;
  P0=table[d];
  duang=0;
  P0=0xff;
  delay();
  }
  void main()
  {
  init();
  while(1)
  {
  display(a,b,c,d);
  }

  }
  这个灯和时间的显示是同步的,因为我是刚学单片机的,可能编得不是很好,因为今晚的网络原因,我上传不了图给你了,如果你要图的,可以到单片机群55932363里找我要,一起学习

http://zhidao.baidu.com/question/147284157.html

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

bit red,green,yellow,turnred;//定义红绿黄灯标志位

code unsigned char tab[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共阴数码管 0-9

unsigned char Dis_Shiwei;//定义十位
unsigned char Dis_Gewei; //定义个位
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void delay(unsigned int cnt)
{
while(--cnt);
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{
TMOD |=0x01;//定时器设置 10ms in 12M crystal
TH0=0xd8;
TL0=0xf0;
IE= 0x82; //打开中断
TR0=1;

P1=0xfc; //红灯亮
red =1;
while(1)
{
P0=Dis_Shiwei;//显示十位
P2=0;
delay(300); //短暂延时
P0=Dis_Gewei; //显示个位
P2=1;
delay(300);
}

}
/******************************************************************/
/* 定时器中断函数 */
/******************************************************************/
void tim(void) interrupt 1 using 1
{
static unsigned char second=60,count; //初值99

TH0=0xd8;//重新赋值
TL0=0xf0;
count++;
if (count==100)
{
count=0;
second--;//秒减1
if(second==0)
{ //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序
if(red)
{
red=0;yellow=1;
second=5;
P1=0xF3;//黄灯亮5秒
}
else if(yellow && !turnred)
{
yellow=0;green=1;
second=50;
P1=0xCF;//绿灯亮50秒
}
else if(green)
{
yellow=1;green=0;
second=5;
P1=0xF3;//黄灯亮5秒
turnred=1;
}
else if(yellow && turnred)
{
red=1;yellow=0;
P1=0xFC;//红灯亮60秒
second=60;
turnred=0;
}

}
Dis_Shiwei=tab[second/10];//十位显示值处理
Dis_Gewei=tab[second%10]; //个位显示处理

}
}

我博客上有,你可以去参考


利用单片机控制3种颜色灯亮——简易的交通灯控制。
include <reg51.h> include <intrins.h> sbit wei=P2^7;sbit duang=P2^6;char a,b,c,d,t0,dx,nb,flag,flag1;int t;unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};void delay(){ int x=300;while(x--);} void init(void){ dx=20;...

...在5V电压下怎样才能同时亮。我现在做了一个灯,是用单片机控制...
如果你P1口(P1.0~P1.7)IO分别控制4个红灯和4个绿灯,这样就行了,这属于单独控制 也可以将同样颜色的灯串联起来,单片机输出高电平或低电平,LED发光二极管一般需要1.7V左右的电压,到时候 你看串多少个灯合适

如何用单片机控制LED 想让LED发出不同颜色的光 怎么用单片机进行...
有些一种LED是把3个红、绿、蓝三色集成在一个LED中的,这样的LED有4个引脚,其中一个是是GND。只要通过单片机控制其它的3个脚 就能实现不同颜色的变化

单片机的引脚输出如何控制三色灯(红,黄,绿)的颜色?
三路PWM波,8位即可,调节红、绿、蓝3个LED的亮度,达到混色的不同。这里有一个颜色搭配比例的问题,最好的还是用软件先模拟搭配一下,找到需要颜色的3路LED的占空比。还有,请您对我的答案进行肯定。谢谢。

单片机控制LED灯变色
每种颜色独立控制。采用PWM驱动三色LED,PWM的占空比决定三色LED的亮度。分别调节三种颜色LED的亮度,实现总体色彩的变化。

单片机或者软件控制led变色灯变色
你看一下,是不是有很多的小格子。共有三种颜色的小格子。红和蓝亮的时候是紫。这样,在程序中设置几个变量。输出采用PWM的方式。分别控制三个二极管的亮度。并且是随时变化的。这样,就会产生混光的效果。从而产生很多的颜色。程序不好写。至少偶不太会写 嘿嘿嘿 ...

c51单片机c语言交通灯的程序
接下来,我将详细解释如何为C51单片机使用C语言编写交通灯控制程序。首先,我们需要了解C51单片机的基本结构和资源,包括其I\/O端口、定时器\/计数器等。通常,交通灯系统需要控制红、黄、绿三种颜色的灯的亮灭,每种颜色的灯对应一个I\/O端口。此外,我们还需要使用定时器来设置交通灯的切换时间。在编写...

如何使单片机机器人识别黑灰白三色?
1用光电探头,可自制,白光发光二级管和光电二极管组合,制作注意屏蔽外界光干扰,简单的方法是用黑色f5的热缩管把光电二极管塑封起来。2检测到的信号用运放放大,如lm324,单电源运放用起来很方便。注意要用多圈电位器设计阈值调节 3放大后的信号进行AD转换,用ADC0804就行,连接很简单,找技术手册一看就...

求单片机控制rgb灯颜色渐变的代码。控制一个灯就行。颜色要都包括。_百...
首先理解成你有三个颜色的LED各一个,红绿蓝,然后用三个IO口控制。第一:占空比,白话就是不停的开关开关(频率至少要达到60赫兹肉眼才不会觉得闪动),当开的时间长,关闭的是间短,则很亮,当开的时间短,关的时间长,则暗,关闭的时间就是占空比中的:占空。第二:颜色的混合,可以参考颜色...

用单片机采集颜色传感器采集到的RGB数值,再去控制三色灯发出相同颜色...
将采集得到的RGB数值转换为相应的PWM占空比信号。例如R=100,PWM周期是255,那么其占空比为100\/255,将该路PWM信号接到三色灯的R通道管脚即可。G、B同理。

叶县19460565062: 利用单片机控制3种颜色灯亮——简易的交通灯控制. -
紫谦痛克: #include <reg51.h>#include <intrins.h>sbit wei=P2^7;sbit duang=P2^6;char a,b,c,d,t0,dx,nb,flag,flag1;int t;unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};void delay(){int x=300;while(x--);}void init...

叶县19460565062: 如何控制单片机三色灯走向 -
紫谦痛克: 给个最简单的吧,例如是51单片机,接P0_0~P0_2,高电平驱动; P0 &= 0xf8; char i; void left(void) {if(i++<3)P0 |= (1<<i); } void left(void) {if(i++<3)P0 |= (1<<(3-i)); }

叶县19460565062: 单片机一个按键控制3个led灯,多种状态 -
紫谦痛克: #include <reg51.h>sbit key =P1^1; sbit led1=P1^2; sbit led2=P1^3; sbit led3=P1^4; bit key_flag; bit flag_500ms;void InitTimer0(void) {TMOD |= 0x01;TH0 = 0x3C;TL0 = 0x0B0;EA = 1;ET0 = 1;TR0 = 1; } unsigned char stat; void main(void) ...

叶县19460565062: 单片机控制LED灯变色 -
紫谦痛克: 每种颜色独立控制.采用PWM驱动三色LED,PWM的占空比决定三色LED的亮度.分别调节三种颜色LED的亮度,实现总体色彩的变化.

叶县19460565062: 单片机的引脚输出如何控制三色灯(红,黄,绿)的颜色? -
紫谦痛克: 三路PWM波,8位即可,调节红、绿、蓝3个LED的亮度,达到混色的不同. 这里有一个颜色搭配比例的问题,最好的还是用软件先模拟搭配一下,找到需要颜色的3路LED的占空比. 还有,请您对我的答案进行肯定.谢谢.

叶县19460565062: 单片机或者软件控制led变色灯变色 -
紫谦痛克: 变色LED.使用的是三种颜色的一体式的LED.也可以使用三只分离的LED组成.三种颜色分别是红、绿、蓝.这是光的三基色.三种光的亮度不同,综合发出的光的颜色就不同.彩色电视机就是这个原理的.不过,电视机的显像管是用荧光粉发的光.你看一下,是不是有很多的小格子.共有三种颜色的小格子. 红和蓝亮的时候是紫.这样,在程序中设置几个变量.输出采用PWM的方式.分别控制三个二极管的亮度.并且是随时变化的.这样,就会产生混光的效果.从而产生很多的颜色.程序不好写.至少偶不太会写 嘿嘿嘿

叶县19460565062: 请问大神,我刚学单片机,我想用一个三色的LED灯,连接单片机,让它随机显示颜色,这个应该怎么做?. -
紫谦痛克: 你用PWM来改变每个颜色的占空比就可以了,其实也就是控制每个引脚输出高电平还是低电平的比例.

叶县19460565062: 51单片机控制变色发光二极管 -
紫谦痛克: 你要发出不同颜色的光,不同亮度的光,则必须使得三种颜色的灯的电流必须是可连续变化(即亮度可连续变化),三种颜色的亮度不同而进行不同的组合(红+绿+蓝)就可变成不同颜色、不同亮度的光.举例:1、假设把电流分为256级(8位...

叶县19460565062: 急!单片机如何驱动RGB三色LED灯来合成各种颜色的?通过PWM脉宽调制,还是通过驱动芯片来实现? -
紫谦痛克: 驱动芯片也是通过调节三色灯的PWM脉宽进而调节每个LED灯的亮度

叶县19460565062: 如何用单片机LED发出不同颜色的光? -
紫谦痛克: (1)使用SET电阻,在LED驱动控制IC引脚RSET两端并联不同的转换电阻,使用一个直流电压设置LED驱动控制IC引脚RSET的电流,从而改变LED的正向工作电流,达到调节ALED发光亮度的目的.(2)采用PWM技术,利用PWM控制信号,通过...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网