蓝桥杯突击2:数码管

今天学习数码管:

       首先在原理图上找到数码管:

开发板有两块数码管, 由电路图可以看出, com1,com2,com3,com4控制哪个数码管点亮,a1,b1………dp1控制选择的数码管如何亮. 并且数码管是共阴极, 那么将数码管点亮为[0,1,2,3,4,5,6,7,8,9]的代码为[0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90]

        找到com1,com2,com3,com4 和a1,b1………dp1的控制端口:

 

 

和控制蜂鸣器的方法一样, 需要先用74HC02置高Y6C和Y7C来控制数码.

                                          

 

    首先选择点亮哪个数码管,要先置低74HC02的Y6口.对应译码器为110,也就是P2 = (P2&0x1F) | 0xC0;之后对P0写入数据控制数码管.

    然后控制a1,b1………dp1以选择数码管数字,置低74HC02的Y7口, 对应74HC138译码器写入111,也就是P2 = (P2&0x1F) | 0xE0; 之后对P0写入以选择数码管点亮的数字

    下面贴上数码管的代码:
 

#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int uint;



uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar discom;            //数码管选择位

sbit BUZZ=P0^6;
sbit RELAY=P0^4;

void CloseBUZZ();
void Display();

void main()
{
       CloseBUZZ();
       while (1)
       {
           Display();
       }
}


void CloseBUZZ()
{
       P2=(P2&0x1f)|0xa0;
       BUZZ=0;
       RELAY=0;
       P2&=0x1f;
}


void Display()
{
       P0=0xFF;              //首先将数码管消隐,(将单个数码管的灯管全部关闭)
       P2=(P2&0x1f)|0xe0;    
       P2&=0x1f;
      
       P0=(1<<discom);
       P2=(P2&0x1f)|0xc0;     //选择点亮哪个数码管
       P2&=0x1f;
      
       P0=table[discom];       //选择数码管点亮的数字
       P2=(P2&0x1f)|0xe0;
       P2&=0x1f;

       discom++;
       if (discom==8)
              discom=0;

}

显示效果为数码管从左向右依次显示 0,1,2,3,4,5,6,7,8,9

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值