实验一:LED实验

点亮一盏LED

程序代码

/********************************************************************
*                    
*                        点亮一盏LED灯                               
*
********************************************************************/
#include <reg51.h>     //此文件中定义了51的一些特殊功能寄存器

void main()
{ 
    while(1)
    {
        P2= 0xfe;
    }
}

程序分析

#include <reg51.h>

想知道这句语句什么意思?我们可以让光标停留在这句话,然后右击鼠标。如下图:
这里写图片描述
然后我们可以看到弹出的头文件窗口(由于我们现在只用到部分代码,所以就只copy需要的那部分出来),其中代码如下:

/*--------------------------------------------------------------------------
REG51.H

Header file for generic 80C51 and 80C31 microcontroller.
//80C51 and 80C31类微处理器的头文件

Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __REG51_H__
#define __REG51_H__

/*  BYTE Register  */
//SFR是Special Function Register特殊功能寄存器。
//
sfr P0   = 0x80;
sfr P1   = 0x90;
sfr P2   = 0xA0;
sfr P3   = 0xB0;
sfr PSW  = 0xD0;
sfr ACC  = 0xE0;
sfr B    = 0xF0;
sfr SP   = 0x81;
sfr DPL  = 0x82;
sfr DPH  = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0  = 0x8A;
sfr TL1  = 0x8B;
sfr TH0  = 0x8C;
sfr TH1  = 0x8D;
sfr IE   = 0xA8;
sfr IP   = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;

当我们打开头文件时,怎么才知道我们需要用到哪些寄存器呢

LED原理图

这里写图片描述

发光二极管

这里写图片描述

结论

共阳极公共端接阳极,低电平有效(灯亮), 共阳极数码管内部发光二极管的阳极(正极)都联在一起,此数码管阳极(正极)在外部只有一个引脚
共阴极公共端接阴极,高电平有效(灯亮),共阴极数码管内部发光二极管的阴极(负极)都联在一起,此数码管阴极(负极)在外部只有一个引脚

P2= 0xfe;

那么从上面得出的结论,我们就很容易知道这句话什么意思了。

延时函数

这里写图片描述

这里写图片描述

states()×12sec×106=Xtal s t a t e s ( 指 令 数 ) × 12 s e c × 10 6 = X t a l

/********************************************************************
*                     LED闪烁的简单试验                                
*
********************************************************************/
#include <reg51.h>     

void delay(unsigned int i);  

void main()
{ 
    while(1)
    {   
        int i;
        for(i=5;i>0;i--)
        {
            P2  = 0x00; 
            delay(6000); 
            P2  = 0xff; 
            delay(6000);
        }

        P2  = 0xfe; 
        delay(600);
        P2  = 0xfd; 
        delay(600);
        P2  = 0xfb; 
        delay(600);
        P2  = 0xf7; 
        delay(600);
        P2  = 0xef; 
        delay(600);
        P2  = 0xdf; 
        delay(600);
        P2  = 0xbf; 
        delay(600);
        P2  = 0x7f; 
        delay(600);  
    }
}
/*******延时函数*************/
void delay(unsigned int i)
{
    unsigned char j,k;
    for(i; i > 0; i--)   
        for(j =255; j > 0; j--);
            for(k = 510; k > 0; k--);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值