找回密码
 立即注册

QQ登录

只需一步,快速开始

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

蓝桥杯按键数码管程序

[复制链接]
跳转到指定楼层
楼主
ID:295687 发表于 2018-3-22 20:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
蓝桥杯按键数码管程序
单片机源程序如下:
  1. #include <reg52.h>

  2. #define uchar unsigned char
  3. #define uint  unsigned int

  4. uchar table_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  5. uchar table_we[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80} ;

  6. uchar shi,ge;
  7. uchar temp;

  8. void delayms(uint z)
  9. {
  10.         uint i,j;
  11.         for(i=0;i<z;i++)
  12.                 for(j=0;j<110;j++);
  13. }

  14. void display()
  15. {
  16.         P2=0x00;
  17.         P0=0xff;

  18.         if(shi!=0)
  19.         {
  20.                 P0=table_du[shi];
  21.                 P2 |= 0xe0;
  22.                 P2 &= 0x1f;
  23.                 P0=table_we[6];
  24.                 P2 |= 0xc0;
  25.                 P2 &= 0x3f;
  26.                 delayms(1);
  27.         }

  28.         P0=table_du[ge];
  29.         P2 |= 0xe0;
  30.         P2 &= 0x1f;
  31.         P0=table_we[7];
  32.         P2 |= 0xc0;
  33.         P2 &= 0x3f;
  34.         delayms(1);
  35. }

  36. uchar matrix()                        //m为局部变量,但值有延续性
  37. {
  38.         uchar m;
  39.         P3=0xfe;
  40.         switch(P3)
  41.         {
  42.                 case 0x7e : m=0;break;
  43.                 case 0xbe : m=1;break;
  44.                 case 0xde : m=2;break;
  45.                 case 0xee : m=3;break;
  46.                 default :break;
  47.         }
  48.         P3=0xfd;
  49.         switch(P3)
  50.         {
  51.                 case 0x7d : m=4;break;
  52.                 case 0xbd : m=5;break;
  53.                 case 0xdd : m=6;break;
  54.                 case 0xed : m=7;break;
  55.                 default :break;
  56.         }
  57.         P3=0xfb;
  58.         switch(P3)
  59.         {
  60.                 case 0x7b : m=8;break;
  61.                 case 0xbb : m=9;break;
  62.                 case 0xdb : m=10;break;
  63.                 case 0xeb : m=11;break;
  64.                 default :break;
  65.         }
  66.         P3=0xf7;
  67.         switch(P3)
  68.         {
  69.                 case 0x77 : m=12;break;
  70.                 case 0xb7 : m=13;break;
  71.                 case 0xd7 : m=14;break;
  72.                 case 0xe7 : m=15;break;
  73.                 default :break;
  74.         }
  75.         return m;

  76. }


  77. void main()
  78. {
  79.    while(1)
  80.    {
  81.              temp=matrix();
  82.           shi=temp%100/10;
  83.           ge =temp%10;
  84.           display();
  85.    }
  86. }
复制代码

所有资料51hei提供下载:
国信长天杯电子设计专业人才大赛_程序、矩阵键盘.doc (28.5 KB, 下载次数: 7)


评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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