一、LED灯闪烁(LED灯基础在上一篇1.1中有详细说明)
1.循环语句:while循环(未知次数,只知条件),for循环(已知次数)
while(表达式)
{
执行语句;
}
当while后表达式为真(非0)时,执行括号内语句。
for(赋值语句;条件语句;变化语句)
{
执行语句;
}
赋值语句为变量赋初值;条件语句判断为真,执行括号内语句;变化语句改变循环变量的值。
PS:void main默认循环执行。
2.延时函数(软件延时)
软件延时:执行大量无用语句,耗费时间。
void delay(unsigned int z)//毫秒级延时函数
{
uint x,y;//之前已经宏定义:#define uint unsigned int
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
3.宏定义:
#define 新标识符 被代替标识符(末尾无分号“;”)
typedef 被代替标识符 新标识符;(末尾以分号结束)
二、流水灯
1.循环移位函数
包含头文件#include<intrins.h>
内部函数:crol,cror.(字符型循环左移,字符型循环右移)
a=0xfe;//1111 1110
b=crol(a,1);//now b is 0xfd 1111 1101
三、蜂鸣器
1.蜂鸣器工作原理:(略)分为有源蜂鸣器和无源蜂鸣器(源代表震荡源)
2.三极管工作原理:三极管分为基极(B),发射极(E),集电极(C)。
3.蜂鸣器原理图
4.单片机它不是功率器件,它适合做控制用,不合适驱动功率器件。(直接用单片机驱动:单片机输出电流太小,也容易损坏单片机)
整体代码如下:
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
//毫秒级延时函数
void delay(unsigned int z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void main()
{
uchar temp=0xfe;
P1=temp;//1111 1110
delay(100);
while(1)
{
beep=~beep;//蜂鸣器发出“嘀,嘀,嘀”
temp=_cror_(temp,1);//流水灯的实现(LED灯闪烁为基础)
P1=temp;
delay(100);
}
}