从无到有,学习单片机的第3天

关于Keil软件使用及流水灯设计

对于keil,我不打算先全面了解它,日后边学单片机边学吧,这次先把最基础的学好。

2.1Keil工程建立

  1. 建立一个新工程,单击< Project >菜单中的< New project>选项

从无到有,学习单片机的第3天

  1. 选择工程要保存的路径,输入工程文件名

从无到有,学习单片机的第3天

  1. 弹出对话框,选择单片机型号,本人所用的是89c52

    从无到有,学习单片机的第3天

  2. 完成后我们还需要向工程文件中加入文件代码,单击file菜单中的New,新建了文件,然后单击保存,输入文件名,这时候要注意,我们使用的语言是C语言,所以文件的后缀要是".c"

  3. 回单编辑界面,单击目标1前面的**+号,然后再添加文件到组源1**,就完成了。

2.2点亮第一个发光二极管

从无到有,学习单片机的第3天
开始分析代码含义

  1. reg52.h头文件的作用

    1. 在代码开头引用头文件,为了方便下面的各类函数可以使用头文件中的全部内容,不用自己在将头文件中的语句重复书写。

    2. 我们所谓的头文件,在Keil\C51\INC文件下

      从无到有,学习单片机的第3天

    3. 在头文件中,定义了52系列单片机内部所有的功能寄存器,用到了之前讲过的sfrsbit两个关键字(sfr定义寄存器,sbit定义寄存器中的某一位)。例如:sfr P0=0x80就是把单片机内部地址0x80处的寄存器重新命名为P0,那么在接下来的代码操作中,就可以直接用P0来直接代表0x80这个功能寄存器。机器本身不知道P0是什么,只知道0x80这个地址,我们用sfrsbit这两个关键字,架起桥梁

  2. 下一行代码sbit led1=P1^0

    表示将单片机P1口的最低位定义为led1.当我们想要控制发光二极管的时候,就要控制发光二极管与单片机所对接的引脚口。笔者的发光二极管由P1^0口控制,我们就要定义这个口,否则单片机不知道我们要做什么。

    注意,这里的P不能用小写p,否则会报错

  3. 下一行代码void main()

    这个就没什么好说了,C语言中学过,没有返回值的一个主函数

  4. 下一行代码led1=0;

    这是该程序中最核心的语句。在数字电路中,电平只有两种状态:高电平,1;低电平,0。

接下来解释一下为什么低电平状态下二极管会发亮

无论是郭天祥的TX—1C单片机还是笔者的简陋版发光二极管,要使二极管发亮,除了单片机之外,还要1千欧排阻(P2),发光二极管,74HC573锁存器(这个笔者的简陋版没找到这个东西)

  1. 排阻。排阻就是一排电阻,排阻的引脚一般比发光二极管多一个,这个多出来的引脚成为公共端,是用来连接Vcc,即单片机的电源引脚。

    *关于由电阻标号认知阻值,一般在排阻上会标有数字,例如103,代表阻值大小为10*10^3欧,150.代表15 10^0欧,最后一位代表10的次数。

  2. 发光二极管。发光二极管具有单向导电性,通过5mA左右电流就可以发光,一般控制在3~20mA之间。给发光二极管串联一个电阻的目的就是为了限制通过电流。

    发光二极管分成直插式发光二极管和贴片式发光二极管。

    发光二极管正极又称为阳极,负极又称为阴极,电流只能从阳极流向阴极。直插式发光二极管长脚为阳极,短脚为阴极;贴片式则是有标记的一段是它的阴极。

  3. 74HC573锁存器
    从无到有,学习单片机的第3天
    OE的专业术语为三态允许控制端(低电平有效),通常称为输出使能端或输出允许端;1D8D为数据输入端;1Q8Q为数据输出端;LE为锁存允许端。

具体原理我们不用知道,我们只需要知道将锁存器的LE端与单片机的某一引脚相连,再将锁存器的数据输入端与单片机的某组I/O口相连,便可通过控制锁存器的锁存端与锁存器的数据输入端的数据状态来改变锁存器的数据输出端的数据状态

用简单的话来总结锁存器的作用,就是保证数据输出端的元器件不会受到其他P1口的影响,保证稳定性,当然,如果就单单一个发光二极管,锁存器也可以一直开着,没事。

另外,当我们写程序的时候,为什么没有涉及锁存器的代码,是因为51单片机在一上电时,如果没有人为地控制其I/O地状态,它的所有未控制地I/O默认为高电平,也就是锁存器一直开放着。

接下来就是烧录了

工程菜单中选择“为目标设置选项

从无到有,学习单片机的第3天
单击Output选项,选中Create HEX File,使程序编译后产生HEX代码,就可以烧录到单片机中了从无到有,学习单片机的第3天
今天就先这样吧