色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于CW32的薄膜式鍵盤的應用設計

CW32生態社區 ? 來源:CW32生態社區 ? 2023-09-07 18:22 ? 次閱讀

一、簡介

1.薄膜式鍵盤是一種常見的輸入設備,它由一層薄膜電路板和一層觸摸膜組成。薄膜電路板上印有導電圖案,而觸摸膜則具有與之對應的按鍵區域。這種鍵盤的應用場景非常廣泛,以下是幾個典型的應用場景:

(1)電子產品:薄膜式鍵盤被廣泛應用于各種電子產品中,如手機、平板電腦數碼相機等。由于其結構簡單、體積小巧,可以很好地滿足電子產品的設計需求。

(2)工業控制:在工業自動化領域,薄膜式鍵盤常用于控制面板和操作界面。它們具有防塵、防水、抗腐蝕等特性,能夠適應惡劣的工作環境。

(3)醫療設備:醫療設備通常需要高度衛生和易清潔的特點,薄膜式鍵盤因其表面光滑、易擦拭的特性而被廣泛應用于醫療設備中,如手術臺、心電圖儀等。

二、所需物料

本實驗使用到了CW32-48F大學計劃開發板、5*4薄膜式鍵盤模塊、0.96寸OLED顯示屏及Keil5開發環境。開發板上留有矩陣鍵盤接口,可以直接將模塊插上使用。

cbf9af72-4d67-11ee-a25d-92fbcf53809c.png

鍵盤內部連線示意圖

注:鍵盤的9根引線從左至右分別與單片機引腳PB15、PB14、PB13、PB12、PA6、PA5、PA4、PA1、PA0相連。

三、核心代碼

main.c:
#include "main.h"
#include "OLED.h"
#include "Key.h"
#include "Delay.h"
#include "BTIM.h"


#define NUM_LENGTH 6


uint8_t choose_flag=0;    //選中標識
uint8_t choose_index=0;   //數組下標
uint8_t exert_flag=0;     //執行標識


uint8_t number[NUM_LENGTH]={0};    //存儲6位數字
uint8_t num_index=0;      //數組下標    
char temp='.';            //默認值'.'
         
int main()
{
  uint8_t i;
  uint8_t position=0;     //選中的數字在數組中的位置
  OLED_Init();            //OLED顯示
  Key_GPIO_Init();        //5*4薄膜鍵盤GPIO初始化
  BTIM_Init();            //定時器初始化,控制按鍵掃描周期
  while(1)
  { 
    if(exert_flag==1)     //若執行標識已打開
    {
      switch(temp)
      {
        case '<':           //選中左移
          if(choose_flag==0) position=choose_index+1; //向左選中數字
          if(position!=0)                              //若已有數字輸入
          {
            choose_flag=1;                            //打開選中標識        
            OLED_Clear_Row(2);                         //先清除已有標識符號‘^’
            if(--position==0) position=choose_index;  //選中左移
            OLED_ShowChar(2,position,'^');            //顯示選中標識符號'^'
          }
          break;
        case '>':
          if(choose_flag==0) position=choose_index;   //向右選中數字
          if(position!=0)                              //若已有數字輸入
          {
            choose_flag=1;                            //打開選中標識
            OLED_Clear_Row(2);                        //先清除已有標識符號'^'
            if(++position==choose_index+1) position=1;//選中右移
            OLED_ShowChar(2,position,'^');            //顯示選中標識符號'^'
          }
          break;
        case 'E':
          choose_flag=0;                              //關閉選中標識
          OLED_Clear_Row(2);                          //清除選中標識符號'^'
          break;
        default:
          if(choose_flag==0)                           //若未打開選中標識
          {
            choose_index=num_index+1;                  
            if(num_index==0)                          
            {
              OLED_Clear_Row(1);
              for(i=0;i=18) 
    {
      cnt=0;
      temp=Key_Scan(); //每180ms執行一次按鍵掃描,返回值賦值給temp
      if(temp!='.')  exert_flag=1;    //打開執行標識
    }
    BTIM_ClearITPendingBit(CW_BTIM1,BTIM_IT_OV); //清除標志位
  }
}
Key.c:
#include "Key.h"
#include "main.h"
#include "Delay.h"
#include "OLED.h"


#define  ROW_PORT CW_GPIOA      //鍵盤行引腳端口
#define  COL_PORT CW_GPIOB      //鍵盤列引腳端口


#define  ROW_NUM  4     //4行
#define  COL_NUM  4     //4列


uint16_t row_pins[ROW_NUM]={GPIO_PIN_1,GPIO_PIN_4,GPIO_PIN_5,GPIO_PIN_6};     //每一行所對應的引腳


uint16_t col_pins[COL_NUM]={GPIO_PIN_15,GPIO_PIN_14,GPIO_PIN_13,GPIO_PIN_12}; //每一列所對應的引腳


char key_value[ROW_NUM][COL_NUM]={    //鍵值
  1,   2,  3,   '(', 
  4,   5,  6,   ')',
  7,   8,  9,   'E',
  '<', 0,  '>', 'Y'
};


void Key_GPIO_Init(void)
{
  __RCC_GPIOA_CLK_ENABLE();
  __RCC_GPIOB_CLK_ENABLE();
  
  //rows-->置行
  GPIO_InitTypeDef GPIO_InitStruct; 
  GPIO_InitStruct.IT=GPIO_IT_NONE;
  GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;      //推挽輸出
  GPIO_InitStruct.Pins=row_pins[0]|row_pins[1]|row_pins[2]|row_pins[3];
  GPIO_InitStruct.Speed=GPIO_SPEED_HIGH;
  GPIO_Init(ROW_PORT, &GPIO_InitStruct);
  
  //cols-->檢列
  GPIO_InitStruct.Mode=GPIO_MODE_INPUT_PULLUP;   //上拉輸入
  GPIO_InitStruct.Pins=col_pins[0]|col_pins[1]|col_pins[2]|col_pins[3];
  GPIO_Init(COL_PORT, &GPIO_InitStruct);
}


char Key_Scan(void)
{
  uint8_t i,j;
  char key = '.';  //默認值'.'
  
  for ( i = 0; i < ROW_NUM; i ++ )   //1-4行依次置低
  {
    GPIO_WritePin(ROW_PORT,row_pins[i],GPIO_Pin_RESET);
    for( j = 0; j < COL_NUM; j ++ )  //依次檢測1~4列電平
    {
      if( GPIO_ReadPin(COL_PORT,col_pins[j])==RESET )  //如果檢測到低電平,則代表有按鍵按下
      {
        key = key_value[i][j];    //獲取鍵值
        break;            //跳出檢列循環
      }
    }
    GPIO_WritePin(ROW_PORT,row_pins[i],GPIO_Pin_SET);  //本行恢復高電平,準備置低下一行
    if(key != '.') break; //若key不是默認值,則代表已檢測到按鍵按下,退出置行循環,結束本次按鍵掃描
  }
  
  return key;  //返回鍵值
}






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6057

    文章

    44806

    瀏覽量

    644128
  • 工業控制
    +關注

    關注

    38

    文章

    1508

    瀏覽量

    86535
  • OLED顯示屏
    +關注

    關注

    6

    文章

    218

    瀏覽量

    31155
  • CW32
    +關注

    關注

    1

    文章

    232

    瀏覽量

    1022

原文標題:【CW32】基于CW32的薄膜式鍵盤的應用

文章出處:【微信號:CW32生態社區,微信公眾號:CW32生態社區】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦

    CW32移植Free-RTOS】CW32開發者扶持計劃

    CW32配置Free-RTOS全過程,CW32開發者扶持計劃
    的頭像 發表于 04-18 09:38 ?6455次閱讀
    【<b class='flag-5'>CW32</b>移植Free-RTOS】<b class='flag-5'>CW32</b>開發者扶持計劃

    【應用筆記】CW32 電容觸摸按鍵設計指南

    前言CW32電容觸摸按鍵設計指南向客戶提供一種利用CW32內部資源結合軟件編程實現電容觸摸按鍵有效觸摸檢測的方法。本指南的內容重點在于工作原理、軟件檢測過程以及調試指引。利用芯源半
    的頭像 發表于 07-04 11:44 ?1271次閱讀
    【應用筆記】<b class='flag-5'>CW32</b> 電容<b class='flag-5'>式</b>觸摸按鍵設計指南

    CW32快速開發入門

    CW32快速開發入門
    的頭像 發表于 04-24 18:56 ?2478次閱讀
    <b class='flag-5'>CW32</b>快速開發入門

    代碼+案例+生態:武漢芯源半導體CW32嵌入開發實戰正式出版

    尊敬的各位電子工程師、嵌入開發愛好者們: 大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導體的單片機CW32正式出書啦!《基于ARM Cortex-M0+
    發表于 03-03 15:14

    CW32開發者扶持計劃#CW32 #芯片

    CW32
    CW32生態社區
    發布于 :2023年05月24日 16:56:14

    CW32電容觸摸按鍵設計指南

    CW32 電容觸摸按鍵設計指南向客戶提供一種利用 CW32 內部資源結合軟件編程實現電容觸摸按鍵有效觸摸檢測的方法。本指南的內容重點在于工作原理、軟件檢測過程以及調試指引。利用芯源
    發表于 09-15 06:00

    cw32和stm32的區別

    cw32和stm32的區別 CW32和STM32是兩種常見的單片機,被廣泛應用于各種電子設備中。在本文中,我們將深入探討CW32和STM32之間的區別和優劣勢。 1. 硬件性能 硬件性能是衡量單片機
    的頭像 發表于 08-16 11:15 ?4999次閱讀

    cw32和gd32的區別

    cw32和gd32的區別 CW32和GD32是兩種不同的芯片系列,分別由WCH和GigaDevice公司推出,兩者有很多不同之處,下面我們來詳細介紹。 首先從CW32系列開始,CW32
    的頭像 發表于 08-16 11:15 ?2358次閱讀

    基于CW32的無刷水泵方案

    基于CW32的無刷水泵方案
    的頭像 發表于 11-03 17:28 ?1100次閱讀
    基于<b class='flag-5'>CW32</b>的無刷水泵方案

    基于CW32熱敏電阻采集溫度應用

    基于CW32熱敏電阻采集溫度應用
    的頭像 發表于 10-25 16:45 ?691次閱讀
    基于<b class='flag-5'>CW32</b>熱敏電阻采集溫度應用

    CW32 電容觸摸按鍵設計指南

    CW32 電容觸摸按鍵設計指南
    的頭像 發表于 10-25 16:36 ?1241次閱讀
    <b class='flag-5'>CW32</b> 電容<b class='flag-5'>式</b>觸摸按鍵設計指南

    CW32 PWM輸出功能介紹

    CW32 PWM輸出功能介紹
    的頭像 發表于 09-27 16:12 ?1167次閱讀
    <b class='flag-5'>CW32</b> PWM輸出功能介紹

    CW32實時時鐘(RTC)介紹

    CW32實時時鐘(RTC)介紹
    的頭像 發表于 10-24 15:36 ?1422次閱讀
    <b class='flag-5'>CW32</b>實時時鐘(RTC)介紹

    基于CW32的RC522刷卡模塊的應用

    基于CW32的RC522刷卡模塊的應用
    的頭像 發表于 11-02 14:53 ?1427次閱讀
    基于<b class='flag-5'>CW32</b>的RC522刷卡模塊的應用

    基于CW32的物聯網應用

    CW32】基于CW32的物聯網應用
    的頭像 發表于 11-02 15:55 ?1014次閱讀
    基于<b class='flag-5'>CW32</b>的物聯網應用
    主站蜘蛛池模板: 果冻传媒视频在线观看完整版免费 | 欧美高清vivoesosexo18 | 久久精品视频15人人爱在线直播 | 野花韩国高清完整版在线 | 亚洲AV无码A片在线观看蜜桃 | 国产在线精品视频二区 | 中文字幕一区二区三区在线不卡 | 精品久久久爽爽久久久AV | 性xxx免费视频 | 小草高清视频免费直播 | 性色少妇AV蜜臀人妻无码 | 综合色一色综合久久网vr | 古月娜下面好紧好爽 | 麻豆国产原创中文AV网站 | 伊人国产在线观看 | 久久久久久天天夜夜天天 | 香蕉精品国产自在现线拍 | 久久麻豆国产国产AV | 青柠在线观看免费高清电视剧荣耀 | 99久久99久久免费精品蜜桃 | 一一本之道高清视频在线观看中文字幕 | 国产线精品视频在线观看 | 欧美 亚洲 日韩 在线综合 | 国产精品一区二区制服丝袜 | 男人私gay挠脚心vk视频 | 国产精品欧美久久久久天天影视 | 1313久久国产午夜精品理论片 | 2020美女视频黄频大全视频 | 国产精品视频第一区二区三区 | 伊人激情综合网 | 在野外被男人躁了一夜动图 | free18sex性自拍裸舞 | 久久青青草视频在线观 | 2019午夜福合集不打码 | 国产三级多多影院 | 名女躁b久久天天躁 | 偷拍国产精品在线播放 | 97精品国偷拍自产在线 | 欧美大香线蕉线伊人久久 | 亚洲国产成人精品无码区99 | 手机毛片在线 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品