|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 西北望射天狼 于 2011-11-24 10:08 编辑
#include <reg52.h>
#define led_f_t 60000
sbit DS=P1^5; //数码管位选的时候用的
sbit SHCP=P1^6;
sbit STCP=P1^7;
static int i;
unsigned char code SEG_DaTa []= {0xC0,/*0*/
0xF9,/*1*/
0xA4,/*2*/
0xB0,/*3*/
0x99,/*4*/
0x92,/*5*/
0x82,/*6*/
0xF8,/*7*/
0x80,/*8*/
0x90,/*9*/ };
unsigned char code SEG_Addr []={
0x80, /*数码管第1个位置*/
0x40, /*数码管第2个位置*/
0x20, /*数码管第3个位置*/
0x10, /*数码管第4个位置*/
0x08, /*数码管第5个位置*/
0x04, /*数码管第6个位置*/
0x02, /*数码管第7个位置*/
0x01, /*数码管第8个位置*/
};
void delay(unsigned int);
void send595onebyte (unsigned char dat);
void main ()
{
send595onebyte(0xff);/*打开全部数码管*/
for (i=0;i<8;i++) /*显示A到H段*/
{P0=~(0x01<<i);
delay(led_f_t);
delay(led_f_t);
delay(led_f_t);}
/*8个数码管,逐个显示1到8*/
while(1)
{
/*显示1到8*/
for(i=0;i<8;i++)
{ P0=SEG_DaTa [i + 1];
send595onebyte(SEG_Addr );
delay(500);
send595onebyte(0x00);/*消影*/
} }
}
void send595onebyte(unsigned char dat)
{for(i=0;i<8;i++)
{DS=((dat>>i)&0x01); SHCP=0;
SHCP=1; }
STCP=0;
STCP=1;}
void delay(unsigned int c)
{for(;c>0;c--);}着色部分为什么只显示一次? |
|