⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 循环移位流水灯.c

📁 循环位移流水灯的程序设计
💻 C
字号:
/*
			               
						       循环移位流水灯

  功能: P1口外接的八个LED按照程序预定的组合,有选择、有节奏的点亮或
         者熄灭,从而可以使LED发出的灯光达到像水流一样“流动”的效果。
  
  说明: 运用C语言中简单的“移位”及“位或”操作,组合出一系列所需的8位
         二进制数,并给P1口赋值,P1口对应的各LED就会按照要求被点亮或熄灭。
         
  调试:1、通过对换程序中移位符号(">>"、"<<")的位置,可以方便地改变流水灯流动的方向。
        2、通过修改变量“LED”的初值,可以方便地实现N(1至7)个LED作为一组流动的效果。
    
	
    (C)西安电子科技大学    测控技术与仪器         编写:郭世忠     日期:2008/02/15
*/

#include<reg52.h>		//51寄存器头文件

void Delayms(int ms);	//函数声明

void main(void)	        //主函数
{
 unsigned char LED;		//定义变量	
 
 LED=0xf8;				//LED赋初值	可根据需要在“LED初值列表”中选择对应初值
    					//这里以点亮3个LED为例,因此选择初值为 0xf8

 while(1)		        //死循环,单片机程序必须是一个死循环
 {	
  P1=LED;				//I/O口赋值,将变量“LED”此刻的值传给P1口。这一句写在这里是为了
 						//保证P1口能够从LED的初值开始显示,大家不信可以改一下位置看效果。

  LED=(LED>>7)|(LED<<1);//移位运算,向左或向右移1位,并更新LED的值,下一周期更新到P1口 
						//此处对换移位符号(">>"、"<<")的位置,可改变流水灯流动的方向。
  
  Delayms(5000);		//延时,保持当前发光状态片刻。
 }
}
/*****************************  LED初值列表  *******************************
*
*流动LED的个数     对应二进制	  对应十六进制
*          1       1111 1110         0xfe
*		   2	   1111 1100	     0xfc
*          3       1111 1000	     0xf8
*		   4	   1111 0000	     0xf0
*		   5	   1110 0000	     0xe0
*		   6	   1100 0000	     0xc0
*		   7	   1000 0000	     0x80
*说明:P1口对应的LED是低电平有效,因此,0代表点亮LED,1代表熄灭LED.
****************************************************************************/
 


/****************************************************************************
* 名    称:Delayms()
* 功    能:延迟1ms
* 入口参数:ms: 延迟毫秒数
* 出口参数:无
* 说    明: 11.0592MHz条件下
****************************************************************************/
void Delayms(int ms)
{
   unsigned int i;
   for(;ms>0;ms--)	      //循环ms次
   {
      for(i=0;i<113;i++); //每次1ms延迟@ 11.0592MHz
   }
} 
















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -