二、流水灯设计、蜂鸣器发声
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. 子程序调用:
- 先设计一个延迟函数,然后直接调用!
#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--)
}
- 有参数子函数:比较方便调节。
#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. 流水灯设计
- 一个流水灯是8个,对应8位,二进制表示:1111 1110 ~1111 1101~1111 1011~~~这样就形成流水灯了(0是亮)
- 这个时候需要调用左移函数:实现实现上面的流水
#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. 蜂鸣器设计
- 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--)
}
加油!!!你一定行!