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
-
Nguyê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
-
Nguyê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
-
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 Hàn chì thiếc lên nhôm.bởi nhathung1101Viết tạm đoạn code C cổ tặng lão:
while(true)
{
Dậy đi bộ();
Ăn sáng();
Uống cà phê();
If(có người rủ phê cà){
Đi luôn();
}
Về ngủ tiếp();
If(vợ gọi){
Dậy ăn...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 23:26 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi nhathung1101Không vui chưa chắc đã buồn.
Lão cứ uốn tẹt ga, làm tẹt mông, ngủ tẹt tèn ten đi.
Nếu ngủ quên dậy cứ báo mộng em địa chỉ bên đó. Vài năm nữa ta lại... NHẬU.
Nhậu xong lại đi HÀN hay NHẬT nhỉ!
...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:54 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamHôm nay bác sỹ báo tin ko vui về trái tim già nua của huynh, ngồi uống rượu 1 mình, nhớ đệ và tất cả bạn bè trên phố rum.
Có 1 số kỹ sư trẻ còn nhớ đến huynh qua diễn đàn, hàng năm chúc tết. Huynh thấy cái kinh nghiệm cũ kỹ...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:07 -
-
bởi mèomướpDạ. Chú dinh... có thể vẽ 1 hình bất kỳ, chỉ cần có ghi kích thước thật theo 2 chiều x, y là tính được diện tích ạ. Cháu thấy chị hàng xóm nhà cháu tính cho cụ trưởng bản nhanh lắm ạ, dùng autocad ạ...
-
Channel: Điện tử gia dụng
Hôm qua, 12:40 -
-
bởi vi van phamKhông cần biết code đâu cháu.
Cháu làm mạch phát xung LM 555, điều khiển xung bằng biến trở.
Vẽ lên vị trí biến trở các tần số, sau đó x60 là xong. Máy đo tốc độ của Pháp ngày xưa đo tốc độ máy ly tâm hematocrite cũng...-
Channel: Điện tử gia dụng
Hôm qua, 10:56 -
-
bởi appongthoMã lỗi H-46, H-47 Máy giặt Panasonic là gì?
https://appongtho.com/tu-sua-loi-h-4...iat-panasonic/
Mã lỗi H-46 và H-47 trên máy giặt Panasonic liên quan đến sự cố cảm biến, ảnh hưởng đến khả năng xác định mức nước, chất lượng...-
Channel: Điện tử gia dụng
Hôm qua, 09:57 -
-
bởi dinhthuong80Cảm ơn bạn, tài liệu đó cũng có thể tham khảo được, tuy nhiên nó chuyên về cơ khí chất lưu, công thức kí hiệu khủng khiếp quá mà như là vì viết cho người trong ngành nên công thức không ghi chú chi tiết rõ ràng, cần có thời gian để...
-
Channel: Điện tử gia dụng
Hôm qua, 09:50 -
-
bởi dinhthuong80Cảm ơn bác, cách đo của bác rất chính xác, tiếc là cháu mù về code và vđk nên nếu cháu mà làm theo thì phải chỉnh tần số mạch 555 bằng biến trở rồi lại cho nó đếm xung bằng 1 mạch khác ạ, hoặc là làm bộ thu phát hồng ngoại cho mạch đến xung!!!
Chỉ xác định cánh quạt nào nhiều gió hơn thì...-
Channel: Điện tử gia dụng
Hôm qua, 09:46 -
-
bởi vi van phamNếu chỉ xác định cánh quạt nào nhiều gió hơn thì dễ mà, không cần các tính toán bác học.
Lấy 1 cái quạt hư, gắn 1 bánh đà đường kính >10cm vào nơi nhông đảo hướng. Đặt tựa vào đó cái motor con nít chơi. Cánh quạt nhiều...-
Channel: Điện tử gia dụng
Hôm qua, 08:32 -
-
bởi mèomướpDạ mấy cái cánh quạt chú dinh... nên kiếm thiết bị để đo bằng thực nghiệm cho đơn giản ạ. Cháu tìm thấy cách tính này chú thử ngâm cứu xem ổn hông ạ...
https://luanvan.net.vn/luan-van/do-a...ong-khi-25098/-
Channel: Điện tử gia dụng
Hôm qua, 06:21 -
Comment