micropython按键检测_TM1650按键扫描
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
uchar BL = 2; //亮度等级
uchar CODE[11] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff}; //0~9显示代码
// 0 1 2 3 4 5 6 7 8 9 a
void TM1650(uchar B1,uchar B2, uchar B3 ,uchar B4)
{
uchar temp[5],temp1[5];
uchar i;
temp[1] = B1;
temp[2] = B2;
temp[3] = B3;
temp[4] = B4;
temp1[1]=temp[1] ;
temp1[2]=temp[2] ;
temp1[3]=temp[3] ;
temp1[4]=temp[4] ;
for( i=1 ; i < 5 ; i++ )
{
if (temp[i] == 97)
{
temp1[i] = 10;
}
}
Set1650(0x48,(BL*16+0x01)); //打开显示 调节灰度
Set1650(0x68, CODE[temp1[1]]);//数码管显示
Set1650(0x6a, CODE[temp1[2]]);//数码管显示
Set1650(0x6c, CODE[temp1[3]]);//数码管显示
Set1650(0x6e, CODE[temp1[4]]);//数码管显示
}
/******************************************************************************
* 函 数 名: InitTM1650(void)
* 函数功能: 初始化TM1650
* 入口函数: 无
* 返 回: 无
*******************************************************************************/
void InitTM1650(void)
{
TRI_CLK = 0; //设置端口位输出模式
TRI_DAT = 0; //设置端口位输出模式
WPUA |= 0x20; //设置 RA5 RA4弱上拉
Set1650(0x48,(BL*16+0x01));//设定亮度,开显示八段显示方式,后一个字节中高位用于亮度,低位用于七段或八段显示方式和开关显
//如:0x71为七级亮度,八段显示方式,开显示;0x79为为七级亮度,七段显示方式,开显示
}
/******************************************************************************
* 函 数 名: Set1650(uchar add,uchar dat)
* 函数功能: 按键扫描 写显存必须从高地址开始写
* 入口函数: add 地址 dat 数据
* 返 回: 无
*******************************************************************************/
void Set1650(uchar add,uchar dat)//数码管显示
{
Start1650(); //开始
WrByte1650(add); //第一个显存地址
Ask1650();
WrByte1650(dat); //第一个显示数据
Ask1650();
Stop1650(); //停止
}
/******************************************************************************
* 函 数 名: Scan_Key(void)
* 函数功能: 按键扫描
* 入口函数: 无
* 返 回: rekey 按键扫描结果
*******************************************************************************/
uchar Scan_Key(void) // 按键扫描
{
uchar i;
uchar rekey;
Start1650(); //开始
WrByte1650(0x49); //读按键命令
Ask1650(); //ASK
//DIO = 1 ;
TRI_DAT = 1; //数据端口位输入模式
Delay_us(1);
for(i=0;i<8;i++)
{
CLK = 1;
rekey = rekey<<1;
if(DIO)
{
rekey++;
}
Delay_us(5);
CLK = 0;
Delay_us(1);
}
TRI_DAT = 0; //数据端口位输出模式
Ask1650(); //ASK
Stop1650(); //停止
return(rekey);
}
/******************************************************************************
* 函 数 名: WrByte1650(uchar oneByte)
* 函数功能: 写一个字节
* 入口函数: oneByte 要写入的字节
* 返 回: 无
*******************************************************************************/
void WrByte1650(uchar oneByte)//写一个字节 高位在前,低位在后
{
uchar i;
CLK = 0;
Delay_us(5);
for(i=0;i<8;i++)
{
oneByte = oneByte<<1;
DIO = nC ; //进位标志 溢出1 空位0
CLK = 0;
Delay_us(5);
CLK = 1;
Delay_us(5);
CLK = 0;
}
}
/******************************************************************************
* 函 数 名: Stop1650(void)
* 函数功能: 停止信号
* 入口函数: 无
* 返 回: 无
*******************************************************************************/
void Stop1650(void)//停止信号
{
CLK = 1;
DIO = 0;
Delay_us(5);
DIO = 1;
}
/******************************************************************************
* 函 数 名: Ask1650(void)
* 函数功能: ACK信号
* 入口函数: 无
* 返 回: 无
*******************************************************************************/
void Ask1650(void)//ACK信号
{
int timeout = 1;
TRI_DAT = 1; //数据端口位输入模式
Delay_us(5);
while((DIO)&&(timeout<=300)) //延时等待反馈信号
{
timeout++;
}
CLK = 1;
Delay_us(5);
CLK = 0;
TRI_DAT = 0; //数据端口位输出模式
}
/******************************************************************************
* 函 数 名: Start1650(void)
* 函数功能: 开始信号
* 入口函数: 无
* 返 回: 无
*******************************************************************************/
void Start1650(void)//开始信号
{
CLK = 1;
DIO = 1;
Delay_us(5);
DIO = 0;
}
/******************************************************************************
* 函 数 名: Delay_us(uint i)
* 函数功能: us延时
* 入口函数: i 延时长度
* 返 回: 无
*******************************************************************************/
void Delay_us(uint i)//us延时
{
for(;i>0;i--)
{
NOP();
NOP();
NOP();
NOP();
NOP();
}
}
micropython按键检测_TM1650按键扫描相关推荐
- STM32-蓝桥杯嵌入式之三行按键检测(按键的长、短,单击、双击)
STM32-蓝桥杯嵌入式之三行按键检测(按键的长.短,单击.双击) 目录 STM32-蓝桥杯嵌入式之三行按键检测(按键的长.短,单击.双击) 一.检测按键下降沿分析 二.检测按键上升沿分析 三.按键检 ...
- vba循环通过键盘某个按键按下退出循环_51单片机按键检测--独立按键与矩阵键盘...
按键可以说是51单片机项目开发的一个重要组件了,它是作为51单片机IO口输入的一种重要方式.我们可以通过按键控制单片机执行相应的程序,得到我们想要得效果.51单片机的按键输入主要有两种,一种是独立按键 ...
- 矩阵键盘_按键检测_按键次数检测
在进行矩阵按键检测的时候,对于51单片机来说,由于IO输出电流较小,驱动能力不足,若用一个A号IO口去检测B号IO口,无论B口高电平还是低电平,A口皆是低电平:若A口置高,可用来检测B口的低电平. I ...
- stm32 工业按键检测_STM32f103按键检测程序实现长按短按
背景本文引用地址:http://www.eepw.com.cn/article/201807/384495.htm 只要使用单片机,按键检测基本上是一定要实现的功能.按键检测要好用,最重要的是实时和去 ...
- 笔记连载 | Day15【按键检测、按键消抖】 【原理及verilog仿真】篇
听说99%的同学都来这里充电吖 本系列为线下学员学习笔记整理分享,如有想要报名参加线下培训,可以点击以下超链接文章了解,购买开发板可以到叁芯智能科技企业淘宝店下单. 各类研修班 | FPGA就业研修班 ...
- 按键检测框架单击-双击-连按
说明 本示例用的stm32 按键是接地有效 特别设置按键拉高 按键事件循环50ms一次调用 电路图 按键检测思路 按键按下检测:检测当前本状态是否和上一次状态一致,不一致消抖完成的情况下,当前电平和按 ...
- 基于stm32f4的按键检测
基于stm32f4的按键检测 所谓按键检测,即是检测按键是长按,还是短按.(长按.短按由按键的时间的长短来衡量)通过查阅相关资料,找到了两种比较好理解的按键检测方法.一种是通过输入捕获的方式检测按键按 ...
- STM32速成笔记—按键检测
如果需要本文程序工程,请评论区留邮箱或者私信. 文章目录 一.按键检测原理 二.硬件连接 三.程序设计 3.1 初始化GPIO 3.2 按键扫描函数 四.按键控制LED 4.1 初始化LED和KEY的 ...
- 固件库应用之按键检测
文章目录 按键检测 什么是按键检测 按键硬件电路 编程步骤 1. 使能GPIO端口时钟 2. 初始化 GPIO 目标引脚为输入模式: 3. 检测GPIO引脚的输入,并判断按键状态 3.1 GPIO电平 ...
最新文章
- mutation annovar
- Roman to Integer LeetCode Java
- python 人气高的项目_给大家推荐:五个Python小项目,Github上的人气很高的
- Python基础数据类型之字符串(一)
- C++对中文字符的处理
- 编码(2)从字节理解Unicode(UTF8/UTF16)
- 前端 - token 是什么?为什么每次请求头(HEADS)里要携带它?___请求时,为什么要携带token?
- 容器控件StackPanel控件
- windows服务器性能监控工具、方法及关键指标
- 小伙用微信小程序的Canvas手撸了一个娃娃机
- 计算机excel必备知识,excel常用函数大全
- 算法之图解单纯形算法C++
- This is a CONNECT tunnel, through which encrypted HTTPS traffic flows.
- 2019 计蒜之道 初赛 第一场 商汤的AI伴游小精灵
- 基于matlab生物医学影像处理,基于MATLAB的医学图像处理
- html,css和js
- 铣床是什么?怎么分类
- Visual Studio 实用插件推荐
- python queue 查询是否在队列中_Python queue队列
- 如何用网络管理软件灵活管理复杂庞大的网络