回顾新建工程
第一步,打开keil新建工程。
新建一个文件夹,把工程放到这个文件夹里面,记住给工程命名不要用中文,否则会出现各种奇怪的错误。
第二步,选择单片机型号。买的开发板使用的是stc89c52的芯片,我们可以选择AT89C51或者AT89C52,因为它们都是51的内核,软件代码兼容,这里我们选择AT89C52。
第三步,给工程添加文件。我们先新建一个文件,命名为main.c,一定要加.c这个后缀名,然后保存,最后添加到工程组。
第四步,配置魔术棒选项卡。编译整个工程后可以生成16进制的hex文件,这个文件就是烧录到单片机里面的。
点灯
关于LED灯
LED即发光二极管,具有单向导电性,通过5mA左右电流即可发光,电流越大,发光强度越大,但太大会烧毁,一般我们用限流电阻控制在3mA-20mA之间。正向导通压降在1.7V左右。
以贴片LED为例:
红色的压降为1.82-1.88V,电流5-8mA
绿色的压降为1.75-1.82V,电流3-5mA
橙色的压降为1.7-1.8V,电流3-5mA
蓝色的压降为3.1-3.3V,电流8-10mA
白色的压降为3-3.2V,电流10-15mA
第一张图是插件LED,长脚为正极。第二张图是贴片LED,左边的是正面,带绿色的那边是负极,右边的反面,三角形指向的是负极。
共阴接法:LED的公共端接地,那么我们需要输出高电平将LED点亮。
共阳接法:LED的公共端接VCC,那么我们需要输出低电平将LED点亮。
我们需要查看开发板的原理图,了解LED模块是共阳还是共阴接法,以及端口接的是哪一个IO口,我们才好写程序去控制LED亮灭。
点亮第一个LED灯
#include "reg52.h"
sbit led=P0^0; //查看原理图再定义
//点亮第一个led
void mian()
{
led=0;
while(1)
{
}
}
打开程序下载软件,找到生成的hex文件,进行烧录。
频闪灯
#include "reg52.h"
//频闪灯
sbit led=P0^0; //查看原理图再定义
void delay(int i) //i=1,大约延时10us
{
while(i--);
}
void main()
{
while(1)
{
led=0;
delay(100000); //大约延时1s
led=1;
delay(100000); //大约延时1s
}
}
呼吸灯
了解了LED灯的频闪问题后,我们经常看到手机黑屏收到消息时,会有一盏小灯若隐若现,在电子工程中它的学名是呼吸灯,我们在我们的开发板上也可以实现。
我们都知道,人眼所能识别的速度是有限的,25帧的速率才能在人眼中形成完整的动画,若LED灯亮的时间很短,那么在人眼的瞬态感应中就会是很暗。根据这个原理我们就可以做出一个呼吸灯了。
#include "reg52.h"
sbit led=P0^0; //查看原理图再定义
//呼吸灯
void delay(int i)
{
while(i--);
}
void main()
{
int m,n;
while(1)
{
for( m=300,n=0; m >= 0; m--,n++)
{
led=0;
delay(m);
led=1;
delay(n);
}
for( n=300,m=0; n >= 0; n--,m++)
{
led=0;
delay(m);
led=1;
delay(n);
}
}
}
流水灯
#include "reg52.h"
#define led P0 //查看原理图后再定义
//流水灯
void delay(int i) //i=1,大约延时10us
{
while(i--);
}
void main()
{
int i;
led=0xfe;
while(1)
{
for( i=0; i<8; i++)
{
led=~(1<<i);
delay(100000);
}
for( i=7; i>=0; i--)
{
led=~(1<<i);
delay(100000);
}
}
}
三极管的应用
NPN与PNP互改
之前我们讲过,NPN低电平导通,PNP高电平导通,其实这样的说法不是很准确。正确的说法是,发射结正偏,集电结反偏
正偏其实就是加的正向电压(听起来专业一点。。)
NPN与PNP电路互改,将有极性元件和电源调换方向即可,其他不变。
H桥
一个典型的直流电机控制电路,单片机能够输出直流信号,但是它的驱动才能也是有限的,所以单片机普通做驱动信号,驱动大的功率管如Mos管,来产生大电流从而驱动电机,且占空比大小能够经过驱动芯片控制加在电机上的均匀电压到达转速调理的目的。电机驱动主要采用N沟道MOSFET构建H桥驱动电路(这里采用的是三极管),H 桥是一个典型的直流电机控制电路,由于它的电路外形酷似字母 H,故得名曰“H 桥”。4个开关组成H的4条垂直腿,而电机就是H中的横杠。要使电机运转,必需使对角线上的一对开关导通,经过不同的电流方向来控制电机正反转,其连通电路如图所示。
运算放大器
运放是一个具有较高放大倍数,高输入电阻和低输出电阻的单元。一般来说运放至少包含五个引脚,包括VCC、GND、同相输入端、反相输入端和输出端,内部集成了多级放大电路。
在学运算放大器之前,我们还需要了解一下基尔霍夫定理:
KCL:所有进入某节点的电流的总和等于所有离开这节点的电流的总和。
KVL:沿着闭合回路的所有电动势的代数和等于所有电压降的代数和,即从一点出发绕回路一周回到该点时,各段电压的代数和恒等于零。
关于运放的两个很重要的知识点:
“虚短”:在分析运算放大器处于线性状态时,可把输入端视为等电位,这一特性称为虚假短路,简称虚短。原因是在开环时,放大倍数都在80dB以上,输出电压有限,一般在10V~14V,处在线性区的V±V-很小,uV数量级,可认为V+ = V-,短路。
“虚断”:由于理想运放的输入电阻非常高,在分析处于线性状态运放时,可以把两输入端视为等效开路,这一特性称为虚假开路,简称虚断。
反相比例运算电路:
根据虚断,V+ = 0,i1=if,根据虚短,V- = V+ = 0,由电流关系有(Vi - V-)/ R1 = (V- - Vo) / Rf,可以得到输出电压Vo = -(Rf / R1) Vi,可以看出输出电压与输入电压极性相反。
正相比例运算电路:
跟据虚断,V+ = Vi,i1 = if,根据虚短,V- = V+ = Vi,由电流关系由(0 - V-)/ R1 = (V- - Vo) / Rf,可以得到Vo = (1 + Rf / R1)Vi,可以看出输出电压和输入电压的极性相同。