导航:首页 > 操作系统 > 带8位单片机的应急灯电路

带8位单片机的应急灯电路

发布时间:2023-01-16 16:02:21

① 8pin的应急灯用的单片机

如果是单片机的话那么PIC12F675和你描述的很像,这是一块拥有10位分辨率AD转换和128字节EEPROM的1KFlash8bITMCU,

各引脚功能见下图:

② 利用单片机控制8个发光二极管,设计8个灯同时闪烁的控制程序

方法:
1:设定一个变量i,可以从0到3循环的变化
2:检测一个经过消抖处理的按键,按一下,i+1
3:当i值为各个值时,执行相应的花样。
流水灯参考程序
#include
#include
#define uchar unsigned char
uchar j,temp;
void delay(unsigned int ms)
{
uchar t;
while(ms--)
for(t=0;t<123;t++);
}
void main()
{
P1=0xff;
delay(500);
temp=0xfe; //有点怪,led接在P2.3~P2.6
for(j=0;j<4;j++)
{
P1=temp;
delay(500);
temp=_crol_(temp,1);
}
P1=0xff;
while(1);
}

③ 怎么利用单片机控制八个led灯

1:首先设定一个变量i,可以是从0到3循环的变化,

2:再检测一个经过消抖处理的按键,按一下,即i+1

3:当i值为各个值时,执行相应的变换花样。

流水灯参考程序

#include

#include

#define uchar unsigned char

uchar j,tmp;

void deay(unsigned int ms)

{

uchar t;

while(ms--)

for(t=0;t<12;t++);

}

void main()

{

P1=0xff;

delay(50);

temp=0xfe; //(led接在P2.3~P2.6)

for(j=0;j<4;j++)

{

P1=temp;

delay(50);

temp=_crol_(tmp,1);

}

P1=0xff;

while(1);

}

④ 单片机 8个LED灯随机闪烁怎么做

1、首先在电脑中新建项目:Keil uVision4 51单片机LED闪烁编程,如下图所示。

⑤ 单片机AT89C51,八个按键控制八个LED灯.求电路图和C程序!急急急急!在线等!!!!!

电路(图)不合适
1、P0口应该用于输出,你可以接LED,且负极接管脚,正极接VCC.
2、按键任意接P1~P3
仅告诉这些!!

⑥ 单片机的8位流水灯的问题,

哥们。你知道0xfe代表什么意思吗?51单片机的P1口有8个端口。0xfe表示最后一位为低电平也就是11111110.小灯当然会亮。然后a变量左移一位就是11111101,表示第二个灯亮其他灭。以此类推,不就是流水灯吗?还有,你的蜂鸣器和灯设置延迟50毫秒?那就相当于一直在响一直再亮。多延迟一会

⑦ 单片机八个流水灯左右依次点亮

首先,打开proteus,可以看到界面上方有"库",点开,在库里选择做实验需要的元件。

如图所示,我们做流水灯实验所需要的元件,就是红色方框里面的元件,一定都要添加进来,要不然实验就做不成功。

接着,我们按照电路原理图,排布好元件,连好线,最后的电路如图所示。

我们把实验代码插入单片机,然后点击界面左下角的开始按钮,就可以运行电路。

如图所示,八个流水灯依次点亮。

⑧ 要求用51单片机控制8个LED亮灭的原理图+程序+解说

本来以为这个程序很简单的,没想到写了快三个小时。哎学艺不精啊。贴出来给你研究吧。我不想做过多的解释了,我是按我理解的你出的题目做的,可能和你的本意不是很一样,
1、依次亮,依次灭:从一个灯亮到全亮,再到全灭,每次改变一个灯亮灭
2、奇偶号灯间隔亮灭:隔一个灯亮一个灯亮灯时间为1s,没有灯全灭的时候
3、依次闪烁、切换时间为3秒,闪烁时间为2秒,我理解的是,没三秒钟有一个灯在闪烁,其中有一秒钟是灭灯状态
程序中使用了P1口与8个发光二极管相连,具体电路图你网络一下吧,还有使用了一个按键,该按键与P3.7相连,低电平为按下状态。
程序如下:
#include <reg52.h>
#include <intrins.h>

/*变量声明:
i、j、k都是记录计时器溢出次数的变量,
stat是记录当前显示状态的变量,由按键key控制
temp是状态2中保护P1口状态的变量*/

unsigned char i=0,j=0,k=0,stat=0,temp;
bit flag=1; //状态1处于灭灯还是亮灯状态的变量,1为依次亮灯,0为依次亮灯
sbit key=P3^7; //按键控制
void init(); //初始化函数
void delay(unsigned int N); //延时函数
void keyscan(); //键盘扫描函数

void main()
{
init();

while (1)
{
switch (stat)
{
case 0: //0方案
if(i==20&&flag)
{
i=0;
P1=P1<<1; //依次亮灯
temp=P1;
if(temp==0)
{
flag=0;
}
}
if(i==20&&!flag)
{
i=0;
if(P1==0xff)
{
flag=1;
P1=0xfe;
}
if(!flag)
{
P1=P1<<1; //依次灭灯
temp=P1;

P1=temp+1;
}

}
break;
case 1: //2方案
if(i==20)
{
i=0;
P1=~P1; //去反后亮灯状态为灭灯,P1初值取0x55或0xaa,奇偶交替亮灯
}
break;
case 2: //3方案
if(j==60)
{
P1=temp;
P1=_crol_(P1,1);
temp=P1; //保护P1口亮灯状态
k=0;
j=0;
}

//闪烁部分,应该可以优化
if(k<5)
{
P1=0xff;
}
else if(k>=5&&k<10)
{
P1=temp;
}
else if(k>=10&&k<15)
{
P1=0xff;
}
else if(k>=15&&k<20)
{
P1=temp;
}
else if(k>=20&&k<25)
{
P1=0xff;
}
else if(k>=30&&k<35)
{
P1=temp;
}
else if(k>=35&&k<40)
{
P1=0xff;
}
//-----------------------------------
break;
}
keyscan();
}
}

void init()
{
TH0=0x3c; //定时器赋初值定时时间50ms
TL0=0xB0;
TMOD=0x01; //设置定时器工作方式为方式1
EA=1; //开总中断
ET0=1; //开中断允许位
TR0=1; //定时器计数

P1=0xfe; //这里假设led灯与P1口相连并且
//低电平有效

}
void delay(unsigned int N)
{
int i,j;
for (i=0;i<N;i++);
for (j=0;j<110;j++);
}
void keyscan()
{
if(!key)
{
delay(10); //消抖
if(!key); //确认有键按下
stat++;
if(stat==3)
{
stat=0;
}

//右键按下复位
i=0;
j=0;
k=0;
TH0=0x3c;
TL0=0xB0;
switch (stat)
{
case 0:
P1=0xfe;
flag=1;
stat=0;
break;
case 1:
P1=0x55;
break;
case 2:
P1=0xfe;
temp=P1;
break;
}
//-----------------------------------
while(!key) //此循环中的函数和主函数中的显示函数是同一个
//用于长按键的显示,可以去掉,去掉长按键不会正常显示,松开按键后正常
{
switch (stat)
{
case 0:
if(i==20&&flag)
{
i=0;
P1=P1<<1;
temp=P1;
if(temp==0)
{
flag=0;
}
}
if(i==20&&!flag)
{
i=0;
if(P1==0xff)
{
flag=1;
P1=0xfe;
}
if(!flag)
{
P1=P1<<1;
temp=P1;

P1=temp+1;
}

}
break;
case 1:
if(i==20)
{
i=0;
P1=~P1;
}
break;
case 2:
if(j==60)
{
P1=temp;
P1=_crol_(P1,1);
temp=P1;
k=0;
j=0;
}

if(k<5)
{
P1=0xff;
}
else if(k>=5&&k<10)
{
P1=temp;
}
else if(k>=10&&k<15)
{
P1=0xff;
}
else if(k>=15&&k<20)
{
P1=temp;
}
else if(k>=20&&k<25)
{
P1=0xff;
}
else if(k>=30&&k<35)
{
P1=temp;
}
else if(k>=35&&k<40)
{
P1=0xff;
}
break;
}
}
}
}

void timer0() interrupt 1
{
TH0=0x3c;
TL0=0xB0; //溢出后重新赋初值
//定时器中断时间为50ms
i++; //20次中断时间为1s
j++; //40次中断时间为2s
k++; //60次中断时间为3s
}

有什么不懂的可以网络Hi我

⑨ 单片机:设计一个8灯闪烁控制电路,系统晶振为12HMz,编程实现8灯轮流闪烁,每盏灯点亮时间为2秒 求大神!

LED负极接单片机IO口,本程序接P1,低电平点亮

#include<reg52.h> //52系列单片机头文件

#include<intrins.h>

#defineuintunsignedint //宏定义

#defineucharunsignedchar

voiddelayms(uint); //声明子函数

ucharaa;

voidmain() //主函数

{

aa=0xfe; //赋初值11111110

while(1) //大循环

{

P1=aa;

delayms(2000); //延时2秒

aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa

}

}

voiddelayms(uintxms)

{

uinti,j;

for(i=xms;i>0;i--) //i=xms即延时约xms毫秒

for(j=110;j>0;j--);

}

⑩ 单片机编程: P1口8个灯从低位到高位依次点亮(流水灯),遇到外部中断1,8个灯亮点 。求电路原理

ORG0000H
LJMPMAIN
ORG0013H
LJMPEXT1
ORG0030H
MAIN:
MOVA,#0FEH
LOOP:
MOVP1,A
RLA
LCALLDELAY
SJMPLOOP
EXT1:
MOVP1,#00H
MOVR7,#10
DD:
LCALLDELAY
DJNZR7,DD
RETI
DELAY:
MOVR2,#200
DLY:
MOVR3,#250
DJNZR3,$
DJNZR2,DLY
RET
END

阅读全文

与带8位单片机的应急灯电路相关的资料

热点内容
怎样判断加密货币是牛是熊 浏览:942
初二多项式乘法速算法 浏览:455
android多个布局文件 浏览:629
奔跑程序员 浏览:468
服务器如何搭建类似github 浏览:292
明日之后安卓太卡怎么办 浏览:502
如何使用命令方块找到村庄 浏览:766
泛函压缩映像原理 浏览:521
win10清除文件夹浏览记录 浏览:964
如何查看服务器域中所有服务 浏览:384
学mastercam91编程要多久 浏览:999
如何查服务器地址和端口 浏览:911
教学云平台app怎么下载 浏览:389
单片机510教学视频 浏览:624
陕西信合app怎么查看自己的存款 浏览:663
风冷冰箱有压缩机 浏览:274
android实现wifi连接wifi 浏览:669
飞猪app怎么帮别人值机 浏览:924
笔记本开我的世界服务器地址 浏览:546
怎样隐藏bat命令 浏览:127