Thông báo

Collapse
No announcement yet.

code hiển thị chữ trên lcd sử dụng kit spartan 3e

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • code hiển thị chữ trên lcd sử dụng kit spartan 3e

    các bác ai có code ngôn ngữ vhdl hiển thị chữ trên lcd của kit spartan 3e gửi cho em học hỏi với
    |

  • #2
    mình có cái này bạn coi thử coi đươc không nha mà hình nư bạn post nhầm box rồi tranh thủ down đi ko các anh lại xóa bài đótest_LCD.zip

    Comment


    • #3
      Nguyên văn bởi ptit_et Xem bài viết
      mình có cái này bạn coi thử coi đươc không nha mà hình nư bạn post nhầm box rồi tranh thủ down đi ko các anh lại xóa bài đó[ATTACH]52373[/ATTACH]
      thank bạn nha mà cái này hiển thị chữ gì trên lcd vậy bạn hình như là chữ 'Tuan' phải không, cho mình hỏi để hiển thị chữ lên dòng 1 vs dòng 2 thì phải làm ở bước nào vậy
      Last edited by ozonedark2; 27-09-2012, 13:44.
      |

      Comment


      • #4
        cái đó thì bạn coi trong phần set địa chỉ hiển thị đó, làm thêm 1 cái nữa cho dòng 2, mấy nay mình bận với mấy cái điện tử công suất với hệ thồng nhúng hix, bạn tự code coi đ ko

        Comment


        • #5
          có yahoo ko cho yahoo có j giúp đỡ dc ko bạn ptit_et, t5ai cũng không cần gấp lắm hi.Thanks

          Comment


          • #6
            ma code báo lỗi nhiều quá bạn ạ

            Comment


            • #7
              Nguyên văn bởi heojuken Xem bài viết
              ma code báo lỗi nhiều quá bạn ạ
              Chắc là do version ISE của bạn khác với version của người viết project rồi(tôi kiểm tra thì thấy bạn ấy dùng ISE 11.1 thì phải ). Bác chỉ lấy code thôi còn tất cả phần còn lại bác phải tự làm. he
              Bác vào đây xem nha: Cosmiac - Spartan 3E Tutorials - Configurable Space Microsystems Innovations & Applications Center
              Ở đây họ dùng ISE 10.1.

              Chúc bạn thành công!
              Last edited by robocon2011; 01-10-2012, 17:59.

              Comment


              • #8
                mình dùng 11.1 mà bạn báo lỗi như thế nào bạn post lên mình coi thử coi

                Comment


                • #9
                  Click image for larger version

Name:	1.bmp
Views:	1
Size:	728.1 KB
ID:	1367568
                  lỗi như vầy nè bạn, có thể giúp mình dc ko ?

                  Comment


                  • #10
                    ERROR:HDLParsers:800 - "C:/Xilinx/vuong1/vuong2.vhd" Line 60. Type of LED is incompatible with type of tx_byte.
                    ERROR:HDLParsers:811 - "C:/Xilinx/vuong1/vuong2.vhd" Line 90. Choice char_u duplicated in select.
                    ERROR:HDLParsers:800 - "C:/Xilinx/vuong1/vuong2.vhd" Line 191. Type of SF_D is incompatible with type of SF_D0.
                    ERROR:HDLParsers:800 - "C:/Xilinx/vuong1/vuong2.vhd" Line 192. Type of SF_D is incompatible with type of SF_D1.
                    ERROR:HDLParsers:800 - "C:/Xilinx/vuong1/vuong2.vhd" Line 191. Type of SF_D is incompatible with type of SF_D0.
                    ERROR:HDLParsers:800 - "C:/Xilinx/vuong1/vuong2.vhd" Line 192. Type of SF_D is incompatible with type of SF_D1.
                    ERROR:HDLParsers:800 - "C:/Xilinx/vuong1/vuong2.vhd" Line 194. Type of LCD_E is incompatible with type of LCD_E0.
                    ERROR:HDLParsers:800 - "C:/Xilinx/vuong1/vuong2.vhd" Line 195. Type of LCD_E is incompatible with type of LCD_E1.
                    ERROR:HDLParsers:800 - "C:/Xilinx/vuong1/vuong2.vhd" Line 194. Type of LCD_E is incompatible with type of LCD_E0.
                    ERROR:HDLParsers:800 - "C:/Xilinx/vuong1/vuong2.vhd" Line 195. Type of LCD_E is incompatible with type of LCD_E1.
                    Parsing "vuong2_stx.prj": 0.08

                    Process "Check Syntax" failed

                    Comment


                    • #11
                      tại của mình là hiển thị tên NGUYỄN MINH VƯƠNG, mà cũng ko rành về cái này lắm, mà cũng sắp nộp đồ án rồi @_@

                      Comment


                      • #12
                        Nguyên văn bởi heojuken Xem bài viết
                        tại của mình là hiển thị tên NGUYỄN MINH VƯƠNG, mà cũng ko rành về cái này lắm, mà cũng sắp nộp đồ án rồi @_@
                        Tặng bạn:
                        ----------------------------------------------------------------------------------
                        -- Company:
                        -- Engineer:
                        --
                        -- Create Date: 08:24:11 12/03/2013
                        -- Design Name:
                        -- Module Name: LCD_CHAR_DISPLAY - Behavioral
                        -- Project Name:
                        -- Target Devices:
                        -- Tool versions:
                        -- Description:
                        --
                        -- Dependencies:
                        --
                        -- Revision:
                        -- Revision 0.01 - File Created
                        -- Additional Comments:
                        --
                        ----------------------------------------------------------------------------------
                        library IEEE;
                        use IEEE.STD_LOGIC_1164.ALL;
                        USE IEEE.STD_LOGIC_UNSIGNED.ALL;
                        USE IEEE.STD_LOGIC_ARITH.ALL;
                        -- Uncomment the following library declaration if using
                        -- arithmetic functions with Signed or Unsigned values
                        --use IEEE.NUMERIC_STD.ALL;

                        -- Uncomment the following library declaration if instantiating
                        -- any Xilinx primitives in this code.
                        --library UNISIM;
                        --use UNISIM.VComponents.all;

                        entity LCD_CHAR_DISPLAY is
                        Port ( CK50MHZ,RESET : in STD_LOGIC;
                        E,RS,RW : OUT STD_LOGIC;
                        DB : out STD_LOGIC_VECTOR (7 downto 0));
                        end LCD_CHAR_DISPLAY;

                        architecture Behavioral of LCD_CHAR_DISPLAY is
                        TYPE LCD_CONTROL_STATE IS (
                        LCD_FUNCTION_SET,
                        DISPLAY_CONTROL,
                        LCD_ENTRY_MODE_SET,
                        LCD_CLEAR_DISPLAY,
                        LCD_RETURN_HOME,
                        LCD_SET_DDRAM_ADDRESS,
                        LCD_RWITE_DDRAM,
                        LCD_IDEAL );
                        SIGNAL NX_STATE, PR_STATE : LCD_CONTROL_STATE := LCD_FUNCTION_SET;
                        SIGNAL TIME_COUNTER, TIME_LIMITATION: INTEGER := 0;
                        SIGNAL I : INTEGER := 1;
                        CONSTANT DATA : STRING := "PLD TUS AFTERNUN";
                        begin
                        PROCESS (CK50MHZ, RESET)
                        BEGIN
                        IF RESET = '1' THEN
                        PR_STATE <= LCD_FUNCTION_SET;
                        ELSE
                        IF RISING_EDGE(CK50MHZ) THEN
                        PR_STATE <= NX_STATE;
                        IF TIME_COUNTER = TIME_LIMITATION THEN
                        TIME_COUNTER <= 0;
                        IF (PR_STATE = LCD_RWITE_DDRAM) THEN
                        IF (I = DATA'HIGH) THEN
                        I <= 1;
                        ELSE
                        I <= i + 1;
                        END IF;
                        END IF;
                        ELSE
                        TIME_COUNTER <= TIME_COUNTER + 1;
                        END IF;
                        END IF;
                        END IF;
                        END PROCESS;

                        PROCESS (PR_STATE)
                        BEGIN
                        CASE (PR_STATE) IS
                        WHEN LCD_FUNCTION_SET =>
                        TIME_LIMITATION <= 1850;
                        RS <= '0';
                        RW <= '0';
                        DB <= X"38";
                        IF TIME_COUNTER = 0 THEN E<='0';
                        ELSIF TIME_COUNTER = 5 THEN E <='1';
                        ELSIF TIME_COUNTER = 25 THEN E <='0';
                        END IF;
                        IF TIME_COUNTER=TIME_LIMITATION THEN
                        NX_STATE <= DISPLAY_CONTROL;
                        ELSE
                        NX_STATE <= LCD_FUNCTION_SET;
                        END IF;
                        WHEN DISPLAY_CONTROL =>
                        TIME_LIMITATION <= 1850;
                        DB <= X"0C";
                        RW <= '0';
                        RS <= '0';
                        IF TIME_COUNTER = 0 THEN E<='0';
                        ELSIF TIME_COUNTER = 5 THEN E <='1';
                        ELSIF TIME_COUNTER = 25 THEN E <='0';
                        END IF;
                        IF TIME_COUNTER=TIME_LIMITATION THEN
                        NX_STATE <= LCD_ENTRY_MODE_SET;
                        ELSE
                        NX_STATE <= DISPLAY_CONTROL;
                        END IF;
                        WHEN LCD_ENTRY_MODE_SET =>
                        TIME_LIMITATION <= 1850;
                        RS <= '0';
                        RW <= '0';
                        DB <= X"06";
                        IF TIME_COUNTER = 5 THEN E <= '0'; END IF;
                        IF TIME_COUNTER = 0 THEN E<='0';
                        ELSIF TIME_COUNTER = 5 THEN E <='1';
                        ELSIF TIME_COUNTER = 25 THEN E <='0';
                        END IF;
                        IF TIME_COUNTER=TIME_LIMITATION THEN
                        NX_STATE <= LCD_CLEAR_DISPLAY;
                        ELSE
                        NX_STATE <= LCD_ENTRY_MODE_SET;
                        END IF;
                        WHEN LCD_CLEAR_DISPLAY =>
                        TIME_LIMITATION <= 1850;
                        RS <= '0';
                        RW <= '0';
                        DB <= X"01";
                        IF TIME_COUNTER = 5 THEN E <= '0'; END IF;
                        IF TIME_COUNTER = 0 THEN E<='0';
                        ELSIF TIME_COUNTER = 5 THEN E <='1';
                        ELSIF TIME_COUNTER = 25 THEN E <='0';
                        END IF;
                        IF TIME_COUNTER=TIME_LIMITATION THEN
                        NX_STATE <= LCD_RETURN_HOME;
                        ELSE
                        NX_STATE <= LCD_CLEAR_DISPLAY;
                        END IF;
                        WHEN LCD_RETURN_HOME =>
                        TIME_LIMITATION <= 760000;
                        RS <= '0';
                        RW <= '0';
                        DB <= X"02";
                        IF TIME_COUNTER = 5 THEN E <= '0'; END IF;
                        IF TIME_COUNTER = 0 THEN E<='0';
                        ELSIF TIME_COUNTER = 5 THEN E <='1';
                        ELSIF TIME_COUNTER = 25 THEN E <='0';
                        END IF;
                        IF TIME_COUNTER=TIME_LIMITATION THEN
                        NX_STATE <= LCD_SET_DDRAM_ADDRESS;
                        ELSE
                        NX_STATE <= LCD_RETURN_HOME;
                        END IF;
                        WHEN LCD_SET_DDRAM_ADDRESS =>
                        TIME_LIMITATION <= 1850;
                        RS <= '0';
                        RW <= '0';
                        DB <= X"80";
                        IF TIME_COUNTER = 5 THEN E <= '0'; END IF;
                        IF TIME_COUNTER = 0 THEN E<='0';
                        ELSIF TIME_COUNTER = 5 THEN E <='1';
                        ELSIF TIME_COUNTER = 25 THEN E <='0';
                        END IF;
                        IF TIME_COUNTER=TIME_LIMITATION THEN
                        NX_STATE <= LCD_RWITE_DDRAM;
                        ELSE
                        NX_STATE <= LCD_SET_DDRAM_ADDRESS;
                        END IF;
                        WHEN LCD_RWITE_DDRAM =>
                        TIME_LIMITATION <= 2050;
                        RS <= '1';
                        RW <= '0';
                        DB <= CONV_STD_LOGIC_VECTOR(CHARACTER'POS(DATA(I)),8);
                        IF TIME_COUNTER = 5 THEN E <= '0'; END IF;
                        IF TIME_COUNTER = 0 THEN E<='0';
                        ELSIF TIME_COUNTER = 5 THEN E <='1';
                        ELSIF TIME_COUNTER = 25 THEN E <='0';
                        END IF;
                        IF (TIME_COUNTER=TIME_LIMITATION) AND (I = DATA'HIGH) THEN
                        NX_STATE <= LCD_IDEAL;
                        ELSE
                        NX_STATE <= LCD_RWITE_DDRAM;
                        END IF;
                        WHEN LCD_IDEAL => NX_STATE <= LCD_IDEAL;
                        WHEN OTHERS => NULL;
                        END CASE;
                        END PROCESS;
                        end Behavioral;

                        Comment


                        • #13
                          bạn ơi bạn có tesbench để thử mô phỏng cái code bạn viết ra không vây bạn ptit_et

                          Comment

                          Về tác giả

                          Collapse

                          ozonedark2 Tìm hiểu thêm về ozonedark2

                          Bài viết mới nhất

                          Collapse

                          • Andrea14
                            Vấn đề về tốc độ quay
                            bởi Andrea14
                            Chào mọi người,

                            Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
                            Hôm qua, 12:42
                          • bqviet
                            Trả lời cho Đấu tắt điện cho máy tính bảng
                            bởi bqviet
                            Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                            06-12-2025, 17:17
                          • nguyendinhvan
                            Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                            bởi nguyendinhvan
                            Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                            05-12-2025, 19:59
                          • afrendly
                            Trả lời cho Đấu tắt điện cho máy tính bảng
                            bởi afrendly
                            Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                            04-12-2025, 01:27
                          Đang tải...
                          X