Jautājumi par rakstzīmi LCD displejs

W

wereiyou

Guest
Hi:
I got dažas difficulities par raksturu LCD displeju.Lai gan es uzrakstīt tiesības DDRAM adresi LCD, bet raksturs neparādās pareizā vietā.Piemēram, es rakstīt 8'h80 ar DDRAM adresi, tas nav parādīt pirmo pozīciju augšējās līnijas.bet parāda varbūt 8 nostāju augšējās līnijas.Kā es varu atrisināt šo problēmu.Tas ir satraukumu mani ilgu laiku.Mans raksturs LCD ir noteikts devleop kuģa un LCD's contrl mikroshēma ir hd44780.Paldies visiem!
Bleow ir mans kods (Verilog)

modulis LCD (clk_50hz, lcd_rst, lcd_rw, lcd_rs, lcd_data, lcd_e);

ieejas clk_50hz;
ieejas lcd_rst;

izejas [07:00] lcd_data;
izejas lcd_rs;
izejas lcd_rw;
izejas lcd_e;

stieple [07:00] lcd_data;
stieple lcd_rs;
stieple lcd_rw;
stieple lcd_e;

reg start_finish;
reg init_e;
reg init_rs;
reg init_rw;
reg [07:00] init_data_buf;

reg work_e;
reg work_rs;
reg work_rw;
reg [07:00] work_data_buf;

piešķirt lcd_data =! start_finish?init_data_buf: work_data_buf;
piešķirt lcd_rw =! start_finish?init_rw: work_rw;
piešķirt lcd_rs =! start_finish?init_rs: work_rs;
piešķirt lcd_e =! start_finish?init_e: work_e;

//------------- LCD inicializēt
reg [03:00] skaits;
vienmēr @ (posedge clk_50hz)
ja (lcd_rst)
sākt
init_rs <= 1'b0;
init_rw <= 1'b0;
skaits <= 4'b0001;
start_finish <= 1'b0;
init_data_buf <= 8'h00;
init_e <= 1'b0;
beigas
vēl
if (! start_finish)
gadījumā (skaits)
4'b0001:
if (! init_e)
init_e <= 1'b1;
vēl
sākt
init_e <= 1'b0;
skaits <= 4'b0010;
init_data_buf <= 8'h38;
beigas
4'b0010:
if (! init_e)
init_e <= 1'b1;
vēl
sākt
init_e <= 1'b0;
skaits <= 4'b0100;
init_data_buf <= 8'h0f;
beigas
4'b0100:
if (! init_e)
init_e <= 1'b1;
vēl
sākt
init_e <= 1'b0;
skaits <= 4'b1000;
init_data_buf <= 8'h03;
beigas
4'b1000:
if (! init_e)
init_e <= 1'b1;
vēl
sākt
init_rs <= 1'b0;
init_rw <= 1'b0;
init_e <= 1'b0;
skaits <= 4'b0001;
start_finish <= 1'b1;
init_data_buf <= 8'h01;
beigas
endcase

//------------------------ Nosūtiet adresi un datus
reg [01:00] sel;
reg work_finish;
vienmēr @ (posedge clk_50hz)
ja (lcd_rst)
sākt
work_e <= 1'b0;
work_rs <= 1'b0;
work_rw <= 1'b0;
SEL <= 2'b00;
work_finish <= 1'b0;
work_data_buf <= 8'h00;
beigas
vēl
ja (start_finish & &! work_finish)
gadījumā (SEL)
2'b00:
if (! work_e)
sākt
work_e <= 1'b1;
work_rs <= 1'b0;
beigas
vēl
sākt
work_e <= 1'b0;
SEL <= sel 1'b1;
work_data_buf <= 8'h83;
beigas
2'b01:
if (! work_e)
sākt
work_e <= 1'b1;
work_rs <= 1'b1;
beigas
vēl
sākt
work_e <= 1'b0;
SEL <= sel 1'b1;
work_data_buf <= 8'b01001101; //---- 6D M
beigas
2'b10: sāk
if (! work_e)
sākt
work_e <= 1'b1;
work_rs <= 1'b0;
beigas
vēl
sākt
work_e <= 1'b0;
SEL <= sel 1'b1;
work_data_buf <= 8'h82;
beigas
2'b11: sāk
if (! work_e)
sākt
work_e <= 1'b1;
work_rs <= 1'b1;
beigas
vēl
sākt
work_e <= 1'b0;
work_data_buf <= 8'b01100001; //----- 61
SEL <= 2'b00;
work_finish <= 1'b1;
beigas
beigas
endcase
endmodule

 

Welcome to EDABoard.com

Sponsor

Back
Top