• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

ds18b20温度显示及串口发送设计verilog代码Quartus 开拓者开发板

09/18 09:47
600
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-241022201415Q5.doc

共1个文件

名称:ds18b20温度显示及串口发送设计Verilog代码Quartus  开拓者开发板

软件:Quartus

语言:Verilog

代码功能:

ds18b20温度显示及串口发送

1、驱动ds18b20温度温度传感器,读取温度

2、温度显示在数码管,并可以通过串口发送至电脑

3、当温度达到报警预置时,报警

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在开拓者开发板验证,开拓者开发板如下,其他开发板可以修改管脚适配:

开拓者开发板.png

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚约束

6. Testbench

7. 仿真图

整体模块仿真

温度temp_data=2516,即25.16°,数码管显示位选和段选为sel,seg_led,蜂鸣器beep为低电平,不报警,串口信号tx发送串行温度数据到电脑。

串口发送模块仿真

仿真图分析:串口发送数据为tx_data=00011001,uart_txd信号为起始位低电平,tx_data[0]~tx_data[7],最后是停止位高电平。tx_flag在一次完整发送周期内保持高电平,低电平时表示一个字节发送完成。

蜂鸣器模块仿真

蜂鸣器模块主要是产生三种不同频率的波形,beep_clk1,beep_clk2,beep_clk3,上图显示了三种不同的频率。beep_clk1=10Hz,beep_clk2=5Hz,beep_clk3=2.5Hz。当输入din大于35度时,蜂鸣器输出beep_clk1,当大于30度是,输出beep_clk2,小于10度时输出beep_clk3。

数码管显示模块

数码管显示模块用于控制数码管的段选和位选,段选seg_led表示8段数码管所亮的数字,位选表示当前点亮哪个数码管。Dot_disp表示是否显示小数点,当dot_disp为低电平是显示小数点。图中可看出数码管显示如下图

部分代码展示:

//温度显示,串口发送,报警
module temp_disp(
    input            sys_clk     ,    //输入的系统时钟
    input            sys_rst_n   ,    //输入的复位信号
    inout            dq          ,    //ds18b20温度传感器单总线
	 output           tx          ,    //串口发送
	 output           beep_out    ,    //蜂鸣器报警
    output  [5:0]    sel         ,    //输出数码管位选信号
    output  [7:0]    seg_led          //输出数码管段选信号
);

//parameter define
parameter POINT = 6'b000100;          // 数码管小数点的位置

//wire define
wire    [19:0]  temp_data;            // 温度数值
wire            sign;                 // 符号位

//*****************************************************
//**                    main code
//*****************************************************

//例化动态数码管驱动模块
seg_led u_seg_led(
    //module clock
    .clk           (sys_clk  ),       // 时钟信号
    .rst_n         (sys_rst_n),       // 复位信号
    //seg_led interface
    .seg_sel       (sel      ),       // 位选
    .seg_led       (seg_led  ),       // 段选
    //user interface
    .data          (temp_data),       // 显示的数值,对采集到的温度进行转换,保留2位小数
    .point         (POINT    ),       // 小数点具体显示的位置,从高到低,高电平有效
    .en            (1'b1     ),       // 数码管使能信号
    .sign          (sign     )        // 符号位(高电平显示“-”号)
);

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1247

  • 2-241022201415Q5.doc
    下载

相关推荐