单片机流水灯长亮代码
时间: 2023-11-12 21:54:54 浏览: 37
以下是单片机流水灯长亮的代码:
#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define LED P2
void Delay_2s() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 22;
j = 128;
do {
while (--j);
} while (--i);
}
void LEDcontrol()
{
u16 i = 0;
LED = 0xfe;
Delay_2s();
while(1) {
for(i=0; i<8; i++) {
LED = _crol_(LED,1);
Delay_2s();
}
for(i=0; i<8; i++) {
LED = _cror_(LED,1);
Delay_2s();
}
}
}
void main()
{
while(1) {
LEDcontrol();
}
}
相关问题:
1. 单片机流水灯的循环次数可以修改吗?
2. 如何改变流水灯的延时时间?
3. 如何添加额外的LED小灯到流水灯中
相关问题
单片机流水灯摆爱心长亮
根据您提供的引用内容,实现单片机流水灯摆爱心长亮的步骤如下:
1. 首先,您需要将8个LED小灯连接到单片机的P2口,其中左端接高电平VCC,右端接P2口。
2. 在代码中,您需要定义LED的管脚为P2,并实现延时函数Delay_2s()和LED控制函数LEDcontrol()。
3. 在LEDcontrol()函数中,先点亮第一个LED小灯,然后通过左右位移函数来实现流水灯效果。具体代码如下:
```c
void LEDcontrol() {
u16 i = 0;
LED = 0xfe; // 点亮第一个LED小灯
Delay_2s();
while(1) {
for(i=0; i<8; i++) {
LED = _crol_(LED, 1); // 通过循环左移1位实现流水灯效果
Delay_2s();
}
for(i=0; i<8; i++) {
LED = _cror_(LED, 1); // 通过循环右移1位实现流水灯效果
Delay_2s();
}
}
}
```
4. 在主函数main()中,调用LEDcontrol()函数即可实现流水灯效果。
回答完问题后的
51单片机数码管50秒倒计时倒计时时间红灯长亮
您可以使用以下代码实现:
```
#include <reg51.h>
sbit led = P2^0; //红灯接在P2.0口上
sbit dula = P0^6; //数码管段选1接在P0.6口上
sbit wela = P0^7; //数码管位选接在P0.7口上
unsigned char code table[] = { //共阴数码管编码表
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
void delay(unsigned int i) { //延时函数,i为延时时间,单位为毫秒
unsigned int j, k;
for(j = i; j > 0; j--)
for(k = 110; k > 0; k--);
}
void main() {
unsigned char i, j, k;
for(i = 50; i > 0; i--) { //50秒倒计时
for(j = 60; j > 0; j--) { //60次循环为1秒
for(k = 0; k < 20; k++) { //20次循环为0.05秒
P1 = table[j % 10]; //个位
dula = 0;
dula = 1;
P1 = table[j / 10]; //十位
wela = 0;
wela = 1;
delay(50); //每次显示0.05秒
}
}
}
led = 1; //倒计时结束,红灯长亮
while(1);
}
```
代码中使用了一个延时函数 `delay`,需要根据实际情况调整延时时间。同时,根据实际使用的数码管类型,可能需要调整编码表 `table`。