名称:温湿度传感器DHT11通过串口UART输出verilog语言Basys3
软件:VIVADO
语言:Verilog
代码功能:
温湿度计传感器DHT11通过串口UART输出verilog代码
1、使用温湿度传感器DHT11采集环境的温度和湿度,并在数码管显示
2、使用UART协议将温湿度数据通过串口发送至电脑
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Basys3开发板验证,开发板如下,其他开发板可以修改管脚适配:
工程文件:
程序文件:
程序编译:
管脚分配:
RTL图:
顶层代码展示:
module DH11_uart_top( input clk_100M,//100M时钟 input reset,//复位,按下高电平 output uart_tx,//串口发送 output uart_led,//串口发送指示灯--U16 input switch,//切换(switch==1温度)和(switch==0湿度)--SW0 inout dh11_io,//温湿度传感器接口--JA1-J1 output [3:0] bit_select,//数码管位选 output [7:0] lednum_select //数码管段选 ); wire [7:0] temp_data;//温度 wire [7:0] humi_data;//湿度 reg clk_50M=0; always@(posedge clk_100M) clk_50M<=~clk_50M;//2分频到50MHz //dht11温湿度采集模块 dht11 i_dht11( .i_clk(clk_50M), .i_rst_n(~reset), .io_data(dh11_io), .o_temp(temp_data), .o_humi(humi_data) ); //数码管显示模块 display_num i_display_num( . clk(clk_100M), . temp_data(temp_data), . humi_data(humi_data), . bit_select(bit_select),//数码管位选 . lednum_select(lednum_select)//数码管段选 ); wire [7:0] send_data; assign send_data=(switch==1)?temp_data:humi_data; //串口发送模块 uart i_uart( . clk_50m(clk_50M), . tx(uart_tx), . tx_busy(uart_led), . din(send_data), . wr_en(1'b1) ); endmodule