【正文】
t=0。 else t=t+1。 end if。 end if。 case t is when 0 = en_xhdl=111110。dian=39。039。 when 1 = case t1 is when 4= en_xhdl=(2=clk2,others=39。139。)。dian=39。139。 when others= en_xhdl=111011。dian=39。039。為0時數(shù)碼管的小數(shù)點就不顯示 end case。 when 2 = case t1 is when 3= en_xhdl=(3=clk2,others=39。139。)。dian=39。139。數(shù)碼管還處于選擇狀態(tài),處于閃爍 when others= en_xhdl=110111。 when 3 = case t1 is dian=39。039。 end case。 when 2= en_xhdl=(4=clk2,others=39。139。)。dian=39。039。 when others= en_xhdl=101111。dian=39。139。 end case。 when 4 = case t1 is when 1= en_xhdl=(5=clk2,others=39。139。)。dian=39。139。 when others= en_xhdl=011111。dian=39。039。 end case。 when others = null。 end case。 case en_xhdl is when 111110= data4=led1。 when 110111= case dingshi is when 39。139。=DATA4=led41 。 when others=data4=led4。 end case。 when 101111= case dingshi is when 39。139。=DATA4=led51 。 when others=data4=led5。 end case。 when 011111= case dingshi is when 39。139。=DATA4=led61 。 when others=data4=led6。 end case。 when others = null。 end case。 END PROCESS。*********點陣顯示******** process(clk1) variable count:integer range 0 to 8。 begin if clk139。event and clk1=39。139。 then if count=8 then count數(shù)用于循環(huán)掃描行用,由于變量只在進程內(nèi)出現(xiàn),故不用擔心變量重名情況 if count=8 then count:=0。 end if。 case count is when 0 = hang=00000001。t=000。掃描第一行,并把t賦予000 由于信號t的變化觸發(fā)下一個進程 when 1 = hang=00000010。t=001。掃描第二行 when 2 = hang=00000100。t=010。掃描第三行 when 3 = hang=00001000。t=011。 when 4 = hang=00010000。t=100。 when 5 = hang=00100000。t=101。 when 6 = hang=01000000。t=110。 when 7 = hang=10000000。t=111。 when others =hang=00000000。t=000。 end case。 count:=count+1。 end if。 end if。 end process。t的觸發(fā)進程 process(t,clk2) variable shu:integer range 0 to 7。 begin case t is 根據(jù)t的值去查表 when 000 = shu:=0。 when 001 = shu:=1。變量的賦值是立即發(fā)生的 when 010 = shu:=2。 when 011 = shu:=3。 when 100 = shu:=4。 when 101 = shu:=5。 when 110 = shu:=6。 when 111 = shu:=7。 when others =null。 end case。 if led1=0000 then case shu is 開始狀態(tài) when 0 = lie=11111111。 when 1 = lie=11111111。 when 2 = lie=11111111。 when 3 = lie=11111111。 when 4 = lie=11111111。 when 5 = lie=11111111。 when 6 = lie=11111111。 when 7 = lie=11111111。 when others =lie=11111111。 END CASE。 elsif led1=0001 then case shu is 第一檔 when 0 = lie=11111111。 when 1 = lie=11111111。 when 2 = lie=11111111。 when 3 = lie=11111111。 when 4 = lie=10000001。 when 5 = lie=10000001。 when 6 = lie=00000000。 when 7 = lie=00000000。 when others =lie=11111111。 END CASE。 elsif led1=0010 then case shu is 第二檔 when 0 = lie=11111111。 when 1 = lie=11111111。 when 2 = lie=11000011。 when 3 = lie=11000011。 when 4 = lie=10000001。 when 5 = lie=10000001。 when 6 = lie=00000000。 when 7 = lie=00000000。 when others =lie=11111111。 END CASE。 elsif led1=0011 then case shu is 第三檔 when 0 = lie=11100111。 when 1 = lie=11100111。 when 2 = lie=11000011。 when 3 = lie=11000011。 when 4 = lie=10000001。 when 5 = lie=10000001。 when 6 = lie=00000000。 when 7 = lie=00000000。 when others =lie=11111111。 END CASE。 end if。END process。 *******************譯碼******************process(data4)begincase data4 is WHEN 0000 =dataout_xhdl1 = 0111111。0 WHEN 0001 =dataout_xhdl1 = 0000110。1 WHEN 0010 =dataout_xhdl1 = 1011011。2 WHEN 0011 =dataout_xhdl1 = 1001111。3 WHEN 0100 =dataout_xhdl1 = 1100110。4 WHEN 0101 =dataout_xhdl1 = 1101101。5 WHEN 0110 =dataout_xhdl1 = 1111101。6 WHEN 0111 =dataout_xhdl1 = 0000111。7 WHEN 1000 =dataout_xhdl1 = 1111111。8 WHEN 1001 =dataout_xhdl1 = 1101111。9 WHEN OTHERS =null。 END CASE。END PROCESS。end arch。35 /