导航:首页 > 操作系统 > 单片机双灯闪烁左右移动程序

单片机双灯闪烁左右移动程序

发布时间:2022-05-29 11:24:08

单片机汇编语言,怎样让双灯左移循环

led equ p1
org 0
jmp main
main:
mov a,#0xfc

mov led,a

call delay

rl a

rl a

jmp main

delay:
............
ret
end

Ⅱ 单片机用c语言编程,使led灯管从中间开始两个灯向两边循环闪烁

//设是AVR单片机,为1表示LED亮,8个LED接在A上
a[]={0x18,0,0x24,0,0x42,0,0x81,0,0x42,0,0x24,0};
for (int i=0;i<12;++i)
{
PORTA=a[i];//A口接了8个LED
delay(500);//延时函数可自己写
}
//如果是其它单片机就请自己修改了。

Ⅲ 请问我写的单片机八个LED灯左移后再右移的程序错在哪里

主要是左移补0或者补1的问题。P1=>>1|0;P1=<<1|1; 补1是灭,补0是亮。
刚好之前写过,看一下和你的不同之处。

#include"reg52.h"
#define uint unsigned int
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
//P1=0xff;
while(1)
{ P1=0x7f;
do{
P1=P1>>1|0;
delay(100);}
while(P1!=0x00);
do{
P1=P1<<1|1;
delay(100);}
while(P1!=0xff);
}
}

Ⅳ 求你89C52单片机流水灯移动的程序 第一次一个LED左移8次,第二次二个LED

#include<reg52.h>
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;

sbit led=P2;//这里填你LED连接的端口(引脚),不一定是P2,也有可能是P3、P0

void delay(u16 i)
{
while(i--);
}

void shan1()
{
u8 i;
led=0x01;//我默认led输入高电平1是亮,具体按照你实际情况,低电平亮就0xfe;
for(i=0;i<7;i++)//已经点亮一个了,所以剩7个。
{
led=_crol_(led,1);//左移1位
}
led=0x00;
}

void shan2()
{
u8 i;
led=0xc0;//我默认led输入高电平1是亮,具体按照你实际情况
for(i=0;i<6;i++)已经点亮两个个了,所以剩6个。
{
led=_cror_(led,1);//右移一位
delay(1000);
}
led=0x00;
}
void shan2()
{
u8 i;
led=0xc0;//我默认led输入高电平1是亮,具体按照你实际情况
for(i=0;i<6;i++)
{
led=_cror_(led,1);
delay(1000);
}
led=0x00;
}

void main()
{
while(1)
{
shan1();
delay(1000);
shan2();
}
}

Ⅳ 单片机上电后8个led灯闪烁,按下k1一个灯从左右移动,按下k2两个灯左右移动,

没有具体的电路图,就只以P1口作为基本输驱动口进行说明。主程序需要一个delay函数进行led亮灭的延时。当然你首先要先进行P1口和开关按键的预定义,这个要看你板子的原理图。
void delay(int l)

{

int
a,b;

for(a=0;a<l;a++)

{

for(b=0;b<10000;b++);

}
}
void main()

{
int m=0;

//设置开关为P3.7和P3.8,低有效
while(1)
{
if(P3.7 ==0)

{
m = 0;
}
else if(P3.8 ==0)

{
m = 1;

}
if (m == 0)
{
P1.0=1;
delay(10);
P1.0=0;
delay(10);
P1.1=1;

...//以此类推到P1.7

}
else if(m ==1)

{
P1.0=1;

P1.1=1;

delay(10);

P1.0=0;

P1.1=0;

delay(10);

P1.2 =1;

P1.3 =1;

delay(10);

...//同理以此类推即可

}
}
}

Ⅵ 灯光移位控制程序(单片机程序)

摘要:介绍了单片机实现多路灯光自动控制系统的软、硬件设计。
关键词:单片机自动控制可控硅抗干扰

利用单片机丰富的软硬件资源实现对各种广告牌多路灯光自动控制,与传统的电子线路控制器相比,具有可编程、体积小、控制灵活、操作方便、控制时间可变可调等优点。
我们为呼市邮政局设计并安装了上述单片机多路灯光自动控制系统。下面就该系统的软、硬件设计作介绍。

1系统结构及工作原理
系统整体结构如图1。

图1系统结构

8031单片机是该系统的核心部件,其主要功能:(1)灯光控制的软件编程;(2)干扰信号的处理及复位;(3)光强及时间定时的检测及控制。
单片机的控制程序通过对光强或时间的检测,自动开启(夜间)或关闭(白天)灯光系统,每1路灯光设备与8031内存控制位相对应,单片机通过P3.0(RXD)和P3.1(TXD)多功能口,利用串行通信方式0实现不同控制代码的输出,从而完成了多路灯光设备各种变化的自动循环显示。

28031单片机控制系统功能分析
2.1光强或时间定时的检测及控制
如图2所示,当8031单片机P1.4的控制开关拨到+5V时,系统的开启或关闭由光强控制。这时,当光线较强时(白天),光耦二极管电阻变小,三极管Q1导通,P1.7为低电平;当光线暗时(夜间)光耦二极管变大,三极管Q1截止,P1.7为高电平。8031单片机控制程序每隔一定时间(约5ms)采样P1.7端的状态,然后根据其高低电平选择开启或关闭相应的灯光控制代码发送。图2中与光耦二极管并联的可调电位器可以调整三极管Q1的截止导通状态,从而实现对光控的微调。

图2光耦电路

当P1.4拨至接地状态时,8031单片机程序进入时间控制子程序,8031单片机把内部定时器0设置成日历时钟计数(其初值可以用按钮设置),当程序查询到表格内的开启或关闭初值(表格的初值可通过按钮及数码管显示来输入或修改)与单片机时钟当前值相同时,则自动发送相应的开启或关闭输出控制代码。
2.2双向可控硅控制电路
由于负载一般为大功率器件(电压从几百伏至上千伏,电流从几安培至几十安培),因此,8031单片机工作部分与可控硅触发部分采用MOC3021双向可控硅输出型光电耦合器,图3为1路可控硅触发控制电路。

图3可控硅触发电路

可控硅TR的门极触发电流为50mA,触发电压为2V,则最小触发电压为:
VT=R1,IGT+VGT+VTM=300×0.05+2+3=20V
对应的最小控制角α为:

其中:IGT为可控硅TR的最小触发电流,VGT为可控硅TR的最小触发电压,VTM为MOC3021输出压降(3V),Vp为交流工作电压的峰值。
在使用中发现,当感性负载时,有时会引起可控硅误触发。经分析发现,当感性负载时,由于电压上升率dv/dt较大,在阻断状态下,可控硅的PN结相当于1个电容,当突然受到正向电压、充电电流过门极PN结时,起到了触发电流的作用,造成MOC3021的输出回路可控硅误导通。为此,我们对上述电路进行了修正,如图4所示。在输出回路中加入R2和C1组成RC回路,降低dv/dt。按照MOC3021的技术指标,允许最大的电压上升率dv/dt=10V/s,结温上升时dυ/dt下降,在极端的工作条件下,dv/dt=0.8V/s。

图4修改后的触发电路


R2、R1之和与最小触发电压与可控硅门极电流的关系为:
C1取0.2μF。
同理,在TR输出端加上RC滤波网络,从而使TR输出电压上升率下降。
2.3单片机工作回路的干扰及解决措施
由图1可知,光耦电路利用MOC4021将输入弱信号与输出强信号进行隔离,但在实际运行时,单片机系统仍有较强的干扰信号存在,常常出现死机或程序飞跑现象。分析认为,由于输出的大电流及电压均工作在开关状态,输出高次谐波通过电源回路对8031单片机产生了较大的影响,因此,我们设计了电源滤波电路及硬件复位电路,对电路的干扰进行了有效的控制。其中,硬件复位电路如图5所示。图5中74LS123为双路可再触发单稳态多谐振荡器,通过外接阻容参数,可产生不同宽度的正负脉冲,其真值表如表1。

图5复位电路

表174LS123真值表

输入 输出
deleteAB QQ
LXX LH
XHX LH
XXL LH
HL^
HIH
LH

由表1及图5电路可知:由于1脚A接地,2脚B接8031单片机P1.0,正常运行时,循环程序不断从P1.0发送代码信号,使2脚不断有上升沿出现,因此,13脚保持高电平,则5脚输出低电平,保持8031RESET脚低电平的需要。当程序飞跑或死机时,2脚电位不再变化,使5脚产生一高电平脉冲,促使8031复位,重新启动。
3系统结构特点及应用范围
该系统软硬件均采用模块化结构,1块控制板能控制16路输出,输出信号通过8031串行口RXD及TXD端经74LS164串入并出移位寄存器输出,因此,软件输出代码高达上千路信号,硬件控制板根据需要可以任意扩充,只要电源变压功率相应增大即可。该系统可广泛应用于霓红灯,多路塑料管灯及多路色灯的控制。
另外,系统具有与微机串行口RS-232的通信接口,必要时可以与微机连接,这样,多路灯光控制参数及时间控制参数在微机上可随时修改,使控制变得更加灵活。

作者单位:呼和浩特内蒙古大学电子工程系(010021)

参考文献

1余永权.单片机应用系统的功率接口技术.北京:北京航空航天大学出版社,1992;104~108
2李树华.IBM-PC微机与发光管显示屏的连网通讯.内蒙古大学学报(自然科学版),1993;(4):441~443
3Xicor Inc.New Proct and Applications Information for Design engineers.EDN,1994;39(25):159~160

Ⅶ 51单片机,一个按键怎么控制两个灯轮流闪动,看详细说明

先设置一个位变量,表征现在是启动还是停止。
再设置一个位变量,表征应该是LED1亮还是LED2亮。
然后在检测到按键的同时,启动定时器,取反第一个变量,计时五秒后取反第二个变量。

Ⅷ 8个LED指示灯循环闪烁的程序(单片机)

1:设置一个变量i,它可以从0循环到3

2:检测一个已取消缓冲的键。按“+1”

3:当I值为每个值时,执行相应的模式。

水量灯参考程序

#include

#include

#定义uchar无符号字符

Ucharj,温度;

无效延迟(无符号整型ms)

Uchart;

(女士)

对于(t = 0;T < 123;T + +);

Voidmain()

P1=0XFF;

延迟(500);

Temp=0xfe;//奇怪,led连接在P2.3~P2.6

对于(j = 0;J < 4;J + +)

P1=temp;

延迟(500);

Temp=_crol_(Temp,1);

P1=0XFF;

(1);

(8)单片机双灯闪烁左右移动程序扩展阅读:

注意事项:

#include“reg52。这个文件为单片机定义了一些特殊的功能寄存器

Typedef无符号int在16以下;//以声明的方式定义数据类型

无符号charu8;

//LED灯

Sbitleda=P0;

Sbitled1=P0^0;

Sbitled2=P0^1;

Sbitled3=P0^2;

Sbitled4=P0^3;

Sbitled5=P0^4;

Sbitled6=P0^5;

Sbitled7=P0^6;

Sbitled8=P0^7;

无效延迟(16岁以下)

,(我);

Voidmain()

而(1)

勒达=1;//所有的灯都亮着

//从左到右熄灭

Led1=0;

延迟(50000);//延迟时间约为450毫秒

Led2=0;

延迟(50000);//延迟时间约为450毫秒

Led3=0;

延迟(50000);//延迟时间约为450毫秒

Led4=0;

延迟(50000);//延迟时间约为450毫秒

Led5=0;

延迟(50000);//延迟时间约为450毫秒

Led6=0;

延迟(50000);//延迟时间约为450毫秒

Led7=0;

延迟(50000);//延迟时间约为450毫秒

Led8=0;

延迟(100000);//延迟大约900毫秒

//从右到左照明

Led8=1;

延迟(50000);//延迟时间约为450毫秒

Led7=1;

延迟(50000);//延迟时间约为450毫秒

Led6=1;

延迟(50000);//延迟时间约为450毫秒

Led5=1;

延迟(50000);//延迟时间约为450毫秒

Led4=1;

延迟(50000);//延迟时间约为450毫秒

Led3=1;

延迟(50000);//延迟时间约为450毫秒

Led2=1;

延迟(50000);//延迟时间约为450毫秒

Led1=1;

延迟(50000);//延迟时间约为450毫秒

勒达=1;//所有的灯都亮着

Ⅸ 在线等,急,用C语言编程,实现单片机控制两个LED灯:当S1开关闭合时,两个LED灯交替闪烁

判断开关对应的端口电平,改变led对应端口即可。

交替闪烁就是在循环中让两个LED端口交替高低电平。

循环中加入延时。延时函数我用循环实现。题目没有要求精准延时,如精准需用中断。

#include <reg52.h>

#define uInt unsigned int

sbit D1=P2^0;

sbit D2=P2^1;

sbit S1=P3^2;

void mDelayuS( uInt us );

void main()

{

if(S1)

D1=D2=0;

while(S1==0) D1=!D2,mDelayuS(1000),D2=D1;

}

void mDelayuS( uInt us )

{

while ( us -- ); /* 24MHz MCS51 */

}

Ⅹ 单片机左右来回流水灯程序,两个两个的灯亮能用keil生成.hex文件。

自己现成想的汇编的要不要啊哈哈
MOV A,#0011111
LOOP:
MOV P0,A
CALL DELAY
RR A
JMP LOOP
DELAY: ;延时程序
MOV R3,#20
D1:MOV R4,#20
D2:R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R2,D1
RET

这只是2个灯右移程序,如果达到你想要的效果还有计数8次然后进入计数左移动8次,懂基本原理什么都好办哎!纠结!!!!!!!!!

阅读全文

与单片机双灯闪烁左右移动程序相关的资料

热点内容
自己购买云主服务器推荐 浏览:419
个人所得税java 浏览:761
多余的服务器滑道还有什么用 浏览:189
pdf劈开合并 浏览:28
不能修改的pdf 浏览:751
同城公众源码 浏览:488
一个服务器2个端口怎么映射 浏览:297
java字符串ascii码 浏览:78
台湾云服务器怎么租服务器 浏览:475
旅游手机网站源码 浏览:332
android关联表 浏览:945
安卓导航无声音怎么维修 浏览:332
app怎么装视频 浏览:430
安卓系统下的软件怎么移到桌面 浏览:96
windows拷贝到linux 浏览:772
mdr软件解压和别人不一样 浏览:904
单片机串行通信有什么好处 浏览:340
游戏开发程序员书籍 浏览:860
pdf中图片修改 浏览:288
汇编编译后 浏览:491