hyz_avr 发表于 2009-4-24 13:34:38

XC95108--1602--显示时间

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_439369.jpg
(原文件名:2.jpg)

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_439370.jpg
(原文件名:3.jpg)

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_439371.jpg
(原文件名:http_imgload1.jpg)

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_439372.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 : instd_logic ;
      CLEAR : in std_logic ;
      RS: out std_logic ;
RW: out std_logic ;
EE: inout std_logic ;
TS: inout std_logic ;
DA: inoutstd_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;


时间走时并不准确,但格式对了.仅做学习测试用...

另外有个问题请教下大家..显示分几分种后芯片会很烫是什么原因?

baojie423 发表于 2009-4-24 18:53:44

兄台 帮你顶一下
可惜不会VHDL呵呵

yuhang 发表于 2009-4-24 19:23:33

记号了,有时间看看

pcs3 发表于 2009-4-24 19:31:23

不错!芯片发烫是不是你把IO口配置得不对啊?

zkf0100007 发表于 2009-4-24 22:31:43

支持原创!

hyz_avr 发表于 2009-4-25 08:37:29

【3楼】 pcs3
不错!芯片发烫是不是你把IO口配置得不对啊?

我现在就是把屏拆下来,通电,芯片还是会发烫..
页: [1]
查看完整版本: XC95108--1602--显示时间