利用VHDL编写的呼吸灯

利用VHDL编写的呼吸灯,第1张

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

--USE IEEE.STD_LOGIC_ARITH.ALL

--USE IEEE.STD_LOGIC_UNSIGNED.ALL

entity led is

port(led1,led2,led3,led4:out bitclk:in bit)

end led

architecture led_blink of led is

begin

process(clk)

variable s1:integer:=0

variable s2:integer:=0

begin

i1:if (clk'event and clk='1') then

s1:=s1+1

if(s1>20000) then

s2:=s2+1

if(s2>2500 and s2<明清5000) then

led1<='1'

led2<='0'

led3<='1'

led4<='0'

elsif(s2>=5000) then

led1<='搏扒0'

led2<='1'激银前

led3<='0'

led4<='1'

s2:=0

end if

s1:=0

end if

end if i1

end process

end led_blink

verilog 语言相对于VHDL语言要简单些。如果你用VHDL不销宴或会可以试试祥宏verilog语言

而且你可以多看亏伍一下例子。

你的这个应该不难,估计会有现成的或是接近的

可以用外部中断计数,来实现流水灯的正转、暂停、以及反转和爆闪。。这是我前几天写的一个这样的程序,楼主可以结合protues 画图仿真,宏仔中注意程序中所用到的IO端口就行戚握了。

#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

uchar a,b

void delay(uchar z)

{

uchar i,j,k

for(i=zi>0i--)

for(k=20k>0k--)

for(j=110j>蔽山0j--)

}

void begain()

{

EA=1

EX0=1

IT0=1

}

void main()

{ a=b=0

P0=0xfe

begain()

while(1)

{

if(a==1)

{

P0=_crol_ (P0,1)

delay(50)

}

if(a==3)

{

P0=_cror_(P0,1)

delay(50)

}

if(a==4)

{

P0=0x00

delay(50)

P0=0xff

delay(50)

P0=0xfc

}

if(a==5)

{

a=1

}

}

}

void int0() interrupt 0

{

a++

if(a==5)

{

a=1

}

}


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

原文地址: https://outofmemory.cn/yw/12553052.html

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

发表评论

登录后才能评论

评论列表(0条)

保存