单片机流水灯选择器程序

时间:2026-01-18

单片机流水灯选择器程序

#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuint

unsignedint

sbitbutton=P3^2;

ucharkey_l,key_h,key,i=0,flag=0;Unsigned

char

sum_du[9]={0x06,0x5b,0xcf,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示控制

unsigned

char

lamp1[10]={0xa6,0x59,0xd9,0x26,0x99,0x88,0xa7,0x7f,0x97,0xa7};

unsigned

char

lamp2[10]={0x77,0x88,0x39,0xd6,0x66,0x97,0x7d,0x07,0x06,0x39};

unsigned

char

lamp3[10]={0x3b,0x7b,0x54,0xcf,0x66,0x9d,0x73,0x7c,0x83,0x96};

//------------------延迟1ms----------------//voiddelay(uintz){

uintx,y;for(x=z;x>0;x--)for(y=123;y>0;y--);}

//--按下按键1时对数码管及LED的显示控制--//

voidplay1(){while(1)

unsigned

char

lamp4[10]={0x99,0x66,0x93,0xe3,0xec,0xfb,0x7d,0x07,0x7f,0x67};

unsigned

char

lamp5[10]={0xe5,0x46,0xbb,0xde,0x66,0x99,0x7d,0xf5,0x9b,0x75};//闪烁方式控制

unsigned

char

lamp6[10]={0x9b,0x5b,0x66,0x6d,0x7d,0x7b,0x67,0x39,0x5e,0x71};

unsigned

char

lamp7[10]={0xb6,0x71,0xcf,0x6d,0x7d,0xdb,0x98,0x7c,0x39,0x5e};

unsigned

char

lamp8[10]={0xac,0x5b,0xd6,0x7d,0xb7,0x7f,0xe7,0x67,0x39,0x71};

unsigned

char

lamp9[10]={0x6b,0x6b,0x96,0x79,0xba,0x7f,0xa7,0xc5,0x39,0xc9};

{

P0=sum_du[0];

//数码管显示1

for(i=0;i<10;i++){

P2=lamp1[i];

//P2口读取数据

delay(800);

//

灯显示0.8s

}

}

}

//--按下按键2时对数码管及LED的显示控制--//voidplay2()

{

while(1){

P0=sum_du[1];

//--按下按键3时对数码管及LED的显示控制--//

voidplay3(){

while(1){

P0=sum_du[2];for(i=0;i<10;i++)

{

P2=lamp3[i];delay(800);}

}}

//--按下按键4时对数码管及LED的显示控制--//

voidplay4(){

while(1){

P0=sum_du[3];for(i=0;i<10;i++)

{

}

}}

}}

}

for(i=0;i<10;i++){

P2=lamp2[i];delay(800);}

P2=lamp4[i];delay(800);}

//--按下按键5时对数码管及LED的显示控制--//

voidplay5(){

while(1){

P0=sum_du[4];for(i=0;i<10;i++){

P2=lamp5[i];delay(800);}

//--按下按键6时对数码管及LED的显示控制--//

voidplay6(){

while(1){

P0=sum_du[5];for(i=0;i<10;i++){

P2=lamp6[i];delay(800);}}}

//--按下按键7时对数码管及LED的显示控制--//

voidplay7(){

while(1){

P0=sum_du[6];for(i=0;i<10;i++){

P2=lamp7[i];delay(800);}{

P0=sum_du[8];for(i=0;i<10;i++){

P2=lamp9[i];

//-------------主函数-------------voidmain()

P2=0x00;while(1)

{}}}

}

//--按下按键8时对数码管及LED的显示控制--//

voidplay8(){while(1)

{

P0=sum_du[7];for(i=0;i<10;i++){

P2=lamp8[i];delay(800);}}

//按下按键9时对数码管及LED的显示控制//

voidplay9(){

while(1)

delay(800);}}

P0=0x3f;

{

P1=0xf0;//给P1口高四位赋

值1,低四位赋值0

key_l=P1;

//按键读取

//行值高四位赋值0

key_h=key_h&0x0f;

key_l=key_l&0xf0;

if(key_l!=0xf0)//有按键按下时{

delay(20);if(key_l!=0xf0)

{

key_l=P1&0xf0;

再次读取按键值

key_l=key_l|0x0f;

//读取列值

P1=key_l;

给P1口低四位赋值1

key_h=P1;

//读取行值

case0xeb:play7();break;case0xdb:play8();break;case0xbb:play9();break;

}

}

}

////

}

switch(key)

{

//消抖

//得出按键值

}

//列值低四位赋值0

key_l=key_l&0xf0;

key=key_h+key_l;

//指定按键处理事件

case0xee:play1();break;case0xde:play2();break;case0xbe:play3();break;case0xed:play4();break;case0xdd:play5();break;case0xbd:play6();break;

…… 此处隐藏:658字,全部文档内容请下载后查看。喜欢就下载吧 ……
单片机流水灯选择器程序.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219