内容正文:

首先我们确定一个硬件连接,将单片机的一个P1.0引脚通过线路电阻连接发光二极管的阴极。回顾我们前面所讲,通过未寻址控制LED的这样的一个程序,通过未寻址这个s beat将P1.0引脚定义为LED0。进入主函数之后,调用LED端口的初始化是GPLO innit这个函数实现IO口的初始化。在威尔一循环中,我们将零赋值给LED0就可以点亮LED。那同样如此,我们通过将LEDELED0赋值为一语句,就可以实现LED的熄灭。那么大家想一下,如果说我们在一个V2循环中,既有点亮LED又有熄灭LD,它就会反复执行点亮与熄灭LED。那么我们在实践中能否实现LED的闪烁呢?其实我们在通过一个演示,大家都可以实际观察到,这个时候LED它并不会进行一个闪烁,那是为什么呢?其实我们没有闪烁的主要原因就是因为LED运算速度非常快,执行一条指令只有零点几都几微秒的。主要是根据它的执行速度快慢,就是外部接的精神,在程序中LED被点亮后,那这个时候它并没有亮的时间。虽然它点亮了,但是亮的时间只有零点几微秒,这样的时间这个时候我们是看不到弹亮的,紧接着他又将LED熄灭,等一就熄灭了,这个时候它的时间非常短,就是量时间非常短,灭的时间也非常短。这个时候我们人眼就分辨不出来它到底是在亮还是在变暗,就是说它其实并没有闪烁,主要原因就是单片机执行的速度太快了,我们分辨不出来。那么我们如何实现这个程序的修改?是LED等于零亮一会儿,然后再让LED0灭一会儿。这样的话让我们的眼睛能够分辨出它的一个量与面的变化,这样的话就可以实现LED的点亮。这样一个就是说我们需要加一个延时,加点延时,其中我们在这里要延时一个500毫秒,此时LED闪烁,这样的一个控制程序就完成了。那么这里面大家可能有疑问,我们如何实现通过调用这样一个函数,就是delay 500毫秒,这个函数就能实现延时呢?带着这样的疑问,我们先看一下岩石的原理。其实这里面我们采用的岩石的原理是由于单片机,它在执行每一条程序都需要耗费一定的时间。虽然是执行每一条指令的时间非常短,但是我们可以通过循环,让这一个非常短的时间反复执行上万次。这样是可以达到一个延时的目的,大家能看到延时的效果,延时就可以通过这样一个,我们可以通过ITC提供的这样一个工具软件,产生一个延时这样一个子程序。首先我们确定一个单片机的型号,再选中延时这样的一个计算器。选择对应的频率,就是它的时钟周期,它的采用的一个时钟。然后我们在下拉框选中延时500毫秒8051指令集,选择FTC杠Y5,点击生成C语言源代码,这样的话我们就得到了一个延时的程序,这延时函数这样的话我们将它放在GPL初始化函数的后面。这里注意是延时程序有一个nove函数,nove函数这个函数要我们要调用它的话,就需要加一个投影键。没有这头文件我们是实现不了,就是我们要调用这个函数就调用不了了,所以我们在后面程序中要记住要加这样一个头文件。就是include entrance点HGPO初始化函数有了,演示子程序也有了,剩余的我们就在程序中调用就可以了。这里面的include第二行include in chain点H就是我们要使用调用这个delay 500毫秒中的这个love函数。那我们通过下面我们通过一个练习来看一下控制8个LED闪烁。如果我们要控制多个LD这个时候我们就不能通过一个引脚去操作了。这样就比较麻烦,也是我们不能使用之前的微寻址方式。这时候我们就需要将多个LED分别定义在单片机的每一个引角这个L口上,把它作为一个整体去看待。比如说我们对P1口,包括P0口都可以任何一个引脚,我们从第零位到第七位分别对应的就是P1.0到1.7。如果我们需要使P1口的八个位全部输出低电平0,我们就可以直接给P1赋值,直接给P1赋值,P1等于0X00,就可以就直接实现了八个引脚都赋值,每一位都是零。我们通过寄存器寻址的方式控制第一个LED和DR交替闪烁。我们简单画出这个状态的表格,可以得到状态S一就是S一对应的P1.0是0,P1.1是一,那也就是整体字节数就是0XF1S2状态。在S2状态下对应的P0值就是0XFD,0XMD此时P1.0对应的是一,P1.1对应的是零,也就是说我们在P1的状态下就是将0XFE这样赋值给P1口。在S2状态下我们就将0XFD赋值给S2P1这样的话我们就可以实现这样一个LED的交替闪烁,这是加延时,一定要加延时。好,那么本讲我们通过分析单片机的延时原理,实现了控制LED灯的闪烁。大家要自己根据前面所讲的完成练习,利用单片机控制。比如说我们如何实现控制前4个LD和4后4个LD交替闪烁呢?大家课后写出一个完整的控制程序。好,本讲就讲到这里,谢谢大家。
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。