📄 dm114.c
字号:
#include <reg51.h>
sbit DIN=P1^0;
sbit CLK=P1^1;
sbit STB=P1^2;
sbit OE =P1^3;
sbit key0=P1^4;
unsigned char mode,number,p;
unsigned char flag;
unsigned char t,i0,j,k,error;
unsigned int m;
unsigned char code ANODE[7][45]={0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,
0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,
0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,
0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,
0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
};
unsigned char code ANODE1[56]={0x24,0x92,0x49,0xb6,0xdb,0x6d,0xff,0x24,0x92,0x49,0xb6,0xdb,0x6d,0xff,0x24,0x92,0x49,0xb6,0xdb,0x6d,0xff,0x24,0x92,0x49,0xb6,0xdb,0x6d,0xff,0x24,0x92,0x49,0xb6,0xdb,0x6d,0xff,0x24,0x92,0x49,0xb6,0xdb,0x6d,0xff,0x24,0x92,0x49,0xb6,0xdb,0x6d,0xff,0x24,0x92,0x49,0xb6,0xdb,0x6d,0xff};
unsigned char code ANODE2[7][45]={0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,
0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,
0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,
0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,
0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,
0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,
0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47
};
unsigned char code ANODE3[7][45]={
0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,
0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,
0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,
0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,
0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,
0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,
0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff,0x24,0x49,0x92,0x92,0x24,0x49,0x49,0x92,0x24,0xb6,0x6d,0xdb,0xdb,0xb6,0x6d,0x6d,0xdb,0xb6,0xff,0xff,0xff};
unsigned char code ANODE4[20][45]={0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xea,0x88,
0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,
0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,
0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,
0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,
0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88,0x5f,0x1d,0xf1,0xab,0x23,0x7e,0x75,0xc4,0xaf,0x8e,0xf8,0xd5,0x11,0xbf,0x3a,0xe2,0x57,0x47,0xfc,0xea,0x88};
void send(unsigned char add)
{unsigned char ADS,j;
ADS=add;
for(j=0;j<8;j++)
{
CLK=0;
DIN=ADS&0x01;
ADS=ADS>>1;
CLK=1;
}
}
void delay(unsigned int n)
{unsigned int k;
while(n--)
{for(k=0;k<250;k++)
{;}
}
}
/////////////////////////////////////////////////////
void clock_inital0() reentrant //定时器0的初始化;
{TR0=0;TH0=0x3c;TL0=0xb0;TR0=1;}
///////////////////////////////////////////////////
void clock_inital1() reentrant //定时器1的初始化;
{TR1=0;
TH1=0x00;
TL1=0x00;
TR1=1;}
//////////////////////////////////////////////////
void keynum0() //display mode
{
flag++;
mode=0;
ET1=1;
if(flag>=5) {flag=0; mode=1; ET1=0;j=0;}
}
////////////////////////////////////////
void key() //键盘子程序;
{ unsigned char keycode;
key0=1;
keycode=P1&0x10;
if(keycode!=0x10) //判断是否有键按下;
{
delay(20); //延时去抖动;
keycode=P1&0x10;
while(keycode!=0x10) //确认有键按下;
{
if(key0==0) //KEY0按下后执行子程序;
{
keynum0(); //
while(1) //等待键释放;
{ if(key0==1) break;
delay(10);
}
}
break; }
}
}
////////////////////////////////////////////////
///////////////////////////////////////////////////
main()
{
TMOD=0x11;
EA=1;
TF1=0;
TF0=0;
clock_inital1();
clock_inital0();
ET1=1;
ET0=1;
EX0=1; // INT0中断开
IT0=0; // INT0低电平触发(为1则为下降沿触发)
STB=0;
OE=0;
flag=1;
mode=0;
number=0;
p=0;
while(1)
{ if(mode==1)
{ if(error==0)
{for(i0=0;i0<45;i0++)
{send(ANODE[j][i0]);}
STB=1;
STB=0;
error=1;}
for(m=0;m<750;m++)
{
for(t=0;t<k;t++)
{ OE=0;OE=0;}
for(t=0;t<(32-k);t++)
{ OE=1;OE=1;}
}
k++;
}
}
}
/////////////////////////////////////////////////////////////////
//INT0中断 由P3.2引脚产生
void int_0() interrupt 0 using 0
{
key();
}
///////////////////////////////////////////////////////////////
void clk_int0() interrupt 1 //定时器0中断程序;
{
clock_inital0();
number++;
if(error==1)
{ if(k==32)
{ k=0;j++;if(j==7) {j=0; }
for(i0=0;i0<45;i0++)
{send(ANODE[j][i0]);}
STB=1;
STB=0;}}
}
///////////////////////////////////////////////////////////////
void clk_int1() interrupt 3
{ unsigned char i;
clock_inital1();
if(mode==0)
{switch(flag)
{
case 1: if(number>=5){ number=0;p++;}
if(p>=7) p=0;
for(i=0;i<45;i++)
{ send(ANODE2[p][i]);} STB=1;STB=0;error=0;OE=0;
break;
case 2: if(number>=4){ number=0;p++;}
if(p>=16) p=0;
for(i=0;i<45;i++)
{ send(ANODE4[p][i]);} STB=1;STB=0;error=0;OE=0;
break;
case 3: if(number>=10){ number=0;p++;}
if(p>=7) p=0;
for(i=0;i<45;i++)
{ send(ANODE3[p][i]);} STB=1;STB=0;error=0;OE=0;
break;
case 4: if(number>=7){ number=0;p++;}
if(p>=7) p=0;
for(i=0;i<45;i++)
{ send(ANODE1[p+i]);} STB=1;STB=0;error=0;OE=0;
/*
if(k==32)
{ k=0;j++;if(j==7) {j=0; }
for(i=0;i<45;i++)
{send(ANODE[j][i]);}
STB=1;
STB=0;}*/
break;
default : flag=1;break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -