zoukankan      html  css  js  c++  java
  • 【单片机】滑稽AT89C52表情实现

    【单片机】滑稽AT89C52表情实现

    零、原因

    在群里看到了这样一个表情:
    表情
    这是用51做的,刚好开发板上有8个小灯,想实现一下。

    一、代码

    新建工程,写入如下代码:

    #include<reg52.h>
    
    sbit ADDR0 = P1^0;
    sbit ADDR1 = P1^1;
    sbit ADDR2 = P1^2;
    sbit ADDR3 = P1^3;
    sbit ENLED = P1^4;
    
    void delay400ms(void)   //误差 0us
    {
        unsigned char a,b,c;
        for(c=19;c>0;c--)
            for(b=20;b>0;b--)
                for(a=130;a>0;a--);
    }
    
    
    void main()
    {
    	unsigned char cnt = 0,n,i;
    	ADDR0 = 0;
    	ADDR1 = 1;
    	ADDR2 = 1;
    	ADDR3 = 1;
    	ENLED = 0;
    
    	while(1)
    	{
    		switch(cnt)
    		{
    			case 0:
    			{/*第一部分,灯从左至右依次点亮*/	
    				n = 0xFF;
    				while(1)
    				{
    					P0 = n;
    
    					delay400ms();
    					
    					if(n == 0x00)break;
    
    					n = n>>1;
    				}
    				cnt++;
    			}
    
    			case 1:
    			{/*第二部分,灯从右至左依次熄灭*/
    				n = 0xFF;
    				while(1)
    				{
    					P0 = ~n;
    
    					delay400ms();
    					
    					if(n == 0x00)break;
    
    					n = n<<1;
    				}
    				cnt++;
    			}
    
    			case 2:
    			{/*第三部分,灯从左至右依次点亮且熄灭上一个*/
    				n = 0x80;
    				while(1)
    				{
    					P0 = ~n;
    
    					delay400ms();
    					
    					if(n == 0x01)break;
    
    					n = n>>1;
    				}
    				cnt++;
    			}
    
    			case 3:
    			{/*第四部分,灯从右至左依次点亮且熄灭上一个*/
    				n = 0x01;
    				while(1)
    				{
    					P0 = ~n;
    
    					delay400ms();
    					
    					if(n == 0x80)break;
    
    					n = n<<1;
    				}
    				cnt++;
    			}
    			
    			case 4:
    			{/*第五部分,灯同时点亮后又同时熄灭10次*/
    				n = 0x00;
    				for(i = 0; i<20 ;i++)
    				{
    					P0 = ~n;
    					delay400ms();
    					n = ~n;
    				}
    				cnt++;
    			}
    
    			case 5:
    			{/*第六部分,前后四个灯为一组两组灯交替点亮8次*/
    				n = 0xF0;
    				for(i = 0; i<16 ;i++)
    				{
    					P0 = n;
    					delay400ms();
    					n = ~n;
    				}
    				cnt++;
    			}
    
    			case 6:
    			{/*第七部分,第3,7,1,4,6个灯依次点亮且熄灭上一个灯3次*/
    				for(i = 0; i<3 ;i++)
    				{
    					n = 0x20;
    					P0 = ~n;
    					delay400ms();
    					P0 = 0xFF;
    					delay400ms();
    					n = 0x02;
    					P0 = ~n;
    					delay400ms();
    					P0 = 0xFF;
    					delay400ms();
    					n = 0x80;
    					P0 = ~n;
    					delay400ms();
    					P0 = 0xFF;
    					delay400ms();
    					n = 0x10;
    					P0 = ~n;
    					delay400ms();
    					P0 = 0xFF;
    					delay400ms();
    					n = 0x04;
    					P0 = ~n;
    					delay400ms();
    					P0 = 0xFF;
    					delay400ms();
    				}
    				cnt++;
    			}
    
    			/*大家还可以再加更多组合,记得cnt++*/
    
    			default :	cnt = 0;break;
    			/*组合结束,重新开始*/
    		}
    	}
    
    }
    

    保存,下载到单片机里:
    效果
    成功实现效果~

    二、总结

    兴趣很重要,单片机很好玩,哈哈

  • 相关阅读:
    疯狂Java讲义-Java基础类库
    第十一届软件类校内模拟赛本科组Java软件开发
    疯狂Java讲义
    疯狂Java讲义-面向对象(下)
    疯狂Java讲义-面向对象(上)
    疯狂Java讲义-流程控制与数组
    疯狂Java讲义-数据类型和运算符
    数据结构-图和图遍历(DFS、BFS)
    A1034 Head of a Gang (30分)
    A1098 Insertion or Heap Sort (25分)
  • 原文地址:https://www.cnblogs.com/minuy/p/13971433.html
Copyright © 2011-2022 走看看