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

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

1.简单延时程序:

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

#include<reg52.h>

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<reg52.h>

#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<reg52.h>

#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<reg52.h>

#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是由单片机控制的)

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

#include<reg52.h>

#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--)

}

加油!!!你一定行!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值