找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3187|回复: 0
打印 上一主题 下一主题
收起左侧

数码管显示+矩阵按键的单片机源码与电路图

[复制链接]
跳转到指定楼层
楼主
这是我先前编写的数码管显示+矩阵按键程序:矩阵按键:按下4*4矩阵按键分别代表0F;独立按键K3为清屏按键,按下后数码内容清空。
电路原理图如下:


单片机源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char

  4. sbit k3=P3^5;
  5. uchar k;
  6. uchar  duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
  7.                    0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e} ;

  8. void delays(s)
  9. {
  10.         int i,j;
  11.         for(i=s;i>0;i--)
  12.         for(j=120;j>0;j--);
  13. }
  14. void keypros()
  15.   {
  16.         uchar a,b;
  17.         P1=0xf0;
  18.         delays(10) ;
  19.         a=P1;
  20.         P1=0x0f;
  21.         delays(10);
  22.         b=P1;
  23.         a=a+b;

  24.         switch(a)
  25.           {
  26.                 case 0x7e:k=0;break;
  27.                 case 0xbe:k=1;break;
  28.                 case 0xde:k=2;break;
  29.                 case 0xee:k=3;break;
  30.                
  31.                 case 0x7d:k=4;break;
  32.                 case 0xbd:k=5;break;
  33.                 case 0xdd:k=6;break;
  34.                 case 0xed:k=7;break;
  35.         
  36.                 case 0x7b:k=8;break;
  37.                 case 0xbb:k=9;break;
  38.                 case 0xdb:k=10;break;
  39.                 case 0xeb:k=11;break;
  40.                         
  41.                 case 0x77:k=12;break;
  42.                 case 0xb7:k=13;break;
  43.                 case 0xd7:k=14;break;
  44.                 case 0xe7:k=15;break;                                
  45.           }
  46. }

  47. void main()
  48. {
  49.         P2=0x00;
  50.         while(1)
  51.         {
  52.                 if(k3==0)
  53.                 {
  54.                          delays(10);
  55.                         if(k3==0)
  56.                         {
  57.                                 k=0xff;
  58.                         }
  59.                 }

  60.                 keypros();
  61.                 if(k!=0xff)
  62.                 {
  63.                         P0=duan[k];
  64.                 }
  65.                  else if(k==0xff)
  66.                  {
  67.                          P0=k;
  68.                  }
  69.   }

  70. }



复制代码

所有资料51hei提供下载:
实验三.zip (17.46 KB, 下载次数: 17)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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