8个彩灯依次点亮,求电路图和工作原理。

我的邮箱 [email protected],qq 是820699253.

C语言1:

/*该实验是流水灯(8个发光二极管循环点亮),功能是8个发光二极管循环以1S间隔点亮*/

#include<reg52.h>//包含reg.52文件

#define uint unsigned int//宏定义

#define uchar unsigned char//宏定义

void delay(uint z);//声明延时函数

uint a;//定义循环用变量

uchar code table[]={

0xff,0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};//定义循环用数据表格

void main()//main函数

{

         a=0;//给a赋初值

         P1=table[a];//将a所在的table中的值赋给P1口

         while(1)//while循环

         {

               delay(1000);//1S延时子程序

               if(a==8)//测试a是否等于8

                     a=0;//给a赋值                 

               a++;//a的值加一

               P1=table[a];//将a所在的table中的值赋给P1口

         }

void delay(uint z)//1ms延时子程序,通过z值改变延时

{

       uint x,y;

       for(x=z;x>0;x--)

            for(y=110;y>0;y--);

}

C语言2:

/*该实验是流水灯(8个发光二极管循环点亮),功能是8个发光二极管循环以1S间隔点亮*/

#include<reg52.h>//包含reg.52文件

#define uint unsigned int//宏定义

#define uchar unsigned char//宏定义

void delay(uint z);//声明延时函数

uint a;//定义循环用变量

uchar code table[]={

0xff,0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};//定义循环用数据表格

void main()//main函数

{

         a=8;//给a赋初值

         P1=table[a];//将a所在的table中的值赋给P1口

         while(1)//while循环

         {

               delay(100);//1S延时子程序

               if(a==0)//测试a是否等于8

                     a=8;//给a赋值                 

               a--;//a的值加一

               P1=table[a];//将a所在的table中的值赋给P1口

         }

void delay(uint z)//1ms延时子程序,通过z值改变延时

{

       uint x,y;

       for(x=z;x>0;x--)

            for(y=110;y>0;y--);

}

C语言3:

/* 该实验是流水灯(8个发光二极管循环点亮),功能是8个发光二极管循环以1S间隔点亮*/

#include<reg52.h>//包含reg.52文件

#include<intrins.h>//包含左右循环移位子函数库文件

#define uint unsigned int//宏定义

#define uchar unsigned char//宏定义

void delay(uint z);//声明延时函数

uint a;//定义循环用变量

void main()//main函数

{

         a=0xfe;//给a赋初值

         while(1)//while循环

         {

                   P1=a;                 

                   delay(1000);//1S延时子程序 

                   a=_crol_(a,1);

         }

}

void delay(uint z)//1ms延时子程序,通过z值改变延时

{

         uint x,y;

         for(x=z;x>0;x--)

                   for(y=110;y>0;y--);

}

   单片机控制八个发光二极管并使其以1S时间间隔循环点亮,C语言中,把流水灯的循环方式以数组的形式存到了表中,然后调用,是很方便的,学校实验室都提倡这么写。延时参数是毫秒单位,很准确。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-10

CD4017

第2个回答  2019-07-16
C语言1:
/*该实验是流水灯(8个发光二极管循环点亮),功能是8个发光二极管循环以1S间隔点亮*/
#include<reg52.h>//包含reg.52文件
#define uint unsigned int//宏定义
#define uchar unsigned char//宏定义
void delay(uint z);//声明延时函数
uint a;//定义循环用变量
uchar code table[]={
0xff,0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};//定义循环用数据表格
void main()//main函数
{
a=0;//给a赋初值
P1=table[a];//将a所在的table中的值赋给P1口
while(1)//while循环
{
delay(1000);//1S延时子程序
if(a==8)//测试a是否等于8
a=0;//给a赋值
a++;//a的值加一
P1=table[a];//将a所在的table中的值赋给P1口
}
}
void delay(uint z)//1ms延时子程序,通过z值改变延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
C语言2:
/*该实验是流水灯(8个发光二极管循环点亮),功能是8个发光二极管循环以1S间隔点亮*/
#include<reg52.h>//包含reg.52文件
#define uint unsigned int//宏定义
#define uchar unsigned char//宏定义
void delay(uint z);//声明延时函数
uint a;//定义循环用变量
uchar code table[]={
0xff,0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};//定义循环用数据表格
void main()//main函数
{
a=8;//给a赋初值
P1=table[a];//将a所在的table中的值赋给P1口
while(1)//while循环
{
delay(100);//1S延时子程序
if(a==0)//测试a是否等于8
a=8;//给a赋值
a--;//a的值加一
P1=table[a];//将a所在的table中的值赋给P1口
}
}
void delay(uint z)//1ms延时子程序,通过z值改变延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
C语言3:
/* 该实验是流水灯(8个发光二极管循环点亮),功能是8个发光二极管循环以1S间隔点亮*/
#include<reg52.h>//包含reg.52文件
#include<intrins.h>//包含左右循环移位子函数库文件
#define uint unsigned int//宏定义
#define uchar unsigned char//宏定义
void delay(uint z);//声明延时函数
uint a;//定义循环用变量
void main()//main函数
{
a=0xfe;//给a赋初值
while(1)//while循环
{
P1=a;
delay(1000);//1S延时子程序
a=_crol_(a,1);
}
}
void delay(uint z)//1ms延时子程序,通过z值改变延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
单片机控制八个发光二极管并使其以1S时间间隔循环点亮,C语言中,把流水灯的循环方式以数组的形式存到了表中,然后调用,是很方便的,学校实验室都提倡这么写。延时参数是毫秒单位,很准确。
向左转|向右转
第3个回答  2009-12-10
哥们 发过去了 注意接收
第4个回答  2009-12-10
点亮后前一个灭吗 还有就是循环吗
相似回答