51单片机基本知识(安装环境,点灯)

    在学习51单片机之前,要先安装两个软件,一个是keil5,而另一个是stc-isp,stc-isp的安装的可以直接通过安装包来进行安装。而我们keil5安装,我们要注意几个步骤:

链接:https://pan.baidu.com/s/1hLp9jToYBGD24DKlReJctA 
提取码:1111

上面是安装keil5与stc-isp的安装包

第一部分:安装Keil uVision5

  第一步:安装串口驱动:首先,我们打开CH341SER,就会出现下面驱动安装的界面,点击安装,安装成功会提示安装成功,若失败则点击卸载再安装;(第一张图)

  第二步:打开c51v959.exe:我们打开keil5文档,我们将c51v959.exe安装到目标路径(该路径不能含有中文,否则会导致乱码),然后按nextnext的下一页内容(First Name,Company Name,E-mail)可以随便填写;(第二张图)

  第三步:破译keil uVision5:以管理员身份打开keil uVision5keil 5文件中的keygen_new,打开keil uVision5后点击左上角file,找到License Managment,并且找到其的CID,后面复制到keygen_newCID再点击Generate会得到解译的密码,把这个密码复制到刚刚打开的License ManagementNew License ID Code(LIC),点击Add LIC(第三张图)

第二部分:添加单片机型号

  第一步:打开下载好的stc-isp-15xx-v6.82.exe

  第二步:打开该界面,找到单片机型号以及串口号,再在右边找Keil仿真设置,在那个界面左上角找添加型号,  点击,找文件keil,然后添加,确定,最后重新启动;

第三部分:创建新项目

          在D盘,我们建一个文件夹,打开keil uVision中的project(在file右边的,而不是file自身的),点击,并找到New uVision Project,点击我们新建的文件夹,点进去,然后按确定,按如下的操作;

        当我们把代码打好之后,我们要开始编译,就相当于检查你的代码是否正确,可不可以运行,而编译的之前呢,我们要点击options(很像仙女棒的东西)(第一张图),找到outputs,并打开,然后找到Creat hex file(第二张图),打勾,然后找Build编译,这样会在我们编译成功之后生成hex文件,这个是我们要得到的东西。

 

        若出现下图所示,意味着你的编码是正确的,可以运行的,如果不是,这是意味着出现错误。

  后面,我们打开stc,找到文件,找到打开程序文件,找到你要的hex文件,然后下载,若显示操作成功,且单片机有按你编写的程序运行,那意味着你的编码是正确的。

认识部分元器件

排针的作用:主要作用是将两个电路板之间的信号传输线连接起来。排针通常具有一定  的弹性,这样就能在接触面产生良好的压力,并保证电信号的质量。

晶振的作用:产生稳定的时钟信号。在许多电子设备中,晶振电路被广泛应用,以确保  设备的正常运行。

DC电源座的作用:就是直流供电的插座,它主要就是直流供电专用的插座。在生活中     我们也经常看到,比如像MP3以及数码相机遥控器上面基本上都有     这种电源插座,通常有专用的直流电源供电

排阻的作用:相当于把若干个电阻串联在一起。

温度传感器的作用:是一种 测量物体冷热程度 的设备,以可读的形式 通过电信号提供  温度测量 

开关:分为单刀单掷开关与单刀双掷开关

为单刀单掷开关

为单刀双掷开关

二极管:分为普通二极管,发光二极管与光电二极管

为普通二极管

为发光二极管

为光电二极管

点灯:

        原理:通过1与0控制led灯的开关,发送给电脑,电脑再发送信号给单片机,单片机再控制led灯。 在电路图当左边正极右边负极

         高低电平的作用:高低电平是指电信号的电压状态,通常用数字1表示高电平,数字0表示低电平。高低电平在数字电路中具有多种作用,其中之一就是控制LED灯的亮灭。在数字电路中,高电平通常表示逻辑上的1,而低电平表示逻辑上的0。LED灯通常被连接到数字电路中的输出引脚上。当输出引脚处于高电平时,电路会提供足够的电流流过LED,使其发光。相反,当输出引脚处于低电平时,电路不提供足够的电流,LED就不会发光。

      但我们在学习点灯第一步,要学会看原理图,接下来我们来看我们工程中心的51单片机的最小系统板,找到哪个接口连接我们的led灯,这里是我们的P1连接我们的led(每一个51单片机最小系统板虽说构造结构相同,但所用的接口可能不同,所以我们要特别注意原理图,会看图是学好51单片机必须要掌握的知识点喔)。对了,还有共阳共阴的问题,可以看到正极的公共极是连在一起的,所以称为共阳,共阴则公共极相反。像我们这个呢,就是共阳(左边为正极连在同一条线上)

        共阳与共阴的影响:共阳是当给发光二极管的阴极为低电平时,相应发光二极管就亮,当某一字段的阴极为高电平      时,相应字段就不亮。共阴则相反。

点亮第一个发光二极管:

#include <STC89C5xRC.H>

int main()

{

        while(1)//死循环

        {

                  P10=0;//置P1.0引脚为低电平,第一个LED灯亮

                  //P1=0xfe; 位操作法,低位在前高位在后:11111110

        }

}

        首先看原理图,我们规定8led灯分别对应八个引脚P10,P11,P12,P13,P14,P15,P16,P17,如果按照对半分的话,会变成XXXXXXXX,因为只存在有电和没电两种情况,X只能为1为没电或者0为有电。1或者0本来就是二进制,XXXXXXXX只是更好的转化为16进制。例如0xff,为11111111,8led灯都不亮。

        解释一下,P1P10的区别,P1是一个总地址,而P10是一个总地址里面的一部分。

如何实现流水灯:

          流水灯,顾名思义就是从上到下依次点亮一遍(或者让它从下往上点亮都可以),并且循环这个过程。那我们先回忆一下如何点亮一个led灯,再用相同的方法点亮其他led灯就可以了,但由于这个亮的时间是很短的,我们要让一个亮的时间更长,可以使得我们的流水灯更明显,所以我们要往两个led灯之间加上时间函数,目的就是延长上一个led灯亮的时间,然后就能完成我们的流水灯。

如何自定义延时函数:

         什么叫延时函数呢,我们可以这样理解,相当于我们吃饭排队那样子,等到前面的都点完餐,才会到自己点餐,就是等代码一段时间再执行我们下一个代码的过程。

        如何实现呢我们常用for或while来进行进行一些无用的代码,达到延时目的(这节课最主要要学会的),还有一种方法是用我们的自带的定时器来计时(在我们讲定时器内容会涉及到)

        我们可以从stc的软件延时计算器来进行设定,并且要注意晶振的大小,按我们以下的设定来调整,注意是要找到软件延时计算器在右边。(设一毫秒)

        

void Delay1ms()        //@11.0592MHz 延时1毫秒
{
    unsigned char i, j;   //无定义字符(整型)i,j

    _nop_();
    i = 2;
    j = 199;
    do
    {
        while (--j);
    } while (--i);//循环内部每循环一次为1ms
}

若我们延时xms的话,自定义延时函数,我们可以把这个语句改成

void delay(unsigned char xms)

{

        while(xms--)

        {

                _nop_();

                i=2;

                j=199;

         do

        {

                while(--j);
        }while(--i);
        }

}

若是500ms,则把x改成500,就可以了,以下面流水灯为例子

流水灯程序:

#include <STC89C5xRC.H>

#include <INTRINS.H>

void delay(unsigned char xms)		//@11.0592MHz
{
    while(xms--)
    {
	    unsigned char i, j;
	    _nop_();
	    i = 2;
	    j = 199;
	    do
	    {
		    while (--j);
	    } while (--i);
    }
}
                            

void main()

{

          P1=0xFE;//1111 1110第一个led灯亮,其他灯灭

          delay(500);//延时500毫秒

          P1=0xFD;//1111 1101第二个led灯亮,其他灯灭

          delay(500);//延时500毫秒

          P1=0xFB;//1111 1011第三个led灯亮,其他灯灭

          delay(500);//延时500毫秒

          P1=0xF7;//1111 0111第四个led灯亮,其他灯灭

          delay(500);//延时500毫秒

          P1=0xEF;//1110 1111第五个led灯亮,其他灯灭

          delay(500);//延时500毫秒

          P1=0xDF;//1101 1111第六个led灯亮,其他灯灭

          delay(500);//延时500毫秒

          P1=0xBF;//1011 1111第七个led灯亮,其他灯灭

          delay(500);//延时500毫秒

          P1=0x7F;//0111 1111第八个led灯亮,其他灯灭

          delay(500);//延时500毫秒
}

        

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值