BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / circuit / #26668同步于 2016/10/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖

[VHDL]关于1602LCD显示屏烧录后一直是黑块的问题

SamluxNE
2016/10/25镜像同步2 回复
数电大实验做的是lcd的秒表,已经写完,但在下载到实验板时出现了一些故障。有些时候下载到实验板时,lcd屏幕无反应(显示一行黑块),有的时候下载可以成功。是1602的问题还是写的状态机代码出现了问题?求大神解答 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY transcoder IS PORT(clk:IN STD_LOGIC; datain0:IN STD_LOGIC_VECTOR(7 DOWNTO 0); datain1:IN STD_LOGIC_VECTOR(7 DOWNTO 0); datain2:IN STD_LOGIC_VECTOR(7 DOWNTO 0); datain3:IN STD_LOGIC_VECTOR(7 DOWNTO 0); datain4:IN STD_LOGIC_VECTOR(7 DOWNTO 0); datain5:IN STD_LOGIC_VECTOR(7 DOWNTO 0); datain6:IN STD_LOGIC_VECTOR(7 DOWNTO 0); datain7:IN STD_LOGIC_VECTOR(7 DOWNTO 0); rs,rw,en:OUT STD_LOGIC; data:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END entity; ARCHITECTURE a OF transcoder IS TYPE states IS (set_function,clear_display,set_cursor,set_display,set_ddram1,write_data1,set_ddram2,write_data2); SIGNAL state:states; TYPE ram IS ARRAY (0 TO 15)OF STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL ram1:ram; BEGIN rw<='0'; en<=clk; PROCESS(clk,state) VARIABLE cnt : INTEGER RANGE 0 TO 16 ; BEGIN IF (clk'EVENT AND clk='1') THEN CASE state IS WHEN set_function=>data<="00110000";rs<='0';state<= set_display; --设置功能:8位,两行,5×7/每字符 WHEN set_display=>data<="00001100";rs<='0';state<= clear_display; --显示控制:显示开,光标关,光标不闪烁 WHEN clear_display=>data<="00000001";rs<='0';state<=set_cursor; --清屏 WHEN set_cursor=>data<="00000110";rs<='0';state<= set_ddram1; --显示模式:光标右移 WHEN set_ddram1=>data<="10000000";rs<='0';state<=write_data1; --设置ADDRAM地址,第一行第一列 WHEN write_data1=>rs<='1'; ram1 <= (X"20",X"7E",X"7E",datain7,datain6,X"3A",datain5,datain4,X"3A",datain3,datain2,X"3A",datain1,datain0,X"7F",X"7F"); data<=ram1(cnt)(7 DOWNTO 0); cnt:=cnt+1; --将ram1的15个byte写入ADDRAM IF cnt=16 THEN state<=set_ddram1; END IF; WHEN OTHERS=>NULL; END CASE; END IF; END PROCESS; END a ;
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
SamluxNE机器人#1 · 2016/10/25
是一段式状态机的锅吗?回去写成二段式状态机试试[ema2]
mc34机器人#2 · 2016/12/6
做个ROM保存那几条初始化指令,再做个计数器将ROM的内容推出去? 觉得拿可编程器件来推液晶屏什么的着实无趣,不知这课干嘛要这么来学。做个简单的CPU才是正道。