请问做网站怎么赚钱,自考本科含金量高吗,做电商需要学什么,招工信息网前言
软件的操作参考这篇博客。
LED数码管的静态显示与动态显示#xff08;KeilProteus#xff09;-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/134101256?spm1001.2014.3001.5501实验#xff1a;用4个独立按键控制8个LED指示灯。
按下k1键#x…前言
软件的操作参考这篇博客。
LED数码管的静态显示与动态显示KeilProteus-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/134101256?spm1001.2014.3001.5501实验用4个独立按键控制8个LED指示灯。
按下k1键P3口8个LED正向由上至下流水点亮
按下k2键P3口8个LED反向由下而上流水点亮
按下k3键高、低4个LED交替点亮
按下k4键P3口8个LED闪烁点亮。
Keil
这个程序就很好理解了通过检查P1口的引脚来判断是否有按键被按下每次只允许一个键被按下然后调用相对应的函数即可。
由于采用的是共阳极所以端口为0的时候表示LED亮所以LED流水灯、交替这种就是通过控制端口是1还是0来实现的。
#includereg51.h
sbit S1P1^0;//将S1位定义为P1.0引脚
sbit S2P1^1;//将S2位定义为P1.1引脚
sbit S3P1^2;//将S3位定义为P1.2引脚
sbit S4P1^3;//将S4位定义为P1.3引脚unsigned char keyval;//定义键值储存变量单元void key_scan(void);//扫描键盘
void forward(void);//正向流水点亮
void backward(void);//反向流水点亮
void alter(void);//高、低位交替点亮
void blink(void);//闪烁点亮
void led_delay(void);//LED显示延时
void delay10ms(void);//软件消除抖动延时void main(void){keyval0;//键值初始化为0while(1){key_scan();//键盘扫描switch(keyval){case 1:forward();break;//键值为1调用正向流水点亮函数case 2:backward();break;//键值为2调用反向流水点亮函数case 3:alter();break;//键值为3调用高、低位交替点亮函数case 4:blink();break;//键值为4调用闪烁点亮函数}}
}//键盘扫描
void key_scan(void){P10xFF;if((P10x0F)!0x0F){delay10ms();if(S10)keyval1;//按键K1被按下if(S20)keyval2;//按键K1被按下if(S30)keyval3;//按键K1被按下if(S40)keyval4;//按键K1被按下}
}//正向流水点亮LED
void forward(void){P30xFE;//LED0亮1111 1110led_delay();P30xFD;//LED1亮1111 1101led_delay();P30xFB;//LED2亮1111 1011led_delay();P30xF7;//LED3亮1111 0111led_delay();P30xEF;//LED4亮1110 1111led_delay();P30xDF;//LED5亮1101 1111led_delay();P30xBF;//LED6亮1011 1111led_delay();P30x7F;//LED7亮0111 1111led_delay();
}//反向流水点亮LED
void backward(void){P30x7F;//LED7亮0111 1111led_delay();P30xBF;//LED6亮1011 1111led_delay();P30xDF;//LED5亮1101 1111led_delay();P30xEF;//LED4亮1110 1111led_delay();P30xF7;//LED3亮1111 0111led_delay();P30xFB;//LED2亮1111 1011led_delay();P30xFD;//LED1亮1111 1101led_delay();P30xFE;//LED0亮1111 1110led_delay();
}//交替点亮高4位与低4位LED
void alter(void){P30x0F;//高4位亮0000 1111led_delay();P30xF0;//低4位亮1111 0000led_delay();
}//闪烁点亮LED
void blink(void){P30xFF;//全灭1111 1111led_delay();P30x00;//全亮0000 0000led_delay();
}//LED显示延时
void led_delay(void){unsigned char i,j;for(i0;i220;i){for(j0;j220;j);}
}//软件消除抖动延时
void delay10ms(void){unsigned char i,j;for(i0;i100;i){for(j0;j100;j);}
}
Proteus
这里需要用到的器件前面基本上都出现过了。
元件名称Proteus关键字51单片机AT89C51复位按钮BUTTON电阻RESLED灯LEDLED-BIBYLED-BIGYLED-BIRGLED-BIRYLED-BLUELED-GREENLED-REDLED-YELLOW 这种LED灯蓝色表示灯亮红色表示灯灭所以不是很明显。
可以换成这种LED灯如果这里还是没有亮的话需要调整右边一列电阻的阻值调至220 K1被按下 K2被按下 K3被按下 K4被按下 总结
继续努力。