FPGA六位共阳极数码管动态显示
`timescale 1ns/1ps
module adc_dis(
clk ,
rst_n ,
sm_seg ,
sm_bit
); input clk;//50HZ
input rst_n;
output[:] sm_seg;//段选
output[:] sm_bit;//位选 reg [:] sm_seg;
reg [:] sm_bit;
reg [:] count;
reg [:] count2;
reg [:] i;//数码管位数
reg clk1, clk2;
reg [:]ge,shi,bai,qian,wan,swan;
reg [:] ge_reg,shi_reg,bai_reg,qian_reg,wan_reg,swan_reg; parameter//共阳极
led_GYA0 = 'hc0, //''
led_GYA1 = 'hf9, //''
led_GYA2 = 'ha4, //''
led_GYA3 = 'hb0, //''
led_GYA4 = 'h99, //''
led_GYA5 = 'h92, //''
led_GYA6 = 'h82, //''
led_GYA7 = 'hf8, //''
led_GYA8 = 'h80, //''
led_GYA9 = 'h90; //'' /****************分频1S*****************/
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin //同步复位
clk2 <= 'b0;
count2 <= 'b0;
end
else if(count2 == 'd249999)begin //高低电平转换 5*10^7*20ns=10^9ns=1s
clk2 <= ~clk2;
count2 <= 'b0;
end
else begin
count2 <= count2 + 'b1; //计数
end
end /******************计数*********************/
always@(posedge clk2 or negedge rst_n) begin//个位处理
if(!rst_n) begin
ge <= 'b0000;
shi <= 'b0000;
bai <= 'b0000;
qian <= 'b0000;
wan <= 'b0000;
swan <= 'b0000;
end
else if(ge == 'b1010) begin //个位等于10
ge = 'b0000;
shi = shi + 'b1;
if(shi == 'b1010) begin//十位等于10
shi = 'b0000;
bai = bai + 'b1;
if(bai == 'b1010) begin//百位等于10
bai = 'b0000;
qian = qian + 'b1;
if(qian == 'b1010) begin//千位等于10
qian = 'b0000;
wan = wan + 'b1;
if(wan == 'b1010) begin//万位等于10
wan = 'b0000;
swan = swan + 'b1;
if(swan == 'b1010) begin//十万位等于10
ge <= 'b0000;
shi <= 'b0000;
bai <= 'b0000;
qian <= 'b0000;
wan <= 'b0000;
swan <= 'b0000;
end
end
end
end
end
end
else begin
ge <= ge + 'b1;
end end /***************编码*******************/
always@(posedge clk2 or negedge rst_n) begin
case(ge)
'b0000: ge_reg <= led_GYA0;
'b0001: ge_reg <= led_GYA1;
'b0010: ge_reg <= led_GYA2;
'b0011: ge_reg <= led_GYA3;
'b0100: ge_reg <= led_GYA4;
'b0101: ge_reg <= led_GYA5;
'b0110: ge_reg <= led_GYA6;
'b0111: ge_reg <= led_GYA7;
'b1000: ge_reg <= led_GYA8;
'b1001: ge_reg <= led_GYA9;
default: ge_reg <= led_GYA0;
endcase case(shi)
'b0000: shi_reg <= led_GYA0;
'b0001: shi_reg <= led_GYA1;
'b0010: shi_reg <= led_GYA2;
'b0011: shi_reg <= led_GYA3;
'b0100: shi_reg <= led_GYA4;
'b0101: shi_reg <= led_GYA5;
'b0110: shi_reg <= led_GYA6;
'b0111: shi_reg <= led_GYA7;
'b1000: shi_reg <= led_GYA8;
'b1001: shi_reg <= led_GYA9;
default: shi_reg <= led_GYA0;
endcase case(bai)
'b0000: bai_reg <= led_GYA0;
'b0001: bai_reg <= led_GYA1;
'b0010: bai_reg <= led_GYA2;
'b0011: bai_reg <= led_GYA3;
'b0100: bai_reg <= led_GYA4;
'b0101: bai_reg <= led_GYA5;
'b0110: bai_reg <= led_GYA6;
'b0111: bai_reg <= led_GYA7;
'b1000: bai_reg <= led_GYA8;
'b1001: bai_reg <= led_GYA9;
default: bai_reg <= led_GYA0;
endcase case(qian)
'b0000: qian_reg <= led_GYA0;
'b0001: qian_reg <= led_GYA1;
'b0010: qian_reg <= led_GYA2;
'b0011: qian_reg <= led_GYA3;
'b0100: qian_reg <= led_GYA4;
'b0101: qian_reg <= led_GYA5;
'b0110: qian_reg <= led_GYA6;
'b0111: qian_reg <= led_GYA7;
'b1000: qian_reg <= led_GYA8;
'b1001: qian_reg <= led_GYA9;
default: qian_reg <= led_GYA0;
endcase case(wan)
'b0000: wan_reg <= led_GYA0;
'b0001: wan_reg <= led_GYA1;
'b0010: wan_reg <= led_GYA2;
'b0011: wan_reg <= led_GYA3;
'b0100: wan_reg <= led_GYA4;
'b0101: wan_reg <= led_GYA5;
'b0110: wan_reg <= led_GYA6;
'b0111: wan_reg <= led_GYA7;
'b1000: wan_reg <= led_GYA8;
'b1001: wan_reg <= led_GYA9;
default: wan_reg <= led_GYA0;
endcase case(swan)
'b0000: swan_reg <= led_GYA0;
'b0001: swan_reg <= led_GYA1;
'b0010: swan_reg <= led_GYA2;
'b0011: swan_reg <= led_GYA3;
'b0100: swan_reg <= led_GYA4;
'b0101: swan_reg <= led_GYA5;
'b0110: swan_reg <= led_GYA6;
'b0111: swan_reg <= led_GYA7;
'b1000: swan_reg <= led_GYA8;
'b1001: swan_reg <= led_GYA9;
default: swan_reg <= led_GYA0;
endcase
end /****************分频1MS*****************/
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin //同步复位
clk1 <= 'b0;
count <= 'b0;
end
else if(count == 'd24999)begin //高低电平转换 25000*20=500000ns=0.5ms
clk1 <= ~clk1;
count <= 'b0;
end
else begin
count <= count + 'b1; //计数
end
end /************数码管位数循环****************/
always@(posedge clk1 or negedge rst_n) begin if(!rst_n) begin //同步复位
i <= 'b0000;
end
else if(i == 'b0101) begin
i <= 'b0000;
end
else begin
i <= i + 'b1;
end
end /************数码管显示****************/
always@(posedge clk1 or negedge rst_n) begin
case(i)
'b0000: begin sm_seg <= ge_reg; sm_bit <= 6'b11_1110; end
'b0001: begin sm_seg <= shi_reg; sm_bit <= 6'b11_1101; end
'b0010: begin sm_seg <= bai_reg; sm_bit <= 6'b11_1011; end
'b0011: begin sm_seg <= qian_reg; sm_bit <= 6'b11_0111; end
'b0100: begin sm_seg <= wan_reg; sm_bit <= 6'b10_1111; end
'b0101: begin sm_seg <= swan_reg; sm_bit <= 6'b01_1111; end
default: begin sm_seg <= led_GYA0; sm_bit <= 'b11_1111; end
endcase
end endmodule
FPGA六位共阳极数码管动态显示的更多相关文章
- FPGA自计数六位共阳极数码管动态显示2(调用task的方法)
`timescale 1ns/1ps module adc_dis( clk , rst_n , sm_seg , sm_bit ); input clk;//50HZ input rst_n; :] ...
- 共阳极RGB LED二极管
1)RGB LED二极管有四个引脚,它把3个普通led被封装在其内部,这三个led颜色分别为红.绿.蓝三种颜色,通过控制各个LED的亮度,你可以混合出几乎任何你想要的颜色,如下图: 2)RGB LED ...
- 数码管显示“0~F”的共阳共阴数码管编码表
嵌入式设备中数码管显示“0~F”的方式是:定义了一个数组,里面含有16个元素,分别代表0~F,这样可以方便以后的调用.共阳极数码管编码表:unsigned char table[]={0xc0,0xf ...
- [51单片机] 以从0开始做4位8段共阴数码管3461AS驱动谈细节决定高质量DIY
目录 1)问题产生 2)失败尝试 3)最终方案 4)使用方法 5)知识共享 1)问题产生 在上一篇“以PWM控制直流电机为例建一个简单的51工程框架”中已向大家介绍了一个封装好的8位8段数码管的驱动( ...
- 80C51 数码管动态显示0~7
所使用的开发板 普中科技HC6800-ES V2.0 PC:win7 64位 编译软件: keil uversion2 烧写工具: 普中科技开发的PZ-ISP V1.82 烧写方式:热烧写 #incl ...
- 数码管动态显示Verilog实现(参考小梅哥教程)(视觉暂留)
一个数码管有九个引脚,控制八段二极管的亮灭,用以显示需要的数字. 当有N个数码管时,一个一个控制的话需要N x 9 个引脚,消耗资源较多. 因此可以利用动态显示的方案通过人眼的视觉暂留特性达到静态显示 ...
- 数码管动态显示——74HC04
1.电路设计: p0实现段选,p2实现位选,74hc04是反相器,有反向和放大的双重作用. 2.程序设计: #include<reg52.h> code unsigned char sev ...
- AC620教程 第十五节 8位7段数码管驱动设计与验证
本章导读 电子系统中常用的显示设备有数码管.LCD液晶以及VGA显示器等.其中数码管又可分为段式显示(7段.米字型等)以及点阵显示(8*8.16*16等),LCD液晶的应用可以分为字符式液晶(1602 ...
- 【雕爷学编程】Arduino动手做(47)---七段LED数码管模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...
随机推荐
- SDL-开篇明义
SDL只是方法论,忌为SDL而SDL 1.sdl是什么 sdl是安全研发生命周期 ,一个方法论, 理念是安全左移, 通过各种方法.工具.流程设计和交付更安全的软件,以期望降低安全成本,最终还是为了保护 ...
- 使用GML的八方向自动寻路
使用GML的八方向自动寻路 本教程适合无基础人员使用. 提示 本教程中仅使用了最简单的方法,并且有一些错误和不规范之处.请谅解一下,在评论区提出,我会修改.古人曰"教学相长",希望 ...
- [linux] 权限问题
权限问题一直蒙蒙的,下面就是总结一下!(原文链接:http://www.cnblogs.com/chengJAVA/p/4319420.html) 指令名称:chmod 使用权限 : 所有使用者 使用 ...
- response没有实现跳转,而是提示浏览器下载文件
问题简述: web项目中,response没能实现重定向跳转网页,而是通知浏览器下载文件. 代码如下: response.getWriter().write("<h1 style='c ...
- synchronized 作为悲观锁,锁住了什么?
继续来认识 synchronized,上篇文章加不加 synchronized 有什么区别?我们了解了 synchronized 是在多线程并发竞争同一资源的时候使用,这一篇我们来了解,synchro ...
- 免费申请通配符类型SSL证书
折腾起因 最近做了个小网站wawoo.fun,一个做mac壁纸的小网站,网站还处在初级阶段,不能跟大神的比.网站发布后发现因为没有使用https,谷歌浏览器会在地址栏提示网站不安全.因此想提升下网站的 ...
- thinkphp--多表查询
我们可以将两个表连起来一起查询数据,我现在有两张表,一个是feedback表和member表,如图: 总目录: 上代码: $where = array(); $"; $Model = M(' ...
- 鸟哥Linux私房菜(基础篇)——第五章:首次登入与在线求助 man page笔记
1.X Winsows与文本模式的切换 ●[Ctrl] + [Alt] + [F1] ~ [F6] :文字接口登入 tty1 ~ tty6 终端机. ●[Ctrl] + [Alt] + ...
- HMAC算法及其应用
HMAC算法及其应用 MAC HMAC HMAC的应用 HMAC实现举例 MAC 在现代的网络中,身份认证是一个经常会用到的功能,在身份认证过程中,有很多种方式可以保证用户信息的安全,而MAC(mes ...
- zabbix自动监控钉钉报警
钉钉报警 一:设置钉钉机器人 二:zabbix服务器server端配置 1.修改zabbix_server.conf文件 [root@server ~]# vim /usr/local/zabbix ...