用按钮控制8个流水灯点亮c语言程序,按第1次第一个lLED亮,放开按扭灯灭…按第8次第8个LED亮,循环?
你按一下按钮,给对应LED灯的口赋值#0FEH(1111 1110)第一个灯亮,松开给(1111 1111)都灭, 再按一下给(1111 1101),依次这样循环就行了。
51单片机,有8个流水灯,每个之间延迟1秒,这个延迟用c程序编写怎么写?
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。
2、#include "reg51.h"首先写出单片机的头函数。
3、#include "intrins.h"输入位移函数。
4、unsigned int count=0,led;定义函数。
5、输入主函数,定义单片机的端口,写入延时函数。
6、中断跳转,使流水灯运行起来。
用单片机开发板上的p0口和p1口实现流水灯控制?
当然只能一个一个的移了,51单片机一次只能操作一个8位端口的寄存器用C语言编程虽然可以实现16位数据的左移和右移,但控制LED时还是要分两个端口写入例如:uinta=0x1000;a>>=1;//貌似一次可以对16位二进制数操作,实际上要分好多步P0=a;//P0上得到的是低8位,高8位丢失P1=a>>8;//P1上得到高8位
如果用c语言实现流水灯控制?
用C语言实现流水灯控制的方式有好几种。
方法1:IO口移位法,用C语言编写的单片机程序可以让八个LED轮流点亮,每个灯点亮和熄灭时间均为1秒。首先赋值P2=0x01;然后进入主循环
P2口是8个引脚,P2.0到P2.7;每8秒一个循环,
第1秒我们给P2引脚赋值00000001,写成16进制就是0x01;。
第2秒左移一位我们给P2引脚赋值00000010,写成16进制就是0x02;。
第3秒左移一位我们给P2引脚赋值00000100,写成16进制就是0x04;。
第4秒左移一位我们给P2引脚赋值00001000,写成16进制就是0x08;。
第5秒左移一位我们给P2引脚赋值00010000,写成16进制就是0x10;。
第6秒左移一位我们给P2引脚赋值00100000,写成16进制就是0x20;。
第7秒左移一位我们给P2引脚赋值01000000,写成16进制就是0x40;。
第8秒左移一位我们给P2引脚赋值10000000,写成16进制就是0x80;。
方法2:查表赋值法,首先定义一个数组。
data[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
然后在主循环中采用查表法对P2端口赋值。分别将data[0]到data[7]赋值给P2端口,并在中间间隔1秒的时间延时,达到流水灯的效果。
方法3:定时器中断法,在主循环中不做任何处理,在定时中断中采用查表法对P2端口进行赋值。
无论采用何种方法,其目的只有一个,在P2端口上实现流水灯效果。
以上是我个人的答案,难免会有漏洞。
欢迎大家留言,转发,点赞,【关注】
谢谢大家