51单片机学习1-使用51单片机点亮LED灯

一、LED工作原理

1、LED==Light EmitTIng Diode ==发光二极管;

2、当LED器件有电流流过的时候就会发光,太底层的原理就不说了,有兴趣的自己慢慢研究

3、LED的模样

LED首先它是二极管,既然是二极管,那就要符合二极管的物理特性,就如下面那张图:

二极管正向导电,就是说电流可以从二极管的正极流向负极;

电流想在二极管中流通,那二极管的正负极之间就得有个电压,叫正向电压,这个电压还不能太小,有个门槛电压,一般0.7V左右的样子;你不够这个门槛的话,电流就没法流啊,小马达带不动这个大车;图中的A点就是这个门槛点。超过A点的电压之后,电压越大,LED的电流就越大,但是也不能太大,比如电压达到C点的时候LED的电流就很大了,再大的话LED就烧了。

二极管反向不导通也是相对的哈,先来解释下什么是反向电压,顾名思义就是跟正向电压相反的电压,也就是二极管负极与正极之间的压差,当我的反向电压足够大的时候,直接把二极管给击穿了,就是字面意思,反向电压足够大,就像途中的B点,二极管被捅穿了,跟短路了一样,当然了二极管也废了(不过稳压二极管,TVS二极管就是另外一回事了,有机会再说)。

所以呢,LED要在再合理的电压区间内工作,比如电压在A点和C点之间,电压越大,电流也就越大。

二、单片机IO口介绍

IO == I/O == input/output ==输入/输出;

所以IO口也叫输入输出口;这个口既可以用作输入,又可以用作输出;

什么是输入?输入就是电流从外面往单片机里面流;

什么是输出?输出就是电流从单片机里面往外面流;

就说STC89C52单片机吧,一般给它提供5V的工作电压,所以呢,它的IO口最大能提供的电压也就5V了,能往外输出多大的电流,或外面能往里面灌多大的电流就要看IO口内部的结构了,芯片的数据手册上会写清楚IO口的输入输出电流范围。

三、单片机控制LED的原理图

就下面这个图,看起来内容很少,但是STC89C51的最小系统全包括了;

电源:5V

晶振:11.0592MHz

复位:外部按键复位

然后用P0.0口来控制LED1灯的亮、灭,或者亮度。什么意思?就是说,可以让LED一直亮着,也可以让LED灯一直熄灭,还可以让LED用不同的亮度一直亮着。

通过前面的了解,要想让LED1亮,那么P0.0口的电压就得是低电平,也可以说是0V;

要想让LED1熄灭,那么P0.0口的电压就得是高电平,也可以说是5V,就保证了LED1的正负极之间没有电流流过,自然就不会点亮了。

四、Keil5创建工程

这个得确保你的Keil安装好了,STC MCU的器件库也装好了。

1、双击Keil5,就出现了下面这个界面

2、点Project,选择New uVision Project…

3、弹出工程的保存路径,笔者是在F盘里面建了一个STC89C52文件夹,然后把工程名,也就是文件名定为LED,用来控制LED嘛,工程的名字要跟功能有点相关,点击保存就好了。

4、点击保存之后,又弹出一个窗口,这个窗口就是让你来选择你的MCU型号的,在那个下拉框点击下,选中STC MCU Database,这样你就可以选STC的单片机了。

5、因为使用的是STC89C52RC单片机,所以要找到它,下拉那个进度条就可以找到,选中,点击OK就行了

6、又弹出个窗口,选择否,这个STARTUP.A51文件,看名字就是个启动文件,那个A表示用汇编写的,51就表示51单片机了,这个等把单片机的使用学会了回过头来看比较好,新手不用去追究,免得内力不够,容易走火入魔。

7、工程建好了,就下面这个样子,那个Project:LED,就表示工程名是LED,前面第3步建立工程的时候起得名字,那个Target1,翻译过来就是目标,也没什么意思,可以理解为这个LED工程的全部文件吧,个人也可以改成自己喜欢的名字,那个Source Group 1,就是源文件组的意思,怎么理解,就是你把这个LED工程的各种代码文件分个类,当然了,现在就控制个LED灯,一个源文件组就可以了,因为笔者是用C语言写代码,源文件是.c格式的,如果用汇编写代码,那源文件就是.ASM格式了。源文件组也可以改成你自己喜欢的名字,这个改名字只需要,你只需要点击两下,就可以了,记住不是双击哈,笔者就把那个Source Group 1改为main

8、现在就要添加源文件了,往main这个组里面去添加一个main.c文件

右击main,在弹窗中点击Add New Item to Group 'main',英文还是要掌握一点的哈,就这么几个单词也好理解,不理解的自己去查字典。

9、在弹窗中,点击C File (.c),在Name对应的框中写main,Location对应的框中就是这个源文件保存的位置了,就是前面建的工程文件夹的位置。点击Add就可以了。

10、现在main.c源文件就加进来了,但是main.c里面什么都没有,需要自己来写控制代码

11、也可以顺便看看工程文件夹里面文件内容的变化

12、在工程中,双击main.c,在里面写代码,就下面哪几个代码就可以让LED灯一直亮着了,把代码下载进单片机后,单片机就从这个main函数进去,运行main函数里面的代码,那个P00=0就表示让单片机的P00引脚为低电平,看看电路图,此时的LED1是不是就有个正向的电流了,那么LED1就点亮了

#include "STC89C5xRC.H"

void main()
{
    while(1)
    {
        P00 = 0;
    }
    
}

13、想让LED灯熄灭,代码也是那么几行,P00 =1,表示P00引脚设置为高电平,就是5V了,此时LED1就没有正向的电流了,那么LED1就不会点亮了。

#include "STC89C5xRC.H"

void main()
{
    while(1)
    {
        P00 = 1;
    }
    
}

14、那想让LED闪缩呢,那就P00一会为0(0V),一会为1(5V)了,至于这个一会是多久,那就看你自己定了,延时函数的那个t就是你要把控的度。

#include "STC89C5xRC.H"

//延时函数
void delay(unsigned int t)
{
    while(t--);
}


void main()
{
    while(1)
    {
        P00 = 0;
        delay(10000);
        P00 = 1;
        delay(10000);
    }
    
}

五、C语言知识点

1、头文件包含

2、main函数

3、while、for的用法

4、延时函数的编写

六、产生hex文件

1、点击那个魔法棒

2、在弹窗中,点击Target栏,在Xtal(MHz )对应的框中添11.0592,因为笔者的单片机用得晶振是11.0592MHz,如果你的单片机是12MHz或者其他的频率,那你就写上对应的值就行

3、点击Output栏,在Create Hex File前面的框选中,点击OK

4、点击主界面的Rebuild键,系统就开始编译,并产生Hex文件了,这个前提是你的代码没有问题。

5、去看看工程的文件夹的Objects文件夹,里面果然有LED.hex文件

6、把这个hex文件下载到单片机,

用在官网下载的STC-ISP软件,双击打开,在芯片型号那一栏找到你使用的芯片,在扫描淳口那一栏找到你的下载串口号是多少,在电脑的设别管理器中去看串口号。

先点打开程序文件按钮,找到前面生成的LED.hex文件,然后点击下载/编程按钮,这个时候还不能下载,需要把单片机断电再上电,就开始下载了,不出意外的话,你的灯应该有动作了。

欢迎留言探讨单片机和C语言的学习心得。。。。。。

物联沃分享整理
物联沃-IOTWORD物联网 » 51单片机学习1-使用51单片机点亮LED灯

发表评论