基于计算机控制的花样流水灯,电脑上位机控制单片机流水灯花样的变化

#include

#include                                 //该库函数中包含了下面程序中要用到的_crol_()函数

#define uint unsigned int

#define uchar unsigned char

uchar flag,d;

const unsigned char design[77]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,// 左移

0x7F,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,//右移

0xFE,0xFF, 0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0, //逐渐点亮

0xFE,0xFF, 0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0, //逐渐点亮

0xE7,0xDB,0xBD,0x7E,0xFF ,//从中间到两边

0xE7,0xDB,0xBD,0x7E,0xFF,//从中间到两边

0x7F,0x7F,0xDF,0xDF,0xf7,0xf7,0xfd,0xfd,0x0,0x0,

0xbf,0xbf,0xef,0xef,0xfb,0xfb,0xfe,0xfe,0x0,0x0,

0x3f,0xcf,0xfc,0xf3,

0x1f,0x8f,0xc7,0xe3,0xf1,};

void delayms()            // 延时子程序

{

uint i;

for(i = 0; i < 20000; i++);

}

void main()

{

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;

TR1=1;

REN=1;

SM0=0;

SM1=1;

EA=1;

ES=1;

while(1)

{           if(flag==1)

{         ES=0;

flag=0;

SBUF=d;

while(!TI);

TI=0;

ES=1;

}

}

}

void ckzd() interrupt 4

{ uchar b,LED,c, i;         uint a;

uchar LED1=0XFE,LED2=0XFD,LED3=0XFB,LED4=0XF7,LED5=0XEF,LED6=0XDF,LED7=0xbf,LED8=0X7F;

RI=0;

b=SBUF;

d=SBUF;

flag=1;

switch( b ) {

case 'a':

P1=P1&LED1;break;

case 'A':                        //led1

P1=P1|(~LED1);break;

case 'b':

P1=P1&LED2;break;

case 'B':                         //led2

P1=P1|(~LED2);break;

case 'c':

P1=P1&LED3;break;

case'C':                        //led3

P1=P1|(~LED3); break;

case'd':

P1=P1&LED4;break;

case'D':                   //led4

P1=P1|(~LED4);break;

case 'e':

P1=P1&LED5; break;

case'E':

//led5

P1=P1|(~LED5); break;

case 'f':

P1=P1&LED6;break;

case'F':

P1=P1|(~LED6);break;         //led6

case 'g':

P1=P1&LED7; break;

case'G':

P1=P1|(~LED7);break; //led7

case 'h':

P1=P1&LED8;break;

case'H':

P1=P1|(~LED8);break;         //led8

case '1':

LED = 0x7f;

P1 = P1&LED;

for(i=0;i<8;i++)

{

LED = _crol_(LED,1);//循环左移1位,点亮下一个LED,_crol_()是库函数左移

P1 = LED;

delayms();//延时

}        ;

LED = 0x7f;

P1 = P1&LED;

for(i=0;i<8;i++)

{

LED = _crol_(LED,1);//循环左移1位,点亮下一个LED,_crol_()是库函数左移

P1 = LED;

delayms();//延时

}        ;

P1=0xff;

break;

case '2':

LED = 0xFE;

P1 =P1& LED;

for(i=0;i<8;i++)

{

LED = _cror_(LED,1);//循环右移1位,点亮下一个LED,_crol_()是库函数左移

P1 = LED;

delayms();//延时

}        ;

LED = 0xFE;

P1 =P1& LED;

for(i=0;i<8;i++)

{

LED = _cror_(LED,1);//循环右移1位,点亮下一个LED,_crol_()是库函数左移

P1 = LED;

delayms();//延时

}        ;

P1=0xff;

break;

case '3':

for (c=0; c<77; c++)

{

for(a=0; a<30000; a++); //延时一段时间

P1 = design[c]; //读已定义的花样数据并写花样数据到 P0 口

}

default:

P1=0xff;

break;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值