第3课 点亮第一个发光二极管

发布者:朱颜素韵最新更新时间:2015-05-14 来源: 51hei关键字:发光二极管  单片机 手机看文章 扫描二维码
随时随地手机看文章
在第上一课中,我们主要讲了keil软件的使用及如何使用keil软件建立一个工程文件,下面我们就使用C语言编写一个程序点亮实验板上的一个发光二极管。首先我们来讲一下发光二极管的发光原理。
1、发光二极管发光原理
发光二极管简称LED,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。 当在LED发光二极管PN结上加正向电压时, P区的空穴注入到N区,N区的电子注入到P区,这空穴与电子相复合时产生的能量大部分以光的形式出现,因此而发光,并且根据释放能量的不同能发出不同波长的光,在电路或仪器中可用作指示灯,也可以组成文字或显示器件。
发光二极管按封装(这里可以暂理解为外形)可分为直插式和贴片式的两种,按发光颜色可分为红色、蓝色、绿色等,如图1所,上面为帖片发光二极管,下边为直插式的发光二极管。
 
图1 发光二极管
    LED工作时,应该串接一个限流电阻,该电阻的阻值大小应根据不同的使用电压和LED所需工作电流来选择。LED发光二极管的压降一般为1.5~3.0 V(红色和黄色一般为2V。其它颜色一般为3V),其工作电流一般取10~20 mA为宜。其限流电阻的计算公式为R=(U-UL)/I,U为电源电压,UL为发光二极管正常发光时端电压,I为发光二极管的电流。
以上是发光二极管的基础知识,但这里只说了一些重要的性质和参数,实际在做电路时还要考虑到其它的因素,如各种种样的封装尺寸以及价格等,下面说一下如何通过编程让实验板上的一个发光二极管发光。
学过电子技术的人应该知道,要让一个发光二极管发光我们可能采用如下电路实现,如图2,这里只要限流电阻选择恰当,就可以让发光二极管发光。
图2 全硬件电路实现发光二极管发光
下面我们把电路稍作变化,如图3,把图2中接地的一端直接接到单片机的P1口的第1个引脚上,大家想想现在怎么才能让发光二极管发光呢?可能大家马上会说出,让单片机第1脚输出低电压,而单片机的引脚可以输出0和1两种电平,0代表低电平也就是低电压,1代表高电平也就高电压这个我们在前面的课程中讲过,也就是说我们现在只要能通过程序让每1脚输出0就可以了。[page]
图3 单片机实现发光二极管发光的原理图
为了便于演示结果,我们先给出实验板上的原理图,如图4所示,8个发光二极管通过一个排阻,再通过一个跳线帽接电源的正极5V,而所有管的负极则分别接到单片机的P1口的8个引脚上。关于跳线帽这里就不解释了,下面先说下排阻吧。
所谓排阻,其实就是一排若干个参数完全相同的电阻,主要有有直插和贴片两种形式,如图5所示。它们的一个引脚都连到一起,作为公共引脚,其余引脚正常引出,通常最左边的那个是公共引脚,它在排阻上一般用一个色点标出来。如图4所示,8个发光二极管阴极接单片机P1口的8个引脚,阳极分别接8个电阻的一端,然后电阻的另一端全部接在一起由1脚引出,然后通过跳线帽直接接电源的正极5V。采用排阻直接代替8个电阻,这样不仅可以缩小电路板尺寸,而且也提高的焊点的可靠性。
 
图4 实验板上的8个发光二极管
 
 
图5 直插排阻和贴片的排阻
2、发光二极管及流水灯程序
2.1 点亮第一个发光二极管
上面我们介绍了发光二极管的发光原理,同时对实验板上的原理图作了相应的分析,下面给出点亮第一个发光管具体程序。关于工程文件的建立,前面已经详细的讲过,这里不在叙述,这里我们点击keil软件,建立工程LED1,然后建立文件LED1,最后输入程序如下。
例1 点亮第一个发光二极管程序
(2)输入源程序(又称为程序编辑)
#include//52系列单片机头文件
sbit D1=P1^0;//位定义单片机P1口的第1位
 
void main()//主函数
{
       D1=0;//点亮第一个发光二极管
}
输入上面程序时,keil软件会自动识别C51的关键字,如本程序中的include、sbit、void,并会以不同的颜色加以提示,如果输入有误,则不会变颜色,这样就可以使得程序编写者减少输入错误,提高编程质量,当然这一系列的前提是,建立文件时必须先保存才会出现这种效果,这个也是我们上一节讲的为什么文件建好后最好先进行保存的原因。
(2)程序的编译与错误检查
程序输入完毕后,下一步的工作就是对文件进行编译和错误检查与排除。
图6 输入代码后的界面[page]
如图6所示,为程序输入后的界面。点击全部编译快捷按钮,此时会进入编译后的界面如图7.
图7 编译后的界面
在图7中我们会下到最下边的编译对话框里会多出几行字,具体的含义如下:
 
创建目标“Target1”
编译文件led1.c…
链接…
程序大小:内部RAM= 9.0个字节 外部RAM =0个字节,ROM空间=18字节
工程“led1”0错误,0警告。
 
这就表示程序语法上没有错误,当然如果有错误,刚编译不能通过,现在我们更改程序,如我们把“sbit D1=P1^0; ”后面的“; ”,再次编译,此时会出现错误提示界面如图8所示。
 
图8编译错误的界面
此时双击错误提示行(图8蓝色行),会有在程序中出现一个箭头,错误信息就出现在箭头附近,这里相当于一个提示,此时根据该提示信息,就可以快速的找到程序错误的地方。
(3)程序下载
在下载程序到单片机之前,我们还需做一步工作就是生成“HEX”文件生成的设置,因为单片机只能认识0和1之类的二进制数字代码,也就是说再复杂的程序最终下载到单片机内部都只能是一连串的二进数。单片机允许下载HEX文件和BIN文件,BIN是二进制文件,是binary的简称,可直接下载到单片机内部,HEX是十六进制文件,是hexadecimax的简称,下载时经过下载软件,又被翻译成二进制文件,最终下载到单片机里。
Keil软件可以直接输出HEX文件,但需要设置。此时回到编辑界面,然后点击Project Opitions for Targtet ‘Target 1’选项,或直接点击界面左上角快捷方式按钮,出现设置界面如图9。选择Output选项,然后在Creat Hex file选项前打钩,然后点击确定即可。
图9 hex文件输出设置窗口
HEX文件设置后,会重新回到编辑界面,此时再次点击全部编译按键,此时会在最后面的编译信息窗口看到多出了creating hex file from “led1”…,如图10所示此时表明在工程文件中生成了hex文件,这个
图10 生成hex文件后的窗口
此时我们用ISP软件将来此HEX文件下载到实验板中,看到的实验现象如图11所示。
图11 第一个发光二极管发光的实验现象
关键字:发光二极管  单片机 引用地址:第3课 点亮第一个发光二极管

上一篇:第5课 让发光二极管闪烁
下一篇:第1课 单片机概述

推荐阅读最新更新时间:2024-03-16 14:02

以89C51单片机为核心器件的自动控制系统编码译码显示实验电路设计
引 言 在日常数字逻辑电路实验中编码译码显示实验电路是编码、译码、显示三个电路的综合运用, 在数字逻辑实验电路中具有重要的地位, 在实验的过程中, 时常会出现显示结果的抖动, 经研究出现这种现象主要原因是:编码电路的编码信号输入采用手工拨盘方式, 产生的编码输入信号往往不稳定; 另外, 电路控制性能较差,不能达到自动复位, 为此有必要对现有电路进行改进,在电路的设计上采用89C51 单片机为控制电路制作而成, 自动提供稳定编码输入信号, 显示结果稳定性和电路控制性能大大提升, 提高了教学实验质量。 1 编码译码显示实验电路的基本结构 编码译码显示电路的基本结构如图1 所示, 主要由控制电路、编码信号发生器、编码译码显示电路等组
[单片机]
以89C51<font color='red'>单片机</font>为核心器件的自动控制系统编码译码显示实验电路设计
STM32学习笔记:单片机按键单击、双击、长按功能实现
由于项目产品的需要,只能设置一个按键,但是需要实现短按(即单击)切换工作模式、长按开关机、双击暂停等复用功能。下图是三种情况下的按键波形。按键未按下时是高电平,按下去是低电平。按键单击时,判断时间门槛设置为50~2000ms;长按门槛为持续按下2000ms。双击可以视为时间间隔很短的俩次有效单击,从第一次单击上升沿到第二次单击上升沿延时门槛为100~500ms。 //按键按下去会出现下降沿,设置按键IO口所在的外部端口为下降沿触发中断。void EXTIX_Init(void) { EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure;
[单片机]
STM32学习笔记:<font color='red'>单片机</font>按键单击、双击、长按功能实现
提高MSP430G系列单片机的Flash 擦写寿命的方法
摘要 在嵌入式设计中,许多应用设计都需要使用EEPROM 存储非易失性数据,由于成本原因,某些单片机在芯片内部并没有集成EEPROM。MSP430G 系列处理器是TI 推出的低成本16 位处理器,在MSP430G 系列单片机中并不具备EEPROM。为了存储非易失性数据,MSP430G 系列处理器在芯片内部划分出了256 字节的Flash 空间作为信息Flash,可用于存储非易失性数据,但是由于Flash 与EEPROM 在擦写寿命上存在一定差距,所以在实际应用中,这种应用方式并不能够满足所有客户的需求。本应用笔记介绍了使用代码区域Flash 来模拟EEPROM,通过一定的软件处理算法,可以大大增加数据存储周期的一种方法。本文给出了
[单片机]
提高MSP430G系列<font color='red'>单片机</font>的Flash 擦写寿命的方法
STM32单片机学习笔记(5):ADC模数转换器
项目简介 利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第五部分针对STM32单片机内置ADC模块的学习和理解。 硬件模块 STM32F103R4 LDR 串口模块 软件工具 CubMX Proteus KEIL 电路连接图 工作流程 首先创建一个CubMX工程,选择ADC模块 其余保持默认即可。 然后就是编写程序,程序代码在后面会列出来,这里简单说说自己遇到的一些问题。刚开始出来的结果全是0,但是网上有人说在实物开发板上是可以正常运行的。本来想放弃选用ADC0832模块的,不过不幸的事
[单片机]
STM32<font color='red'>单片机</font>学习笔记(5):ADC模数转换器
单片机中17种常见常用的设计模块
  以下分享17种单片机常用电路设计模块,包括:双路232通信电路3线连接方式,三极管串口通信,单路232通信电路,USB转232电路等。   1、双路232通信电路3线连接方式,对应的是母头,工作电压5V,可以使用MAX202或MAX232.      2、三极管串口通信   本电路是用三极管搭的,电路简单,成本低,但是问题,一般在低波特率下是非常好的。      3、单路232通信电路   三线方式,与上面的三级管搭的完全等效。      4、USB转232电路   采用的是PL2303HX,价格便宜,稳定性还不错。      5、SP706S复位电路   带看门狗和手动复位,价格便宜(美信的贵很多),
[单片机]
<font color='red'>单片机</font>中17种常见常用的设计模块
单片机脉搏测量仪
  本文介绍一种用单片机制作的脉搏测量仪,只要把手指放在传感器内,很快就可以精确测出每分钟脉搏数,测量的结果用三位数字显示出来。   一、电路工作原理   电路原理见附图。电路由传感器电路、信号放大和整形电路、单片机电路、数码显示电路等四部分组成。   传感器由红外线发射二极管和接收二极管组成,测量原理如下:将手指放在红外线发射二极管和接收二极管之间,血管中血液的流量随着心脏的跳动变化,由于手指放在光的传递路径中,血管中血液饱和度的变化将引起光的传递强度变化,此变化和心跳的节拍相对应,因此红外接收二极管的电流也跟着心跳的节拍改变,使得红外接收二极管输出与心跳节拍相对应的脉冲信号。该脉冲信号经F1~F3、R3~R5。C1、
[测试测量]
<font color='red'>单片机</font>脉搏测量仪
AT89S52单片机并行I/O端口
单片机I/O端口是数据输入缓冲、数据输出驱动及锁存多项功能I/O电路,是单片机对外部实现控制和信息交换的必经之路。 AT89S52单片机I/O端口有串行和并行之分,有P0、P1、P2和P3四个8位并行I/O端口,共占32根引脚,每一个I/O端口都能独立地用作输入或输出;有1个串行I/O端口,一次只能传送一位二进制信息。 1.并行I/O端口 P0口为三态双向口,P1、P2、P3口为准双向口。 (1)P0端口 P0口字节地址80H,位地址80H~87H。P0口除作为准双向通用I/O接口使用外,还有更重要的两种功能:分时复用为地址总线和数据总线。P0口输出时能驱动8个LSTTL负载,即输出电流不小于800 A。P0口位结构如
[单片机]
AT89S52<font color='red'>单片机</font>并行I/O端口
基于单片机的射频读卡器设计
引 言 无线射频识别技术(RFID)以其高度安全保密性、通信高速性、使用方便性、成本低等特点而得到快速的普及和推广,现已广泛地应用于各类门禁控制系统、公共交通支付系统、医疗保险系统、停车场管理系统、仓储管理、车辆防盗等方面,并带动了读写器和各类应用产品的开发和推广。本文在分析射频识别系统组成和原理的基础上,提出了基于STC11F32高速单片机和MFRC500芯片的射频读写器设计方案;同时,在该读卡器上扩展了点阵图形液晶LCD和串行存储器W25X80,以及USB芯片CH340T等外围设备。LCD可以显示各种图形和汉字;串行存储器用来存储点阵字库、图形库等;USB芯片使得该读卡器省去了串口和电源供电端口,可以通过USB接口和PC管理
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved