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 Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Bài hát mới, nhạc Phật: Về Giữa Chiêm Bao, sáng tác: Hoàng Đình Thường.
[Verse 1] Nhân gian bao thay đổi
ĐỜI là giấc CHIÊM BAO
Người mê lầm tranh đấu
KHỔ ĐAU mãi LUÂN HỒI.
VÔ THƯỜNG nào ai thấu
...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 19:01 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi davidcopyBạn muốn hỏi nguyên lý làm việc của mạch nào...
-
Channel: Hỗ trợ học tập
24-03-2026, 22:50 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi N_Tu_Hoc_HoiBạn cần sơ đồ mạch ổn áp bao nhiêu Volt, Nếu giống anh bạn guiwr có khả năng ổn áp dùng iC họ 78XX, 79XX. Những mạch này bạn tim kiếm trên google sẽ thấy!!
-
Channel: Hỗ trợ học tập
23-03-2026, 02:32 -
-
bởi chinhnguyen9
Điến âp vào 24V;Điên áp ra 30V;Dòng điện ra 10A
Trên nền tảng mạch Boost thay đổi như sau: cự âm tụ lọc C không nối mas mà nối vào Vc +24V
Mach phản hồi tao điê áp trên tụ lọc này ổn đinh ở 6V
Kết quả:
· Điện áp ra =24V+ 6V=30V
· Công...-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:33 -
-
bởi chinhnguyen92. Các yếu tố để dòng điện đầu ra không bị "thiếu"
Dòng điện đầu ra bị "thiếu" có thể hiểu là không đủ 10A theo yêu cầu hoặc bị sụt áp khi tải thay đổi. Để đảm bảo điều này, bạn cần xem xét các yếu tố sau:
a. Khả năng chịu dòng của cuộn cảm- Dòng bão hòa (I_sat): Như
-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:06 -
bởi chinhnguyen9
1. Tính toán cuộn cảm (Inductor)
Để tính giá trị cuộn cảm, chúng ta cần thực hiện các bước sau:
a. Xác định chu kỳ nhiệm vụ (Duty Cycle - D)
Với mạch tăng áp lý tưởng, chu kỳ nhiệm vụ được tính theo công thức :
D=1-VinVout=1-24V30V=0.2
Vậy D = 0.2 (20%)
b....-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:03 -
-
bởi chinhnguyen9Công thức
Gain (dB) = 20 × log₁₀(A)
Thí dụ 1; 60dB
log₁₀(A)=60/20=3
⇒ A=V_out / V_in = 10³ = 1.000
Thí dụ 2; 100dB
log₁₀(A)=100/20=5
⇒ A=V_out / V_in = 105 = 100.000
Tí dụ 3; LM 358
Large Signal Open Loop Voltage Gain AVOL V/mV RL = 2.0...-
Channel: Hướng dẫn sử dụng diễn đàn
19-03-2026, 08:44 -
-
Trả lời cho Mạch 3s bị giảm điện áp đầu rabởi minhtri0405chả biết bạn xử lý được chưa , kích sạc hoặc điện áp > điện áp khối pin vào 2 chân P - P+ , nhiều mạch phải yêu cầu có kích lần đầu sau đó mới chạy...
-
Channel: Điện tử dành cho người mới bắt đầu
18-03-2026, 10:01 -
-
bởi minhtri0405đây có phải là 1 cách để test mosfet xịn hay dỏm khi mua đồ tàu không nhỉ , vì ko thể đập ra để coi lõi rồi trả hàng được....
-
Channel: Tâm tình dân kỹ thuật
18-03-2026, 09:57 -

Comment