目录
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);//500msP2_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);//500mswhile(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);}}}
蜂鸣器:
蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器,有源蜂鸣器内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。无源蜂鸣器内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,能发出不同频率的声音。本开发板带的是无源蜂鸣器:依靠步进电机的ULND模块驱动蜂鸣器。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;}}