点亮一个LED

        点亮一个LED就如同学习编程的第一步打出“hello world”一样,很基础,但是作为初学者来讲确实打开一个新世界的大门。

      首先我们来看一下原理图:

 

         D4为电源指示灯在上电后导通点亮。D5、D6一脚连接5V另一脚分别连接到单片机P3.7、P3.6引脚。根据电路的基本知识,灯两端达到一定的电压差便可以是LED亮起。所以我们只需要使单片机对应的引脚输出低电平即可。代码如下:

#include "reg52.h"
//reg52.h,函数,应用于程序设计,是用于单片机(C51)开发的一种c语言的头文件。
sbit led = P3^7;   
//sbit是定义特殊功能寄存器的位变量。
void main()
{
	
	//灯亮,给一个P3.7低电平
	led = 0;
	
}

给高电平或者是低电平由硬件决定。

LED闪烁

如何实现LED灯闪烁效果呢?

让LED定时亮灭即单片机IO定时改变输出电平。先看代码:

#include "reg52.h"

sbit led = P3^7;

void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;
	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void main()
{

	//灯灭,给一个高电平
	
	while(1)//重复执行
   {
		//灯亮,给一个P3.7低电平
		led = 0;
		//软件延时,期间维持低电平,灯亮,延迟
		Delay500ms();
		//灯灭,给一个高电平
		led = 1;
		//软件延时,期间维持高电平,灯灭,延迟
		Delay500ms();
	}
	
}

Delay函数,大家可以看到就是一系列循环进行空操作占用MCU时间以达到软件延时的效果。

//@11.0592MHz是晶振的频率,晶振的作用一般是为系统提供最基本的时钟信号。通常情况下一个系统共用一个晶振,便于各个部分之间保持一致。不过某些通讯系统的基频和射频使用不同的晶振,而通过电子调节频率的方法从而保持同步。晶振的作用在单片机里的心脏,它可以结合单片机内部的电路,提供单片机所必备的时钟频率,单片机里几乎所有的执行命令都是依赖这个的。

那么这个Delay函数是如何得来的呢?

我们只需使用STC-ISP软件自动生成即可,注意选择对系统频率(即晶振的频率)和定时长度。

_nop_();                        // 产生一条NOP指令

这个函数就是空操作,浪费一个周期。NOP指令为单周期指令,可由晶振频率算出延时时间。所以把他删除或者写一个;替代效果都是一样的。如果使用该函数头文件需包含头文件:

#include<intrins.h>  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值