51学习第二天--二、流水灯设计、蜂鸣器发声(延迟程序,子程序)

二、流水灯设计、蜂鸣器发声

1.简单延时程序:

  1. 利用while()循环达到一个延时的效果

#include

void main()

{

   sbit D1=p1^0;//表示声明变量,令p0口等于D1

   int=a;

   while(1)//这是一个死循环

  {

      a=500;//表示时间延迟

     D1=0;//表示是低电平即灯灭

     while(a--);//表示a自减到0执行下面程序

     a=500;

    D1=1;

     while(a--);

   }

}

2. 子程序调用:

  1. 先设计一个延迟函数,然后直接调用!

#include

#define uint  unsigned char//这是宏定义,以后再用char直接输入ucahr不用再声明!

#defne uint unsigned int

sbit D1=P1^0;

void delay();//主函数调用子函数,先声明函数,没有参数的函数!

void main()

{

  D1=0;

  delay();

  D1=1;

  delay();

}

void delay()//这是一个延时函数控制x,y可以控制延时时间!不带参数!

{

uint x,y;

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

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

}

  1. 有参数子函数:比较方便调节。

#include

#define uint  unsigned char//这是宏定义,以后再用char直接输入ucahr不用再声明!

#defne uint unsigned int

sbit D1=P1^0;

void delay(uint z);//主函数调用子函数,先声明函数,有参数的函数!

void main()

{

D1=0;

delay(600);

D1=1;

delay(600);

}

void delay(uint z)//这是一个延时函数控制x,y可以控制延时时间!带参数!

{

uint x,y;

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

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

}

3. 流水灯设计

  1. 一个流水灯是8个,对应8位,二进制表示:1111 1110 ~1111 1101~1111 1011~~~这样就形成流水灯了(0是亮)
  2. 这个时候需要调用左移函数:实现实现上面的流水

#include

#include “instrins.h//左移函数头文件

#define uchar  unsigned char//这是宏定义,以后再用char直接输入ucahr不用再声明!

#defne uint unsigned int

 uchar=temp;//定义一个八位的变量

void delay(uint z);//主函数调用子函数,先声明函数,有参数的函数!

void main()

{

    temp=0xfe;//0xfe即:1111 1110把P1口定义

    P1=temp;

    while(1)

    {

    temp=_crol_(temp,1);//调用左移函数

    delay(1000);

    P1=temp;

    }

}

void delay(uint z)//这是一个延时函数控制x,y可以控制延时时间!带参数!

{

uint x,y;

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

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

}

4. 蜂鸣器设计

  1. pnp三极管:当b给低电平,此时ec电路同形成压降,蜂鸣器响。当b给高电平,没有压降不响。(b是由单片机控制的)

51学习第二天--二、流水灯设计、蜂鸣器发声(延迟程序,子程序)_第1张图片

方法:直接控制蜂鸣器io口即可!

#include

#include “instrins.h//左移函数头文件

#define uchar  unsigned char//这是宏定义,以后再用char直接输入ucahr不用再声明!

#defne uint unsigned int

 uchar=temp;//定义一个八位的变量

sbit feng=P2^3;//P2口的第三位时蜂鸣器口

void main()

{

    temp=0xfe;//0xfe即:1111 1110把P1口定义

    P1=temp;

    feng=0;//此时蜂鸣器一直响,且流水灯走起来!

   while(1)

      {

      temp=_crol_(temp,1);//调用左移函数

      delay(60);

      P1=temp;

       }

}

void delay(uint z)//这是一个延时函数控制x,y可以控制延时时间!带参数!

{

uint x,y;

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

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

}

加油!!!你一定行!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(51单片机(郭天祥十天))