51单片机I/O端口结构及使用方法

在后面的例子中,我们会介绍更符合实际应用的发光二极管驱动电路。单片机程序编译完成后,将生成的hex文件装载到用proteus建立的仿真电路中,点击开始仿真按钮,就可以看到程序的运行结果了,可以看到LED被点亮了。本系列实例基本都基于keil和proteus两个软件。

通过本例了解并熟悉以下知识:

1、51单片机I/O口的输出操作;

2.了解最小单片机系统的组成;

3、了解单片机程序的基本框架;

4、了解LED发光二极管的特性。

1.2. 设计理念

电路设计思路:将发光二极管的一端连接到51单片机的I/O口(P1口),发光二极管的另一端连接到电源正极。

编程思路:编写程序,控制与发光二极管相连的I/O口输出高电平(或低电平),从而控制发光二极管点亮(或熄灭)。

1.3. 基础知识

本例用到的基础知识包括以下几个方面:

1、51单片机P1口结构及用法;

2、51单片机最小系统电路组成;

3、发光二极管(LED)的工作原理和用途;

4、51单片机的基本程序框架。

下面我们分别来学习一下这些基础知识。

1.3.1. 51单片机P1口结构及用途

首先我们来看看51单片机长什么样以及电路图中51单片机的识别符号,如图1和图2所示。

51单片机I/O端口结构及使用方法

图1 51单片机实物图

51单片机I/O端口结构及使用方法

图2 51单片机电路符号

51单片机有4个8位并行I/O口,分别是P0、P1、P2、P3。 这四个端口有不同的电路结构和用途。 本例中使用的是P1口,所以我们先了解一下51单片机P1口的内部结构和工作原理。 我们将在后续实例中研究P0、P2、P3口的内部结构和工作原理。

图3为51单片机P1口引脚内部结构图。

51单片机I/O端口结构及使用方法

图3 51单片机P1口内部结构图

51单片机的P1口只能作为普通的通用I/O口(P0、P2、P3口除了作为通用I/O口外,还有第二个功能,将将在以下示例中进行解释)。

从图3可以看出,其输出端连接有上拉电阻,因此可以直接输出高电平或低电平,无需外接上拉电阻。

当端口P1作为输入端口时,必须先向内部锁存器写入“1”,使场效应晶体管VT截止,然后才能从读引脚位置获取端口的电平状态。 否则,如果场效应管处于导通状态,则无法获得正确的引脚电平状态。

1.3.2. 51单片机最小系统电路组成

我们知道,一个电路要想正常工作,必须满足其最基本的工作条件。 同样,对于一个单片机电路来说,想要让单片机电路工作,就必须满足它最基本的要求。 这些要求是:电源、时钟电路、复位电路。

51单片机的最小系统框图如图4所示。

51单片机I/O端口结构及使用方法

图4 51单片机最小系统电路图

对于电子产品来说,首先要为其提供正常的电源才可以工作。 如果没有稳定且合适的电源,它就无法工作。 对于51单片机来说,需要5V稳定的直流电源。

微控制器必须在稳定的时钟脉冲下稳定工作。 就像我们编队训练时,必须有“一、二、一”的统一指挥,才能保持队形稳定、一致。

单片机的复位电路也是必须的,因为当单片机开始工作时,需要在初始状态下配置单片机的内部数据和状态,然后才能按照编程流程正常工作,比如数值​​​​在微控制器的数据存储区(RAM)中。 它们都需要根据确定的初始化默认值开始执行。 如果不是每次都初始化它们,那么每次单片机启动时这些值可能会不同,这会导致程序执行出现问题。

1.3.3. 发光二极管(LED)的工作原理和用途

发光二极管(LED)是单片机学习中最常见的两个组件(另一个组件是按钮。单片机的大部分基本功能都可以使用LED和按钮来实现。我们将在后面的示例中对此有更深入的了解。经验)。

常见发光二极管的外观及连接结构图如图5所示。

51单片机I/O端口结构及使用方法

图5 发光二极管(LED)的实物图

发光二极管(LED)具有与普通二极管相同的特性,并且具有单向导电性。 不同的是,当施加在发光二极管两端的电压超过其导通电压(通常为1.7~1.9V)时,发光二极管就会导电。 当流过它的电流超过一定值(一般为2~3mA,不同颜色的发光二极管电流不同)时,它就开始发光。

1.3.4. 51单片机基本程序框架

任何程序的编写都必须遵循一定的规则和流程。 微控制器程序也是如此。 单片机程序的总体框架如下。

#include   //头文件包含
//全局变量声明和定义
//函数声明
int main(void)
{
	//初始化设置
	
	while(1)
	{
		//程序内容
	}
} 

1.4. 电路设计

本例电路如图6所示,单片机的P1.0口接发光二极管的负极,发光二极管的正极接单片机的VCC端。通过限流电阻供电。

51单片机I/O端口结构及使用方法

图6 基于proteus的51单片机开发实例(一)——点亮小灯

该电路中的发光二极管的驱动电路是典型的“电流吸收”电路。 具体原理是,当P1.0输出高电平时,D1两端均为高电平,因此发光二极管上没有电压差,不会发生导通。 如果打开,则不会发光; 当P1.0输出低电平时,D1两端有电压差,导致导通,发光二极管开始发光。 从电流流向来看,电流从VCC经过限流电阻流向发光二极管正极,再从发光二极管负极流向单片机的P1.0口。 就好像电流被“排泄”到微控制器的 P1.0 中一样。 端口,因此称为“灌”电流。 (相应的,还有电流拉动电路,在下一个例子中,我们将采用电流拉动方式)

需要注意的是,该电路图并不适合正式产品使用,因为微控制器端口的输入或输出电流能力有限,并且通常的微控制器系统不可能只有一个发光二极管。 在下面的例子中,我们将介绍一种更适合实际应用的发光二极管驱动电路。

1.5. 编程

本例的程序代码如下。

#include   //头文件包含
int main(void)
{
	P1=0xfe;//P1.0口输出低电平
	while(1)
	{
		//程序一直在此循环
	}
}

至于#include语句在程序中的作用,我们可以通过阻塞该语句后编译器提示的错误信息来理解。

屏蔽该语句并编译程序后,会出现如图6所示的错误信息。 根据这个信息,我们知道头文件的作用之一就是预定义P1。 这样我们才能在程序中使用P1。 不会出错。

1.6. 模拟示例

单片机程序编译完成后,将生成的hex文件加载到用proteus搭建的仿真电路中。 点击开始模拟按钮,可以看到程序的运行结果,LED灯亮起。 如图6所示。

51单片机I/O端口结构及使用方法

图6 模拟现象:LED点亮

延伸:你可以尝试在proteus环境下修改电阻R2的阻值或者发光二极管D1的导通电流,然后看看发光二极管的亮度如何变化。

1.7. 概括

发光二极管是单片机学习中指示程序执行结果最方便、最直接的器件。 因此,我们必须充分了解发光二极管的特性和工作原理。 在下面的例子中,我们会经常看到用发光二极管来点亮、关闭、闪烁等来指示程序的运行状态。

这一系列的例子基本都是基于keil和proteus这两个软件。 因此,大家需要熟悉如何在keil环境下编写51单片机程序以及如何在proteus环境下建立51单片机仿真项目。

单片机

1.118网址之家论坛3,5002.118

2024-4-24 8:05:37

单片机

技术死宅来了…貌似最后两个推荐能满足题主说能动

2024-4-24 9:07:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索