该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

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按键扫描相关推荐

  1. STM32-蓝桥杯嵌入式之三行按键检测(按键的长、短,单击、双击)

    STM32-蓝桥杯嵌入式之三行按键检测(按键的长.短,单击.双击) 目录 STM32-蓝桥杯嵌入式之三行按键检测(按键的长.短,单击.双击) 一.检测按键下降沿分析 二.检测按键上升沿分析 三.按键检 ...

  2. vba循环通过键盘某个按键按下退出循环_51单片机按键检测--独立按键与矩阵键盘...

    按键可以说是51单片机项目开发的一个重要组件了,它是作为51单片机IO口输入的一种重要方式.我们可以通过按键控制单片机执行相应的程序,得到我们想要得效果.51单片机的按键输入主要有两种,一种是独立按键 ...

  3. 矩阵键盘_按键检测_按键次数检测

    在进行矩阵按键检测的时候,对于51单片机来说,由于IO输出电流较小,驱动能力不足,若用一个A号IO口去检测B号IO口,无论B口高电平还是低电平,A口皆是低电平:若A口置高,可用来检测B口的低电平. I ...

  4. stm32 工业按键检测_STM32f103按键检测程序实现长按短按

    背景本文引用地址:http://www.eepw.com.cn/article/201807/384495.htm 只要使用单片机,按键检测基本上是一定要实现的功能.按键检测要好用,最重要的是实时和去 ...

  5. 笔记连载 | Day15【按键检测、按键消抖】 【原理及verilog仿真】篇

    听说99%的同学都来这里充电吖 本系列为线下学员学习笔记整理分享,如有想要报名参加线下培训,可以点击以下超链接文章了解,购买开发板可以到叁芯智能科技企业淘宝店下单. 各类研修班 | FPGA就业研修班 ...

  6. 按键检测框架单击-双击-连按

    说明 本示例用的stm32 按键是接地有效 特别设置按键拉高 按键事件循环50ms一次调用 电路图 按键检测思路 按键按下检测:检测当前本状态是否和上一次状态一致,不一致消抖完成的情况下,当前电平和按 ...

  7. 基于stm32f4的按键检测

    基于stm32f4的按键检测 所谓按键检测,即是检测按键是长按,还是短按.(长按.短按由按键的时间的长短来衡量)通过查阅相关资料,找到了两种比较好理解的按键检测方法.一种是通过输入捕获的方式检测按键按 ...

  8. STM32速成笔记—按键检测

    如果需要本文程序工程,请评论区留邮箱或者私信. 文章目录 一.按键检测原理 二.硬件连接 三.程序设计 3.1 初始化GPIO 3.2 按键扫描函数 四.按键控制LED 4.1 初始化LED和KEY的 ...

  9. 固件库应用之按键检测

    文章目录 按键检测 什么是按键检测 按键硬件电路 编程步骤 1. 使能GPIO端口时钟 2. 初始化 GPIO 目标引脚为输入模式: 3. 检测GPIO引脚的输入,并判断按键状态 3.1 GPIO电平 ...

最新文章

  1. mutation annovar
  2. Roman to Integer LeetCode Java
  3. python 人气高的项目_给大家推荐:五个Python小项目,Github上的人气很高的
  4. Python基础数据类型之字符串(一)
  5. C++对中文字符的处理
  6. 编码(2)从字节理解Unicode(UTF8/UTF16)
  7. 前端 - token 是什么?为什么每次请求头(HEADS)里要携带它?___请求时,为什么要携带token?
  8. 容器控件StackPanel控件
  9. windows服务器性能监控工具、方法及关键指标
  10. 小伙用微信小程序的Canvas手撸了一个娃娃机
  11. 计算机excel必备知识,excel常用函数大全
  12. 算法之图解单纯形算法C++
  13. This is a CONNECT tunnel, through which encrypted HTTPS traffic flows.
  14. 2019 计蒜之道 初赛 第一场 商汤的AI伴游小精灵
  15. 基于matlab生物医学影像处理,基于MATLAB的医学图像处理
  16. html,css和js
  17. 铣床是什么?怎么分类
  18. Visual Studio 实用插件推荐
  19. python queue 查询是否在队列中_Python queue队列
  20. 如何用网络管理软件灵活管理复杂庞大的网络

热门文章

  1. HTML中图片轮播效果
  2. 总谐波失真计算公式_黄金声学GR495四声道功放 低失真宽频响低调却有硬实力
  3. 【小技巧】argc和argv的用法
  4. 细线表格-今日小说排行榜
  5. oracle安装与使用
  6. 推荐几个面向 Web 开发者的杀手级网站
  7. 你绝对不知道的17个Maya插件
  8. 1 ,storm 框架介绍
  9. 查看期刊最近的影响因子
  10. web前端学习笔记26-事件类型——一般事件、页面事件、表单事件