循环点亮8个流水灯(含源代码,仿真图)

代码如下,运用了位运算,仿真图

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay (uint i)
{
uchar t;
while (i--)
{
for (t=0;t<120;t++);
}
}
void main()
{
    int i;
P1=0XFF;//low value
while (1)
{
P1=0XFF;
    for(i=0;i<9;i++)
{
    P1=P1<<1;
delay(500);
}
}
}

花样最多 8 流水灯代码 #include //包头文件,一般情况不需要改动,头文件包特殊功能寄存器的定义 #include /******************************************************************/ /* 花样表格 */ /******************************************************************/ unsigned char code seg[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0x00,0,0x55,0x55,0xaa,0xaa};//rom允许情况可以无限添加 /******************************************************************/ /* 延时函数 */ /******************************************************************/ void delay(unsigned int cnt)//简易延时 { while(--cnt); } /******************************************************************/ /* 主函数 */ /******************************************************************/ main() { unsigned char i; while(1) { P2=0xFE; //第一个LED亮 for(i=0;i<8;i++) { delay(10000); P2 <<=1; } P2=0x7F; //第七个LED亮 for(i=0;i>=1; } P2=0xFE; //第一个LED亮 for(i=0;i<8;i++) { delay(10000); P2 <<=1; P2 |=0x01; } P2=0x7F; //第七个LED亮 for(i=0;i>=1; P2 |=0x80; } /*下面通过查表方法获得花样参数*/ for(i=0;i<16;i++)//查表可以简单的显示各种花样 实用性更强 { delay(20000); P2=seg[i]; } } } 补充: 再给你一个流星雨,这个程序有点暴力。。。 #include #include #define uint unsigned int void delay(uint n) { while(n--); } main() { mmm:P1=0xfe; delay(15000); while(1) { P1=P1<<1; delay(15000); if(P1==0x00) {P1=0x01;delay(15000);goto mm;} } mm: while(1) { P1=_crol_(P1,1)+1; delay(15000); if(P1==0xff) {delay(15000);goto mmm;} } }
利用Proteus仿真软件点亮左右流水灯,实际上是模拟在硬件电路中实现流水灯效果的过程。流水灯通常是指一组LED按照一定的顺序依次点亮和熄灭,产生类似流水一样的视觉效果。在Proteus中实现流水灯,你可以通过以下步骤进行: 1. 设计电路:首先你需要在Proteus软件中设计电路,包括以下几个主要部分: - 电源:为电路提供所需的电压和电流。 - 微控制器(如Arduino、PIC等):作为控制单元,用于控制LED点亮和熄灭。 - LED:多个LED按照流水灯的顺序排列。 - 电阻:为了限制电流通过LED,防止损坏LED,每个LED都需要串联一个合适的限流电阻。 - 连接线:将所有组件连接起来,形成电路。 2. 编写程序:根据你使用的微控制器,编写控制LED点亮和熄灭的程序代码。程序中需要包一个循环结构,用于依次点亮和熄灭每个LED。例如,如果是使用Arduino,程序可能会看起来像这样: ```cpp void setup() { // 初始化每个LED对应的引脚为输出模式 for(int i=2; i<9; i++) { pinMode(i, OUTPUT); } } void loop() { // 从左到右依次点亮LED for(int i=2; i<9; i++) { digitalWrite(i, HIGH); // 点亮LED delay(200); // 等待200毫秒 digitalWrite(i, LOW); // 熄灭LED } // 从右到左依次点亮LED for(int i=7; i>=2; i--) { digitalWrite(i, HIGH); // 点亮LED delay(200); // 等待200毫秒 digitalWrite(i, LOW); // 熄灭LED } } ``` 上述代码段使用了Arduino的`pinMode`、`digitalWrite`和`delay`函数来控制LED点亮和熄灭。 3. 在Proteus中加载程序:将编写好的程序编译成相应的HEX文件(对于Arduino来说,就是编译生成的程序文件),然后在Proteus中为微控制器加载这个HEX文件。 4. 运行仿真:加载好程序后,开始运行仿真。你应该能看到LED按照你编程的顺序进行点亮和熄灭,实现流水灯的效果。 5. 调试和优化:如果仿真结果与预期不同,可以根据情况调整电路设计或程序代码,再次进行仿真,直到达到理想的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值