使用vivado2020.2,用zybo板,气压温度湿度传感器Grove-Temp&Humi&Barometer Sensor (BME280),实时时钟日历模块Pmod RTCC,128x32像素单色OLED屏Pmod OLED开发一个软件,要求:利用气压温度湿度传感器测量环境,并和实时日历一起显示在128x32像素单色OLED屏上,我不会创建工程,请详细说明并给出详细的全部代码
时间: 2023-12-06 07:04:23 浏览: 61
这个工程需要用到多个模块来完成各自的任务。下面是这个工程的完整代码,包含了以下模块:
- `bme280`:控制 BME280 传感器进行温度、湿度和气压测量,并将结果输出到一个 32 位数据线上。
- `pmod_oled`:控制 Pmod OLED 屏幕显示文本和图像。
- `pmod_rtcc`:控制 Pmod RTCC 实时时钟模块,可以读取和设置时间和日期。
- `bme280_rtcc_oled`:将上述三个模块集成在一起,实现从 BME280 传感器读取环境数据,并将其和 Pmod RTCC 读取的时间和日期一起显示在 Pmod OLED 屏幕上。
这个工程的代码如下:
Verilog 代码(续):
```verilog
module bme280(
input wire CLK_100MHZ,
input wire rst,
input wire [2:0] I2C_ADDR,
output wire I2C_SCL,
inout wire I2C_SDA,
output wire [31:0] bme280_data
);
wire [7:0] bme280_dig_T1;
wire [15:0] bme280_dig_T2;
wire [15:0] bme280_dig_T3;
wire [15:0] bme280_dig_P1;
wire [15:0] bme280_dig_P2;
wire [15:0] bme280_dig_P3;
wire [15:0] bme280_dig_P4;
wire [15:0] bme280_dig_P5;
wire [15:0] bme280_dig_P6;
wire [7:0] bme280_dig_H1;
wire [15:0] bme280_dig_H2;
wire [7:0] bme280_dig_H3;
wire [7:0] bme280_dig_H4;
wire [7:0] bme280_dig_H5;
wire [7:0] bme280_dig_H6;
wire [31:0] bme280_raw_data;
reg [31:0] bme280_comp_data;
assign I2C_SCL = 1;
assign bme280_data = bme280_comp_data;
i2c_master #(
.ADDR_WIDTH(3),
.DATA_WIDTH(8),
.CLK_DIV(5)
) i2c_master_inst (
.CLK_100MHZ(CLK_100MHZ),
.rst(rst),
.I2C_SCL(I2C_SCL),
.I2C_SDA(I2C_SDA),
.I2C_ADDR(I2C_ADDR),
.I2C_REG(8'h88),
.I2C_WR(1'b0),
.DATA_OUT(bme280_dig_T1)
);
i2c_master #(
.ADDR_WIDTH(3),
.DATA_WIDTH(8),
.CLK_DIV(5)
) i2c_master_inst_1 (
.CLK_100MHZ(CLK_100MHZ),
.rst(rst),
.I2C_SCL(I2C_SCL),
阅读全文