找回密码
 立即注册

QQ登录

只需一步,快速开始

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

模块化的单片机矩阵按键扫描及显示程序与Proteus仿真图

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg51.h>
  2. #include "delay.h"
  3. #include "seg.h"
  4. #include "key.h"

  5. main()
  6. {
  7.     while(1)
  8.     {
  9.         seg(1, (key() % 10));
  10.         seg(2, (key() / 10));
  11.     }
  12. }
复制代码
  1. #include <reg51.h>
  2. #include "delay.h"
  3. unsigned char SEG[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
  4. void seg(unsigned char i,unsigned char z)
  5. {
  6. switch (i)
  7. {
  8.         case 1:P3=0x01;break;
  9.         case 2:P3=0x02;break;
  10. }
  11. P1=SEG[z];
  12. //delay(2);
  13. //P1=0xff;
  14. }
复制代码
  1. #include <reg51.h>
  2. #include "delay.h"
  3. sbit key1=P2^4;
  4. sbit key2=P2^5;
  5. sbit key3=P2^6;
  6. sbit key4=P2^7;

  7. int key()
  8. {
  9. unsigned char kk,i;
  10. for(i=0;i<4;i++)
  11. {
  12. P2=~(0x01<<i);
  13. delay(2);
  14. if(key1==0){delay(2);while(key1==0);delay(2);kk=1+i*4;}
  15. if(key2==0){delay(2);while(key2==0);delay(2);kk=2+i*4;}
  16. if(key3==0){delay(2);while(key3==0);delay(2);kk=3+i*4;}
  17. if(key4==0){delay(2);while(key4==0);delay(2);kk=4+i*4;}
  18. }
  19. return kk;
  20. }
复制代码

Keil代码与Proteus8.13仿真下载:
8x8按键扫描.zip (72.07 KB, 下载次数: 12)

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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