写在前面
51单片机中的接线问题,分为两种,开发板内部接线和外接设备的接线
1.开发板内部接线
2.外部设备的接线
正极接正极,负极接负极(5V接5V,GND接GND)
其他接口可随意接,在开发过程中,根据实际接线情况进行
keil5安装
管理员身份运行Keil uVision4
File——lisence management 将右侧CID复制到注册机中
管理员身份运行注册机KEIL_Lic
将CID复制并产生破解码
注意:低电平亮灯!!!
1.点灯大师
#include "reg52.h"
//点亮一盏灯
sbit led1=P3^7;//根据原理图,灯led1指向3.7口
//不断访问来判断是否按下按键1
void main()
{
led1=0;//低电平为亮
}
1.1借助stc-isp上的软件延时计算器让灯闪烁
#include "reg52.h"
sbit led1=P3^7;
void Delay100ms() //@11.0592MHz
{
unsigned char i, j;
i = 180;
j = 73;
do
{
while (--j);
} while (--i);
}
void main()
{while(1){
led1=0;//低电平为亮
Delay100ms();
led1=1;//高电平为暗
Delay100ms();
}
}
1.2通过按键来控制灯的亮灭(软件防抖)
#include "reg52.h"
sbit led1=P3^7;//根据原理图,灯led1指向3.7口、按键1指向2.1口
sbit led2=P3^6;
sbit key1=P2^1;
sbit key2=P2^0;
//注意是毫秒防抖。软件实现
void Delay200ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 2;
j = 103;
k = 147;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1){//查询法,不断访问来判断是否按下按键1
Delay200ms();
if(key1==0){
led1=!led1;//按键1控制灯1,取反语句,实现状态翻转
Delay200ms();
}
if(key2==0){
led2=!led2;//按键2控制灯2
Delay200ms();
}
}
}
led1=!led1;//按键1控制灯1,取反语句,实现状态翻转
1.3通过震动传感器来控制灯的亮灭(震动控制灯)
如何知道是否发生振动?
振动后的信号表现又是什么?
振动传感器控制灯
sbit led1=P3^7;
sbit vibrate=P3^3;//D0接到P3.3口
void main()
{
while(1){
Delay2000ms();//延时
if(vibrate==0){//发生震动时,D0输出低电平
led1=0;//亮灯
Delay2000ms();
led1 = 1;
}else{
led1 = 1;//灭灯
}
}
}