#include<reg51.h> //包含单片机头文件
#define uint unsigned int
#define uchar unsigned char
#define DataPort P0 //定义P0为数据输出端口
#define TIME 30 //设定流水灯每个状态的间隙时间
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit k8=P1^7;
uchar code distable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//共阳数码管
/************us级延时程序*************/
void Delayus2x(uint n)
{ while(--n); }
/***********ms级延时程序*************/
void Delayms(uint n)
{ while(--n)
{Delayus2x(245);Delayus2x(245);} }
/********************五个数组分别对应五种不同的流水灯******************/
uchar DB1[15]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar DB2[15]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
uchar DB3[15]={0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7};
uchar DB4[36]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7e,0x7d,0x7b,0x77,0x6f,0x5f,0x3f,0x3e,
0x3d,0x3b,0x37,0x2f,0x1f,0x1e,0x1d,0x1b,0x17,0x0f,0x0e,0x0d,0x0b,0x07,0x06,0x05,0x03,0x02,0x01,0x00};
uchar DB5[36]={0x80,0x40,0xc0,0xa0,0x60,0xe0,0xd0,0xb0,0x70,0xf0,0xe8,0xd8,0xb8,0x78,0xf8,
0xf4,0xec,0xdc,0xbc,0x7c,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};
uchar idata DB6[14]={0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7};
uchar idata DB7[5]={0xff,0x3f,0x0f,0x03,0};
uchar idata DB8[5]={0,0x03,0x0f,0x3f,0xff};
/****************************主函数***************************************/
void main(void)
{
uint i=0;
while(1) //死循环,流水灯依次在五种方式中循环
{
DataPort=0xff; //灯全灭
Delayms(TIME);
P2=distable[0];
if(!k1)
{
while(!k1);
P2=distable[1];
while(1)
{
for(i=0;i<15;i++)
{
DataPort=DB1[i];
Delayms(TIME);
}//第一种方式
if(!k1||!k2||!k3||!k4||!k5||!k6||!k7||!k8)
break;
}
}
if(!k2)
{ while(!k2);
P2=distable[2];
while(1)
{
for(i=0;i<15;i++)
{
DataPort=DB2[i];
Delayms(TIME);
}//第二种方式
if(!k1||!k2||!k3||!k4||!k5||!k6||!k7||!k8)
break;
}
}
if(!k3)
{ while(!k3);
P2=distable[3];
while(1)
{
for(i=0;i<15;i++)
{
DataPort=DB3[i];
Delayms(TIME);
}//第三种方式
if(!k1||!k2||!k3||!k4||!k5||!k6||!k7||!k8)
break;
}
}
if(!k4)
{
while(!k4);
P2=distable[4];
while(1)
{
for(i=0;i<36;i++)
{
DataPort=DB4[i];
Delayms(TIME);
}//第四种方式
if(!k1||!k2||!k3||!k4||!k5||!k6||!k7||!k8)
break;
}
}
if(!k5)
{
while(!k5);
P2=distable[5];
Delayms(TIME);
while(1)
{
for(i=0;i<36;i++)
{
DataPort=DB5[i];
Delayms(TIME);
}//第五种方式
if(!k1||!k2||!k3||!k4||!k5||!k6||!k7||!k8)
break;
}
}
if(!k6)
{
while(!k6);
P2=distable[6];
Delayms(TIME);
while(1)
{
for(i=0;i<14;i++)
{
DataPort=DB6[i];
Delayms(TIME);
}//第6种方式
if(!k1||!k2||!k3||!k4||!k5||!k6||!k7||!k8)
break;
}
}
if(!k7)
{
while(!k7);
P2=distable[7];
Delayms(TIME);
while(1)
{
for(i=0;i<5;i++)
{
DataPort=DB7[i];
Delayms(TIME);
Delayms(TIME);
}//第7种方式
if(!k1||!k2||!k3||!k4||!k5||!k6||!k7||!k8)
break;
}
}
if(!k8)
{
while(!k8);
P2=distable[8];
Delayms(TIME);
while(1)
{
for(i=0;i<5;i++)
{
DataPort=DB8[i];
Delayms(TIME);
Delayms(TIME);
}//第8种方式
if(!k1||!k2||!k3||!k4||!k5||!k6||!k7||!k8)
break;
}
}
}
}
>行者<
- 粉丝: 244
- 资源: 135
最新资源
- 离线OCR(此软件解压后双击即可运行, 免费)
- 公开整理-上市公司员工学历及工资数据(1999-2023年).xlsx
- 公开整理-上市公司员工学历及工资数据集(1999-2023年).dta
- GDAL-3.4.3-cp38-cp38-win-amd64.whl(GDAL轮子-免编译pip直接装,下载即用)
- 基于Java实现WIFI探针的商业大数据分析技术
- 抖音5.6版本、抖音短视频5.6版、抖音iOS5.6版、抖音ipa包5.6
- 图像处理领域、QT技术、架构,可直接借鉴
- 【源码+数据库】基于Spring Boot+Mybatis+Thymeleaf实现的宠物医院管理系统
- H5漂流瓶交友源码 社交漂流瓶H5源码+对接Z支付+视频教程
- 华为ICT大赛云赛道真题资源库.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈