【蓝桥杯单片机】独立按键和矩阵按键
实验开发板为CT107D蓝桥官方板,编译环境为MDK5
- 注意切换J5跳帽至2-3(独立按键)
- 注意切换J5跳帽至1-2(矩阵按键)
- 注意原理图中的
/**************************************独立按键******************************************/
#include"STC15F2K60S2.h"typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
sbit s7 = P3^0;
sbit s6 = P3^1;
sbit s5 = P3^2;
sbit s4 = P3^3;sbit L1 = P0^0;
sbit L2 = P0^1;
sbit L3 = P0^2;
sbit L4 = P0^3;
sbit L5 = P0^4;
sbit L6 = P0^5;
sbit L7 = P0^6;
sbit L8 = P0^7;u8 flag_k = 0;void delay(u16 i)
{while(i --);
}
void SelectHC573(u8 channel)
{switch(channel){case 4:P2 = (P2 & 0x1F) | 0x80;break;case 5:P2 = (P2 & 0x1F) | 0xA0;break;case 6:P2 = (P2 & 0x1F) | 0xC0;break;case 7:P2 = (P2 & 0x1F) | 0xE0;break;}
}void KeyScanning()
{if(s4 == 0){delay(100);if(s4 == 0){ if(flag_k == 1){L3 = ~L3;while(s4 == 0);}if(flag_k == 2) {L4 = ~L4;while(s4 == 0);}}}if(s5 == 0){delay(100);if(s5 == 0){if(flag_k == 1){L5 = ~L5;while(s4 == 0);}if(flag_k == 2){L6 = ~L6;while(s4 == 0);}while(s5 == 0);}}if(s6 == 0){delay(100);if(s6 == 0){if(flag_k == 0){flag_k = 2;L2 = 0;}else if(flag_k == 2){flag_k =0;L2 = 1;}while(s6 == 0);}}if(s7 == 0){delay(100);if(s7 == 0){if(flag_k == 0){flag_k = 1;L1 = 0;}else if(flag_k == 1){flag_k = 0;L1 = 1;}while(s7 == 0);}}
}
void InitSystem()
{SelectHC573(5);P0 = 0x00;
}void main()
{InitSystem();SelectHC573(4);P0 = 0xFF;while(1){KeyScanning();}
}
/**************************************矩阵键盘******************************************/
#include<STC15F2K60S2.h>typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;sbit R1 = P3^0;
sbit R2 = P3^1;
sbit R3 = P3^2;
sbit R4 = P3^3;
sbit C1 = P4^4;
sbit C2 = P4^2;
sbit C3 = P3^5;
sbit C4 = P3^4;u8 code SMG_data[] = {0xC0, //"0"0xF9, //"1"0xA4, //"2"0xB0, //"3"0x99, //"4"0x92, //"5"0x82, //"6"0xF8, //"7"0x80, //"8"0x90, //"9"0x88, //"A"0x83, //"B"0xC6, //"C"0xA1, //"D"0x86, //"E"0x8E, //"F"0x89, //"H"0xC7, //"L"0xC8, //"n"0xC1, //"u"0x8C, //"P"0xA3, //"o"0xBF, //"-"0xFF, //熄灭0xFF //自定义};/*void delay(u16 i)
{while(i --);
}
*/
void SelectHC573(u8 channel)
{switch(channel){case 4:P2 = (P2 & 0x1F) | 0x80;break;case 5:P2 = (P2 & 0x1F) | 0xA0;break;case 6:P2 = (P2 & 0x1F) | 0xC0;break;case 7:P2 = (P2 & 0x1F) | 0xE0;break;}
}void InitSystem()
{SelectHC573(5);P0 = 0x00;
}void SMG_Display(u8 i)
{SelectHC573(6);P0 = 0x01;SelectHC573(7);P0 = SMG_data[i];
}void KeyDriver()
{P3 = (P3 & 0xF0) | 0x0E; //0111C1 = C2 = C3 = C4 = 1;if(C1 == 0){while(C1 == 0);SMG_Display(1);}else if(C2 == 0){while(C2 == 0);SMG_Display(2);}else if(C3 == 0){while(C3 == 0);SMG_Display(3);}else if(C4 == 0){while(C4 == 0);SMG_Display(4);}P3 = (P3 & 0xF0) | 0x0D; //1011C1 = C2 = C3 = C4 = 1;if(C1 == 0){while(C1 == 0);SMG_Display(5);}else if(C2 == 0){while(C2 == 0);SMG_Display(6);}else if(C3 == 0){while(C3 == 0);SMG_Display(7);}else if(C4 == 0){while(C4 == 0);SMG_Display(8);}P3 = (P3 & 0xF0) | 0x0B; //1101C1 = C2 = C3 = C4 = 1;if(C1 == 0){while(C1 == 0);SMG_Display(9);}else if(C2 == 0){while(C2 == 0);SMG_Display(10);}else if(C3 == 0){while(C3 == 0);SMG_Display(11);}else if(C4 == 0){while(C4 == 0);SMG_Display(12);}P3 = (P3 & 0xF0) | 0x07; //1110C1 = C2 = C3 = C4 = 1;if(C1 == 0){while(C1 == 0);SMG_Display(14);}else if(C2 == 0){while(C2 == 0);SMG_Display(15);}else if(C3 == 0){while(C3 == 0);SMG_Display(16);}else if(C4 == 0){while(C4 == 0);SMG_Display(17);}
}void main()
{InitSystem();SelectHC573(4);P0 = 0xFF;while(1){KeyDriver();}
}
【蓝桥杯单片机】独立按键和矩阵按键相关推荐
- 蓝桥杯单片机 独立按键与矩阵按键
文章目录 前言 一.蓝桥杯按键原理图 二.独立按键与矩阵按键处理思路 1.独立按键 2.矩阵按键 代码实现 总结 前言 按键设计一般分为两种:独立按键和矩阵键盘.按键数量较少的用前者,按键数量较多的用 ...
- 蓝桥杯 单片机 独立按键 的使用
独立按键 使用 独立按键原理 独立按键在电路中相当于一个开关,当按键按下时,电路闭合,松手时按键自动抬起,电路断开. 独立按键一端连接单片机I/O口,一端接地. 单片机I/O顾名思义,就是既能输入也能 ...
- 单片机_CT107D训练平台电路原理图\蓝桥杯训练板\输入输出模块\矩阵按键\蜂鸣器电路\继电器电路\LM386功率放大电路,驱动扬声器
输入/输出模块 配置 4×4 键盘矩阵,其中四个按键可通过跳线配置为独立按键: 配置继电器.蜂鸣器: 配置功率放大电路,驱动扬声器. 1>4×4 键盘矩阵原理图如下: 图片中的按键电路可以切换成 ...
- 蓝桥杯基础模块4_3:矩阵按键
一.模块题目 二.原理简述 1.矩阵键盘的扫描思想(转载+删减) 与独立按键不同的是,按键的两个引脚都分别连接的单片机的I/O端口,一个作为行信号,另外一个作为列信号.下以4X4的矩阵键盘为例,探讨其 ...
- 蓝桥杯单片机按键模块化编程
按键 一.按键电路 1.矩阵按键 将J5的KBD接在一起,使用矩阵按键.就是1.2接在一起. 现在8个I/O口控制16个按键.P34,P35,P42,P44控制四列,单片机通过这四个I/O输出高低电平 ...
- 蓝桥杯单片机学习日记3-矩阵键盘的使用,线反转法,三步消抖,按键长按与短按
此片文章用于记录蓝桥杯单片机的学习 篮球杯单片机上的矩阵按键原理图如下: 使用矩阵键盘时,要将跳线帽J5跳至KBD模式. 值得注意的是,若开发板上的单片机使用的为STC15,那么以上原理图适用.如果单 ...
- 蓝桥杯单片机比赛学习:3、独立按键与矩阵按键的基本原理
独立按键 首先我们看一下按键的原理图,如图1,当J5中的2,3接在一起的时候,红线标注就是一个完整的电路图,此时只有s4.s5.s6.s7按键可以使用,也就是独立按键.例如:当我们按下s4时,电路导通 ...
- 蓝桥杯单片机学习4——独立按键矩阵按键
上期学习了数码管的静态显示,这次我们来学习独立按键&矩阵按键 独立按键 原理很简单,当作为独立按键使用时,跳线帽的23接在一起,此时按键如果按下,则按键连接的IO口电平会被拉低,通过捕获IO的 ...
- 蓝桥杯单片机(三)矩阵按键
上章说了独立按键 蓝桥杯单片机(二)独立按键 这章说一下矩阵按键 所谓矩阵按键,就是每一个按键的两端都同时由单片机的IO口进行控制,如原理图所示,上图要想使用矩阵按键,就需要使用跳线帽将排针2引脚和1 ...
- 【蓝桥杯单片机】第十六章 独立按键(松开有效)
本章承接上一章,基本原理是一模一样的,在上一章中,我们按下S7,L7就会马上点亮,而在本章实验中,我们在按下S7后,还需要松开S7,L7才会点亮.这就是松开有效. 第一节 程序编写 请大家对比本章 ...
最新文章
- yum groupinstall安装一组软件使用示例
- PG git pull
- scratch的积木相与java的_scratch课堂:积木块详解
- php 数组区删除重复的,php – 从数组中删除重复的项目
- she is so css什么意思,输入she is so什么意思 微信she is so什么梗
- MFC开发IM-第十五篇、打包的MFC程序别人无法启动的原因
- WPF-14:绑定中数据模型必须为public问题
- 改bug过程中的新发现,重新认识String trim方法
- 西工大计算机专业研究生就业前景,2020考研34所院校就业情况解读:西北工业大学...
- 库存商品计算成本的几种方法
- calculate函数使用方法c语言,使用 CALCULATE 函数
- python 表格处理项目该如何分工_python 处理 Excel 表格
- 作业Android自我介绍
- [幽默网文]好男人遭遇野蛮美女老婆
- JQuery实现简易音乐播放器
- 如何用jquery动态改变 input 输入框的readonly属性及CSS样式
- 国际会计准则IAS 和 IFRS
- 浅析 - 被歧视的小众需求
- Linux几种检测rootkit隐藏进程的方法
- 电脑磁盘占用100%解决办法
热门文章
- 7添加静态路由 hat red_不同VPC路由器通过静态路由、动态路由(OSPF)实现网络互通实战...
- 支持多协议多服务的服务器设计和实现的步骤,基于多协议的人工影响天气接入服务器设计与实现...
- python123测验4程序题_Python面试题245道(从基础到高级)123~141——网络编程,Web—Flask...
- XML指南——XML元素
- C# ToString()和Convert.ToString()的区别【转】
- java 实现一套流程管理、流转的思路(伪工作流) 【仅供参考】
- 备份图解 ---mysql 博客
- [原创]java WEB学习笔记36:Java Bean 概述,及在JSP 中的使用,原理
- pl/sql developer中建立job
- Android用户界面