显示日期:
#include "reg52.h"
unsigned char code SMDD_duanma[18]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x80,
0xc6,0xc0,0x86,0x8e,
0xbf,0x7f};
void delay(unsigned char t)
{
while(t--);
while(t--);
}
void HC138init(unsigned char i)
{
switch(i)
{
case 4:
P2=(P2&0x1f)|0x80;
break;
case 5:
P2=(P2&0x1f)|0xa0;
break;
case 6:
P2=(P2&0x1f)|0xc0;
break;
case 7:
P2=(P2&0x1f)|0xe0;
break;
}
}
void SMG_Bit(unsigned char value,unsigned char pos)
{
HC138init(6);
P0=0x01<<pos;
HC138init(7);
P0=value;
}
void Dynamic()
{
SMG_Bit(SMDD_duanma[2],0);
delay(500);
SMG_Bit(SMDD_duanma[0],1);
delay(500);
SMG_Bit(SMDD_duanma[2],2);
delay(500);
SMG_Bit(SMDD_duanma[2],3);
delay(500);
SMG_Bit(SMDD_duanma[1],4);
delay(500);
SMG_Bit(SMDD_duanma[16],5);
delay(500);
SMG_Bit(SMDD_duanma[1],6);
delay(500);
SMG_Bit(SMDD_duanma[5],7);
delay(500);
}
void main()
{
while(1)
{
Dynamic();
}
}
例题:月份动态显示:
#include "reg52.h"
unsigned char code SMDD_duanma[18]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x80,
0xc6,0xc0,0x86,0x8e,
0xbf,0x7f};
unsigned char yue=1;
void delay(unsigned char t)
{
while(t--);
while(t--);
}
void HC138init(unsigned char i)
{
switch(i)
{
case 4:
P2=(P2&0x1f)|0x80;
break;
case 5:
P2=(P2&0x1f)|0xa0;
break;
case 6:
P2=(P2&0x1f)|0xc0;
break;
case 7:
P2=(P2&0x1f)|0xe0;
break;
}
}
void SMG_Bit(unsigned char value,unsigned char pos)
{
HC138init(6);
P0=0x01<<pos;
HC138init(7);
P0=value;
}
void Dynamic()
{
SMG_Bit(SMDD_duanma[2],0);
delay(500);
SMG_Bit(SMDD_duanma[0],1);
delay(500);
SMG_Bit(SMDD_duanma[2],2);
delay(500);
SMG_Bit(SMDD_duanma[2],3);
delay(500);
SMG_Bit(SMDD_duanma[16],4);
delay(500);
SMG_Bit(SMDD_duanma[16],5);
delay(500);
SMG_Bit(SMDD_duanma[yue/10],6);
delay(500);
SMG_Bit(SMDD_duanma[yue%10],7);
delay(500);
}
void Delay1(unsigned char t)
{
while(t--)
{
Dynamic();
}
}
void main()
{
P2=(P2&0x1f)|0xa0;
P0=0x00;
while(1)
{
Dynamic();
yue++;
if(yue>12)
{
yue=1;
}
Delay1(100);
}
}