名称:酒精检测(MQ3气敏传感器)设计Verilog代码Quartus仿真(文末获取)
软件:Quartus
语言:Verilog
代码功能:
基于FPGA的酒精检测(MQ3气敏传感器)
研究思路和方法:
本设计采用FPGA作为主控芯片;采用MQ3气敏传感器检测酒精浓度;采用adc0832模块采集MQ3气敏传感器输出的模拟信号;通过矩阵键盘实现酒精浓度阈值的设定;采用LCD1602显示模块显示相应的酒精浓度和设定阈值;当酒精浓度超过设定的不同阈值时通过语音播报模块发出不同的提示声音。
讲解视频:
酒精检测(MQ3气敏传感器)设计Verilog代码讲解_哔哩哔哩_bilibili
清单:
FPGA最小系统
MQ3气敏传感器
dc0832模块
矩阵键盘
LCD1602
语音播报模块
MQ3气敏传感器
PCF8591模块
顶层模块
I2c_dir
Keypad
Oled
Pcf8591
Pll
部分代码展示:
module fpga_alcohol_test( inputsys_clk_1, inputkey, outputoled_scl, inoutoled_sda, outputad_scl, inoutad_sda, input uart_rxd , output uart_txd , outputregled, outputreg[1:0]yu_out, input [3:0] key_row , output[3:0] key_col ); parameter SLAVE_ADDR = 7'h48 ; // 器件地址(SLAVE_ADDR) parameter BIT_CTRL = 1'b0 ; // 字地址位控制参数(16b/8b) parameter CLK_FREQ = 26'd50_000; // i2c_dri模块的驱动时钟频率(CLK_FREQ) parameter I2C_FREQ = 18'd250 ; // I2C的SCL时钟频率 reg[3:0]code[1:0]; reg[3:0]yuzhi[1:0]; regcode_num; wire dht11_done; wire[7:0] tempH; wire[7:0] tempL; wire[7:0] humidityH; wire[7:0] humidityL; wire[3:0]key_value;//按键值 wirekey_flag;//按键按下的标志位 wire clk ; // I2C操作时钟 wire i2c_exec ; // i2c触发控制 wire [15:0] i2c_addr ; // i2c操作地址 wire [ 7:0] i2c_data_w; // i2c写入的数据 wire i2c_done ; // i2c操作结束标志 wire i2c_rh_wl ; // i2c读写控制 wire [ 7:0] i2c_data_r; // i2c读出的数据 wire [19:0] num ; // 数码管要显示的数据 wirelocked; wiresys_clk; regsys_rst_n; reg [3:0]rst_cnt; assign dht11_done = 1'b1; assign tempH = 8'd01; assign tempL = 8'd02; assign humidityH = 8'd03; always @(posedge sys_clk_1 ) begin if(locked == 1'b0) rst_cnt <= 4'd0; else if(key == 1'b0) rst_cnt <= 4'd0; else if(rst_cnt==4'd10) rst_cnt <= 4'd10; else rst_cnt <= rst_cnt + 1'b1; end
源代码
点击下方的公众号卡片获取