我想要一个51单片机控制的4*4led随机闪程序,'一个排针控制一个灯

我想要一个51单片机控制的4*4led随机闪程序,'一个排针控制一个灯,第1张

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秒等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10103116.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存