1.6单片机控制LED灯-实验:点亮指定的灯、点亮流水灯、跑马灯
其实以前已经学过一遍51单片机了,再温习一遍:
P0端口控制LED灯的亮灭,高电平亮,低电平灭,0xff则对应八个LED灯的亮灭,第一个f对应前4个LED灯的亮灭。Delay函数用来浪费时间,其中的unsigned char i定义的i的范围在0-256之间,这是一个只占用 一个字节的数字类型,它不能为负数。
接下来是流水灯的代码:
然后是用循环和移位操作进行的流水灯操作:
i代指流水灯亮的位置,d代指输入的十六进制数。视频没法展示,是可以实现的,已经做过实验了
最后是跑马灯的程序,它和流水灯的区别是流水灯是一个亮其他全灭,而跑马灯是一个灭其他全亮,这里用到了一个取巧的操作:取反。不需要挨个算十六进制数就可以实现跑马灯的效果:
总结:主要是取反循环和十六进制控制LED灯的亮灭,其他没啥
到了开发板后的实验图都放下面了,还解决了一个问题,花了些时间:由于开发板的版本不同所以LED灯的位置不同:
这是老师的开发板的LED灯所在的位置,
这是我的开发板的LED灯所在的位置如绿圈所在的位置,红圈位置是没有LED灯的。LED灯和交通灯部分是共用的,所以我们把J19和J22连接,用P0控制交通灯模块的LED灯,接着咱来看看这一部分的原理图:
可以看到这是一个共阳极的电路,所以如果要让LED灯亮的话P0得输入低电平,
总共就两行代码,咱来看看效果:
可以看到八颗LED都亮了,这是顺序
知道了代码对应的LED灯后设计一个红绿LED灯交替闪烁的程序:、
这是结果。
