搜索
bottom↓
回复: 5

XC95108--1602--显示时间

[复制链接]

出0入0汤圆

发表于 2009-4-24 13:34:38 | 显示全部楼层 |阅读模式

(原文件名: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周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-4-24 18:53:44 | 显示全部楼层
兄台 帮你顶一下
可惜不会VHDL  呵呵

出0入0汤圆

发表于 2009-4-24 19:23:33 | 显示全部楼层
记号了,有时间看看

出0入0汤圆

发表于 2009-4-24 19:31:23 | 显示全部楼层
不错!芯片发烫是不是你把IO口配置得不对啊?

出0入0汤圆

发表于 2009-4-24 22:31:43 | 显示全部楼层
支持原创!

出0入0汤圆

 楼主| 发表于 2009-4-25 08:37:29 | 显示全部楼层
【3楼】 pcs3
  不错!芯片发烫是不是你把IO口配置得不对啊?

我现在就是把屏拆下来,通电,芯片还是会发烫..
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 01:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表