目录
前言
博主是一名大二的电子信息科学与技术专业的一名本科生,曾参加第十四届蓝桥杯大赛单片机设计与开发组,获得了省级一等奖,所以我想在这里分享一下我的关于蓝桥杯的学习,希望能帮到大家,如果有我的不足的地方希望大佬能指出来,我定会虚心求教。
博主在学习蓝桥杯单片机期间学的是蚂蚁工厂的教学视频以及模板,所以会基于蚂蚁工厂的模板和代码进行分享。
1.LED灯的硬件原理图
从图中可以看出8个LED灯左边连接了一个CH573锁存器,右边接了300Ω的电阻并且8个LED灯并接在一起连了一个VCC,所以锁存器的Q(数据输出端)输出低电平时,LED灯就会被点亮,那么想让锁存器的Q(数据输出端)输出低电平就需要满足三个条件:OE(使能端)接入低电平,LE(锁存控制端)接入高电平,D(数据输入端)接入低电平。
从图中可以看出OE(使能端)接了GND所以OE(使能端)接入低电平满足其中之一的条件,LE(锁存控制端)接入了Y4C所以我们就要在蓝桥杯开发板上找到Y4C
从上图中的右侧芯片74HC02我们找到了Y4C,如果想让Y4C接入高电平,则需要通过74HC138译码器使P25 = 1、P26 = 0、P27 = 0通过这样的操作就能使Y4引脚输出低电平。
我们在代码中的操作是这样的:
P2(P25、P26、P27) & 0X1F这行代码是让P2引脚的高三位置零,(0X1F也可改为0X0F)最后|上0X80这是为了让高三位的值变为:100,这样就能使Y4引脚输出低电平,Y4在经过74C02的或非门使Y4C引脚输出高电平。
P0 = (~ucLed)这行代码是为了让P0中的一个引脚等于0的时候亮起,比如我们想让第一个LED灯点亮我们可以写一行代码:ucLed = 0x01;这样我们就实现了第一个LED灯的点亮。
P2 &= 0X1F;最后这行代码是为了让译码器的所有输出端为高电平,此时没有74HC402的输出端被选中起到关闭译码器的作用。
2.LED的延时流水灯
LED的延时函数可以用STC_ISP软件的软件延时计算器来生成,下图生成了1毫秒的延时。
结合上述代码就完成了第一个LED灯到第四个LED灯的每隔5秒的延时流水灯。
3.LED的定时器流水灯
LED的定时器流水灯的相关配置,博主喜欢用数组来实现流水灯,所以会将想要点亮的Led灯放到数组里。
将定时器的滴答变量放到定时器1的中断里实现上电后每隔1ms记一次数
下面这段代码实现了每隔5s从第一个LED灯到第四个LED灯的每隔5秒的定时器流水灯
4.LED的PWM呼吸灯
我们可以通过自己写一个PWM来实现灯亮度的改变,就是在周期一定时改变高电平所占时间的值,博主设定周期为1s。
下面是我自己写的一个改变第一个LED灯不同亮度的PWM的代码,希望能帮助到大家。
通过按键7改变PWM的值:
对灯的亮度进行PWM的改变:
以上,就是博主掌握的蓝桥杯单片机的LED的内容,希望能对大家有所帮助。