这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » anmko的进程贴:综合实验-基于DS1302的万年历LCD1602显示(最终版

共76条 3/8 1 2 3 4 5 6 ›| 跳转至
高工
2012-09-27 10:41:19     打赏
21楼
6、数码管的静态显示


8个数码管静态显示数字,并从0计数到f

高工
2012-09-27 14:01:30     打赏
22楼

7、数码管的动态显示


数码管的动态显示,依次显示0~7

module scan_led(clk,rst,sm_seg,sm_bit);
input clk,rst;
output[7:0] sm_seg;
output[7:0] sm_bit;
reg[7:0] sm_seg;
reg[7:0] sm_bit;

reg[15:0] cnt_scan;
reg[4:0] dataout_buf;

always@(posedge clk or negedge  rst)
begin
 if(!rst) begin
  cnt_scan<=0;
  
  end
 else begin
  cnt_scan<=cnt_scan+1'b1;
  end
end

always @(cnt_scan)
begin
   case(cnt_scan[15:13])
       3'b000 :
          sm_bit = 8'b1111_1110;
       3'b001 :
          sm_bit = 8'b1111_1101;
       3'b010 :
          sm_bit = 8'b1111_1011;
       3'b011 :
          sm_bit = 8'b1111_0111;
       3'b100 :
         sm_bit = 8'b1110_1111;
       3'b101 :
         sm_bit = 8'b1101_1111;
       3'b110 :
          sm_bit = 8'b1011_1111;
       3'b111 :
         sm_bit = 8'b0111_1111;
       default :
          sm_bit = 8'b1111_1110;
    endcase
end

always@(sm_bit)
begin
 case(sm_bit)
  8'b1111_1110:
   dataout_buf=0;
  8'b1111_1101:
   dataout_buf=1;
  8'b1111_1011:
   dataout_buf=2;
  8'b1111_0111:
   dataout_buf=3; 
  8'b1110_1111:
   dataout_buf=4;
  8'b1101_1111:
   dataout_buf=5;
  8'b1011_1111:
   dataout_buf=6;
  8'b0111_1111:
   dataout_buf=7;
  default:
   dataout_buf=8;
  endcase
end

always@(dataout_buf)
begin
 case(dataout_buf)
      4'h0 : sm_seg = 8'hc0;   // "0"
   4'h1 : sm_seg = 8'hf9;   // "1"
   4'h2 : sm_seg = 8'ha4;   // "2"
   4'h3 : sm_seg = 8'hb0;   // "3"
   4'h4 : sm_seg = 8'h99;   // "4"
   4'h5 : sm_seg = 8'h92;   // "5"
   4'h6 : sm_seg = 8'h82;   // "6"
   4'h7 : sm_seg = 8'hf8;   // "7"
   4'h8 : sm_seg = 8'h80;   // "8"
   4'h9 : sm_seg = 8'h90;   // "9"
   4'ha : sm_seg = 8'h88;   // "a"
   4'hb : sm_seg = 8'h83;   // "b"
   4'hc : sm_seg = 8'hc6;   // "c"
   4'hd : sm_seg = 8'ha1;   // "d"
   4'he : sm_seg = 8'h86;   // "e"
   4'hf : sm_seg = 8'h8e;   // "f"
  endcase
end

endmodule


高工
2012-09-27 19:06:15     打赏
23楼

8、拨码开关控制数码管显示

      这个实验值得注意的是拨码有个引脚用到了FPGA的108脚,因为这个教默认的是特殊作用的,必须把它设置成普通的IO口,不然编译出错的。



       通过拨码开关控制数码管的显示,SW1~SW4控制第4~7位数码管,SW5~SW8控制第1~3位数码管。数码管的显示数字范围是0~f。


module key_disp
(
 input   clk,
 input   rst_n,
  
 input [3:0]  swith1,
 input [3:0]  swith2,
 
 output [7:0] disp_reg,
 output [7:0] dis_bit
);

 scan_display DISP //动态显示,具体的源码在楼上贴着呢,稍微修改
                                    //一下即可
 (
  .clk(clk),
  .rst_n(rst_n),
  .disp_1th(swith1),
  .disp_2th(swith1),
  .disp_3th(swith1),
  .disp_4th(swith2),
  .disp_5th(swith2),
  .disp_6th(swith2),
  .disp_reg(disp_reg),
  .dis_bit(dis_bit)
 );

endmodule


高工
2012-09-28 10:22:34     打赏
24楼

9、数码管、按键、分频综合实验:数字时钟




分频、按键防抖、数码管显示的综合实验。

功能:
       按键S1、S2分别对进行加1、减1操作;S3、S4分别对进行加10、加1操作;S5、S6分别对进行加10、加1操作。

数字时钟分为:
        1、分频模块:对50MHZ时钟进行分频,得到1HZ的时钟信号,给计数器提供使能信号。
        2、counter_60:模为60的计数器,使能信号一次上升沿计数一次(使能信号需要滤波),计数60次进位。
        3、counter_24:counter_60的进位信号的上升沿使能技术一次(也需要滤波)。
        4、按键模块:主要是防抖和改变计数器的计数(避免信号竞争没有选择驱动使能信号,而是内部直接对寄存器改变)。

        国庆前就更新到这了,视频老王还没上传,下午就出门了,所以估计是上传不了。大家先看图片吧



TOP层源码

module countdown(clk,rst_n,key_in,ledout,disp_reg,disp_bit);

 input clk;
 input rst_n;
 input [5:0] key_in;

 output ledout;
 output [7:0] disp_reg;
 output [7:0] disp_bit;
 
 wire clk_en;
 Div_50M  CLK_DIV
 (
  .clk(clk),
  .rst(rst_n),
  .clk_out(clk_en)
 );
 
 wire [3:0] S_H;
 wire [3:0] S_L; 
 wire SecCout;
 counter60 Sec_COUNT60
 (
  .en(clk_en),
  .clk(clk),
  .rst(rst_n),
  .key1(key_in[0]),
  .key2(key_in[1]),
  .cout(SecCout),
  .HighOut(S_H),
  .LowOut(S_L)
 );
 
 wire [3:0] M_H;
 wire [3:0] M_L; 
 wire MinCout;
 counter60 Min_COUNT60
 (
  .en(SecCout),
  .clk(clk),
  .rst(rst_n),
  .key1(key_in[2]),
  .key2(key_in[3]),
  .cout(MinCout),
  .HighOut(M_H),
  .LowOut(M_L)
 );

 wire [3:0] H_H;
 wire [3:0] H_L; 
 counter24 Hou_COUNT24
 (
  .en(MinCout),
  .clk(clk),
  .rst(rst_n),
  .key1(key_in[4]),
  .key2(key_in[5]),
  .cout(ledout),
  .HighOut(H_H),
  .LowOut(H_L)
 );
 
 scan_display DISP
 (
  .clk(clk),
  .rst_n(rst_n),
  .disp_1th(S_L),
  .disp_2th(S_H),
  .disp_3th(M_L),
  .disp_4th(M_H),
  .disp_5th(H_L),
  .disp_6th(H_H),
  .disp_reg(disp_reg),
  .dis_bit(disp_bit)
  
 );

endmodule


可执行文件:下载
——回复可见内容——


高工
2012-09-29 22:25:31     打赏
25楼
其实我也是菜鸟。。。

高工
2012-09-29 22:26:25     打赏
26楼

我已经在兰州了。。。。


高工
2012-09-29 22:28:22     打赏
27楼
还好吧,只是51FPGA发货速度给力。

高工
2012-10-04 09:27:06     打赏
28楼
这个没影响的,用焊锡封一下还比较好,能防止铜氧化

高工
2012-10-04 09:29:18     打赏
29楼
你别目测了,目测失败,,我也是新手。

高工
2012-10-04 09:38:34     打赏
30楼
不是高手,大家在EEPW这个平台上多多交流,共同进步。

共76条 3/8 1 2 3 4 5 6 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]