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
Thông báo
Collapse
No announcement yet.
code hiển thị chữ trên lcd sử dụng kit spartan 3e
Collapse
X
-
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
-
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ậyNguyên văn bởi ptit_et Xem bài viếtmì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]Last edited by ozonedark2; 27-09-2012, 13:44.|
Comment
-
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ảiNguyên văn bởi heojuken Xem bài viếtma code báo lỗi nhiều quá bạn ạ
). 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
-
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
-
Tặng bạn:Nguyên văn bởi heojuken Xem bài viếttạ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 @_@
----------------------------------------------------------------------------------
-- 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
Bài viết mới nhất
Collapse
-
Trả lời cho Tìm bạn thân quen cũ.bởi mèomướpDạ cháu đọc 1 số bài viết của bác vi... thì nhớ đc bác là 1 cụ già gần 80 tuổi, sức khỏe yếu. Đam mê và làm vc về kỹ thuật điện. Thích thơ ca. Có nhìu bài chia sẻ quý báu cho thế hệ sau. Tuy nhiên già rồi nên khái tính, bảo thủ, nhưng vẫn đáng kính ạ... còn lão nhathung... thì kiểu bố đời
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 12:52 -
-
bởi lvhnHãng nào tùy thích thôi bác! bây giờ các hãng đều hỗ trợ xem qua máy tính hay điện thoại đều được. Gắn Trước tiên mua về cắm nguồn set ip hết xong hãy lắp lên, cam poe chỉ cần 4 lõi là hoạt động bình thường nên 1 dây kéo cho 2 cam vẫn ok
-
Channel: Tâm tình dân kỹ thuật
30-07-2026, 15:49 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi lvhnNhớ không nhầm thì lúc còn đi học có gặp chú 1 lần cf bãi xe Nguyễn Kim, giờ quán cf đó nghỉ bán rồi
-
Channel: Tâm tình dân kỹ thuật
30-07-2026, 15:44 -
-
Trả lời cho Thắc mắc pin 21v ?bởi lvhnCon số đấy biểu thị gần đúng thôi, cái đồng hồ đó có đảm bảo chính xác hay không? pin có cục lên 4v4 vẫn bình thường. Cái gì cũng có sai số trong phạm vi không quá lớn thì không ảnh hưởng gì đâu, bàn ngay ngón ngắn ngón dài mà
-
Channel: Điện tử dành cho người mới bắt đầu
30-07-2026, 15:32 -
-
Trả lời cho Amply bị rò DC 22 voltbởi lvhnThay mấy con transisto nhỏ đầu vào, thường vi sai lỗi hay bị. Khám tổng quát chân các linh kiện xem có bị rỉ sét nhiều không?
-
Channel: Điện thanh
30-07-2026, 15:24 -
-
bởi dinhthuong92Mạch này hiệu suất ra led đạt khoảng 90.7% tại 12V in, 40W out.
-
Channel: Nguồn!
27-07-2026, 10:15 -
-
bởi dinhthuong92Có lẽ nguồn viết bài này chỉ mang tính định tính để nói rằng cần thay đổi tổng trở tải để có Pmax chứ trình bày chưa chi tiết và thấu đáo một cách định lượng. Công thức tổng quát phải có mặt L mới được, và nói là "tổng...
-
Channel: Nguồn!
27-07-2026, 10:09 -
-
Trả lời cho [Chia sẻ] Tổng hợp các công ty AI Việt Nam đang làm gì thật sự — Từ voicebot, computer vision đến AI agentsbởi nguyendinhvanCàng ngày, CNTT càng trở nên lôi thôi , rách việc.
Cái AI và Ge... trên trình duyệt chỉ tổ làm vướng mắt, mất thì gian.
Tôi toàm phải mất cộng tắt nó đi.-
Channel: Xu hướng, nhu cầu và thị trường
25-07-2026, 14:59 -
-
bởi trung30000Em có con amply 12 sò D 718 và e688 , biến áp 15A, 30v 0 30 v, một kênh thì hoạt động bình thường, kênh còn lại nổ bụp bụp, sột sột, đèn tín hiệu nhảy lên vạch max, khoảng 4 đến 5 giây, sau đó đèn tín hiệu trả về mức không, Em thấy như...
-
Channel: Điện thanh
24-07-2026, 13:50 -
-
Trả lời cho Tìm hiểu máy hàn lăn (Rolling Welding)bởi hoang_3ibác cần thì liên hệ Em: mayhanhaivuong.com (0903238399)...
-
Channel: Điện tử công nghiệp
24-07-2026, 10:58 -

Comment