|
(原文件名:2.jpg)
(原文件名:3.jpg)
(原文件名:http_imgload1.jpg)
(原文件名:http_imgload.jpg)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity xtest1 is
Port (
CLK : in std_logic ;
CLEAR : in std_logic ;
RS : out std_logic ;
RW : out std_logic ;
EE : inout std_logic ;
TS : inout std_logic ;
DA : inout std_logic_vector (7 downto 0 ) ;
LED : out std_logic_vector (0 TO 7) );
end xtest1;
architecture Behavioral of xtest1 is
TYPE STATE_TYPE IS ( SET_INIT1 , SET_INIT2 , SET_INIT3 , DISP_OFF ,
DISP_CLEAN, SET_MODE , DISP_ON , D_HOUR1 ,
D_HOUR0 , D_MIN1 , D_MIN0 , D_SEC1 ,
D_SEC0 , SET_E , SET_ADD , SET_JG1 ,
SET_JG2
);
signal state , next_state : STATE_TYPE ;
signal HOUR1 , HOUR0 , MIN1 , MIN0 , SEC1 , SEC0 : std_logic_vector (3 downto 0) ;
begin
process(CLK,CLEAR)
begin
IF CLEAR = '0' THEN
state <= SET_INIT1 ;
HOUR1 <= X"2" ;
HOUR0 <= X"3" ;
MIN1 <= X"5" ;
MIN0 <= X"9" ;
SEC1 <= X"4" ;
SEC0 <= X"8" ;
ELSE IF CLK'EVENT AND CLK = '1'THEN
TS <= NOT TS ;
LED <= "11111111" ;
case state is
when SET_INIT1 =>
DA <= "00111000" ; --0x38
RS <= '0' ;
RW <= '0' ;
EE <= '1' ;
LED(1) <= '0' ;
state <= SET_E ;
next_state <= SET_INIT2 ;
when SET_INIT2 =>
DA <= "00111000" ; --0x38
RS <= '0' ;
RW <= '0' ;
EE <= '1' ;
LED(1) <= '0' ;
state <= SET_E ;
next_state <= SET_INIT3 ;
when SET_INIT3 =>
DA <= "00111000" ; --0x38
RS <= '0' ;
RW <= '0' ;
EE <= '1' ;
LED(1) <= '0' ;
state <= SET_E ;
next_state <= DISP_OFF ;
when DISP_OFF =>
DA <= "00001000" ; --0x08
RS <= '0' ;
RW <= '0' ;
EE <= '1' ;
LED(3) <= '0' ;
state <= SET_E ;
next_state <= DISP_CLEAN;
when DISP_CLEAN =>
DA <= X"01" ;
RS <= '0' ;
RW <= '0' ;
EE <= '1' ;
LED(5) <= '0' ;
state <= SET_E ;
next_state <= SET_MODE ;
when SET_MODE =>
DA <= "11000110" ; --0xc6
RS <= '0' ;
RW <= '0' ;
EE <= '1' ;
LED(5) <= '0' ;
state <= SET_E ;
next_state <= DISP_ON ;
when DISP_ON =>
DA <= "00001100" ; --0x0c
RS <= '0' ;
RW <= '0' ;
EE <= '1' ;
LED(7) <= '0' ;
state <= SET_E ;
next_state <= SET_ADD ;
when SET_ADD =>
DA <= X"C4" ; --0xC3
RS <= '0' ;
RW <= '0' ;
EE <= '1' ;
LED(1) <= '0' ;
state <= SET_E ;
next_state <= D_HOUR1 ;
when D_HOUR1 =>
DA <= X"3" & HOUR1 ; --0x3
RS <= '1' ;
RW <= '0' ;
EE <= '1' ;
LED(3) <= '0' ;
state <= SET_E ;
next_state <= D_HOUR0 ;
when D_HOUR0 =>
DA <= X"3" & HOUR0 ; --0x3
RS <= '1' ;
RW <= '0' ;
EE <= '1' ;
LED(3) <= '0' ;
state <= SET_E ;
next_state <= SET_JG1 ;
when SET_JG1 =>
DA <= X"3A" ; --0x3A
RS <= '1' ;
RW <= '0' ;
EE <= '1' ;
LED(3) <= '0' ;
state <= SET_E ;
next_state <= D_MIN1 ;
when D_MIN1 =>
DA <= X"3" & MIN1 ; --0x3
RS <= '1' ;
RW <= '0' ;
EE <= '1' ;
LED(3) <= '0' ;
state <= SET_E ;
next_state <= D_MIN0 ;
when D_MIN0 =>
DA <= X"3" & MIN0 ; --0x3
RS <= '1' ;
RW <= '0' ;
EE <= '1' ;
LED(3) <= '0' ;
state <= SET_E ;
next_state <= SET_JG2 ;
when SET_JG2 =>
DA <= X"3A" ; --0x3A
RS <= '1' ;
RW <= '0' ;
EE <= '1' ;
LED(3) <= '0' ;
state <= SET_E ;
next_state <= D_SEC1 ;
when D_SEC1 =>
DA <= X"3" & SEC1 ; --0x3
RS <= '1' ;
RW <= '0' ;
EE <= '1' ;
LED(3) <= '0' ;
state <= SET_E ;
next_state <= D_SEC0 ;
when D_SEC0 =>
DA <= X"3" & SEC0 ; --0x3
RS <= '1' ;
RW <= '0' ;
EE <= '1' ;
LED(3) <= '0' ;
IF SEC0 < 9 THEN
SEC0 <= SEC0 + 1 ;
ELSE
SEC0 <= "0000" ;
IF SEC1 < 5 THEN
SEC1 <= SEC1 + 1 ;
ELSE
SEC1 <= "0000" ;
IF MIN0 < 9 THEN
MIN0 <= MIN0 + 1 ;
ELSE
MIN0 <= "0000" ;
IF MIN1 < 5 THEN
MIN1 <= MIN1 + 1 ;
ELSE
MIN1 <= "0000" ;
IF HOUR1 < 2 AND HOUR0 < 9 THEN -- D?óú20?ò????D?óú9
HOUR0 <= HOUR0 + 1 ;
ELSE
IF ( HOUR1 = 2 ) AND HOUR0 < 3 THEN -- ′óóú20 D?óú23
HOUR0 <= HOUR0 + 1 ;
ELSE
IF ( HOUR1 < 2 ) AND ( HOUR0 = 9 ) THEN --19 ?ò 09
HOUR0 <= "0000" ;
HOUR1 <= HOUR1 + 1 ;
ELSE
IF ( HOUR1 = 2 ) AND ( HOUR0 = 3 ) THEN --23 μ?
HOUR0 <= "0000" ;
HOUR1 <= "0000" ;
END IF ;
END IF ;
END IF ;
END IF ;
END IF ;
END IF ;
END IF ;
END IF ;
state <= SET_E ;
next_state <= SET_ADD ;
when SET_E =>
EE <= '0' ;
LED(3) <= '0' ;
state <= next_state ;
when others => null ;
end case ;
END IF;
END IF ;
end process ;
end Behavioral;
时间走时并不准确,但格式对了.仅做学习测试用...
另外有个问题请教下大家..显示分几分种后芯片会很烫是什么原因? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|