控制51单片机:LED基础控制实践

  从小就对电器元件比较感兴趣吧,经常拿坏的电器里面的芯片拆下来玩,甚至那些没坏的电器,比如我家的电视,也会希望它能坏掉,我好去看看里面是什么样子的,为什么能播放节目……,所以我第一眼看到51单片机的时候,更多的是兴奋。

        但是在学习的时候,遇到了许多的困难和问题,在此记录一下,看看能不能帮到需要的人。首先就是关于软件的,相比于其他语言的集成编译环境的安装,我觉得Keil5的安装更为困难,并且需要破解使用,并且需要选择合适的型号,一旦选错,代码就不能运行,还要在每个项目编写的时候勾选生成hex文件;还有安装CH341SER串口,安装好了好久都没能成功,后来发现是数据线的问题,在更换了几根数据线的情况下终于成功了,所以以后遇到类似的情况,可以选择换数据线;还有stc-isp-v6.88R烧录软件,同样需要选择型号,选错了同样不能找到单片机,自然不能成功烧录,并且每次烧录的时候要重启一下单片机(冷启动),才能烧录成功。还有一个就是关于芯片的问题,之前乱玩的时候,不小心把芯片接反了,导致芯片烧坏,还是自己重新买了一块芯片安装上去,才恢复正常,所以一定要注意正反。

        我使用的的芯片型号是STC89C52RC,在Keil里创建项目的时候可以选择AT89C51RC2,如图所示:

        之后是头文件,可以选择这个,如图所示。

#include <REGX52.H>
void main(){
	while(1){
		
	}
}

         接下来是Keil软件,选择这个勾选生成hex文件,如图所示:

        最后是stc-isp-v6.88R烧录软件,选择STM89C52RC这个型号就行:

        关于51单片机的前期准备差不多就是这些,下载软件就不在此处介绍,希望我能一直保持热爱吧!

          本节介绍的是有关LED灯的控制,也就是控制那8个小灯的熄灭与点亮,在这之前,先来补一下有关电路的一些知识点吧,LED模块原理图如下所示。

                 首先,VCC是电源正极,RP9和RP10是限流电阻(就是下面那两个小东西)电阻是1000欧姆,(102,代表的是10*10^2=1000),所以想要让D1这个LED亮,就需要给相应的接口一个低电平(注意,要将电位信息转换成16进制数),相应代码如下所示:

#include <REGX52.H>
void main(){
	P2 = 0xFE;//1111 1110
}

运行结果如下所示:

         其次,想要让LED灯闪烁,我们就需要一个新的概念,就是延时函数,不过这个函数在烧录软件里可以自动生成,下面先来介绍一下如何生成演算函数吧!

        先选择系统频率,这个要看自己的单片机型号,还需要把8051指令集改成STC-Y1,再复制代码就行了。但是使用延时函数的时候,还需要添加一个头文件才能正常运行。接下来就来看一下LED灯闪烁的代码吧!(后期有高级一点的写法,先用这个来理解一些原理)

#include <INTRINS.H>//就是这个哦

 具体每个16进制数我就不一一列开来讲了,相信各位可以理解的。

#include <STC89C5xRC.H>
#include <INTRINS.H>


void Delay1ms(unsigned int xms)		//@11.0592MHz
{                                    //我稍微修改了一下延时函数,可以便于延时不同的时间
	unsigned char i, j;
	while(xms)
	{
		_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
		xms--;
	}
	
}


void main() 
{	
	while(1)
	{
		P2 = 0xFE;
		Delay1ms(200);
		P2 = 0xFD;
		Delay1ms(200);
		P2 = 0xFB;
		Delay1ms(200);
		P2 = 0xF7;
		Delay1ms(200);
		P2 = 0xEF;
		Delay1ms(200);
		P2 = 0xDF;
		Delay1ms(200);
		P2 = 0xBF;
		Delay1ms(200);
		P2 = 0x7F;
		Delay1ms(200);
	}
}

  

好了,关于LED灯的知识先介绍这么多。

物联沃分享整理
物联沃-IOTWORD物联网 » 控制51单片机:LED基础控制实践

发表评论