首页 理论教育 点亮一个LED灯的实验探究

点亮一个LED灯的实验探究

时间:2023-06-30 理论教育 版权反馈
【摘要】:图2.1.5点亮一个P2.0所接LED灯程序流程图参考程序本实验可以用位定义法和直接对I/O口赋值两种方法实现。此外程序中的while起到持续点亮LED灯的作用。同理,如果要用P1.5点亮LED灯,只需设置P1口为11011111,即十六进制数DF H即可。

点亮一个LED灯的实验探究

1.任务及要求

任务:设计一个程序,点亮P2.0所接的LED灯,电路接线如图2.1.4所示。

要求:通过本实验,熟悉Keil μVision4开发软件的使用方法,熟悉51单片机并行I/O口的输出方式。

2.实验接线

本实验接线如图2.1.4所示。采用单片机I/O端口低电平(P2.0=0)直接驱动LED,在电源和驱动端口之间用一个470Ω电阻和LED串联,470Ω电阻起分压作用。

图2.1.4 点亮一个P2.0所接LED灯参考接线

注意:发光二极管种类繁多,本实验使用的发光二极管正向导通电压约为1.5V~1.85V,工作电流约为5mA~15mA,假定LED发光时的电压为1.5V,分压电阻为470Ω,那么:

U=1.5V=470Ω×I

则I=7.4 mA,在5mA~15mA的范围内,满足需要。

3.程序流程图及参考程序

(1)程序流程图

本实验参考程序流程图如图2.1.5所示。

图2.1.5 点亮一个P2.0所接LED灯程序流程图

(2)参考程序

本实验可以用位定义法和直接对I/O口赋值两种方法实现。

①位定义法

#include<reg52.h> //包含头文件

sbit LED=P2^0; //位定义P2.0引脚名为LED,以后程序中P2.0引脚就用LED代替

(www.xing528.com)

注意:位定义法即直接给I/O口某一位赋值的方法,此方法特别注意用sbit语句对I/O口某一位进行位定义,如程序中的sbit LED=P2^0;语句。此外程序中的while(1)起到持续点亮LED灯的作用。

②直接对I/O口赋值法

注意:由于51单片机P0~P3口默认的复位值为FF H,即8位的复位值都为11111111。在此实验中,结合电路接线,只需把P2口8位设置为11111110,即十六进制数FE H(在C语言中用0Xfe表示)即可。同理,如果要用P1.5点亮LED灯,只需设置P1口为11011111,即十六进制数DF H(在C语言中用0Xdf表示)即可。

4.思考题

设计一程序,用P1.3引脚控制发光二极管阴极,并点亮。

知识补充

1.头文件reg52.h

为了在C程序中使用特殊功能寄存器及各位位名,必须先在“reg51.h”“reg52.h”等头文件中做定义。但也有一些特殊功能寄存器未做定义,如4个并行I/O口P0~P3各位、累加器A、寄存器B等,需要用户在使用时定义。本书中的实验项目可以采用软件仿真实现或者基于学习板硬件实现。软件仿真时选用的目标器件是AT89C52;硬件实现时学习板上的目标器件是STC89C52,STC89C52能基本完全兼容AT89C52。本书所有示例都包含头文件reg52.h,头文件内容见附录B。

2.单片机C语言编程中常用的数据类型

单片机C语言编程中常用的数据类型如表2.1.3所示,在标准C的基础上,扩展了4种数据类型,包括bit(位变量)、sbit、sfr(特殊功能寄存器)和sfr16。

bit:位变量,取值为“0”或“1”;

sbit:特殊功能位,是特殊功能寄存器的可寻址位;

sfr:特殊功能寄存器;

sfr16:16位的特殊功能寄存器。

表2.1.3 C51常用的数据类型

续表

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈