×
嵌入式 > 其他资讯 > 详情

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

发布时间:2020-07-10 发布时间:
|

今天我给大家讲一下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<

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);

}


 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
电瓶充电器电路图