找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3929|回复: 0
收起左侧

简易的4X4矩阵式键盘 单片机程序+Proteus仿真

[复制链接]
ID:657799 发表于 2019-12-6 20:59 | 显示全部楼层 |阅读模式

注意:共阳极的七段数码管

注意:共阳极的七段数码管
注意:上图和c文件均为共阳极的七段数码管

单片机源程序如下:
  1. #include<reg51.h>
  2. sbit P24=P2^4;
  3. sbit P25=P2^5;
  4. sbit P26=P2^6;
  5. sbit P27=P2^7;
  6. unsigned char code Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
  7. unsigned char keyval;
  8. void led_delay(void)
  9. {
  10. unsigned int j;
  11. for(j=0;j<200;j++)
  12. ;
  13. }
  14. void display(unsigned char k)
  15. {
  16. P0=Tab[k/1];
  17. led_delay();
  18. }
  19. void delay30ms(void)
  20. {
  21. unsigned char i,j;
  22. for(i=0;i<100;i++)
  23. for(j=0;j<100;j++)
  24. ;
  25. }
  26. void main(void)
  27. {
  28. EA=1;
  29. ET0=1;
  30. TMOD=0x01;
  31. TH0=(65536-500)/256;
  32. TL0=(65536-500)%256;
  33. TR0=1;
  34. keyval=0x00;
  35. while(1)
  36. {
  37. display(keyval);
  38. }
  39. }
  40. void time0_interserve(void) interrupt 1 using 1
  41. {
  42. TR0=0;
  43. P2=0xf0;
  44. if((P2&0xf0)!=0xf0)
  45. delay30ms();
  46. if((P2&0xf0)!=0xf0)
  47. {
  48. P2=0xfe;
  49. if(P24==0)
  50. keyval=0;
  51. if(P25==0)
  52. keyval=1;
  53. if(P26==0)
  54. keyval=2;
  55. if(P27==0)
  56. keyval=3;
  57. P2=0xfd;
  58. if(P24==0)
  59. keyval=4;
  60. if(P25==0)
  61. keyval=5;
  62. if(P26==0)
  63. keyval=6;
  64. if(P27==0)
  65. keyval=7;
  66. P2=0xfb;
  67. if(P24==0)
  68. keyval=8;
  69. if(P25==0)
  70. keyval=9;
  71. if(P26==0)
  72. keyval=10;
  73. if(P27==0)
  74. keyval=11;
  75. P2=0xf7;
  76. if(P24==0)
  77. keyval=12;
  78. if(P25==0)
  79. keyval=13;
  80. if(P26==0)
  81. keyval=14;
  82. if(P27==0)
  83. keyval=15;
  84. }
  85. TR0=1;
  86. TH0=(65536-500)/256;
  87. TL0=(65536-500)%256;
  88. }
复制代码

全部资料51hei下载地址:
4x4矩阵式键盘.zip (16.94 KB, 下载次数: 41)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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