4X4=16个灯,你要16个IO口,51单片机内核可以生成随机数,调用random()函数来得到随机数。用P1和P2口来控制灯。
设置生成的随机数范围,然后将生成的随机数映射到P1和P2口上。
希望能帮到你,望采纳。
;p30 p31 p32 p33 是接4个铵键 p34 p35 p36 p37 是接4个LED, 输出低电平亮;按一下键亮,再按一下灭 4 个独立org 000main:jb p30,next1lcall t30msjb p30,next1jnb p30,$cpl p34next1:jb p31,next2lcall t30msjb p31,next2jnb p31,$cpl p35next2:jb p32,next3lcall t30msjb p32,next3jnb p32,$cpl p36next3:jb p33,next4lcall t30msjb p33,next4jnb p33,$cpl p37next4: sjmp main t30ms:mov r1,#60t30x:djnz r0,$djnz r1,t30xret end
void set_led(int n, int status)
{
// TODO, board specific
}
void wait_second(int n)
{
// TODO, board specific
}
int main()
{
int i, lastLED;
for (i=0; i<4; i++)
set_led(i, 0);
lastLED = 0;
while (1) {
for (i=0; i<4; i++) {
set_led(lastLED, 0);
set_led(i, 1);
lastLED = i;
wait_second(1);
}
}
}
周期=1/20秒
时钟晶振选用50mhz的话,005秒就需要clk跑50015010^6= 2 500 000
module led;
input clk,rst;
output ledcon;
reg [3:0] led; //led开关锁存位
reg d1,d2,d3,d4;//四个灯开关
reg [21:0] cnt_5; //005秒计数器
reg count; // 数满标志位
always @(posedge clk or negedge rst)
if (!rst)
cnt_5<=22'd0;
else if(cnt_5==22'd2500000)
cnt_5<=22'd0; //数满归零
else cnt_5<=cnt_5+1'b1;
always @(posedge clk or negedge rst))
if(!rst)
count<=1'b0;
else if (cnt_5==22'd2500000)
count<=1'b1;
我擦。。剩下我不写了。你查查网上资料吧。
就是每数满时间就依次轮换打开d1--d4开关并且关闭前一个。
ledcon用连续赋值
以上就是关于我想要一个51单片机控制的4*4led随机闪程序,'一个排针控制一个灯全部的内容,包括:我想要一个51单片机控制的4*4led随机闪程序,'一个排针控制一个灯、急求:使用四个独立按键控制四个LED灯亮灭的单片机汇编程序、在开发板上有4个LED显示器,请设计一个流动点亮LED的c语言程序,间隔时间1秒等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)