单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

要求如果按下两个按钮单片机控制红灯亮数码管显示FF要怎么搞啊

  [复制链接]
跳转到指定楼层
楼主
2613 发表于 2019-5-22 09:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
要求如果按下两个按钮红灯亮数码管显示FF要怎么搞啊
  1. #include <reg51.h>
  2. char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  3. char key_buf[]={0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb,0xe7,0xd7,0xb7};
  4. sbit P3_0=P3^0;
  5. sbit P3_1=P3^1;
  6. void getKey() interrupt 0
  7. {
  8. char key_scan[]={0xef,0xdf,0xbf,0x7f};
  9. char i=0,j=0,c=0;
  10.   int a=0;
  11. for(i=0;i<4;i++)
  12. {
  13.   P2=key_scan[i];
  14.   for(j=0;j<12;j++)
  15.   {
  16.    if(key_buf[j]==P2)
  17.    {
  18.     P3_0=0;
  19.     if(j<10)
  20.     {
  21.       P0=led_mod[0];
  22.       P1=led_mod[j];
  23.     }
  24.     else if(j>=10)
  25.     {
  26.       P0=led_mod[j/10];
  27.       P1=led_mod[j%10];
  28.     }
  29.     a++;
  30.     break;
  31.    }
  32.   }
  33.    if(a>1)
  34.     {
  35.      P3_0=1;
  36.      P3_1=0;
  37.      P0=0x71;
  38.      P1=0x71;
  39.      break;
  40.          }
  41. }
  42. a=0;
  43. P2=0x0f;
  44. }
  45. void main(void)
  46. {
  47. IT0=1;
  48. EX0=1;
  49. EA=1;
  50. P2=0x0f;
  51. P0=0x00;
  52. P1=0x00;
  53. P3_0=1;
  54. P3_1=1;
  55. while(1)
  56. {
  57.   if(P2==0x0f)P3_0=1;
  58.   if(P2==0x0f)P3_1=1;
  59.   }
  60. }
复制代码

批注 2019-05-22 093910.png (257.46 KB, 下载次数: 14)

批注 2019-05-22 093910.png

批注 2019-05-22 093910.png (257.46 KB, 下载次数: 12)

批注 2019-05-22 093910.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
suncat0504 发表于 2019-5-28 21:47 | 只看该作者
让数码管显示F,设置显示的笔段值为0x71(共阴数码管的话),你的代码中没有看到有这个笔段值对应,只看到0-9的,char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};,表示的是0-9的笔段对应,你最好加上A,b,C,d,E,F对应的。
回复

使用道具 举报

板凳
suncat0504 发表于 2019-5-28 21:49 | 只看该作者
我的这个;unsigned char code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x10};设置的是0-9,A,b,C,d,E,F,-,_这几个字符的
回复

使用道具 举报

地板
 楼主| 2613 发表于 2019-5-29 08:12 来自手机 | 只看该作者
suncat0504 发表于 2019-5-28 21:47
让数码管显示F,设置显示的笔段值为0x71(共阴数码管的话),你的代码中没有看到有这个笔段值对应,只看到0 ...

在那个if语句里面,我是单独赋值的没有加到数组里面
回复

使用道具 举报

5#
ffggg 发表于 2019-6-7 22:46 | 只看该作者
让数码管显示F,设置显示的笔段值为0x71(共阴数码管的话),你的代码中没有看到有这个笔段值对应,只看到0-9的,char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};,表示的是0-9的笔段对应,你最好加上A,b,C,d,E,F对应的。
回复

使用道具 举报

6#
durantyin 发表于 2019-6-29 14:13 | 只看该作者
让数码管显示F,设置显示的笔段值为0x71(共阴数码管的话),你的代码中没有看到有这个笔段值对应,只看到0-9的,char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};,表示的是0-9的笔段对应,你最好加上A,b,C,d,E,F对应的。
回复

使用道具 举报

7#
matthewroy 发表于 2019-7-2 16:15 | 只看该作者
逻辑分析一下
回复

使用道具 举报

8#
无效楼层,该帖已经被删除
9#
无效楼层,该帖已经被删除
10#
1194783151 发表于 2019-7-12 12:31 | 只看该作者
可以用4*4的16位矩阵按键试试,F对应的数码管是0x71,0-F有16位,要是需要每个按键对应显示的话可以接矩阵按键试试
回复

使用道具 举报

11#
无效楼层,该帖已经被删除
12#
fengchaoyun 发表于 2019-7-15 18:30
!!!厉害

13#
小萧萧 发表于 2019-7-17 11:12 | 只看该作者
用逻辑分析仪看一下
回复

使用道具 举报

14#
鹏博士PBs 发表于 2019-7-23 11:33 | 只看该作者
数码管是采用段选(A_G)和位选(4位)
回复

使用道具 举报

15#
gaoyuaniloveyou 发表于 2019-7-24 09:03 | 只看该作者
让数码管显示F,设置显示的段选值为0x71(共阴数码管的话),你的代码中没有这个代码,只看到0-9的,char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};表示的是0-9的段选对应,你最好加上A,b,C,d,E,F对应的。
回复

使用道具 举报

16#
az1159632229 发表于 2019-7-25 20:59 | 只看该作者
你这仿真 不加外部晶振的?
回复

使用道具 举报

17#
anyurui 发表于 2019-7-31 14:23 | 只看该作者
有PDF的数字电路和模拟电路么
回复

使用道具 举报

18#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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