找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7420|回复: 3
收起左侧

数码管显示4×4键盘矩阵按键 proteus仿真和单片机代码

[复制链接]
ID:204443 发表于 2017-5-31 13:11 | 显示全部楼层 |阅读模式
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
仿真.png 文件夹.png

单片机代码:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define SCANPORT P1
  5. sbit spk=P3^0;
  6. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
  7.                                          0x6d,0x7d,0x07,0x7f,0x6f,
  8.                                          0x77,0x7c,0x39,0x5e,0x79,
  9.                                          0x71};
  10. uchar uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F};
  11. uchar ucKeyScan()
  12. {
  13.         uchar Temp=0;                                 
  14.         uchar ucRow=0,ucLine=0;            

  15.         for(ucLine=0;ucLine<4;ucLine++)        
  16.                 {
  17.                         SCANPORT=uca_LineScan[ucLine];                           
  18.                         Temp=SCANPORT & 0x0F;                                         
  19.                         if(Temp!=0x0F)                 
  20.                                 {                                                                        
  21.                                 switch(Temp)
  22.                                         {
  23.                                         case 0x0E: ucRow=10;break;                 
  24.                                         case 0x0D: ucRow=20;break;
  25.                                         case 0x0B: ucRow=30;break;
  26.                                         case 0x07: ucRow=40;break;
  27.                                         default:   ucRow=50;break;
  28.                                         }
  29.                                 break;
  30.                                 }
  31.                 }

  32.         SCANPORT=0x0F;                                          
  33.         return ucRow+ucLine+1;                        
  34. }
  35. void vKeyProcess(unsigned char ucKeyCode)
  36. {
  37.                
  38.         switch(ucKeyCode)
  39.                 {
  40.                 case 11:P0=table[0];spk=1;break;                                                          //'7'
  41.                 case 12:P0=table[1];spk=1;break;                                                          //'8'
  42.                 case 13:P0=table[2];spk=1;break;
  43.                 case 14:P0=table[3];spk=1;break;
  44.                                                          
  45.                 case 21:P0=table[4];spk=1;break;                                                          //'4'
  46.                 case 22:P0=table[5];spk=1;break;                                                          //'5'
  47.                 case 23:P0=table[6];spk=1;break;
  48.                 case 24:P0=table[7];spk=1;break;
  49.                                                   
  50.                 case 31:P0=table[8];spk=1;break;                                                          //'1'
  51.                 case 32:P0=table[9];spk=1;break;                                                          //'2'
  52.                 case 33:P0=table[10];spk=1;break;
  53.                 case 34:P0=table[11];spk=1;break;

  54.                 case 41:P0=table[12];spk=1;break;                                  //'3'
  55.                 case 42:P0=table[13];spk=1;break;
  56.                 case 43:P0=table[14];spk=1;break;                                                  //'0'
  57.                 case 44:P0=table[15];spk=1;break;                                                          //'+'

  58.                 default:break;
  59.                 }
  60. }
  61. void main()
  62. {
  63.         spk=0;
  64.         P0=0;
  65.         
  66.         while(1)
  67.         {
  68.                 vKeyProcess(ucKeyScan());
  69.                 spk=0;
  70.         }
  71. }
复制代码
全部资料下载地址:
数码管显示4×4键盘矩阵按键.rar (57.22 KB, 下载次数: 64)
回复

使用道具 举报

ID:161933 发表于 2017-5-31 21:49 | 显示全部楼层
数码管显示4×4键盘矩阵按键 proteus仿真和单片机代码
回复

使用道具 举报

ID:304347 发表于 2018-4-9 12:40 | 显示全部楼层
为啥运行不出来?proteus图有问题么
回复

使用道具 举报

ID:332431 发表于 2018-5-17 20:56 | 显示全部楼层
这个proteus是不是不完全
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表