单片机笔记(三):满眼LED多闪烁
敦煌曲子词《浣溪沙》中有诗一首,即“满眼风光多闪烁,看山恰似走来迎。”曾是经典的中学物理题,今天就借用一下人家的诗,来瞧瞧“满眼LED多闪烁”。上一节咱说了如何亮一个灯,现在让这个的闪起来。
笔者有一个闪的办法,看图:
只要我把开关不断的进行断开闭合,这样就开始闪了,有没有觉得我很聪明。我想你一定会说:
也对哦,也只有小时候才会那么好奇和天真,如今咱用的是单片机,可原理却是一样的,就是让那个led进行不断的开断操作。若开断时间一样,那就是按规律的闪烁,那个规律叫做频率。开断时间不一样长,那没准就是称摩斯密码。那么用单片机如何实现开断呢?
很简单
当P1.1为高电平时,亮!
当P1.1为低电平时,灭!
所以当P1.1先等于1,再等于0,那它就亮了。哈哈~
led=1;
led=0;
可是,下载到单片机发现,灯根本不亮。为什么?它应该循环的两灭呀?确实循环执行了,可是你确看不清,因为太快了,要知道,100HZ的闪烁人眼看到的根部不在闪,而单片机执行的频率可不止100HZ,怎么说也得翻个一二百倍吧。所以,为了让我们能看得到闪烁,需要让led亮了,然后等等再让它灭,这个操作叫做延时。也就是led=1;延时led=0;延时。
延时,说白了就是等待,让上一个操作停那么一会,或者说延缓下一步的执行时间。那么,延时程序怎么写?
void delaynms(unsigned char i)
{unsigned char j;
while(i--) {
for(j=125;j>0;j--);
}}
这个是大概1ms延时,把它写在程序里,并对该延时函数进行调用,这个灯就闪了。那为什么是1ms,先让我酝酿酝酿。
然而我比较土豪,有八个灯,我想玩转八个LED,怎么搞?其实让他一个一个的亮,那就是流水灯,如果改变延时的快慢,没准还会有拖尾的效果。这就是满眼LED多闪烁 。
下面就对一个稍微有些花样LED流水灯阐述一下。
频率逐增或减就是通过递增或递减改变延时的时间。
减暗就是通过递增LED灯暗的时间
拖尾嘛?流水灯是亮一个灭一个,拖尾就是亮一个,前一个变暗,再前一个更暗,也是不负责的。
这个流水效果并不是很好,待我做好送给她的那个再来嘚瑟嘚瑟
一节流水犹未尽,下节接着说废话,学识浅薄出拙文,如察错误望赐教,小弟在此感涕零。
欢迎观看:
近期精彩内容推荐: