使用C51实现流水灯效果

文章目录

  • 一、实验要求
  • 二、实验代码和原理图
  • 1.代码
  • 2.原理图
  • 总结

  • 一、实验要求

    1、 先八盏灯从左至右依次点亮,同一时刻仅有一盏灯处于被点亮状态,每盏灯亮0.5s,然后八盏灯从右至左依次点亮,同一时刻仅有一盏灯处于被点亮状态,每盏灯亮0.5s,循环两遍;
    2、 八盏灯同时闪烁,亮1s,灭0.5s;,实现4次;
    3、 上述过程周而复始的循环运行;

    二、实验代码和原理图

    1.代码

    代码如下(示例):

    #include"reg51.h"
    #include"intrins.h"
    #define uchar unsigned int  //起小名 
    #define uint unsigned int   //+1 
    uchar code ledcode[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //共阴极码表
    
    void delay(uint n)//延时函数 
    {
    	uchar j;
    	while(n--)
        for(j=0;j<113;j++);
    }
    
    int main()
    {
       uchar i,temp;//temp控制次数 
    
       while(1)
       {  
       	   temp=2;
       	   while(temp)//要求1 
       	   {
    	       for(i=0;i<8;i++)
    		   {
    			P0=ledcode[i]^0xFF;
    			delay(300);
    			P0=0xFF;	  
    		   } 
    		   temp--;  	   	
    	   }
    		
            temp=2;	
    		while(temp)
    		{		    	 
         		for(i=6;i>0;i--) 
    			{					 
    			    P0=ledcode[i]^0xFF;	 	  
    				delay(300);			
    			    P0=0xFF;			
    			}
    			 	P0=ledcode[0]^0xFF;	 	  
    				delay(300);			
    			    P0=0xFF;			
    			temp--;
    			if(temp)
    			{
    			P0=ledcode[7]^0xFF;
    			delay(300);
    			P0=0xFF;
    			}
    		}
    		 
    		temp=4;
    		while(temp)//要求3 
    		{
    			P0=0x00;	
    			delay(600);
    			P0=0xFF;
    			delay(300);
    			temp--;
    		}
       }	
    } 
    
    

    2.原理图

    proteus版本为8.10

    总结

    本次实验不是特别难,我所做的也只是一种方法而已。代码之路何其艰辛,条条大路通罗马,大家要是还有其他方法,可以在评论区留言。我期待与大家进行学习交流。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用C51实现流水灯效果

    发表评论