VGA驱动色块显示

了解了VGA的显示原理和ADV7123控制后,再去实现色块显示就容易了。

  1. 像素坐标

跟显示色条不同,要在屏幕上不同的地方显示色块,需要用像素坐标来定位色块。其实,就是分别用行扫描的计数值和场扫描的计数值来表示坐标的x,y值。

  1. VGA显示数字

比如,用屏幕显示计分的数字

本质,是把屏幕分区,然后某些区域输出某些颜色。

贪吃蛇游戏种的食物,蛇头都是一个16*16像素的block,蛇身是若干block组成。

显示的数字,为了计算方便,也用同样的block为基本单位,模拟数码管的分段。

每段2个block宽,8个block长。

以显示数字0为例。

代码:

case (bcd_data[3:0])    //个位数        4'd0:begin    //显示0            if(pos_x[9:4] >= 26 && pos_x[9:4] < 34 && pos_y[9:4] >= 8 && pos_y[9:4] < 10)                vga_rgb = 24'h80ffff;//第0段输出蓝色            else if(pos_x[9:4] >= 26 && pos_x[9:4] < 34 && pos_y[9:4] >= 20 && pos_y[9:4] < 22)                vga_rgb = 24'h80ffff;//第3段输出蓝色            else if(pos_x[9:4] >= 26 && pos_x[9:4] < 28 && pos_y[9:4] >= 8 && pos_y[9:4] < 16)                vga_rgb = 24'h80ffff;//第5段输出蓝色            else if(pos_x[9:4] >= 32 && pos_x[9:4] < 34 && pos_y[9:4] >= 8 && pos_y[9:4] < 16)                vga_rgb = 24'h80ffff;//第1段输出蓝色            else if(pos_x[9:4] >= 26 && pos_x[9:4] < 28 && pos_y[9:4] >= 14 && pos_y[9:4] < 22)                vga_rgb = 24'h80ffff;//第4段输出蓝色            else if(pos_x[9:4] >= 32 && pos_x[9:4] < 34 && pos_y[9:4] >= 14 && pos_y[9:4] < 22)                vga_rgb = 24'h80ffff;//第2段输出蓝色            else                 vga_rgb = 24'h000000;//否则输出黑色        end

这里x,y坐标只取[9:4],是因为每个block都是16*16像素,所以x,y坐标的[3:0]都是0,相当于每个block的左上角的坐标就是这个block的坐标。

参考文献

https://mp.weixin.qq.com/s/WiVS1qC_9hBaoQh0R_wzkQ

VGA色块显示#VGA显示数字的更多相关文章

  1. 学习excel的使用技巧四显示正常的数字

    记得之前在excel中输入一些数字比如输入手机号 就会变成1.E几类似这种 那么怎样显示正常的数字呢 先选中要操作的输入框 1  找到 数字 这个功能的地方 2 设置为 数值  并且小数点为0 3  ...

  2. Java中怎么把科学计数法显示出全部数字

    如果想去除科学计数法显示可以用如下方法处理: /** * 把科学计数法显示出全部数字 * @param d */ public static String object2Str(Object d) { ...

  3. vs 调试 IE显示“无法显示该网页

    在用VS2010调试网站的时候,突然页面不能正常显示了,IE显示“无法显示该网页”.症状一: IE地址栏里面显示的端口号和桌面任务栏右下角“ASP.NET Development Server”的端口 ...

  4. os如何处理键盘的所有按键,显示or不显示,显示是如何显示

    [0]README 0.1) source code and text decription are from orange's implemention of a os , and for comp ...

  5. PL/SQL中文显示都显示成“?”的问题

    PL/SQL中文显示都显示成“?”的问题  首先我在sqlplus里面查询到的中文是正常的,然后再oracle里面的注册表里面看得nls_lang是SIMPLIFIED CHINESE_CHINA.Z ...

  6. Linux显示一行显示列总计

    Linux显示一行显示列总计 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -t total used free shared buffers ca ...

  7. Linux显示只显示目录文件

    Linux显示只显示目录文件 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ls -l -d */ drwxr-xr-x 2 root root 4096 1 ...

  8. Notepad++同一窗口显示左右显示两份文档

    Notepad++同一窗口显示左右显示两份文档   直接打开一份文档,test1.txt 再打开第二份文档,test2.txt,会显示成这样: 两份文档是以标签的形式展示的,有时需要同时查看两份文档, ...

  9. Highmaps网页图表教程之绘图区显示标签显示数据标签定位

    Highmaps网页图表教程之绘图区显示标签显示数据标签定位 Highmaps数据标签定位 由于数据标签是和节点一一对应,所以数据标签是依据节点位置进行定位的.本节详细讲解如何对数据标签进行定位. H ...

  10. vue :class 可以接收 字符串 数组 和 对象 对象里面的key值 根据true或false 显示不显示

    vue :class 可以接收 字符串 数组 和 对象 对象里面的key值 根据true或false 显示不显示 https://cn.vuejs.org/v2/guide/class-and-sty ...

随机推荐

  1. 蓝牙HFP协议推荐的语音丢包补偿算法浮点实现的定点化

    最近在做蓝牙的宽带语音通话.相对于蓝牙窄带语音,主要变化是把采样率从8k变到16k,以及编解码器从CVSD变成mSBC(modified SBC,改进的SBC)等.蓝牙语音通话相关的HFP(Hand ...

  2. Python 汇总列数据到行

    Python汇总Excel列数据到行(方法一) import pandas as pd # 读取Excel文件 df = pd.read_excel('C:\\Users\\liuchunlin2\\ ...

  3. drools中no-loop和lock-on-active的区别

    一.背景 在我们编写drools规则的过程中,可能会发生死循环,那么该怎么解决呢?如果想某一个规则只执行一次,即别的规则导致该规则重新执行,也不需要执行,那么该怎么解决呢? 二.解决方案 针对以上问题 ...

  4. Scratch基础(一):安装和了解软件

    Scratch基础(一):安装和了解软件 编写计算机程序代码的能力是当今社会读写能力的重要组成部分.当人们学习使用Scratch进行编码时,他们将学习解决问题,设计项目和交流思想的重要策略. 1.安装 ...

  5. Oracle 触发器迁移至KingbaseES常见的问题

    oracle数据库的触发器迁移到KingbaseES的时候经常会出现一下两类错误: 1.SQL 错误 [42809]: 错误: "xxxxxxxx" 是一个视图.Detail: 视 ...

  6. #错排,组合计数#洛谷 4071 [SDOI2016]排列计数

    题目 多组询问长度为\(n\)的排列中恰好有\(m\)个数对号入座的排列数 分析 首先\(n\)个数中选择\(m\)个数放入那\(m\)个位置显然是\(C(n,m)\) 剩下就是错排\(D(n)=(n ...

  7. C#读 .properties文件

    引用:https://www.cnblogs.com/wardensky/p/5331851.html properties文件 MONGO_URL = mongodb://172.16.20.3/s ...

  8. DEB打包教程

    一.deb简介 deb是一种安装包的格式,linux上常见的安装包主要是deb.rpm 二.deb简单使用 # deb安装 sudo dpkg -i webcamera_1.0_amd64.deb # ...

  9. centerOS网卡ens33没有inet报错failed tostart LSB: Bring up/down

    没有inet 错误 cd /etc/sysconfig/network-scripts/ vi ifcfg-ens33 添加  HWADDR=<mac_of_ens33> service ...

  10. 从Vue2转换为Vue3

    方便的Vue2到Vue3生命周期映射直接来自Vue3 Composition API文档,我认为这是了解事物将如何变化以及如何使用它们的最有用的方法之一. beforeCreate -> use ...