CT107D蓝桥杯动态数码管实例(4)


今天我给大家讲一下CT107D蓝桥杯数码管的显示。

  数码管的具体原理我就不多说了,因为说多了怕你们晕了,多说无益,想了解原理的可以自己BD一下,

我们之间找电路吧:


这个可以看到,我们直接控制Y7C口,向P0口送数据

     我们控制Y6C口选择使用哪个数码管,一个是8个

我们找到Y6C和Y7C就好了


这个很熟悉了吧,好了,上使用方法

P2=(P2&0x1f)|0xc0;        打开Y6

P0=0x01; 选第一个      

P2&=0x1f;  关Y6

P2=(P2&0x1f)|0xe0;        打开Y7

P0=0xf9;  给数据      

P2&=0x1f;  关Y7


这里是基本使用方式,下面我写一个完整的程序

#include “reg52.h”
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};  //数据编码
unsigned char dsbuff[]={10,10,10,10,10,10,10,10};   显示的数据
unsigned char dscom=0;
void init_smg()
{
TMOD|= x01;    定时器0工作模式2
TH0=(65536-2000)/256;  2m秒一次中断
TL0=(65536-2000)%256;
ET0=1;  开定时器中断
TR0=1;           开定时器0
EA=1;         开总中断
}
void dsplay()
{ 
P2=(P2&0x1f)|0xe0;
P0=0xff;
P2&=0x1f;
P2=(P2&0x1f)|0xc0;
P0=1<<dscom;
P2&=0x1f
P2=(P2&0x1f)|0xe0;
P0=tab[dsbuff[dscom]];
P2&=0x1f;
if(++dscom==8)dscom=0;
}
void smg_time0()interrupt 1
{
TH0=(65536-2000)/256;  2m秒一次中断
TL0=(65536-2000)%256;
dsplay();
}
void main()
{
init_smg();
dsbuff[0]=8; 第一个数码管显示8
while(1);
}




  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值