当前位置:文档之家› 点亮LED灯

点亮LED灯

实验一点亮你的LED灯
一、实验目的
1.学会使用51单片机开发的两大软件:编程软件Keil μVision4(简称Keil C51)和
下载软件STC-ISP。

2.理解单片机最小系统、单片机外围电路、Flash、RAM和SFR概念。

3.了解普通发光二级管的参数,掌握限流电阻的计算方法。

二、实验内容
通过对单片机编程来实现LED小灯的亮和灭。

三、实验参考原理
3.1 单片机内部资源
1)Flash 程序存储空间
2)RAM 数据存储空间
3)SFR 特殊功能寄存器
3.2 单片机最小系统
单片机最小系统的三要素是电源、晶振、和复位电路。

1)电源
目前主流单片机分为5V和3.3V这两个标准,本实验中的STC89C52为5V供电系统,开发板是使用USB口输出的5v直流直接供电的。

从上图可以看到,供电
电路在40引脚和20引脚,40引脚接的是+5V,通常也成为VCC或VDD,代表的
是电源正极,20引脚接的GND,代表的是电源负极。

2)晶振
晶振,又叫晶体振荡器,它起到的作用是为单片机提供基准时钟信号,单片机
内部所有的工作都是以这个时钟信号为步调基准来进行工作的。

SRC89C52单片机的18号引脚和19号引脚是晶振引脚,接了一个11.0592MHZ的晶振(每秒振荡11059200次),外加两个20pf的电容,电容的作用是帮助晶振起振,并维持震荡信号的稳定。

3)复位电路
复位电路接到了单片机的9号引脚RST复位引脚上。

单片机复位一般分为3种情况:上电复位、手动复位和程序自动复位。

总之,一个单片机具备这三个条件就可以运行下载的程序,开发板上其它的比如LED小灯、数码管、液晶等设备都是属于单片机的外设设备,最终用户想要的功能,就是通过对单片机编程来控制各种各样的外设实现的。

3.3 LED小灯
LED,即发光二极管,俗称LED小灯。

种类很多,KST使用的是普通的贴片发光二极管。

这种发光二极管的正向导通电压是1.8~2.2V之间,工作电流一般在1~20mA之间。

上图是开发板上的USB接口电路,通过USB线,计算机给开发板供电和下载程序以及实现计算机和开发板之间的通信。

从图可以看出USB 有6个接口,其中2,3引脚是数据通信引脚,1,4是电源引脚,1是VCC正电源,4是GND即地线。

5,6是外壳,直接接到了GND上。

现在主要来讲1,4引脚,1引脚通过F1(自恢复保险丝,作用是当后级电路发生短路时,八年四自动切断电路,保护开发板及计算机的USB口,当电路正常后,保险丝会恢复畅通,正常工作)接到右侧,在正常情况下保险丝可看为导线,因此左右两边都是USB电源+5V。

右侧有两条支路,第一条是在+5V和GND接了一个100μF的电容,电容是隔离直流的,所以这条支路是没有电流的;第二条支路,发光二极管,和普通二级管一样,这个二极管也有阴极和阳极,也称负极和正极,正向导通,方向接对了才会有电流通过,让LED发光,LED1自身的压降大概是2V,那么下方的R34这个电阻上承受的电压就是3V,如果要求电流范围为1~20mA,根据欧姆定律,就可以算出R34的取值范围是150~3kΩ。

这个电阻大小的变化,直接限制这条电路上电流的大小,因为这个电阻通常称为“限流电阻”。

图中的R34为1KΩ,这条电路的电流大小就可以轻松算出来,3V/1000Ω=3 mA,这个发光二级管的作用只是电源指示灯,使用USB线将开发板和计算机连起来,这个灯就亮了。

同理,板子后级开关控制电路,又添加了一个LED10发光二极管,作用是当打开开关时,这个二极管才亮起,他也是指示灯的作用。

那么今天的实验,把右侧的GND去掉,改成一个单片机的IO口,如下图;
由于电源从正极到负极有电压差,并且电路是导通的,所以就会有电流通过,LED 小灯因为有了电流通过,所以会直接发光,把右侧原GND处接到P0.0口引脚上,如果单片机输出一个低电平,就是跟GND一样的0V电压,就可以让LED小灯发光了。

因为单片机是可以变成控制的,可以让P0.0这个引脚输出一个高电平,就是跟VCC 一样的5V电压,那么这个时候,左侧VCC电压和右侧P0.0的电压是一致的,么就没有电压差,就不会产生电流,LED灯就不会亮,处于熄灭状态。

下面可以用编程软件来实现控制小灯的亮和灭。

3.4 51单片机特有的程序语法
1)特殊功能寄存器
sfr P0 = 0x80;
其中,sfr是关键字,是51单片机特有的,作用就是定义一个单片机特殊功能寄存器,51单片机内部有很多小模块,每个模块居住在拥有唯一房间号的房间内,
同时每个模块有8个控制开关。

P0就是一个功能模块,就住在了0x80这个房间里,
人们就是通过设置P0内部这个模块的8个开关,来让单片机的P0这8个IO口输
出高电平或低电平的。

而51单片机内部有很多寄存器,如果想使用的话,都要提前声明。

好在,keil 软件已经把所有这声明预先写好并保存到一个专门的文件中区,要用的话,只要程
序开头,加一行#include<reg52.h>即可,
2)位定义
sbit LED = P0^0;
sbit就是对刚才所说的SFR里边8个开关其中一个进行定义,以后只要程序里
写LED,就代表P0^0口,也就是给P0^0口取了一个更形象的名字。

四、实验步骤
4.1使用编程软件keil C51新建一个工程
1)打开keil软件,单击Project ->New μV ision Project,出现新建工程的界面,
2)为工程起名字,例如LED, 保存工程到指定目录,便于管理
3)单片机型号选择,由于51内核是由Intel公司创造的,这里直接选择Intel公
司的名下的80/87C52来代替,点击OK, 接着选择”是”即可。

4)File ->new新建一个C语言程序文件.c文件,这就是编写程序的平台。

5)File ->save保存c文件到刚才的目录下。

6)将程序文件添加到工程上去,右击source group 1,单机add fil es to group “source
group 1”,
此时能看到source group 1下边又多了一个LED.c文件。

7)在LED.c上编写点亮小灯的程序,并保存。

8)对程序编译之前,单击Project ->Option for Target “Target1”,在弹出的对话框中,
单击output选项页,选中其中的Create HEX Files复选框,然后单击OK按钮。

9)对程序进行编译,生成需要的可以下载到单片机里的文件,单击Project
->rebuild all target files,对程序进行编译,当提示”0 Error(s),0 Warning(s)”表
示程序没有错误和警告,就会出现“creating hex file from “LED”…”,表示从
当前工程生成了一个HEX文件,这就是要下载到单片机里的HEX文件。

到此为止,程序就编译好了,下一步需要把程序下载到单片机里。

4.2程序下载
1)首先把硬件连接好,板子插到计算机上,打开设备管理器查看所使用的是哪一
个COM口,如下图,找到Prolific USB to Serial Comm Port(COM3)这一项,
这里最后的数字就是开发板目前使用的COM端口号。

2)打开STC系列单片机的下载软件----STC-ISP,如下图
下载软件列出了5个步骤:
a)选择单片机型号,现在用的是STC89C52RC;
b)单机”打开程序文件”,选中工程生成的LED.hex文件打开;
c)选中刚才查到的COM口,波特率使用默认的就行。

d)其余选项使用默认设置即可;
e)STC单片机是冷启动下载,先下载,再给单片机上电。

所以关闭板子上的电源开
关,然后单击Download,等待软件提示上电,然后按下板子的电源开关,程序就
下载到单片机里了,当软件显示“已加密“就表示程序下载成功了。

4.3 程序下载完毕后就会自动运行,可以看到板子上一排LED小灯最右侧的小灯LED2已经发光,现在如果把LED=0改为LED=1,再重新编译下载新的HEX文件,灯就会熄灭。

至此,点亮一个LED灯的实验已经完成。

五、实验参考程序
#include<reg52.h>
sbit LED = P0^0; //位定义给P0^0口取了一个更形象的名字LED sbit ADDR0 = P1^0;//定义74HC138译码器3个输入端和3个使能端
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void main()
{
ADDR0 = 0;//设置74HC138译码器3个输入端和3个使能端
ADDR1 = 1;
ADDR2 = 1;
ADDR3 = 1;
ENLED = 0; //使Y6输出低电平0即LEDS6为低电平0,使能LED LED = 0;//点亮LED灯,此处点亮LED2,右数第一个灯
while(1);//程序停止在这里
}。

相关主题