点亮一个发光二极管LED--51的第一个程序
来源:互联网 发布:彩虹秒赞源码7.8 编辑:程序博客网 时间:2024/06/15 03:28
点亮一个发光二极管LED--51的第一个程序
一、发光二极管LED的参数
要点亮LED,首先要清楚LED的参数,这样才能将它点亮。LED的压降一般为1.5~2.0 V,其工作电流一般取10~20 mA为宜。换句话说,只要我们给LED加上1.5~2.0V的正向电压,10~20mA的电流,那么就可以使LED正常发光了。
二、单片机与LED电路图如下所示:
由于51单片机的驱动能力有限,所以外接74HC245总线驱动器,加强驱动能力。当OE接地,AB/BA接Vcc时,数据流向为A到B,即当P2.0输出“1”时,B0也为“1”,这时,LED的压降为0,故LED不亮;当P2.0输出“0”时,B0也为“0”,这时,LED的压降不为为0,但为多少呢?这个取决与R1,为了LED正常发光,及给LED加上1.5~2.0V的正向电压,10~20mA的电流,则此时R1两端电压为3.2V左右,电流为20mA(Vcc=5V,LED额定电压为1.8V,电流为20mA)。R1=3.2/0.02=160欧姆。此时硬件电路已经接好。
三、程序设计
由上面的分析可知,只要使P2.0输出为“0”,即可点亮LED
1、汇编语言设计
ORG 0000H ;程序开始
MOV P2,,#0FEH ;使P2.0输出“0”
END
2、C51语言设计
#include<reg52.h> //此文件包含了,51特殊功能寄存器的定义,必须包含进来
Void main()
{
P2=0xfe; //使P2.0输出“0”
}
点亮LED后,那么流水灯就简单得多了。
流水灯的汇编语言程序设计:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV A,#0FEH
LOOP:
MOV P2,A ;点亮第一个LED
RL A ;A向左移移一位,第一次执行是A变为FD
LCALL DELAY ;调用延时子程序
AJMP LOOP ;跳到LOOP处,此时A=FDH,赋给P2点亮第二个LED,依次类推
DELAY: ;延时子程序
MOV R7,#250
L1: MOV R6,#250
L2: DJNZ R6,L2
DJNZ R7,L1
RET
END
流水灯的C51语言程序设计:
#include<reg52.h>
void Delay(int n) //延时1ms子程序
{
int x,y;
for(x=0;x<110;x++)
for(y=0;y<n;y++);
}
void main ()
{
int i,temp=0xfe;
while(1)
{
for(i=0;i<8;i++) //去
{
P2=~(1<<i);
Delay(50);
}
for(i=7;i>0;i--) //回
{
P2=~(1<<i);
Delay(50);
}
}
}
- 点亮一个发光二极管LED--51的第一个程序
- 点亮第一个发光二极管
- MSP430F1612 第一个程序,点亮一个LED灯
- 点亮人生中第一个发光二极管
- stm8 点亮第一个LED
- 【记录】STM32学习之第一个程序(点亮LED)
- 第一个裸机程序---点亮led小灯
- 单片机小白学步系列(十四) 点亮第一个LED的程序分析
- 用IAR开发第一个程序,点亮led灯以及建立工程的步骤。
- 点亮一个发光二极管
- 天才第一步,点亮人生中的第一个发光二极管
- 终于点亮ARM的第一个LED了。。。
- 我的第一个GPIO实验,点亮一盏LED
- 51单片机 学习之旅[1] 点亮第一个LED
- STM32初探-点亮第一个led灯
- 第一个驱动程序(点亮LED灯)
- ZigBee基础实验-点亮第一个LED
- lesson1~点亮第一个LED灯
- 一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走1公里又要吃掉1根胡萝卜。问:商人最多可卖出多少胡萝卜?
- 牛新庄博士
- 测试人员的培养过程-1
- 使用c#开发mapserver之环境变量
- VS2008+DDKWIZARD+WDK基于WIN7内核编程环境配置
- 点亮一个发光二极管LED--51的第一个程序
- Struts2配置
- Nvidia最新的驱动不支持-2.6.32-5的内核?
- 关于数据库是否使用索引的讨论,我想说的
- asp.net 编码问题
- 测试人员的培养过程-2
- 51单片机之数码管显示
- C++ 虚函数、多态性的演示 -- 虚拟析构函数
- 安装SQL Server 2005 Performance Dashboard Reports的技巧