找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我是自学小白,麻烦问一下,如何控制4*4矩阵键盘在阳极管上显示数字?

[复制链接]
跳转到指定楼层
楼主
ID:782115 发表于 2020-6-18 22:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我写的键盘扫描

单片机源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define ulong unsigned long
  5. #define uint unsigned int
  6. uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };
  7. uchar Digits[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  8. #define uchar unsigned char
  9.         void main()
  10.         {uchar i;
  11.                 uchar firstnum,nextnum,keynum;
  12.      while(1)
  13. { for(i=0;i<8;i++)
  14.     { P0=DSY_CODE[i];
  15.        P2=Digits[i]; } }
  16.                
  17.         
  18.                 while(1)
  19.                 {
  20.                   P1=0x0f;
  21.                         firstnum=P1;
  22.                         P1=0xf0;
  23.                         nextnum=P1;
  24.                         keynum=nextnum|firstnum;
  25.                         switch(keynum)
  26.                                 {case 0x11:P0=0x3f ;break;
  27.                                 case 0x12: P0=0x06; break;
  28.                                         case 0x14: P0=0x5b; break;
  29.                                         case 0x18:P0=0x4f ; break;
  30.                                         case 0x21: P0=0x66; break;
  31.                                         case 0x22:P0=0x6d ; break;
  32.                                         case 0x24:P0=0x7d ; break;
  33.                                         case 0x28:P0=0x07 ; break;
  34.                                         case 0x41:P0=0x7f ; break;
  35.                                         case 0x42:P0=0x67; break;
  36.                                         case 0x44:P0=0x77 ; break;
  37.                                         case 0x48:P0=0x7c ; break;
  38.                                         case 0x81:P0=0x39; break;
  39.                                         case 0x82:P0=0x5c ; break;
  40.                                         case 0x84:P0=0x79 ; break;
  41.                                         case 0x88:P0=0x71 ; break;
  42.                 }
  43.         }        
  44.         
  45.         }
复制代码
但是,在keil上验证时没反应,看看是啥问题?

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

使用道具 举报

沙发
ID:332444 发表于 2020-6-19 07:37 | 只看该作者
数码管显示需要延时才能符合眼光暂留现象,要写延时。
回复

使用道具 举报

板凳
ID:783844 发表于 2020-6-19 09:44 | 只看该作者
建议使用一个for循环。
回复

使用道具 举报

地板
ID:782419 发表于 2020-6-19 11:03 | 只看该作者
你可能更加需要一些基础的视频教程!你可能拥有一定的C语言基础,不过很多东西要自学都很费劲!并不说学不了,学不成,而是自学的时候遇到很多问题你连问都无法正确表达。入门还是需要有人带的,在网上有很多视频教程,可以先选择一种看,开发板自己看吧,可以借,可以买,因为要看到实际的效果还是需要触手可及的东西,模拟没有那种感觉,再说你自学都能写出这么长的程序确实很厉害。加油吧,刚开始学,要全部手动,避免什么复制之类的操作,因为单片机是实践性极强的东西,动手是必需的,你可以看看宋雪松的视频,51的,虽然比较早了,但可以参考一下。要有耐心的,视频不懂可以多看几遍,如果程序真是你自己写的,我想你的进度应该会很快的。但不要着急!B站上有免费的!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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