DIY一个小游戏机(3)

adminadmin 2025-05-31 290 阅读

我要通过数码管来显示内容,所以我要先了解数码。

数码管有共阴极和共阳极两种,如果单片机直接驱动我会选共阴极。

数码管内部由发光二极管组成,所谓的共阴极就是同一位的8个发光二极管连接在一起,下图是简化成2位数码管的原理图。

我们先将数码管分为2部分,一个是控制显示内容,一个是控制显示位。

控制方式:

先把所有的显示脚(C1-C4)先设置为1,这样我们无论怎么改变显示内容,数码管都是灭的。

接下来我们把我们想显示的内容设置上去,比如1,那就是A和B都显示设置为1。

如果我们先在第一位显示,那C1=0;如果要在第三位显示那就是C3=0,其他保持1.

如果我们要4位显示不同的内容,那我们就要采取“扫描”。比如:我们要显示6789,那先在第一位显示“6”;

等1ms后,关闭,在第二位显示“7”

等1ms后,关闭,在第三位显示“8”

等1ms后,关闭,在第四位显示“9”

等1ms后,关闭,在第一位显示“6”

..

如此循环就可以看到“6789”

#

typedefunsignedcharuint8_t;

typedefunsignedintuint16_t;

typedefunsignedlonguint32_t;

uint16_tdisplay_t;//数码管切换用,0显示第一位,1显示第二位

uint32_ttime_1MS;//1ms计数

uint8_tLEDDI1[10]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x6F};

uint8_tLEDDI2[10]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};

uint8_tLEDw[4];//显示数码管各位数值

//数码管显示共阴级

//从左到右位依次1,2,3,4

sbitLED_C1=P2^4;//位控制1

sbitLED_C2=P2^5;//位控制2

sbitLED_C3=P2^6;//位控制3

sbitLED_C4=P2^7;//位控制4

voidTimer0_Init(void)//1毫秒@11.0592MHz

{

AUXR|=0x80;//定时器时钟1T模式

TMOD=0xF0;//设置定时器模式

TL0=0xCD;//设置定时初值

TH0=0xD4;//设置定时初值

TF0=0;//清除TF0标志

TR0=1;//定时器0开始计时

ET0=1;//使能定时器0中断

EA=1;

}

voidTimer0_interrupt_handle(void)interrupt1//定时器中断处理

{

/*这部分暂时可以不用看

if((time_sys==2)||(time_sys==4))

{time_1MS++;

if(KEY1==0)

{time_1MS=time_1MS+100;

//if(time_OUT++2000)time_sys=5;

}

}

*/

if(display_t++=4)display_t=0;

switch(display_t)

{

case0:

LED_C1=1;LED_C2=1;LED_C3=1;LED_C4=1;

P1=LEDw[0];

LED_C1=0;

break;

case1:

LED_C1=1;LED_C2=1;LED_C3=1;LED_C4=1;

P1=LEDw[1];

LED_C2=0;

break;

case2:

LED_C1=1;LED_C2=1;LED_C3=1;LED_C4=1;

P1=LEDw[2];

LED_C3=0;

break;

case3:

LED_C1=1;LED_C2=1;LED_C3=1;LED_C4=1;

P1=LEDw[3];

LED_C4=0;

break;

}

}

voidmain(void)

{

//定时器初始化

Timer0_Init();

LEDw[0]=LEDDI1[6];

LEDw[1]=LEDDI1[7];

LEDw[2]=LEDDI1[8];

LEDw[3]=LEDDI1[9];

while(1)

{

/*

if(time_1MS10000)LEDw[0]=0;

elseLEDw[0]=LEDDI1[time_1MS/10000];

LEDw[1]=LEDDI1[time_1MS/1000%10];

LEDw[2]=LEDDI1[time_1MS/100%10];

LEDw[3]=LEDDI2[time_1MS/10%10];

*/

}

}

The End

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系我们会予以删除相关文章,保证您的权利。转载请注明出处

上一篇 下一篇

相关阅读