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常用的数据类型
续表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。