单片机
返回首页

STC89C52单片机流水灯

2016-04-15 来源:eefocus

/////////////////////////////////////////////////////////////////////////

 实现功能:让实验板上的D1-D8这个八个灯循环跑起来,先点亮D1,其他的灯都是熄
      灭状态,间隔0.3秒,点亮D2,其他的灯都熄灭,这样依次循环,直到点
     亮D8,然后从头再依次点亮。
 实验板型号:BS-XYD-C52
 实验名称:  流水灯
 编写人:  谢应东
 编写日期:  2012-4-24      
 /////////////////////////////////////////////////////////////////////////

#include
#include //这个头文件里包含了_crol_(,)这个循环右移的函数 
                    
#define uchar unsigned char  //定义unsigned char 为 uchar
#define uint  unsigned int

 /////////////////////////////////////////////////////////////////////////
函数名称:毫秒延时函数
函数功能:实现毫秒级的延时
参数介绍:Delay_MS: 定义需要延时的毫秒的数值
          iNumber: 记录Delay_MS的数值,以for语句实现所要求的延时
    iValue: 要延时毫秒所要进行的循环数值,本数值为实际测得
返回值: 
注意事项:本实验是在所用晶振为12M的前提下实现的毫秒延时,本函数是通过循环的形
          式完成,所以如果改变了晶振的频率,请做相应的改变
 /////////////////////////////////////////////////////////////////////////

void DelayMs(uint Delay_MS)
{
 uint iNumber,iValue;
 for(iNumber=0;iNumber  {
     iValue=107;
     while(iValue--);
 }
}
 /////////////////////////////////////////////////////////////////////////

函数名称:主函数
函数功能:完成D1-D8发光二极管的循环显示
参数介绍:无
返回值: 
注意事项:无
 /////////////////////////////////////////////////////////////////////////

void main()
{
 uchar cTempValue,cNumber;//cTempValue为取零时值的变量,cNumber为循环变量
 while(1)
 {
  cTempValue=0xfe; //起始让D1点亮的零时值
  for(cNumber=0;cNumber<8;cNumber++)
  {
   P1=cTempValue;    //赋予P1口初始值
   cTempValue=_crol_(cTempValue,1); //调用循环右移的函数
   DelayMs(300);      //延时0.3秒
  }
 }
}

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 如何利用ESP8266制作一个简单的四轴飞行器

  • 离子检测器电路分析

  • 非常简单的150W功放电路图

  • 基于IC555的可变PWM振荡器电路

  • 优化电路板布局的简单方法

  • 使用NE555和磁簧开关的橱柜照明电路

    相关电子头条文章