ISIS 7 Professional仿真——键控流水灯

功能:K1是总开关,当K1首次按下时,流水灯由下往上流动;当K2按下时停止流动,且全部灯灭,当K3按下时使灯由上往下流动,K4则使灯由下往上流动。

LED灯循环速度可以调整延时函数的整型调用参数值来改变。

void delay (unsigned char time){
   unsigned int j = 12000;
   for(; time > 0; time--)						// 延时函数
      for(; j > 0; j--);
}

实现流水灯向 ↓移动

 for(i = 0; i <= 3; i++){
      P2 = led[i];
      delay(300);
 }

实现流水灯向↑移动

 for(i = 3;i >= 0; i--){
      P2 = led[i];
      delay(300);
 }
主程序
#include "reg51.h"  
unsigned char led[]={0xfe,0xfd,0xfb,0xf7};
void delay (unsigned char time){
   unsigned int j=12000;
   for(;time>0;time--)						// 延时函数
      for(;j>0;j--);
}
void main(){
	bit dir=0,run=0;
    char i;
    while(1){
    switch(P0&0x0f){			  // 读取键值
      case 0x0e:run=1;break;		// k1动作,设 run = 1 
      case 0x0d:run=0,dir=0;break;		 // k2 动作,设run = dir = 0
      case 0x0b:dir=1;break;				  // k3 动作, 设 dir = 1
      case 0x07:dir=0;break;				  // k4动作,设dir = 0
   }
   if(run)									// 若run = dir = 1,自上而下流动
      if(dir)
    for(i=0;i<=3;i++){
       P2=led[i];
       delay(300);
     }
   else								// 若 run = 1, dir = 0,自下而上流动
     for(i=3;i>=0;i--){
         P2=led[i];
         delay(300);
     }
     else P2=0xff;				  // 若 run = 0, 灯全灭
 }}

程序电路图
在这里插入图片描述
程序电路图链接:https://share.weiyun.com/D6lgdrkD

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值