æç´æ¥æ¿ä¸ä¸ªç°æçä¾åå§ãè¿ä¸ªæ¯ç¨å®æ¶å¨ä¸æçï¼ä½ å¯ä»¥æ¹æå¤é¨ä¸æãè¿æ¯8ä½çæ°ç 管ï¼å¯¹4ä½ç¨å ä¿®æ¹å°±è¡äºã
#include <reg52.h> //å
æ¬ä¸ä¸ª52æ åå
æ ¸ç头æ件
#include<intrins.h>
/****************************声æå½æ°*****************************/
void x8led(unsigned long ddd);
void delay882us(void);
/*****************************å®ä¹IO******************************/
sbit P20=P2^0;
sbit P21=P2^1;
sbit S16=P3^0;
sbit S15=P3^1;
sbit S14=P3^2;
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
bit f=0;//ä½åé
/***************************å®æ¶å¨2ä¸æ**************************/
timer2() interrupt 5
{
static unsigned char t;
TF2=0;
t++;
if(t==30) //T2çé¢ç½®å¼0x1000ï¼æº¢åº30次就æ¯1ç§é,æ¶æ¯22118400HZ
{
t=0;
f=1;//æ¯æ¬¡é¿æ¶é´ç溢åºï¼å°±ç½®ä¸ä¸ªæ è®°ï¼ä»¥ä¾¿ä¸»ç¨åºå¤ç
}
}
/*****************************æ°ç 管æ«æ**************************/
void x8led(unsigned long ddd)
{
unsigned char q,r=0;
unsigned char l[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};
//0-9çå段ç
unsigned char xx[8]={0,0,0,0,0,0,0,0};
unsigned char y[8]={0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1};
xx[0]=ddd%10;
xx[2]=ddd/10%10;
xx[1]=ddd/100%10;
xx[3]=ddd/1000%10;
xx[4]=ddd/10000%10;
xx[6]=ddd/100000%10;
xx[5]=ddd/1000000%10;
xx[7]=ddd/10000000;//æ±åºå
«ä½æ°ï¼åå«æ¾å¨å
«ä¸ªåéä¸
for(q=0;q<8;) //循ç¯æ«æ
{
q++;
r++;
if(r==8)r=0;
P1=y[r];
P21=1;
delay882us();
P21=0;
P20=1;
P1=l[xx[r]];
delay882us();
P1=0xff;
P20=0;
}
}
/*******************************延æ¶882us*************************/
void delay882us(void)
{
unsigned char i;
for(i=0;i<255;i++)
{
_nop_();
}
}
/*****************************主ç¨åº******************************/
void main(void)
{
unsigned long a=0;
RCAP2H =0x10; //èµT2çé¢ç½®å¼0x1000ï¼æº¢åº30次就æ¯1ç§é
RCAP2L =0x00;
TR2=1; //å¯å¨å®æ¶å¨
ET2=1; //æå¼å®æ¶å¨2ä¸æ
EA=1; //æå¼æ»ä¸æ
while(1)
{
if(f)//åç°æ è®°è¿å
¥å¤ç
{
f=0;//æ¸
é¤æ è®°
a++;
if(a>99999999)a=0;
}
x8led(a);//å°açå¼éå°æ°ç 管æ¾ç¤º
}
}æ¥èªï¼æ±å©å¾å°çåç
温馨提示:答案为网友推荐,仅供参考