标题:
51单片机如何让一个灯闪烁 其余7个灯流水 求帮助
[打印本页]
作者:
566465465
时间:
2019-3-28 16:11
标题:
51单片机如何让一个灯闪烁 其余7个灯流水 求帮助
如题
作者:
1234567892
时间:
2019-3-28 19:41
直接操作一个P1口,然后进行移位,再次操作P2.1不停的取反就行
作者:
weiweimao1
时间:
2019-3-28 20:31
给你来个简单例子
#include <reg52.h>
#define led P2 //P2连接led,共阳极连接
void delay(int z) //1ms延时
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
while(1)
{
led=0x7f;
delay(100);
led=0xbf;
delay(100);
led=0x5f;
delay(100);
led=0xef;
delay(100);
led=0x77;
delay(100);
led=0xfb;
delay(100);
led=0x7d;
delay(100);
led=0xfe;
delay(100);
}
}
作者:
奋斗的小白熊
时间:
2019-3-28 20:54
你可以用一个io口控制闪烁一个io口控制另外七个灯流动闪烁 比如先是第一个灯亮 0西 或者你的io口比较多 可以用
作者:
奋斗的小白熊
时间:
2019-3-28 20:56
你可以用一个io口控制闪烁一个io口控制另外七个灯流动闪烁 比如先是第一个灯亮 0x01然后每好多秒 移位一次 0x01>>1 这样 这是最简单的 或者你的io口比较多 可以用多个io口分别控制
作者:
wulin
时间:
2019-3-28 21:37
你先写一个灯流水程序发上来看看你入门了没有。否则基础太差,给你程序你也看不懂。
作者:
liuwang2051
时间:
2019-3-29 09:04
用一个字节a的固定一位间接取反,另外7位间接移位后存回a,再把a字节传到端口
作者:
gh001
时间:
2019-3-29 09:24
最简答的方法采用查表的方法,将7种所有情况放在表中,进行调用
作者:
小依米娃娃
时间:
2019-3-29 09:52
用控制引脚的方式来,分别定义位端口。一个让他实现闪烁功能亮灭,其余实现流水。流水可以用一个函数来写。写完在调用。
作者:
TTT96
时间:
2019-3-29 10:00
两个子程序,一个单独控制一个LED灯,一个控制其余七个,
作者:
yuduan66
时间:
2019-3-29 11:26
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/* 函数申明 -----------------------------------------------*/
void delay(uint z);
/*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
********************************************************************************
*/
void main()
{
uchar num,dat1,dat2;
delay(500);
P0=0;
while(1)
{
dat1=0xfe;
for(num=0;num<7;num++)
{
P1=dat1; //初始化赋值
dat1=dat1<<1; //右移一位
P1^0=~P1^1; //让P1^0口始终闪烁
delay(500); //延时
}
}
}
/*
********************************************************************************
** 函数名称 : delay(uint z)
** 函数功能 : 延时函数
********************************************************************************
*/
void delay(uint z)
{
uchar j;
for(z;z>0;z--)
for(j=200;j>0;j--);
}
作者:
Jackis
时间:
2019-3-29 19:42
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led1 = P1^0;
sbit led2 = P1^1;
sbit led3 = P1^2;
sbit led4 = P1^3;
sbit led5 = P1^4;
sbit led6 = P1^5;
sbit led7 = P1^6;
sbit led8 = P1^7;
sbit L = P2^5; //流水灯锁存器
uchar i = 0, num_T0;
void delay()
{
uint i, j;
for(i=1000; i>0; i--)
for(j=110; j>0; j--)
;
}
void main()
{
L = 1; //打开流水灯
//设置定时器0中断
TMOD = 0x01;
TH0 = (65536 - 45872) / 256;
TL0 = (65536 - 45872) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1)
{
switch(i)
{
case 0: led1 = 0; delay(); led1=1; break;
case 1: led2 = 0; delay(); led2=1; break;
case 2: led3 = 0; delay(); led3=1; break;
case 3: led4 = 0; delay(); led4=1; break;
case 4: led5 = 0; delay(); led5=1; break;
case 5: led6 = 0; delay(); led6=1; break;
case 6: led7 = 0; delay(); led7=1; break;
}
i = (i+1) % 7;
}
}
void Time0() interrupt 1
{
TH0 = (65536 - 45872) / 256;
TL0 = (65536 - 45872) % 256;
num_T0++;
if(num_T0 == 8)
{
num_T0 = 0;
led8 = ~led8;
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1