基于fpga的lcd显示控制系统的设计内容摘要:
系统设计总体框图 系统设计总体框图如图 41 所示,在系统上电后, FPGA 将首先对系统进行初始化操作,在初始化操作中最重要的是寄存器的复位,显示开关的控制,功能设置以及对显示屏幕进行清屏。 之后通过显示控制模块对 LCD 进行显示的控制。 显示控制模块主要负责在 LCD 显示多行字符时进行换行操作,在用户指定数据在屏幕的指定显示位置时设置该位置所对应的 RAM 的值,以及在图像显示时进行的 ROM 地址重映射算法,和对 LCD 显示区对应 RAM 进行的写入 操作。 其中的数据分别来自中英文字符模块,动态数据模块,以及图像数据模块。 对此模块的设计,主体结构以状态机来实现 ,如图 31 所示 图 41 系统设计总体框图 系统硬件资源选用 液晶模块选用 本设计选用了 带 ST7920 驱动的 LCD1286412 模 块来进行设计和调试。 该模天津工业大学本科毕业论文 第三章 [XXXX...] 块自带字库。 其中, 1286412 汉字图形点阵液晶显示模块,可显示汉字及图形,内置 8192个中文汉字( 16X16 点阵), 128 个字符( 8X16 点阵)几 64X256 点阵显示RAM(GDRAM)。 [点击输入一级标题 标题 2] [点击输入 正文 ] 天津工业大学本科毕业论文 第四章 [XXXX...] 第四章 系统 软件 设计 本章首先对该系统的各个模块的设计思路进行描述,并给出框图。 首先介绍了初始化模块的设计,然后介绍了分别针对字符以及图片的写入数据模块。 之后介绍了本设计中最关键的显示控制模块,并列举了详细的设计方法。 最后给出系统设计的整体 Block Diagram。 初始化模块设计 LCD模块初始 化设计 对 1286412 模块的初始化采用状态机的方式,通过资料中给出的 1286412模块的说明,选择所需要的初始化命令,结合特定的时钟频率,对 LCD 进行初始化。 最终使屏幕清屏,显示区对应 RAM 复位, LCD 的功能则设置为所需要的功能。 其中,字符显示模块的初始化流 程图如图 41 所示 : 图 41字符初始化流程图 其中直至写数据这一步骤之前都为起始的初始化动作。 与字符显示不同,图天津工业大学本科毕业论文 第四章 [XXXX...] 片的现实需要使用特殊指令集中的指令,因此需要在功能设定时做出改动。 而同时,在对 GDRAM 的地址以及内容进行操 作时,必须保持绘图显示的关闭状态,因此在初始化时,需要将绘图显示关闭。 但是由于写数据这一指令属于常规指令集,因此在设置完 GDRAM 地址后,需要重新使用功能设定,将指令集的使用改回常规指令集。 当数据全部写入完毕,则可以通过再次使用特殊指令集,开启图像显示,将 GDRAM 中的数据显示在屏幕上。 图片显示模块的初始化流程图如图 42 所示 : 图 42 图片显示初始化流程图 天津工业大学本科毕业论文 第四章 [XXXX...] 时钟模块初始化设计 由 LCD 初始化的流程图可得大部分指令的执行时间为 72us,而清除显示和地址归位则需要 ,为 72us 的 64 倍左右,因此需要选择一个合适的时钟来作为 ENABLE 信号的输入。 时钟电路的设计: 由于 FPGA 开发板上自带的晶振频率为 50MHZ,而所需要的时钟频率则需要小于 ,因此需要一个分频器对其进行分频。 这里采用简单的计数器对其进行分频,计数器上限经过计算设为 ,满足实验需要。 在分频之后由于时钟信号需要同时控制 LCD 模块以及 FPGA 的模块,因此需要编写一个程序,使得两者之间同步。 最终的时钟控制模块如 图 43 所示 : 图 43 时钟模块 其中 CLOCK_LOGIC模块的设计通过几个触发器来实现,部分程序如下: ponent DFF port( d : in std_logic。 clk: in std_logic。 q : out std_logic)。 end ponent。 signal sig1,sig2,sig3 : std_logic。 begin sig1= not sig2。 sig3= not clock。 out_clk= sig2。 mydff1 : DFF port map (d=sig1,clk=clock, q=sig2)。 mydff2 : DFF port map (d=sig2,clk=sig3, q=enable)。 天津工业大学本科毕业论文 第四章 [XXXX...] 字符显示前初始化模块的设计 初始化部分的状态机设计 根据字符模块初始化的流程图 如图 44 所示 : 图 44 LCD初始化流程图 因此,此部分的状态机设计如下: „ when IDLE= 空闲状态 if flag =39。 039。 then state = CLEAR。 flag=39。 139。 else state=IDLE。 end if。 when CLEAR= 清屏状态,使 LCD 屏幕上显示全白 if div_counter2 DIVSS2 then DIVSS2 为 64,由于清屏状态所需要的执div_counter2 = div_counter2+1。 行时间为普通指令的 64 倍,因此采用 state=CLEAR。 一个 0 到 64 的计数器对其进行延迟处理 else div_counter2 =0。 天津工业大学本科毕业论文 第四章 [XXXX...] state=RETURNCURSOR。 end if。 when RETURNCURSOR= 地址归位,使 DDRAM 地址复位 if div_counter2 DIVSS2 then 这里和清屏状态一样,需要延迟 64 倍的时div_counter2 = div_counter2+1。 钟时间 state=RETURNCURSOR。 else div_counter2 =0。 state=SETMODE end if。 when SETMODE= 点设置,选择整体画面的移位方式 state=SWITCHMODE。 when SWITCHMODE= 显示状态开 state=SHIFT。 when SHIFT= 控制游标的移动和显示移位 state=SETFUNCTION。 when SETFUNCTION= 功能设置 state=SETDDRAM1。 when SETDDRAM1= 设置 DDRAM 地址 state=WRITERAM。 „ 其中,由于时钟信号的周期约为 80us,而 CLEAR 清屏和 RETURNCURSOR 点设定这两个操作需要 的操作时间,因此在这两个状态中加入了计数器用以延迟,延迟时间为时钟周期的 64 倍,约为 LCD的响应速度。 字符显示的数据选择 清除显示(对应状态机状态为 CLEAR)对应的数据接口的数据( DB7~DB0)为 00000001, RS,RW为 0; 地址归位(对应状态机状态为 RETURNCURSOR)对应 (DB7~DB0)的数据为00000010, RS,RW为 0; 点设定(对应状态机状态为 SETMODE)选择整体画面不移位, DDRAM地址 +1,因此对应 DB7~DB0数据为 00000110, RS,RW为 0; 显示状态开(对应状态机状态为 SWITHMODE),光标显示关,字符不反白,因此对应 DB7~DB0数据为 00001100, RS,RW为 0; 天津工业大学本科毕业论文 第四章 [XXXX...] 游标和显示控制(对应状态机状态为 SHIFT)选择 AC=AC+1,因此对应DB7~DB0数据为 00010100, RS,RW为 0; 功能设定(对应状态机状态为 SETFUNCTION)选择 8为数据线接口,以及基本指令集动作,因此对应 DB7~DB0数据为 00110000, RS,RW为 0; DDRAM(对应状态机状态为 SETDDRAM)地址的设定则根据需要设定,对应 DB7~DB0数据为 10000000~10011111之间, RS为 1, RW为 0; 另外,根据模块引脚说明, FPGA 还需要同时控制其他几个引脚。 其中,为了选择并行的数据发送模式 , PSB 引脚应为 H。 RET 引脚则由 FPGA 控制在经过一段时间的 L 复位后跳为 H。 初始数据的赋值: psb=39。 139。 rs=39。 139。 when state = WRITERAM or state = READRAM else 39。 039。 当状态为读写 RAM 时, RS 为 1 rw=39。 039。 when state = CLEAR or state = RETURNCURSOR or state = SETMODE or state = SWITCHMODE or state = SHIFT or state = SETFUNCTION or state = SETCGRAM or state = SETDDRAM or state = WRITERAM else 39。 139。 当状态为如上时, RW 为 0 data=00000001 when state = CLEAR else 00000010 when state = RETURNCURSOR else 00000110 when state = SETMODE else 00001amp。 open_displayamp。 open_curamp。 blank_cur when state = SWITCHMODE else 00010100 when state = SHIFT else 001amp。 datawidth8 amp。 39。 039。 amp。 exinstruction_offamp。 00 when state = SETFUNCTION else 10000000 when state = SETDDRAM else …… 图片显示前初始化模块的设计 图片显示初始化的状态机设计 图片显示时需要用到扩充指令集。 在基本指令集设置的时候需要将SETFUNCTION,功 能设计,中的 RE 设为 1. 而在扩充指令集的功能设定中也要将 RE 设为 1,同时在显示模块写入图片数据时,需要将图片显示关闭,然后转入基本指令集进行数据的写入,直至写入数据完毕再使用扩充指令集,打开图片天津工业大学本科毕业论文 第四章 [XXXX...] 显示。 因此,其状态机设计与字符显示不同的部分如下: … when SHIFT= 游标和显示移位,这一部和字符显示部分一样 state=SETFUNCTION1。 when SETFUNCTION1= 设置 8 位数据传输方式 state=SETFUNCTION2。 when SETFUNCTION2= 启用特殊指令集 if flag_p=39。 039。 then 这个选择结构用于选择打开或者关闭显示, state=DRAWFUNOFF。 默认为关闭显示,只有当图像数据写入完成 else 才会使 flag_p 等于 1,这时打开显示。 state=DRAWFUNON。 end if。 when DRAWFUNOFF= 关闭显示 state=SETGDRAM。 … when SETGDRAM= 设置 GDRAM 起始地址 state=DRAWFUNR。 when DRAWFUNR= 在使用写入数据命令前,必须转会常规指令集 state=CLEARRAM。 使 GDRAM 中数据清 0 … 图片显示初始化数据的选择 其中与字符显示不同的指令集数据如下: 功能设定 1(对应状态机状态为 SETFUNCTION1)选择 8为数据线接口,以及特殊指令集动作,因此对应 DB7~DB0数据为 00110100, R。基于fpga的lcd显示控制系统的设计
相关推荐
都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的 FPGA 内部都集成了串并收发器 (SERDES),可以达到数十 Gbps 的收发速度。 赛灵思公司的高端产品不仅集成了 Power PC 系列 CPU,还 内嵌了 DSP Core 模块,其相应的系统级设计工具是 EDK 和 Platform Studio,并依此提出了片上系统 (System on Chip) 的概念。 通过
设计人员可以使用 DSP Builder 模块迅速生成 Simulink 系统建模硬件。 DSP Builder 包括比特和周期精度的 Simulink 模块,涵盖了算法和存储功能等基本操作。 可以使用 DSP Builder 模型中的 MegaCore 功能实现复杂功能的集成。 Altera 还提供 DSP Builder 高级模块集,这一 Simulink 库实现了时序驱动的
大 小设 定+显 示输 出( 累 计 )清 零大 于 2 2 点 , 小 于 5 点预 设++—长 按 逐 渐 加 快密 码过 2 公 里起 步起 步过 2 公 里过 1 2 公 里过 1 2 公 里计 时主 计 费模 块总 额显 示1 0 0 O h m1 0 0 O h m2 k O h m1 0 0 O h m2 2 0 u f启 动 计 费空 车用 于 清 零统 计+显 示V C C按
第 3 章 系统分析 计时流程 当计时开始时,每出现一次 CLK,则秒个位计数加 1,当秒个位计数到 9 时则向秒十位进 1,当秒十位到达 5 且秒个位到达 9 时则 分个位计数加 1,当分个位计数到 9 时则向分十位进 1,当分十位到达 5 切分个位到达 9 时则时个位计数加 1,当时个位计数到达 9 时则向时十位进 1,当时十位到达 2 切时个位到达 3 时则日期计时中的日个位计数加 1.
这种将设计实体分成内外部分的概念是 VHDL 系统设计的基本点。 使用 VHDL 设计系统方法是自顶向下的系统设计方法,在设计过程中,首第二章 概述 6 先是从整体上对系统设计作详细的规划,然后完成电路系统功能行为方面的设计。 其设计流程如图 : 图 VHDL 工程设计流程 随着 EDA 技术的发展,使用硬件语言设计 FPGA 成为一种趋势。 借用MAXPLUSII或 QuartusII
ELSE c2 = c2+39。 139。 END IF。 ELSE c1= c1+39。 139。 4 END IF。 ELSE 超过 20 公里,每公里 IF (c0 = 0101 AND c1 = 1000) OR c1 = 1001 THEN 等于 ,累加得 IF c1 = 1001 AND c0 = 0101 THEN c0 = 0000。 c1 = 0001。 等于 ,累加得