这个试验其实现已做好久了,可是一向没有做笔记,今日就把这部分的内容补一下,有爱好的朋友能够看一下,或许对你有什么协助,对初学者来说仍是一个不错的试验。
先来了解一下VGA吧
咱们家里用的台式电脑便是一个VGA显现器,小墨同学为做这方面的试验还特意买了一块7寸的VGA液晶显现器
记住最初自己也是傻得不得了,把写好的代码,烧到板子里就直接连到笔记本电脑上的VGA接口上,成果什么反响也没有,还调了一下午的程序…成果仍是没反响,到群里一问才知道,本来笔记本电脑上的VGA接口只能做输出而不能输入的这跟台式机仍是不同的,后来才买的这块液晶显现器。
规范的VGA接口有15个接口,可是真实用到的只要5个接口,分别是三个色彩信号,R,G,B,场同步信号VSYNC,行同步信号HSYNC,时序部分要经过操控行同步信号和场同步信号,色彩部分要操控RGB,先来看时序部分。
关于一个分辩率为800*600的显现器,简略的说像素的改写是从左到右,从上到下一行一行的改写的,每一行要改写的点成为行同步信号的帧长,有多少行称为场同步信号的帧长,从上到下改写完一遍称为一帧,咱们电脑上说的屏幕改写频率便是说屏幕一秒钟能够改写多少帧,当到达必定的帧数,咱们的肉眼也就分辩不出来了,这样咱们就看到咱们的电脑屏幕,咱们在操作的时分是接连的了。下面是时序表:
先来解释一下这个表
榜首行表明行同步信号的时序表,前187个计数点表明的在消影区,即还没开端进入显现区,从188开端进入显现区,到987完毕,后边的52个计数点又在消影区
第二行表明场同步信号。同理。前31个计数点和后56个计数点表明在消影区,是不显现的,下面是我画的一个图帮咱们了解
知道了这一点咱们就能够开端写时序部分的程序了
当行计数器计满一行1039个点时清零,场计数器加1,当场计数器计满687行时,一帧完毕,场计数器清零
当计满一行时,行同步信号会拉低一个120个时钟周期的低脉冲,浅显的了解便是计满一行有一个低脉冲呈现,这个脉冲的长度是120个时钟周期,同理,计满一个场之后会有6个场周期的低脉冲呈现,这个低脉冲就不是时钟周期了,是相当于场计数器计6行的时刻
时序写好了之后就要确认显现区域,依据上面那个我画的图,即只要内行计数器计到187到987,场计数器计到31到631时才是有用区域
为了好确认坐标,咱们能够将坐标转化一下,换成咱们习气的姿态,防止消影区坐标的搅扰
这样全部准备工作就做好了,剩余的便是咱们自己规划想要显现的画面了,例如,我要在屏幕中心显现一个矩形框,在这个矩形里边显现一个小矩形
这个当地我刚开端看的时分没看懂,我再画一个图帮咱们了解
下面显现小矩形
画完图形最终显现色彩
最终依照硬件原理图分配好管脚,下载就能够了
下面来说说显现字符
时序部分是相同的就不多说,直接说字符显现部分
显现字符当然要用到取模软件,信任咱们都用过
然后将字模进行拼接,由于咱们改写是从左向右,从上到下改写的,所以要把每一个字模的同一行拼接在一起,这样每改写一行,一起改写三个字模的一行,从上到下改写一边,三个字模也就改写出来了
这儿要界说一个减法计数器,当像素点从某个方位从左到右开端改写时开端计数,知道计数到要显现的字模完毕停止。这儿我用到了32个像素点表明一个字模的一行,4个字模就需求128个像素点来表明一行,共有32列
下面是当计数到需求显现的字模时,给字加上色彩,x_dis,y_dis用来确认在哪显现字符
下面是演示成果