找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这单片机程序 数码管显示不完全

[复制链接]
跳转到指定楼层
楼主
ID:902125 发表于 2021-4-7 21:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;


sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;


#define  GPIO_KEY P1
#define  GPIO_DIG P0
#define  NEGATIVE_SIGH_SUB=10
u8 KeyValue;
u8 code smgduan[]={1,2,3,0,
                         4,5,6,0,
                         7,8,9,0,
                         0,0,0,0};
u8 code smgduan1[]={1,2,3,0x2f-0x30,
                         4,5,6,0x2a-0x30,
                         7,8,9,0x2d-0x30,
                         0x01-0x30,0,0x3d-0x30,0x2b-0x30};


void delay(u16 i)
{
     while(i--);
}
void KeyDown()
{
    u8 a=0;
    GPIO_KEY=0x0f;
                if( GPIO_KEY!=0x0f)
                {
                    delay(1000);
                                if( GPIO_KEY!=0x0f)
                                {
                                    GPIO_KEY=0x0f;
                                                switch(GPIO_KEY)
                                                {
                                                case(0x07):  KeyValue=0;break;
                                                case(0x0b):  KeyValue=1;break;
                                                case(0x0d):  KeyValue=2;break;
                                                case(0x0e):  KeyValue=3;break;
                                                }
                                                GPIO_KEY=0xf0;
                                                switch(GPIO_KEY)
                                                {
                                                case(0x70):  KeyValue=KeyValue;break;
                                                case(0xb0):  KeyValue=KeyValue+4;break;
                                                case(0xd0):  KeyValue=KeyValue+8;break;
                                                case(0xe0):  KeyValue=KeyValue+12;break;
                                                }
                                                while((a<50)&&(        GPIO_KEY!=0xf0))
                                                {
                                                     delay(1000);
                                                                 a++;
                                                }
                                }
                }
}
                                                                        
void main()
{
    LSA=0;
                LSB=0;
                LSC=0;
                while(1)
                {
                    KeyDown();
                                GPIO_DIG=smgduan[KeyValue];
                }
}


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

使用道具 举报

沙发
ID:213173 发表于 2021-4-8 06:37 | 只看该作者
  1. //顺序共阴极数码管段码表,段码a-h顺序接PX0-PX7
  2. unsigned char code table[]={//共阴数码管段码"0~f-."
  3.                 0x3f,0x06,0x5b,0x4f,
  4.                 0x66,0x6d,0x7d,0x07,
  5.                 0x7f,0x6f,0x77,0x7c,
  6.                 0x39,0x5e,0x79,0x71,0x40,0x80};

  7. //反序共阴极数码管段码表,段码a-h顺序接PX7-PX0
  8. unsigned char code Table[]={//共阴数码管段码"0~f-."
  9.                 0xFC,0x60,0xDA,0xF2,
  10.                 0x66,0xB6,0xBE,0xE0,
  11.                 0xFE,0xF6,0xEE,0x3E,
  12.                 0x9C,0x7A,0x9E,0x8E,0x02,0x01};

  13. //顺序共阳极数码管段码表,段码a-h顺序接PX0-PX7
  14. unsigned char code table[]={//共阳数码管段码"0~f-."
  15.                 0xc0,0xf9,0xa4,0xb0,
  16.                 0x99,0x92,0x82,0xf8,
  17.                 0x80,0x90,0x88,0x83,
  18.                 0xc6,0xa1,0x86,0x8e,0xbf,0x7f};

  19. //反序共阳极数码管段码表,段码a-h顺序接PX7-PX0
  20. unsigned char code Table[]={//共阴数码管段码"0~f-."
  21.                 0x03,0x9f,0x25,0x0d,
  22.                 0x99,0x49,0x41,0x1f,
  23.                 0x01,0x09,0x11,0xc1,
  24.                 0x63,0x85,0x61,0x71,0xfd,0xfe};
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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