完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在电子系统中,通常都需要有输出设备来输出或显示一定的信息,以指示当前系统运行的状态。在以单片机和ARM为主的电子系统中,液晶屏是理想的输出设备。而FPGA则因为其独特的硬件结构,如果用RTL级电路来驱动彩色液晶屏来显示一定的数据,势必是非常不划算的选择,而且驱动也极为复杂。数码管作为一种能够直观显示一定数据信息的输出设备,具有驱动简单,显示直观的特点,尤其适合作为FPGA系统的输出设备。本节,小梅哥就将和大家一起进行数码管驱动的开发。 一、 实验目的 实现6位7段数码管的驱动,待显示数据以BCD格式输入。数码管刷新时钟为1KHz。实验使用了4个独立按键作为输入,通过按键来改变需要数码管显示的数据,以验证数码管驱动的正确性,同时也可检验独立按键消抖模块的可靠性。 二、 实验原理 数码管所谓的动态扫描,就是利用人眼的视觉暂留特性,在人眼能分辨的变化速度以外,快速分时的点亮各个数码管对应的段。因为分别点亮所有数码管一次所用时间小于人眼的视觉暂留,因此,在人们眼里看来,这些数码管都是同时持续点亮的,并不会有闪烁的感觉。 图2-1 数码管实物图 关于数码管的具体原理,请大家网上查阅,小梅哥一个人精力有限,没办法在这里从最低层的原理给大家一步一步讲起,如果大家有不明白的,请自行百度。这里小梅哥就用最简单粗暴的方式给大家简单介绍一下。 图2-2 数码管简单等效电路 上图为3位7段数码管的等效电路图,在这个图中,可以明显的看到24个发光二极管被分为了三组,每一组的8个发光二极管正极被接在了一起,通过一个三极管与VCC相连。三极管的基极连接到了FPGA的IO上,因此,只需要FPGA对应的IO上给出低电平,三极管便会导通。而三组LED中所有的相同编号的LED的负极被连接在了一起,并接到了FPGA的IO上。如果我们希望将最左边一组的led0、led5、led7三个编号的led灯点亮,其它led不亮,则只需要给Q0的基极(sel0)连接上低电平,并将led0、led5、led7的负极(a、f、h)连接上低电平,其它所有端口都输出高电平,则最左边一组的对应的三个led灯就会被点亮,而其它led则会处于熄灭状态。 假如我们需要在三秒时间内,完成以下三次操作:第一次操作,点亮最左边一组led灯的led0、led5、led7;第二次操作,点亮中间一组led灯的led1、led2、led3;第三次操作,点亮最右边一组led灯的led2、led4、led6;那么我们只需要按照如下表格中列出的真值表操作即可: 第一秒 第二秒 第三秒 sel0 0 1 1 sel1 1 0 1 sel2 1 1 0 a 0 1 1 b 1 0 1 c 1 0 0 d 1 0 1 e 1 1 0 f 0 1 1 g 1 1 0 h 0 1 1 按照以上表格,我们就能知道该如何操作了,只需要在不同的时间给各个IO不同的电平,便能实现我们想要的亮灭组合。以上我们是以1秒为单位进行led组的切换的,假如我们将切换速度加快,变为1毫秒一切换,会是什么情况呢?在1毫秒一切换的速度下,完成所有操作所需时间为3ms,远远超出了我们人眼所能辨识的变化速度范围。如果我们让以上三个操作永远循环的进行下去,那么我们将看见三组led灯中,我们点亮的那几个led是同时且一直处于亮着的状态的,这便是动态扫描的原理,假如我们把每个led做成一个长条型的,并按照如下形状摆放,便就是我们常见的数码管了。 图2-3 数码管段分布 三、 硬件设计 图2-2只是一个为了讲述数码管原理简化了的电路模型,常见的数码管电路结构如下图所示: 图3-1 数码管典型电路 在这个图中,共有6位数码管,每个数码管的正极被接在一个驱动三极管上,三极管的基极连接到三八译码器的Y端,则FPGA只需要三个引脚就可最多控制8个数码管的位选。数码管的段选在串接了470欧姆的电阻后与FPGA的IO相连。这里470欧姆的电阻主要起到限流的作用,保证流过数码管的电流在正常范围内。 四、 架构设计 本实验由总共四个模块组成,分别为数码管驱动模块、独立按键检测模块、控制模块和顶层模块,其架构如下: 图4-1 led实验模块组织结构图 |
|
相关推荐
6个回答
|
|
不错,谢谢分享。。。
|
|
|
|
mark…………
|
|
|
|
之前已经有好多人出过类似的教程、视频等等,希望楼主能突出自己的特色,不然又会重复前人的工作无意义。刚开始学FPGA,很喜欢楼主的testbench,因为看特权视频,对于仿真介绍的比较少(刚看了前几讲,后面的不知道),希望正好可以学着从基本的开始学习testbench。加油↖(^ω^)↗
|
|
|
|
他们的充其量就只是实现功能,展示FPGA有多牛逼,能干多少事,可重用性不强。我学习原子哥的教程风格,所有外设驱动做成标准接口,可直接重用。为快速建立新项目做铺垫。今天会出一个综合实验的文档,并在其中重点介绍我的这种组织架构
|
|
|
|
但我也有点感觉楼主的代码不好移植呀
|
|
|
|
我这个做成了标准接口的形式啊,要显示什么内容,只需要将待显示的内容放到data端口就行了,不需要移植的。这里data要求是6个BCD码的格式,如果需要显示2进制数,如123456,我们有法宝:BIN转BCD的代码。只需要将123456接到BIN端,BCD端出来的就是可以直接显示的123456的BCD格式了
|
|
|
|
只有小组成员才能发言,加入小组>>
2884 浏览 3 评论
27672 浏览 2 评论
3460 浏览 2 评论
3975 浏览 4 评论
基于采用FPGA控制MV-D1024E系列相机的图像采集系统设计
2323 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 02:34 , Processed in 1.086623 second(s), Total 87, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号