利用单片机控制3种颜色灯亮——简易的交通灯控制。
还没见过这种交通灯的···如此奇葩···
参考:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/06021410473191cba6ef3faa.html
#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同理。
紫谦痛克: #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控制信号,通过...