久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2510|回復: 5
收起左側

STM32矩陣鍵盤數碼顯示仿真實現

[復制鏈接]
ID:908727 發表于 2022-6-4 16:31 | 顯示全部樓層 |閱讀模式
  1. 功能描述:按下對應按鍵時,則數碼顯示對應按鍵值。
復制代碼
  1. key.c
  2. #include  "key.h"
  3. static u8 key_up=1;//2»Ö§3Öᬰ′
  4. int key=0;
  5. void delayms(unsigned int n)
  6. {
  7.         unsigned int i,j;
  8.         for(i=0;i<n;i++)
  9.         {
  10.                 for(j=0;j<123;j++);
  11.         }
  12. }
  13. void KEY_Init()
  14. {
  15.         GPIO_InitTypeDef  GPIO_InitStructer;
  16.        
  17.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  18.        
  19.         GPIO_InitStructer.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  20.         GPIO_InitStructer.GPIO_Mode=GPIO_Mode_IPU;
  21.         GPIO_Init(GPIOB, &GPIO_InitStructer);
  22.   
  23.         GPIO_InitStructer.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
  24.         GPIO_InitStructer.GPIO_Mode=GPIO_Mode_Out_PP;
  25.         GPIO_InitStructer.GPIO_Speed=GPIO_Speed_50MHz;
  26.         GPIO_Init(GPIOB, &GPIO_InitStructer);
  27. }

  28. u8 keyscan(void)
  29. {
  30.         u16 temp,num;
  31.   GPIO_Write(GPIOB,0xf0);
  32.         while(1)
  33.         {
  34.                 if(P5==1&& P6==1 && P7==1&& P8==1)
  35.          {
  36.                 key=240;
  37.                 key_up=1;
  38.          }
  39.                 else if(key_up==1&&(P5==0||P6==0||P7==0||P8==0))
  40.    {
  41. //                GPIO_ResetBits(GPIOB, GPIO_Pin_0);
  42. //          GPIO_SetBits(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);
  43.                 GPIO_Write(GPIOB,0xfe);
  44.                 temp=GPIO_ReadInputData(GPIOB);
  45.                 temp&=0xf0;
  46.          if(temp!=0xf0)
  47.          {
  48.                 delayms(2);
  49.                 temp=GPIO_ReadInputData(GPIOB);
  50.                 temp&=0xf0;
  51.                 switch(temp)
  52.                 {
  53.                         case 0xe0:num=0x00;break;
  54.                         case 0xd0:num=0x01;break;
  55.                         case 0xb0:num=0x02;break;
  56.                         case 0x70:num=0x03;break;
  57.                         default:break;
  58.                 }
  59.          }
  60.   
  61. //        GPIO_ResetBits(GPIOB, GPIO_Pin_1);
  62. //        GPIO_SetBits(GPIOB, GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3);
  63.         GPIO_Write(GPIOB,0xfd);
  64.         temp=GPIO_ReadInputData(GPIOB);
  65.         temp&=0xf0;
  66.         if(temp!=0xf0)
  67.         {
  68.                 delayms(2);
  69.                 temp=GPIO_ReadInputData(GPIOB);
  70.                 temp&=0xf0;
  71.                 switch(temp)
  72.                 {
  73.                         case 0xe0:num=0x04;break;
  74.                         case 0xd0:num=0x05;break;
  75.                         case 0xb0:num=0x06;break;
  76.                         case 0x70:num=0x07;break;
  77.                         default:break;
  78.                 }
  79.         }

  80. //        GPIO_ResetBits(GPIOB, GPIO_Pin_2);
  81. //        GPIO_SetBits(GPIOB, GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3);
  82.         GPIO_Write(GPIOB,0xfb);
  83.         temp=GPIO_ReadInputData(GPIOB);
  84.         temp&=0xf0;
  85.         if(temp!=0xf0)
  86.         {
  87.                 delayms(2);
  88.                 temp=GPIO_ReadInputData(GPIOB);
  89.                 temp&=0xf0;
  90.                 switch(temp)
  91.                 {
  92.                         case 0xe0:num=0x08;break;
  93.                         case 0xd0:num=0x09;break;
  94.                         case 0xb0:num=0x0a;break;
  95.                         case 0x70:num=0x0b;break;
  96.                         default:break;
  97.                 }
  98.         }
  99.        
  100. //        GPIO_ResetBits(GPIOB, GPIO_Pin_3);
  101. //        GPIO_SetBits(GPIOB, GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2);
  102.         GPIO_Write(GPIOB,0xf7);
  103.         temp=GPIO_ReadInputData(GPIOB);
  104.         temp&=0xf0;
  105.         if(temp!=0xf0)
  106.         {
  107.                 delayms(2);
  108.                 temp=GPIO_ReadInputData(GPIOB);
  109.                 temp&=0xf0;
  110.                 switch(temp)
  111.                 {
  112.                         case 0xe0:num=0x0c;break;
  113.                         case 0xd0:num=0x0d;break;
  114.                         case 0xb0:num=0x0e;break;
  115.                         case 0x70:num=0x0f;break;
  116.                         default:break;
  117.                 }
  118.          }
  119.          return (num);
  120.   }
  121. }       
  122. }
復制代碼


STM32矩陣數碼顯示

STM32矩陣數碼顯示
回復

使用道具 舉報

ID:908727 發表于 2022-6-5 05:44 | 顯示全部樓層
proteus仿真包忘了發了,按鍵無反應,求幫助: dsn目錄是仿真.7z (260.64 KB, 下載次數: 109)
回復

使用道具 舉報

ID:500202 發表于 2022-6-30 23:45 | 顯示全部樓層
包括keil程序
回復

使用道具 舉報

ID:1055598 發表于 2022-12-5 19:08 | 顯示全部樓層
怎么按了沒反應
回復

使用道具 舉報

ID:685598 發表于 2022-12-6 11:11 | 顯示全部樓層
沒有注釋的程序,真的是太難看懂了。
回復

使用道具 舉報

ID:884711 發表于 2022-12-7 09:51 | 顯示全部樓層
好就好在仿真包,果斷試一把
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区日韩 | 成人三级在线播放 | 久久精品欧美一区二区三区不卡 | 激情视频网站 | 日本久久精 | 黄色一级大片在线免费看产 | 一级毛片,一级毛片 | 99这里只有精品视频 | 欧美一区久久 | 颜色网站在线观看 | 狠狠色狠狠色综合日日92 | 黄色免费观看网站 | 亚洲精品中文字幕在线观看 | 午夜影院黄 | 国产黄色麻豆视频 | 亚洲欧美日韩久久久 | 日韩精品一区二区三区视频播放 | 精产国产伦理一二三区 | 国产精品成人一区二区 | 亚洲成人福利在线观看 | 国产一区二区三区 | 欧美福利影院 | 尤物视频在线免费观看 | 精品美女视频在免费观看 | 91视频网址 | 国产a区| 亚洲高清视频在线 | 久草精品视频 | 神马福利| 日本一道本视频 | 日韩欧美国产不卡 | 天天草夜夜骑 | 久久国产精品免费一区二区三区 | 中文字幕视频网 | 国产2区 | 免费看a| 成人av片在线观看 | 日本不卡一区 | 一级欧美| 国产高清免费 | 91高清免费观看 |