seo站长博客,做网站的外包公司,wordpress使用文档插件,拼多多 wordpress文章目录 【蓝桥杯-单片机】LED和按键小练习#xff1a;Led彩灯控制系统01 题目描述02 题目解答03 本题总结整体逻辑框架#xff08;详细版#xff09;整体逻辑框架#xff08;缩略版#xff09;按键读取模块按键消抖模块流水灯显示模式#xff08;1#xff09;从上向下… 文章目录 【蓝桥杯-单片机】LED和按键小练习Led彩灯控制系统01 题目描述02 题目解答03 本题总结整体逻辑框架详细版整体逻辑框架缩略版按键读取模块按键消抖模块流水灯显示模式1从上向下流循环左移2从下向上流循环右移3从外向内流4从内向外流 【蓝桥杯-单片机】LED和按键小练习Led彩灯控制系统
01 题目描述
Led彩灯控制系统 彩灯运行模式 模式1Led1 – Led2 – Led3 – Led4 – Led5 – Led6 – Led7 – Led8 模式2Led8 – Led7 – Led6 – Led5 – Led4 – Led3 – Led2 – Led1 模式3Led1Led8 – Led2Led7 - Led3Led5 – Led4Led6 模式4Led4Led6 – Led3Led5 – Led2Led7 – Led1Led8 按键功能定义 S1彩灯系统启动按键 S2彩灯系统暂停按键 S3显示模式调整按键运行模式1若模式41后返回到模式1 S4显示模式调整按键运行模式-1若模式1-1后返回到模式4 初始化状态 上电时默认为模式1-启动状态固定流转时间500ms/次
02 题目解答
#include REGX52.H
#include intrins.H//函数声明区//按键读取函数
unsigned char Key_Read()
{unsigned char temp 0;if(P3_4 0) temp 1;if(P3_5 0) temp 2;if(P3_6 0) temp 3;if(P3_7 0) temp 4;return temp;
}//自定义延时函数
void Delay(unsigned int x) //12.000MHz
{unsigned char i, j;while(x--){i 2;j 239;do{while(--j);}while(--i);}
}//声明变量区
unsigned char Key_Val,Key_Down,Key_Up,Key_Old;
unsigned char Led_Data 0xfe;
//0xfe-11111110
unsigned char Led_34_Data[4] {0x7e,0xbd,0xdb,0xe7};//模式3和模式4数据
//0x7e-01111110 1、8亮
//0xbd-10111101 2、7亮
//0xdb-11011011 3、6亮
//0x70-11100111 4、5亮
unsigned char Led_Mode 0;//流水灯显示模式
unsigned char Led_34_Data_Index;//数组索引
bit Led_Flag 1;//流水灯是否启动标志位,上电默认启动int main()
{while(1){//按键消抖Key_Val Key_Read();Key_Down Key_Val (Key_Val ^ Key_Old);Key_Up ~Key_Val (Key_Val ^ Key_Old);Key_Old Key_Val;switch(Key_Down){case 1://彩灯系统启动按键Led_Flag 1;break;case 2://彩灯系统暂停按键Led_Flag 0;break;case 3://显示模式调整按键(moed1)Led_Mode;if(Led_Mode 4) Led_Mode0;break;case 4://显示模式调整按键(mode-1)Led_Mode--;if(Led_Mode 255) Led_Mode 3;break;}if(Led_Flag1){switch(Led_Mode){case 0:P1 Led_Data;Delay(500);Led_Data _crol_(Led_Data,1);//Led_Data向左移位break;case 1:P1 Led_Data;Delay(500);Led_Data _cror_(Led_Data,1);//Led_Data向右移位break;case 2:P1 Led_34_Data[Led_34_Data_Index];Delay(500);Led_34_Data_Index;if(Led_34_Data_Index4) Led_34_Data_Index 0;break;case 3:P1 Led_34_Data[Led_34_Data_Index];Delay(500);Led_34_Data_Index--;if(Led_34_Data_Index255) Led_34_Data_Index 3;break;}}}
}
03 本题总结
整体逻辑框架详细版 #mermaid-svg-HLIZZrxwPNOgZcKN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-HLIZZrxwPNOgZcKN .error-icon{fill:#552222;}#mermaid-svg-HLIZZrxwPNOgZcKN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-HLIZZrxwPNOgZcKN .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-HLIZZrxwPNOgZcKN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-HLIZZrxwPNOgZcKN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-HLIZZrxwPNOgZcKN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-HLIZZrxwPNOgZcKN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-HLIZZrxwPNOgZcKN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-HLIZZrxwPNOgZcKN .marker.cross{stroke:#333333;}#mermaid-svg-HLIZZrxwPNOgZcKN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-HLIZZrxwPNOgZcKN .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-HLIZZrxwPNOgZcKN .cluster-label text{fill:#333;}#mermaid-svg-HLIZZrxwPNOgZcKN .cluster-label span{color:#333;}#mermaid-svg-HLIZZrxwPNOgZcKN .label text,#mermaid-svg-HLIZZrxwPNOgZcKN span{fill:#333;color:#333;}#mermaid-svg-HLIZZrxwPNOgZcKN .node rect,#mermaid-svg-HLIZZrxwPNOgZcKN .node circle,#mermaid-svg-HLIZZrxwPNOgZcKN .node ellipse,#mermaid-svg-HLIZZrxwPNOgZcKN .node polygon,#mermaid-svg-HLIZZrxwPNOgZcKN .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-HLIZZrxwPNOgZcKN .node .label{text-align:center;}#mermaid-svg-HLIZZrxwPNOgZcKN .node.clickable{cursor:pointer;}#mermaid-svg-HLIZZrxwPNOgZcKN .arrowheadPath{fill:#333333;}#mermaid-svg-HLIZZrxwPNOgZcKN .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-HLIZZrxwPNOgZcKN .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-HLIZZrxwPNOgZcKN .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-HLIZZrxwPNOgZcKN .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-HLIZZrxwPNOgZcKN .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-HLIZZrxwPNOgZcKN .cluster text{fill:#333;}#mermaid-svg-HLIZZrxwPNOgZcKN .cluster span{color:#333;}#mermaid-svg-HLIZZrxwPNOgZcKN div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-HLIZZrxwPNOgZcKN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是 循环 是 循环 模式切换 模式切换 mode0 mode1 mode2 是 循环 mode3 是 循环 上电 默认彩灯系统启动 Key_down1 彩灯系统启动 Key_down2 彩灯系统暂停 Key_down3 彩灯模式1 Key_down4 彩灯模式-1 Led_flag1 Led_flag0 Led_Mode Led_Mode4 Led_Mode0 Led_Mode-- Led_Mode255 Led_Mode3 Led_Data向左循环移位 Led_Data右循环移位 从左往右遍历Led_34_Data 数组Led_34_Data遍历一遍 Led_34_Data_Index4 从右往左遍历Led_34_Data 数组Led_34_Data遍历一遍 Led_34_Data_Index255 整体逻辑框架缩略版 #mermaid-svg-7wZL0u8kOh4t0aD9 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7wZL0u8kOh4t0aD9 .error-icon{fill:#552222;}#mermaid-svg-7wZL0u8kOh4t0aD9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7wZL0u8kOh4t0aD9 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-7wZL0u8kOh4t0aD9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7wZL0u8kOh4t0aD9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7wZL0u8kOh4t0aD9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7wZL0u8kOh4t0aD9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7wZL0u8kOh4t0aD9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7wZL0u8kOh4t0aD9 .marker.cross{stroke:#333333;}#mermaid-svg-7wZL0u8kOh4t0aD9 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7wZL0u8kOh4t0aD9 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7wZL0u8kOh4t0aD9 .cluster-label text{fill:#333;}#mermaid-svg-7wZL0u8kOh4t0aD9 .cluster-label span{color:#333;}#mermaid-svg-7wZL0u8kOh4t0aD9 .label text,#mermaid-svg-7wZL0u8kOh4t0aD9 span{fill:#333;color:#333;}#mermaid-svg-7wZL0u8kOh4t0aD9 .node rect,#mermaid-svg-7wZL0u8kOh4t0aD9 .node circle,#mermaid-svg-7wZL0u8kOh4t0aD9 .node ellipse,#mermaid-svg-7wZL0u8kOh4t0aD9 .node polygon,#mermaid-svg-7wZL0u8kOh4t0aD9 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7wZL0u8kOh4t0aD9 .node .label{text-align:center;}#mermaid-svg-7wZL0u8kOh4t0aD9 .node.clickable{cursor:pointer;}#mermaid-svg-7wZL0u8kOh4t0aD9 .arrowheadPath{fill:#333333;}#mermaid-svg-7wZL0u8kOh4t0aD9 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7wZL0u8kOh4t0aD9 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7wZL0u8kOh4t0aD9 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-7wZL0u8kOh4t0aD9 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-7wZL0u8kOh4t0aD9 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7wZL0u8kOh4t0aD9 .cluster text{fill:#333;}#mermaid-svg-7wZL0u8kOh4t0aD9 .cluster span{color:#333;}#mermaid-svg-7wZL0u8kOh4t0aD9 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7wZL0u8kOh4t0aD9 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是 循环 是 循环 模式切换 模式切换 mode0 mode1 mode2 mode3 上电 默认彩灯系统启动 Key_down1 彩灯系统启动 Key_down2 彩灯系统暂停 Key_down3 彩灯模式1 Key_down4 彩灯模式-1 Led_flag1 Led_flag0 Led_Mode Led_Mode4 Led_Mode0 Led_Mode-- Led_Mode255 Led_Mode3 Led_Data向左循环移位 Led_Data右循环移位 从左往右遍历Led_34_Data 从右往左遍历Led_34_Data 按键读取模块
获取Key_Down的值用于分支按键功能定义 S1彩灯系统启动按键 S2彩灯系统暂停按键 S3显示模式调整按键运行模式1若模式41后返回到模式1 S4显示模式调整按键运行模式-1若模式1-1后返回到模式4
unsigned char Key_Read()
{unsigned char temp 0;if(P3_4 0) temp 1;if(P3_5 0) temp 2;if(P3_6 0) temp 3;if(P3_7 0) temp 4;return temp;
}按键消抖模块 Key_Val Key_Read();Key_Down Key_Val (Key_Val ^ Key_Old);Key_Up ~Key_Val (Key_Val ^ Key_Old);Key_Old Key_Val;流水灯显示模式
//声明变量区
unsigned char Key_Val,Key_Down,Key_Up,Key_Old;
unsigned char Led_Data 0xfe;
//0xfe-11111110
unsigned char Led_34_Data[4] {0x7e,0xbd,0xdb,0xe7};//模式3和模式4数据
//0x7e-01111110 1、8亮
//0xbd-10111101 2、7亮
//0xdb-11011011 3、6亮
//0x70-11100111 4、5亮
unsigned char Led_Mode 0;//流水灯显示模式
unsigned char Led_34_Data_Index;//数组索引
bit Led_Flag 1;//流水灯是否启动标志位,上电默认启动1从上向下流循环左移 P1 Led_Data;Delay(500);Led_Data _crol_(Led_Data,1);//Led_Data向左移位2从下向上流循环右移 P1 Led_Data;Delay(500);Led_Data _cror_(Led_Data,1);//Led_Data向右移位3从外向内流 P1 Led_34_Data[Led_34_Data_Index];Delay(500);Led_34_Data_Index;if(Led_34_Data_Index4) Led_34_Data_Index 0;4从内向外流 P1 Led_34_Data[Led_34_Data_Index];Delay(500);Led_34_Data_Index--;if(Led_34_Data_Index255) Led_34_Data_Index 3;tips:unsigned char类型的取值范围是0-255即这里的0-1255当index的值减到255时需要重置index的值为3。