更新一个单个按键控制多种流水灯状态的教程,希望能帮助到大家~

所需元器件如下:
STC89C52RC芯片 *1
10K电阻 *2
100Ω电阻 *8
10uF 电解电容 *1
22pF 瓷片电容 *2
12MHz晶振 *1
按键 *2
LED灯 *8

代码如下:
#include"reg52.h" #define uchar unsigned char #define uint unsigned int #define
LED P1 sbit KEY=P3^0; unsigned char code led_1[8]= {0xfe,0xfd,0xfb,0xf7,0xef,
0xdf,0xbf,0x7f};//定义第一种流水灯状态 unsigned char code led_2[8]= {0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe};//定义第二种流水灯状态 unsigned char code led_3[5]= {0x7e,0xbd,0xdb,
0xe7,0xff};//定义第三种流水灯状态 unsigned char code led_4[5]= {0xe7,0xc3,0x81,0x00,0xff};
//定义第四种流水灯状态 unsigned int k,z; //定义两个无符号整型变量 void delayms(uint ms) //延时 { uint i
,j; for(i=ms;i>0;i--) for(j=110;j>0;j--); } void key() { if(KEY==0) { delayms(5)
; if(KEY==0) { k++; delayms(5); if(k>4) k=1; } } } void main() { k=1;
//初始化为开机第一种流水灯状态 while(1) { switch(k) { case 1: //第一种流水灯状态 for(z=0;z<8;z++) {
LED=led_1[z]; delayms(300); key(); if(KEY==0)break; } break; case 2: //第二种流水灯状态
for(z=0;z<8;z++) { LED=led_2[z]; delayms(300); key(); if(KEY==0)break; } break;
case 3: //第三种流水灯状态 for(z=0;z<5;z++) { LED=led_3[z]; delayms(300); key(); if(KEY
==0)break; } break; case 4: //第四种流水灯状态 for(z=0;z<5;z++) { LED=led_4[z]; delayms(
300); key(); if(KEY==0)break; } break; } } }
仿真电路图如下:

技术
©2019-2020 Toolsou All rights reserved,
Java开发2020年最新常见面试题整理【Spring源码分析】42-@Conditional详解element-ui踩坑记录神仙面试宝典你有了吗?半月看完25大专题,居然斩获阿里P8offer使用css样式设计一个简单的html登陆界面XCTF攻防世界web新手练习_ 9_command_executionJS中的解构赋值的详解与具体用途Python Web 框架elementui 穿梭框 el-transfer 展示列表内容文字过长ConcurrentHashMap实现原理及源码解析