流水灯单片机程序代码8个灯(单片机八个流水灯程序)
51单片机c语言编写一个流水灯程序,要求如下(不能用数组,8个led指示灯从两边往中间移动,然后再分开)
?//流水灯
#include?"reg52.h"
#define?LED_PORT?P3
void?delay(unsigned?char?time)
{
?unsigned?char?i,j,k;
?for(i=0;itime;i++)
?{
??for(j=0;j200;j++)
??{
???for(k=0;k200;k++);
??}
?}
}
void?main()
{
?unsigned?char?i,halfbyteh=0x80,halfbytel=0x01;
?while(1)
?{
??halfbyteh=0x80;
??halfbytel=0x01;
??for(i=0;i8;i++)
??{
???//LED_PORT=halfbyteh|halfbytel;//高电平点亮??
???LED_PORT=~(halfbyteh|halfbytel);//低电平点亮
???halfbyteh=halfbyteh1;
???halfbytel=halfbytel1;
???delay(10);
??}
?}
}
单片机C语言编程:让8个LED流水灯以0.2s时间间隔从左到右依次点亮然后重复实现
#includereg52.h
#includeintrins.h
void delay(unsigned int z );
void main()
{
unsigned int a;
unsigned char b=0xfe;
for(a=0;a8;a++)
{
P1=b;//P1口接8个LED灯
delay(200);
b=_crol_ (b,1);
}
}
void delay(unsigned int z)
{
unsigned int i;
for(;z0;z--) //延迟时间自己算吧
for(i=110;i0;i--);
}
用汇编写这个容易点
main: mov a,#0feh
mov r0,#8
loop: mov p1,a
acall delay
rl a
djnz r0,loop
delay:mov r6,#0ffh
loop1: mov r7,#01h
djnz r7,$
djnz r6,loop1
ret
end
好像是这样,延迟时间可能不太准,也是P1口接8个LED灯
利用单片机控制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;t123;t++);
}
void main()
{
P1=0xff;
delay(500);
temp=0xfe; //有点怪,led接在P2.3~P2.6
for(j=0;j4;j++)
{
P1=temp;
delay(500);
temp=_crol_(temp,1);
}
P1=0xff;
while(1);
}
设计8个流水灯灯从中间依次向两边闪烁的C语言程序,不胜感激
1.51单片机C语言实现循环8个流水灯左移三次,后右移三次。
例程:
#includereg51.h??//51单片机头文件
#include?intrins.h?//包含有左右循环移位子函数的库
#define?uint?unsigned?int????//宏定义
#define?uchar?unsigned?char??//宏定义
sbit?beep=P2^3;
void?delay(uint?z)??//延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{????????????????????//delay(500);大约延时500ms.
????uint?x,y;
????for(x=z;x0;x--)
????????for(y=110;y0;y--);????
}
void?main()????????????//主函数
{
????uchar?a,i,j;
????while(1)????????//大循环
????{
????????a=0xfe;?????//赋初值
????????for(j=0;j3;j++)?for(i=0;i8;i++)???//左移三次
????????{
????????????P1=a;???????//点亮小灯
????????????beep=0;?????//开启蜂鸣器
????????????delay(50);?//延时50毫秒
????????????beep=1;?????//关闭蜂鸣器
????????????delay(50);??//再延时50毫秒
????????????a=_crol_(a,1);?//将a变量循环左移一位
????????}
????????a=0x7f;
???????for(j=0;j3;j++)?for(i=0;i8;i++)??//右移三次
????????{
????????????P1=a;???????//点亮小灯
????????????beep=0;?????//开启蜂鸣器
????????????delay(50);?//延时50毫秒
????????????beep=1;?????//关闭蜂鸣器
????????????delay(50);???//再延时50毫秒
????????????a=_cror_(a,1);?//将a变量循环右移一位
????????}????????
????}
}
2.51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。
8个LED指示灯循环闪烁的程序(单片机)
1:设置一个变量zhidaoi,它可以从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);
}
扩展资料:
注意事项:
#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;//所有的灯都亮着
}
}