㈠ 8051单片机,用P0口控制8个LED实现循环彩灯.循环显示规律为:全亮,全灭,依次点亮全灭。 间隔时间1秒。
#include<reg51.h>
#define uchar unsigned char
uchar times,cnt;
uchar led[]={0x00,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff};
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
times++;
if(times>=40)
{
times=0;
P0=led[cnt];
cnt++;
cnt%=11;
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
//程序很简单,你自己加注释和完成其他工作吧。
㈡ 用89S52单片机构件建一个彩灯控制系统,系统用P1口外接8个发光二极管。
用89S52单旦运片机构件建一个彩灯控制系统,系统用P1口外接8个发光二极管,没有键按下时,8支彩灯每隔0.5s全亮全灭一次。
按K1时,8支彩灯从左至右循环点亮。
按K2时,8支彩灯从右至左循环点亮。
按K3时,8支彩灯先右循环点亮后左循环点亮。
同时按下K1和K2时塌塌,8支彩灯从中间向外循环点亮。
同时按下K2和K3时,8支彩灯从两端向内循环点亮。
同时按下K1和K3时,8支彩灯从左到右依次点亮后从右到左依次熄灭,反复循环。
同时按模衫梁下三个键时,0、2、4、6、1、3、5、7循环点亮。
㈢ 用单片机设计彩灯控制器设计
8路彩灯也可以呀电路图很简单照课本抄
程序如下
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV TMOD,#21H;设定T0为16位定时模式T1为8位自动重装计数模式
SETB TR0;开定时器
SETB TR1
MOV R7,#4;设置N路彩灯这里设置为4路
MOV R6,#4
MOV R5,#4
MOV A,#00H
LOOP:
MOV P1,A;从做到右逐次点亮
RL A
INC A
ACALL MAIN0;调用延时
DJNZ R7,LOOP
MAIN1:MOV A,#0FFH
MOV P1,A
RR A
SUBB A,#08H;各路彩灯在这里设置立即数不同
ACALL MAIN0
DJNZ R6,MAIN1
MAIN2:MOV A,#00H
MOV P1,A
CPL A
ACALL MAIN0
DJNZ R5,MAIN2
LJMP MAIN
MAIN0:MOV DPTR,#15536;设定T0定时50ms的初值
MOV TL0,DPL
MOV TH0,DPH
MOV TL1,#236;设定t1计数20次即20*50ms=1s
MOV TH1,#236
JNB TF0,$;?0ms未到等待
CLR TF0;?0ms到清除标志位
CPL P3.5
JNB TF1,MAIN0;20次未到继续计数
CLR TF1
RET
这个写的急没调试如果不可以下面的顺序要自己调也就是先闪烁再逐个点亮熄灭延时都是一秒……
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV P1,#0FFH
MOV A,#0FFH
MOV R4,#8
MOV R3,#9
MAIN1:
CPL A
MOV P1,A
LCALL AA
DJNZ R4,MAIN1
MAIN2:
RL A
INC A
MOV P1,A
LCALL AA
DJNZ R3,MAIN2
MOV R3,#9
MAIN3:
RR A
MOV P1,A
DEC A
LCALL AA
DJNZ R3,MAIN3
LJMP MAIN
AA:
MOV R7,#2
AA1:MOV R6,#250
AA2:MOV R5,#250
AA3:
NOP
NOP
DJNZ R5,AA3
DJNZ R6,AA2
DJNZ R7,AA1
RET
㈣ 怎么设这单片机彩灯一个一个亮
应该是单片机最简单的应用这一段指令就可以实现八个灯的控制,四个亮四个
㈤ 基于51单片机16个彩灯从左到右再从右左循环闪烁的汇编程序
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int //16位
#define uchar unsigned char//8位
sbit led=P2^0;
sbit k0=P1^0;
sbit k1=P1^1;
void delay(uint z);
void youyi();
void zuoyi();
uchar i;
uchar temp1=0x01;//0000 0001
uchar temp2=0x80;//1000 0000
uchar flag0=0;
uchar flag1=0;
void main()
{
while(1)
{
if(k0==0)//左移
{
flag0=1;
}
if(k1==0)//右移
{
flag1=1;
}
if(flag0==1)
{
zuoyi();
temp2=0x80;
}
if(flag1==1)
{
youyi();
temp1=0x01;
}
}
}
void zuoyi()
{
for(i=0;i<7;i++)//i++ i=i+1
{
P2=temp1;
temp1=_crol_(temp1,1);//0000 0010
delay(500);
}
}
void youyi()
{
for(i=0;i<7;i++)//i++ i=i+1
{
P2=temp2;
temp2=_cror_(temp2,1);//1000 0000
delay(500);
}
}
void delay(uint z)
{
uint x , y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
㈥ 用51单片机写程序,4个按键灯控制8个彩灯切换九种灯光效果
P1口接8个LED灯,P3口接4个按键K1~K4,用于控制流水灯的四种效果,仿真图如下。