WLGK-51单片机接口技术基础实验—LED闪烁灯

当我们开始接触单片机,首先接触的第一个实验就是LED灯的使用,类似于我们学习软件开始接触的第一个程序“HelloWorld”,这个实验是带领我们走入“软硬件综合使用”的一个很好入门示例,51单片机是他的一个载体。下面小伙伴们,让我们一起来揭开LED的神秘面纱吧!

万立高科官网:www.wanligaoke.com

万立高科官方商城:http://www.wlgkbj.com

万立高科淘宝直销店铺:https://robot-ds.taobao.com

万立高科-单片机技术交流群:477250411

一、  实验目的

掌握以下方法:

1.掌握LED的电子特性;

2.掌握在实际使用环境下,如何配合硬件原理图实现LED闪烁灯程序的编写;

3.掌握如何将编译生成的可执行文件LED.HEX文件下载到单片机并运行起来看到试验效果

二、实验环境

1.个人微机一台:Windows操作系统(Win xp或者win7均可以);

2.Keil 4集成开发环境;

3.串口下载线一根;

4.WLGK-51ZC开发板。

三、试验步骤

在做学习这个试验之前,我们首先冥想一下:LED闪烁灯是一个什么样的效果?我相信即使从未接触过单片机的小伙伴,也很容易想象到是这样的一个效果:“亮-灭-亮-灭-…”,是这样一个亮和灭交替的过程。建立这个概念非常重要,下面我们将沿着这个思路一步一步带你实现这个过程和现象。具体的可以拆分成下面几步:

  • 首先我们学习在系统上电后如何点亮LED灯;

  • 然后我们学习在LED灯点亮以后,如何将LED灯熄灭;

  • 最后我们学习如何控制LED灯一亮一灭;

这里最后一步,可能有人会问,阿甘老师,LED亮和灭都有了,一亮一灭不是很简单吗?把这两个步骤连接起来不就可以了吗?嗯,小伙伴都的确很聪明,这里我先带小伙伴跟我一起联想一下,一亮一灭,好像是这样,但是……如果亮和灭之间足够快,好比“亮-灭-亮”中间“灭”的时间足够短,是不是就相当于常亮(“亮-亮”),人眼并不能感觉到LED灭的这一个效果,这就是技术理论实现与做产品的一个区别,我们在学习和工作中将会经常遇到类似的思考,这就是我们慢慢积累起来的独特经验。这样一个性质就是LED最基本的一个电子特性,他将深刻的印在我们的脑海里。这就是这个试验,阿甘老师要给大家讲的LED的电子特性,下面的试验我将带大家去感觉一下这个效果。

3.1 LED灯硬件电路原理图分析

这里我们可以看到“WLGK-51ZC开发板”中共有8路LED灯。这8路是并列的,也就是说我们学会控制一路LED灯,就可以学会控制8路LED灯。

LED点亮的条件:当阳极与阴极之间电压的压降到达一定参考值时,LED就会发光点亮,下面是一个压降的参考值。这里我们可以看到上图VCC在JP4端子用短线帽接上后,电压为5V,然后每一路LED串联了一个电阻(排阻),这个LED两端的压降(LED阳极电压-LED阴极电压)只要满足下面的值,就可以点亮。

所以我们当我们给P00端0V的电压的时候,经过二极管的电流就可以点亮LED。

3.2 LED灯点亮

假设我们现在来控制P00路LED灯,那我们只需要P00端输出低电平就可以控制LED灯D2。程序上怎么来控制P00端输出低电平了?答案如下:

sbit dat=P0^0;                                    //定义IO口,P00对应的IO控制口

dat = 0;                                     //P00的标号dat赋值为0,表示为低电平

OK,下面看一下完整的程序:

/******************************************************************

*

* WLGK-51ZC开发板接口技术基础实验-LED闪烁灯-演示程序

*

* 版本: V1.0 (2015/9/26)

* 作者:  阿甘 (单片机技术交流群:477250411 )

* 网站:  www.wanligaoke.com(万立高科)

*

*

******************************************************************/

#include<reg52.h>

/*****************************************************************

第一行是一个"文件包含"处理。

所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来

这里的程序虽然只有短短几行,但C编译器在处理的时候却要处理几十或几百行

*******************************************************************/

sbit dat=P0^0;                                    //定义IO口,P00对应的IO控制口

void main(void)                                        //每一个C语言程序有且只有一个主函数,

{

while(1)                                         //循环条件永远为真,以下程序一直执行下去。

{

dat=0;                                    //  I/O口P0.0输出高电平,小灯点亮。

}

}

实现现象:LED常亮。即已经达到了我们的实现目的。

3.2 LED灯熄灭

接上述内容,那么LED如何熄灭?答案很容易想到,如下:

sbit dat=P0^0;                                    //定义IO口,P00对应的IO控制口

dat = 1;                                     //P00的标号dat赋值为1,表示为高电平

OK,下面看一下完整的程序:

/******************************************************************

*

* WLGK-51ZC开发板接口技术基础实验-LED闪烁灯-演示程序

*

* 版本: V1.0 (2015/9/26)

* 作者:  阿甘 (单片机技术交流群:477250411 )

* 网站:  www.wanligaoke.com(万立高科)

*

******************************************************************/

#include<reg52.h>

/*****************************************************************

第一行是一个"文件包含"处理。

所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来

这里的程序虽然只有短短几行,但C编译器在处理的时候却要处理几十或几百行

*******************************************************************/

sbit dat=P0^0;                                    //定义IO口,P00对应的IO控制口

void main(void)                                        //每一个C语言程序有且只有一个主函数,

{

while(1)                                         //循环条件永远为真,以下程序一直执行下去。

{

dat=1;                                     //  I/O口P0.0输出高电平,小灯点亮。

dat=0;                                    // I/O口P0.0输出高电平,小灯点亮。

}

}

实现现象:LED长亮。Why?回顾一下我们在一开始讲的LED电子特性。那么下面怎么来做了?嗯,有小伙伴说,阿甘老师,在亮和灭之间加一个延时,让亮常亮一会儿,灭长灭一会儿,这样不就可以了吗?嗯,阿甘老师想说的是:事实就是这样的,我们只是程序的搬运工,哈哈,开个玩笑,完整程序如下:

/******************************************************************

*

* WLGK-51ZC开发板接口技术基础实验-LED闪烁灯-演示程序

*

* 版本: V1.0 (2015/9/26)

* 作者:  阿甘 (单片机技术交流群:477250411 )

* 网站:  www.wanligaoke.com(万立高科)

*

*

******************************************************************/

#include<reg52.h>

/*****************************************************************

第一行是一个"文件包含"处理。

所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来

这里的程序虽然只有短短几行,但C编译器在处理的时候却要处理几十或几百行

*******************************************************************/

sbit dat=P0^0;                                    //定义IO口,P00对应的IO控制口

void delay02s(void)                            //约延时0.2秒子程序

{

unsigned  char i,j,k;                   //定义3个无符号字符型数据。

for(i=20;i>0;i--)//作循环延时

{

for(j=20;j>0;j--)

{

for(k=240;k>0;k--);

}

}

}

void main(void)                                        //每一个C语言程序有且只有一个主函数,

{

while(1)                                         //循环条件永远为真,以下程序一直执行下去。

{

dat=1;                                    //  I/O口P0.0输出高电平,小灯点亮。

delay02s();                                 //延时经过0.2秒。

dat=0;                                    // I/O口P0.0输出高电平,小灯点亮。

delay02s();                                 //延时经过0.2秒。

}

}

实现现象:实现了LED灯一闪一灭的闪烁效果。

3.2 LED灯闪烁

有小伙伴会问:阿甘老师,你明明前两步做的是LED点亮和熄灭的效果,为什么最后弄出来一个闪烁的效果,这和我想要的效果不符??抗议!!!

好的,小伙伴稍安勿躁,阿甘老师来给大家说明一下:

(1)   首先,单片机的程序运行有一个什么特性??单片机的程序运行是一个单流程的环境,也就是说会一步一步的执行,即每一刻单片机MCU运行的时候会顺序执行程序。所以写单片机程序实际看起来就好比在时间的这样一个维度上去完成搭积木的一个过程,十分有趣,这是阿甘老师要给大家说明的第一点;

(2)   然后,上述的Main函数中的while(1)是做什么用的?防止单片机程序跑飞,不能按照我想要的闪烁效果来讲??为什么程序会跑飞了??这是因为外部环境可能会干扰单片机的电气引脚的电平,比如手指带静电碰一下,这个小伙伴很容易理解。但一般这种现象在学习过程中频率出现较低。但在日后的工作项目中,我们是需要去考虑这样的一种情况,我们常常需要去设计工业级甚至军工级的产品,每一种设计细节我们都需要考虑,这个问题随着小伙伴经验的慢慢积累,就会慢慢明了解决。我们通常采取的是一种看门狗定时喂狗的方式,这个我会在后面给大家单独讲解。

这里的while(1){}是单片机程序的一个标准写法,程序如下:

void main(void)                                        //每一个C语言程序有且只有一个主函数,

{

while(1)                                         //循环条件永远为真,以下程序一直执行下去。

{

……

}

}

(3)如果我们想要程序实现亮和灭的效果怎么实现了?而不是闪烁的效果,也很简单,程序如下,小伙伴憋说话,用心感受一下:

/******************************************************************

*

* WLGK-51ZC开发板接口技术基础实验-LED闪烁灯-演示程序

*

* 版本: V1.0 (2015/9/26)

* 作者:  阿甘 (单片机技术交流群:477250411 )

* 网站:  www.wanligaoke.com(万立高科)

*

*

******************************************************************/

#include<reg52.h>

/*****************************************************************

第一行是一个"文件包含"处理。

所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来

这里的程序虽然只有短短几行,但C编译器在处理的时候却要处理几十或几百行

*******************************************************************/

sbit dat=P0^0;                                    //定义IO口,P00对应的IO控制口

void delay02s(void)                            //约延时0.2秒子程序

{

unsigned  char i,j,k;                   //定义3个无符号字符型数据。

for(i=20;i>0;i--)//作循环延时

{

for(j=20;j>0;j--)

{

for(k=240;k>0;k--);

}

}

}

void main(void)                                        //每一个C语言程序有且只有一个主函数,

{

while(1)                                         //循环条件永远为真,以下程序一直执行下去。

{

dat=1;                                    //  I/O口P0.0输出高电平,小灯点亮。

delay02s();                                 //延时经过0.2秒。

dat=0;                                    // I/O口P0.0输出高电平,小灯点亮。

delay02s();                                 //延时经过0.2秒。

while(1);                    //程序停止在这里,不再往下循环

}

}

四、试验总结与引申

好了,到这里了,相信小伙伴对LED的使用并不陌生了,留给大家一个任务:

任务:如何实现8路LED的同时闪烁??

给大家一个提示:写单片机程序实际看起来就好比在时间的这样一个维度上去完成搭积木的一个过程,所以8路LED灯好比就是1路1路的去控制。当然也可以一次性控制?这个大家自己查询资料一下看看,不外乎两种方式,要求大家两种方式都需要掌握:

第一种:1路1路的去控制每一路LED灯同时“亮”和同时“灭”;

第二种:一次控制8路LED灯“亮”和同时“灭”。

万立高科-阿甘老师 感谢您的参与,精彩一路相随!!!

万立高科官网:www.wanligaoke.com

万立高科官方商城:http://www.wlgkbj.com

万立高科淘宝直销店铺:https://robot-ds.taobao.com

万立高科单片机技术交流群:477250411

转载于:https://blog.51cto.com/10757737/1698569

WLGK-51单片机接口技术基础实验 ——LED闪烁灯相关推荐

  1. WLGK-51单片机接口技术基础实验 —LED闪烁灯

    WLGK-51单片机接口技术基础实验--LED闪烁灯 当我们开始接触单片机,首先接触的第一个实验就是LED灯的使用,类似于我们学习软件开始接触的第一个程序"HelloWorld", ...

  2. 【单片机】51单片机入门教程中(LED流水灯)

    ✌ 作者简介:盐焗小星球_wyb,一名在读的电子信息工程专业大学生.

  3. c语言p1口亮灯,单片机实验开发与微机原理接口技术综合实验装置,上海求育

    原标题:单片机实验开发与微机原理接口技术综合实验装置,上海求育 上海求育QY-JXSY43单片机微机开发实验箱 上海求育QY-JXSY43单片机微机开发实验箱是集51.8088二大系列CPU于一体的二 ...

  4. led接口实验微型计算机,“微机原理与接口技术”开放性实验建设——“点阵LED显示器显示汉字”实验...

    "微机原理与接口技术"开放性实验建设--"点阵LED显示器显示汉字"实验 维普资讯 http://doc.xuehai.net 第 2 6卷第 9期 20 0 ...

  5. 单片机开发应用技术综合实验装置

    ZN-P01型 单片机开发应用技术综合实验装置 一.概述 ZN-P01型 单片机开发应用技术综合实验装置由控制屏.实验挂箱.实验桌组成,通过本实验台可完成单片机的接口扩展.数据采集.数据显示.键盘控制 ...

  6. 51单片机入门(2)LED点亮的背后

    上一节提到了51单片机开发环境的搭建,这节我们开始正式进入51单片机的学习--点亮LED. 所有的控制类芯片学习的第一个实践就是点亮LED,这是最简单.最基本的操作,但这个实现过程却可能攘括了单片机的 ...

  7. 单片微型计算机实验指导,《单片微型计算机与接口技术》实验指导书..doc

    <单片微型计算机与接口技术>实验指导书. <单片微型计算机与接口技术>操作指导书 一.单片机软硬件仿真工具的使用 一.利用Keil进行软件仿真 (1)建立工程文件:启动μVis ...

  8. p1口输入输出实验c语言程序,51单片机P1口输入输出实验实验报告.doc

    51单片机P1口输入输出实验实验报告 实验一 P1口输入输出实验一 实验目的 1 掌握P1口作为I/O口时的使用方法. 2 理解读引脚和读锁存器的区别. 实验原理 由 AT89C51 组成的单片机系统 ...

  9. Web前端技术基础实验报告三之超链接与多媒体文件应用

    目录 Web前端技术基础实验报告 实验题目:超链接与多媒体文件应用 实验目的:熟悉超链接与多媒体文件的插入的相关标签 实验内容 : 实验过程及结果 Web前端技术基础实验报告 实验题目:超链接与多媒体 ...

最新文章

  1. 爬一爬 iPhone 11为何嘴上说真丑,销量却真香?
  2. oracle10g cssd日志,【案例】Oracle CSSD进程HANG导致RAC节点重启原因分析笔记
  3. git/github的使用
  4. 计算机导航 骨科 ppt模板,(医学PPT课件)术中即时三维导航在脊柱侧弯矫形的应用...
  5. Centos 安装python 3.7 遇到 ModuleNotFoundError: No module named _ctypesmake [install] Error 1(亲测下面的红字内容)
  6. java行情一年比一年差_推动Java前进? 一个定义。 一年回顾。
  7. 【转】成为Java顶尖程序员 ,看这10本书就够了
  8. 机器学习1---基本概念
  9. JAVA day06 酒店管理系统
  10. CCF201512-4 送货(100分)
  11. c++ 虚函数实现原理
  12. atitit.高性能遍历 文本文件行 attilax总结
  13. 【Android】我用 ARCore 做了一个 1:1 的高达
  14. 【ArcGIS微课1000例】0010:ArcGIS影像裁剪(裁剪、掩膜提取)
  15. 【不生气的智慧】王焕斌--书记
  16. YUV420(I420)与YV12的区别,YUV420p与YUV420区别
  17. 全国人工智能师资培训班·上海站火热招生中
  18. python位置参数错误_python-2.7 – python:组合位置和可选参数时argparse抛出值错误...
  19. 小程序页面卡顿解决问题
  20. Ubuntu LiveSuit V3.06不能烧写问题

热门文章

  1. 做一个简单计算器(两个数的加减乘除)扣扣116119409
  2. 音响设备常用连接头及音视频线材的制作方法
  3. word固定上方菜单栏
  4. 【Vue】Vue中传值的几种方法,案例代码解析
  5. html合并单元格后有虚线,excle单元格中间出现虚线/Excel表格里出现虚线,是怎么回事?...
  6. Spring Boot入门-快速搭建网页
  7. 存储卡中各种文件夹用处
  8. 机械硬盘速度测试软件用哪个,比机械硬盘快多少? SSD测量了常用软件和应用速度...
  9. pdf打印出现绘图错误_CAD图纸如何按照1:20比例打印?这个打印技巧我一定要告诉你...
  10. 计算机考研350是什么水平,计算机考研考350难吗