51单片机如何跳出wile循环_基于proteus的51单片机开发实例(1)

1. 基于proteus的51单片机开发实例(1)--点亮一个小灯

1.1. 实验目的

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

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所示。

54d7c76d7f1b7e0a1ebe0609154365fc.png

图1 51单片机实物图

86c652be7f7d16b37ddd8ff972be0061.png

图2 51单片机的电路符号

51单片机有4个8位的并行I/O端口,分别是P0、P1、P2、P3。这4个端口分别有不同的电路结构及用途。本例中用到的是P1端口,所以我们先来了解一下51单片机P1端口的内部结构及工作原理。置于P0,P2,P3口的内部结构及工作原理,我们在后续的例子中陆续学习。

图3所示是51单片机P1口的引脚内部结构。

e91fcfa60d824e10ba274b9c9ac2c96e.png

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

51单片机的P1端口只能作为普通的通用I/O口使用(P0,P2,P3口除了作为通用I/O口功能外,还有第二功能,接下来的实例中会讲解)。

从图3中可以看出,在其输出端接有上拉电阻,所以它可以直接输出高电平或者低电平,不需要外接上拉电阻了。

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

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

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

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

7bfe8b21b2791c9ea0d16aab078f510d.png

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

对于电子产品来说,首先必须给它提供正常的电源才能工作,没有一个稳定的、适配的电源,它就不能工作。对于51单片机来说,它需要5V的稳定直流电源供电。

单片机必须在稳定的时钟脉冲下才能稳定的工作,就像我们列队操练,必须在统一的“一二一”的口令下,才能够保持队型不乱,步伐一致。

单片机复位电路也是必须的,因为单片机开始工作时,需要先将单片机内部的数据、状态配置在一个初始状态下,才能够按照程序设计的流程正常工作,比如单片机数据存储区(RAM)中的数值都需要按照确定的初始化的默认值开始执行,如果每次不初始化,则这些数值可能每次单片机启动时都不一样,这样就会导致程序执行出现问题。

1.3.3. 发光二极管(LED)的工作原理及使用方法

发光二极管(LED)是单片机学习中最常见的两种元器件(另一个元器件是按键,使用LED和按键就可以把单片机的大部分基础功能实现,在后面的实例中我们会对此有深切体会)。

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

4104ef83326389e3d128a5d060ea0eda.png

图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端。

c7add289c9d68ba27873f0da0780064e.png

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

本电路中发光二极管的驱动电路是典型的“灌电流”电路,具体原理是,当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所示。

82016fec060d27181ef9fd0678c59b2c.png

图6 仿真现象:发光二极管点亮

拓展:大家可以试着在proteus环境下,将电阻R2的阻值或者发光二极管D1的导通电流修改一下,然后再看看发光二极管的亮度会有什么变化。

1.7. 总结

发光二极管是单片机学习中最方便、最直接的指示程序运行结果的器件。所以我们要对发光二极管的特性和工作原理有充分的理解。在后面的实例中,我们将会经常看到使用发光二极管的点亮、熄灭、闪烁等状态指示程序的运行状态。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值