目录
LED发光二极管:
1.点亮第一个LED:P2_0亮
2.LED闪烁:P2_0以1S为周期闪烁
3.LED流水灯实验:LED依次点亮(<<,>>是移位指令;_cror_,_crol_是循环移位指令)
蜂鸣器:
1.蜂鸣器:蜂鸣器响一下然后关闭
最近在哔站学完了51单片机,准备复习的时候却发现找不到比较适合自己的一些资料,所以就想自己总结一个适合已入门学者基于51单片机的资料。
接下来将参考江科大的代码风格根据普中51单片机开发攻略在A2开发板编写程序。
LED发光二极管:
长脚为正,短脚为负。由原理图可以知道,LED的正极都接了VCC,我们需要控制的引脚就约等于LED的负极,只需给低电平,LED两端有电压差就会点亮。(低电平点亮)
1.点亮第一个LED:P2_0亮
#include <REGX52.H>
void main()
{
while(1)
{
P2_0=0;
}
}
2.LED闪烁:P2_0以1S为周期闪烁
#include <REGX52.H>
void delay10us(unsigned int xus)//当xus=1时,延时10us
{
while(xus--);
}
void main()
{
while(1)
{
P2_0=0; //亮
delay10us(50000);//500ms
P2_0=1; //灭
delay10us(50000);//500ms
}
}
3.LED流水灯实验:LED依次点亮(<<,>>是移位指令;_cror_,_crol_是循环移位指令)
#include <REGX52.H>
//移位LED流水灯
void delay10us(unsigned int xus)//当xus=1时,延时10us
{
while(xus--);
}
void main()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
P2=~(0x01<<i);
delay10us(50000);//500ms
}
}
}
#include <REGX52.H>
#include "intrins.h"
//循环移位LED流水灯
void delay10us(unsigned int xus)//当xus=1时,延时10us
{
while(xus--);
}
void main()
{
unsigned char i;
P2=0xfe;
delay10us(50000);//500ms
while(1)
{
for(i=0;i<7;i++)
{
P2=_crol_(P2,1);//需加intrins头文件
delay10us(50000);//500ms
}
for(i=0;i<7;i++)
{
P2=_cror_(P2,1);
delay10us(50000);
}
}
}
蜂鸣器:
蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器,有源蜂鸣器内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。无源蜂鸣器内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,能发出不同频率的声音。本开发板带的是无源蜂鸣器:依靠步进电机的ULN2003D模块驱动蜂鸣器。P2_5输出高电平,BEEP则输出低电平;P2_5输出低电平,BEEP输出高电平。
1.蜂鸣器:蜂鸣器响一下然后关闭
延时函数
#include "intrins.h"
void delay10us(unsigned int xus)//当xus=1时,延时10us
{
while(xus--);
}
void delay(unsigned int xms)//@11.0592MHz 当xms=1时,延时1ms
{
unsigned char i, j;
while(xms--)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
主函数
#include <REGX52.H>
#include "DELAY.h"
void main()
{
unsigned char i=2000;
while(1)
{
while(i--)
{
P2_5=~P2_5;
delay10us(100);//改变时间频率,可以改变蜂鸣器的音色
}
P2_5=0;
i=0;
}
}
更多推荐
51单片机——LED发光二极管、蜂鸣器C语言入门编程
发布评论