一 矩阵键盘按键控制TM1629ALED显示原理:

    1.1 本实验实现矩阵键盘按键控制TM1629ALED显示1.2 实验思路:共阴极数码管,掌握数码管段选位选原理  熟悉TM1629A芯片手册1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真

二 实验步骤:
2.1 keyled.h代码:

    #ifndef __KEYLED_H#define __KEYLED_H#include "sys.h"     #define SEG_NUM 16 //段选,2个8段#define GRID_NUM 8 //位选#define     WRITE_DATA_MODE_AUTO        0x40 // 地址自动加1方式写led显存#define     SET_START_ADDRESS       0xc0 // 设置起始地址#define     SET_DISP_OFF_COMMAND        0x87 // 关闭显示命令#define     DATA_COUNT          2*GRID_NUM  //数据传输个数extern  void    Initial_LED(void);  // 初始化extern void   DisplayOn(u8  bOn);   //led显示是否打开extern void  Display(u8  DspData[]); // led显示数字#endif

2.2 keyled.c代码(IO配置):

   #include "stm32f10x.h"#include "keyled.h"#include "key.h"#include "sys.h" #include "delay.h" //配置时钟和IO口#define SetClk    GPIO_SetBits(GPIOD,GPIO_Pin_3) //PD3#define ClrClk    GPIO_ResetBits(GPIOD,GPIO_Pin_3) //PD3 #define SetDIO  GPIO_SetBits(GPIOD,GPIO_Pin_2) //PD2#define ClrDIO  GPIO_ResetBits(GPIOD,GPIO_Pin_2) //PD2#define TM1638_PINS  0x001f  //片选第一二排数码管#define ResA    GPIO_ResetBits(GPIOD, GPIO_Pin_1);//PD1#define SetA    GPIO_SetBits(GPIOD, GPIO_Pin_1);//PD1  /*将一字节数据写到TM1629A中*/void WriteData(u8 data ){  u8 i;ResA ;for(i=0;i<8;i++){delay_ms(20);ClrClk;拉低时钟delay_ms(20);if(data & 0x01)SetDIO;    //打开数据线elseClrDIO;   //关闭数据线delay_ms(20);SetClk;  //拉高时钟data>>=1;  //数据右移一位} delay_ms(20);}
/*将所要传输的数据显示在led上*/void  Display(u8  DspData[]){u8    i;ResA  ;SetDIO; //打开数据线ClrClk; //拉低时钟WriteData(WRITE_DATA_MODE_AUTO); // 采用地址自动加1方式传输数据   SetA ;   delay_ms(20);ResA  ;   WriteData(SET_START_ADDRESS);   //  传输起始地址/* 传输数据*/for(i = 0; i < DATA_COUNT; i++) {WriteData(DspData[i]);}SetA ;   delay_ms(20);}/*显示器辉度和开关设置*/void    DisplayOn(u8  bOn){if(bOn)WriteData(0x88+6);elseWriteData(SET_DISP_OFF_COMMAND);SetA ; }   /*IO口配置*/void    Initial_LED(void){       GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin =  TM1638_PINS; GPIO_Init(GPIOD , &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_Init(GPIOD, &GPIO_InitStructure);GPIO_SetBits(GPIOD, TM1638_PINS);SetA ; DisplayOn(0);}

2.2 main.c代码(实现按键值LED显示效果):

        #include "delay.h"#include "key.h"#include "sys.h"#include "beep.h"#include "keyled.h" int main(void){    u8 i,flag;u8 key=0;
u8   seg88Code[16]={0x3f, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0X7C, 0x39, 0x5E, 0x79, 0x71};delay_init(); //  延时               KEY_Init();   // 按键初始化     BEEP_Init();  //  蜂鸣器初始化      Initial_LED(); //  数码管初始化/*实现按键值在1到15范围内led显示0到15,具体显示功能可以改,基本思路就是这样*/while(1){flag=0;key=KEY_Scan();for(i=1;i<16;i++){if(key==i){if(key==i){flag =1;break;}   } }                     if(flag==1){   DisplayOn(1);Display(seg88Code);delay_ms(2); }else{DisplayOn(0); } delay_ms(2); }}

三 接线测试:

 3.1 与板子接线测试效果良好,按键值在1到16范围内,LED 0到15按顺序显示。

ARM开发(4)基于STM32的矩阵键盘按键控制TM1629A LED显示相关推荐

  1. 基于FPGA的 矩阵键盘按键识别 【原理+源码】

    目录 引言 原理阐述 实现方法 源码分享 板级调试演示 引言 最近了解了矩阵键盘扫描的原理,动手实现了一下,在这里做一个简单的总结. 原理阐述 矩阵键盘典型电路: FPGA的应用电路: 其中,行信号为 ...

  2. 基于STM32的TM1638的按键控制以及数码管和LED灯的动态扫描

    目录 前言 关于按键控制的困惑及解决方案 关于按键控制判断只按下一次 数码管和LED动态扫描 关于驱动代码(HAL库加寄存器位端控制GPIO) 效果展示 数码管和led展示 按键按一次自增减展示 前言 ...

  3. 基于8086简易电子琴系统仿真设计-基于8086红外自动门控制系统设计-基于单片机8x8矩阵键盘两机串口通信-基于单片机8层电梯控制系统仿真设计-基于单片机ADC0809和DAC0832模数和数模设计

    1189基于8086简易电子琴系统仿真设计-设计资料 编写一实现电子琴的程序,并实现若干扩展功能. 基本功能:用键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶: 扩展功 ...

  4. STM32驱动矩阵键盘串口输出

    原理:矩阵键盘的原理就是分行和列扫描,来获知按键的行数和列数,然后得到按键的键值.(按键按下时) 矩阵原理图 效果视频演示 STM32驱动矩阵键盘串口输出 硬件部分 f103c8t6核心板 4*4矩阵 ...

  5. 基于STM32单片机的智能手环设计(OLED显示)(Proteus仿真+程序+报告)

    编号8 基于STM32单片机的智能手环设计(OLED显示) 功能描述: 由 STM32单片机+按键模拟计步+RTC时钟模块+DS18B20温度传感器模块+心率采集模块+串口模块+OLED显示模块+键盘 ...

  6. 基于STM32物联网WiFi智能家居控制系统设计(原理图+源代码+系统资料)

    基于STM32物联网WiFi智能家居控制系统设计(原理图+源代码+系统资料) 原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 设计编号:C0053 主要功能: 1. ...

  7. 【基于stm32 FreeRtos的智能台灯控制】

    基于stm32 FreeRtos的智能台灯控制 之前做了一个裸机版本的智能台灯,最近刚好复习一下FreeRto的一些基础知识,朋友发给了我一个功能需求刚好用来实践一下,需要的朋友可以自行下载. 完整工 ...

  8. 基于STM32蓝牙智能手环脉搏心率计步器体温显示设计

    基于STM32蓝牙智能手环脉搏心率计步器体温显示设计 本设计由STM32F103C8T6单片机核心板电路+ADXL345传感器电路+心率传感器电路+温度传感器+lcd1602电路组成. 1.通过重力加 ...

  9. 【毕业设计】基于stm32的智能水杯 - 恒温控制 饮水杯 单片机 物联网 嵌入式

    文章目录 0 简介 1 项目介绍 2 系统设计 3 恒温控制实现 3.1 功能描述 3.2 PID算法原理 3.2.1 P:比例 3.2.2 I:积分 3.2.3 D:微分 3.3 温控代码实现 4 ...

最新文章

  1. html之marquee详解[转]
  2. ZeroMQ接口函数之 :zmq_msg_init - 初始化一个空的ZMQ消息结构
  3. Zabbix监控httpd服务
  4. 计划策略-30-按销售与库存订单以批量生产
  5. 移动端input 无法获取焦点的问题
  6. 浅析inline-block--使用inline-block创建布局
  7. Android动画-帧动画
  8. 单电源运算放大器全波整流电路_电子电路识图从入门到精通,从零开始学电子电路...
  9. Ubuntu 安装 gcc-4.8
  10. IBM Rational DOORS通过DXL进行二次开发
  11. 华工校赛E-舞蹈链模板(9x9数独)
  12. Java中IO流的理解
  13. 第3章 使用masm
  14. sql查询语句_多字段分类汇总_多表合并
  15. 工作十年之感悟 -- 兼谈生活与人生
  16. ppt矩形里面的图片怎么放大缩小_PPT图片如何点击放大
  17. vue 条形码--JsBarcode
  18. 计算机二级电子商务考试内容,电子商务师考试内容
  19. 【超分辨率】VDSR--Accurate Image Super-Resolution Using Very Deep Convolutional Networks
  20. ThinkServer RD650安装Ubuntu Server 16.04

热门文章

  1. as 运行java 程序失败,为JBoss AS 7运行Java服务包装程序时出错
  2. 【来日复制粘贴】用高级筛选和函数公式拆分数据列表
  3. Raspberry PI 编译WLan驱动模块, 并配置登录WIFI
  4. 现有一列表 ls = [‘the lord of the rings’,‘anaconda’,‘legally blonde’,‘gone with the wind’]
  5. 【Neo4j】第 5 章:空间数据
  6. JPG、PNG、BMP、RAW傻傻分不清楚?一文帮你解析常见的图像文件格式及其差异
  7. app error login.php,自定义错误Think\Think::appError 设计有问题!!
  8. 200万年薪,西交大2位计算机博士入选华为天才少年
  9. 下载360图片(一)
  10. FINTERRA在2018年第二届远东商业领袖奖中脱颖而出