文章目录
一、 在Proteus8软件设计出电路。
本次实验涉及电路图如下:
(1) 设计点亮一个LED灯
电路图设计原理:该点亮一个LED灯的电路设计原理是使用一个AT89C51芯片,后将LED灯接入芯片一端口,再增加一电阻限流,最后将生成的可执行hex文件导入芯片即可点亮LED。
(2) 设计一个流水灯(8个LED)
电路设计原理:
设计点亮含8LED灯的流水灯的电路设计原理是先放置一个AT89C51芯片,然后放置8个灯泡同时将他们分别与8个限流电阻串联,再将AT89C51芯片个端口以及小灯泡连于总线上,再使用线命名使端口和小灯泡一一对应,最后导入可执行文件hex即可完成流水灯。
二、 在Keil uVision5中相关程序。
本次实验涉及相关程序如下
(1) 设计点亮一个LED灯
程序中第一句ORG 0100H中ORG是伪指令相当于告诉编译器程序是从那个地址开始的。
第二句中的SETB指令是用于将一个位设置为1,即将灯泡对应端口P2.0设置为1,即点亮灯泡。后面的SJMP指令即为无条件跳转指令。
(2) 设计一个流水灯(8个LED)
51:
上述汇编程序就是将灯点亮然后将地址不断循环左移以达到点亮的流水灯效果。其中第一句和前面点亮一个LED相同即告诉编译器程序起始地址,然后LJMP无条件跳转到MAIN主函数去,主函数中首先将地址赋给A然后把A赋给P0然后左移A以此类推左移依次点亮灯泡达到流水灯效果。DELAY是定义一个延时函数后将255传给R7然后将250传给R6然后对R7减一然后判断是否为0不为零则转到后面对应操作,即进行循环以达到延时。
C:
在上述C语言程序中主要就是先写了一个延时函数delay-ms然后在主函数中写了一个while循环语句在语句中分别编写点亮LED函数,同时在每个LED点亮之间使用delay-my函数以达到延时效果,即形成流水灯。
三、 在Keil uVision5中用程序生成可执行hex文件。
程序编写结束后进行以下操作最后可以得到可执行hex文件如下:
首先点击下图箭头所指图标
再点Output中create hex.
四、 在Proteus8中使用hex文件完成电路操作。
在Proteus8中分别将hex文件加载到电路中最后效果如下: