工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->综合电路图->消费电子电路图->流水灯电路(含源程序代码)

流水灯电路(含源程序代码)

作者:dolphin时间:2011-07-18

流水灯电路(含源程序代码)

其实现程序:

#i nclude
unsigned char RunMode;
//**********************************System Fuction*************************************************
void Delay1ms(unsigned int count)

unsigned int i,j;
for(i=0;ifor(j=0;j120;j++);

unsigned char code LEDDisplayCode[] = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,//0~7
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF;

void Display(unsigned char Value)

P3 = LEDDisplayCode[Value];

void LEDFlash(unsigned char Count)

unsigned char i;
bit Flag;
for(i = 0; i
Flag = !Flag;
if(Flag)
Display(RunMode);
else
Display(0x10);
Delay1ms(100);

Display(RunMode);

unsigned char GetKey(void)

unsigned char KeyTemp,CheckValue,Key = 0x00;
CheckValue = P2&0x32;
if(CheckValue==0x32)
return 0x00;

Delay1ms(10);
KeyTemp = P2&0x32;
if(KeyTemp==CheckValue)
return 0x00

if(!(CheckValue&0x02))
Key|=0x01;
if(!(CheckValue&0x10))
Key|=0x02;
if(!(CheckValue&0x20))
Key|=0x04;
return Key;

unsigned int TimerCount,SystemSpeed,SystemSpeedIndex;
void InitialTimer2(void)

T2CON = 0x00;//16 Bit Auto-Reload Mode
TH2 = RCAP2H = 0xFC; //重装值,初始值TL2 = RCAP2L = 0x18;
ET2=1;//定时器 2 中断允许
TR2 = 1;//定时器 2 启动
EA=1;

unsigned int code SpeedCode[]= 1, 2, 3, 5, 8, 10, 14, 17, 20, 30,
40, 50, 60, 70, 80, 90, 100, 120, 140, 160,
180, 200, 300, 400, 500, 600, 700, 800, 900,1000;//30
void SetSpeed(unsigned char Speed)

SystemSpeed =SpeedCode[Speed];

void LEDShow(unsigned int LEDStatus)

P1 = ~(LEDStatus&0x00FF);
P0 = ~((LEDStatus8)&0x00FF);

void InitialCPU(void)

RunMode = 0x00;
TimerCount = 0;
SystemSpeedIndex = 10;

P1 = 0x00;
P0 = 0x00;
P2 = 0xFF;
P3 = 0x00;
Delay1ms(500);
P1 = 0xFF;
P0 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
SetSpeed(SystemSpeedIndex);
Display(RunMode);

//Mode 0
unsigned int LEDIndex = 0;
bit LEDDirection = 1,LEDFlag = 1;
void Mode_0(void)

LEDShow(0x0001LEDIndex = (LEDIndex+1)%16;

//Mode 1
void Mode_1(void)

LEDShow(0x8000LEDIndex);
LEDIndex = (LEDIndex+1)%16;

//Mode 2
void Mode_2(void)

if(LEDDirection)
LEDShow(0x0001else
LEDShow(0x8000LEDIndex);
if(LEDIndex==15)
LEDDirection = !LEDDirection;


关键词: 流水 源程序 代码

评论

技术专区