当前位置: 首页 > wzjs >正文

仕德伟做的网站图片怎么修长沙好的互联网公司

仕德伟做的网站图片怎么修,长沙好的互联网公司,东莞网络推广产品的公司吗,审计实务网站建设论文基于FPGA婴儿安全监护系统 前言一、芯片手册阅读二、代码分析1.温湿度驱动2.转速等级设置模块3.电机转速控制模块 总结视频演示 前言 实时监测车内温湿度数据(DTH11温湿度模块)----实时控制风扇驱动速度(结合温湿度进行控制)----…

基于FPGA婴儿安全监护系统

  • 前言
  • 一、芯片手册阅读
  • 二、代码分析
    • 1.温湿度驱动
    • 2.转速等级设置模块
    • 3.电机转速控制模块
  • 总结
    • 视频演示


前言

实时监测车内温湿度数据(DTH11温湿度模块)----实时控制风扇驱动速度(结合温湿度进行控制)-----检测车内是否有人(人体感应模块)------数据显示(数码管模块或者LCD模块)----
当车锁住后,检测车内是否有人----如果有人----蜂鸣器响----LED灯亮------将车内数据通过蓝牙发送到手机上,手机可以通过蓝牙开车锁 app没有 有小程序或者蓝牙app

模块:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、芯片手册阅读

都属于非常常见的通信协议了,不在进行手册展示了。
其中温湿度模块:单总线通信
蓝牙模块:串口通信
人体感应模块:读取高低电平
数码管模块:译码

二、代码分析

都比较常见了,也不再做仿真了,直接写代码上板,有问题逻辑分析仪进行抓取波形

在这里插入图片描述

1.温湿度驱动

参考野火的例程进行修改的,原代码有问题,两次采样间隔太短,造成数据读取卡壳,总需要复位。

`timescale  1ns/1ns
module  dht11_ctrl
(input   wire        sys_clk     ,   //系统时钟,频率50MHzinput   wire        sys_rst_n   ,   //复位信号,低电平有效inout   wire        dht11       ,   //控制总线output  reg [15:0]  temp_out    ,   //输出显示的数据output  reg [15:0]  humi_out    ,   //输出显示的数据output  reg         sign            //输出符号位,高电平显示负号);//********************************************************************//
//****************** Parameter and Internal Signal *******************//
//********************************************************************////parameter define
parameter   S_WAIT_1S  = 3'd1   ,   //上电等待1s状态S_LOW_18MS = 3'd2   ,   //主机拉低18ms,发送开始信号状态S_DLY1     = 3'd3   ,   //等待20-40us状态S_REPLY    = 3'd4   ,   //DHT11响应80us状态S_DLY2     = 3'd5   ,   //拉高等待80us状态S_RD_DATA  = 3'd6   ;   //接收数据状态parameter   T_1S_DATA    = 999999 ; //1s时间计数值
parameter   T_18MS_DATA  = 17999  ; //18ms时间计数值//reg define
reg         clk_1us     ;   //1us时钟,用于驱动整个模块
reg [4:0]   cnt         ;   //时钟分频计数器
reg [2:0]   state       ;   //状态机状态
reg [20:0]  cnt_us      ;   //us计数器
reg         dht11_out   ;   //总线输出数据
reg         dht11_en    ;   //总线输出使能信号
reg [5:0]   bit_cnt     ;   //字节计数器
reg [39:0]  data_tmp    ;   //读出数据寄存器
reg         data_flag   ;   //数据切换标志信号
reg         dht11_d1    ;   //总线信号打一拍
reg         dht11_d2    ;   //总线信号打两拍
reg [31:0]  data        ;   //除校验位数据
reg [6:0]   cnt_low     ;   //低电平计数器//wire  define
wire            dht11_fall; //总线下降沿
wire            dht11_rise; //总线上升沿//********************************************************************//
//***************************** Main Code ****************************//
//********************************************************************////当使能信号为1是总线的值为DATA_out的值,为0时值为高阻态
assign  dht11  =   (dht11_en == 1 ) ? dht11_out : 1'bz;//检测总线信号的上升沿下降沿
assign  dht11_rise =   (~dht11_d2) & (dht11_d1)    ;
assign  dht11_fall =   (dht11_d2)  & (~dht11_d1)   ;//对dht11信号打拍
always@(posedge clk_1us or  negedge sys_rst_n)if(sys_rst_n == 1'b0)begindht11_d1  <=  1'b0 ;dht11_d2  <=  1'b0 ;endelsebegindht11_d1  <=  dht11    ;dht11_d2  <=  dht11_d1 ;end//cnt:分频计数器
always@(posedge sys_clk or  negedge sys_rst_n)if(sys_rst_n == 1'b0)cnt <=  5'b0;else    if(cnt == 5'd24)cnt <=  5'b0;elsecnt <=  cnt + 1'b1;//clk_1us:产生单位时钟为1us的时钟
always@(posedge sys_clk or  negedge sys_rst_n)if(sys_rst_n == 1'b0)clk_1us <=  1'b0;else    if(cnt == 5'd24)clk_1us <=  ~clk_1us;elseclk_1us <=  clk_1us;//bit_cnt:读出数据bit位数计数器
always@(posedge clk_1us or  negedge sys_rst_n)if(sys_rst_n == 1'b0)bit_cnt <=  6'b0;else    if(bit_cnt == 40 )bit_cnt <=  6'b0;else    if(dht11_fall == 1'b1 && state == S_RD_DATA)bit_cnt <=  bit_cnt + 1'b1;//状态机状态跳转
always@(posedge clk_1us or  negedge sys_rst_n)if(sys_rst_n == 1'b0)state   <=  S_WAIT_1S   ;elsecase(state)S_WAIT_1S:if(cnt_us == T_1S_DATA) //上电1s后跳入起始状态state   <=  S_LOW_18MS  ;elsestate   <=  S_WAIT_1S   ;S_LOW_18MS:if(cnt_us == T_18MS_DATA)state   <=  S_DLY1     ;elsestate   <=  S_LOW_18MS  ;S_DLY1:if(cnt_us == 10)    //等待10us后进入下一状态state   <=  S_REPLY     ;elsestate   <=  S_DLY1     ;S_REPLY:  //上升沿到来且低电平保持时间大于70us,则跳转到下一状态if(dht11_rise == 1'b1 && cnt_low >= 70)state   <=  S_DLY2     ;//若1ms后,dht11还没响应,则回去继续发送起始信号else    if(cnt_us >= 1000)state   <=  S_LOW_18MS ;elsestate   <=  S_REPLY    ;S_DLY2: //下降沿到来且计数器值大于70us,则跳转到下一状态if(dht11_fall == 1'b1 && cnt_us >= 70)state   <=  S_RD_DATA   ;elsestate       <=  S_DLY2  ;S_RD_DATA:  //读完数据后,回到起始状态if(bit_cnt == 40 )state   <=  S_WAIT_1S  ;elsestate   <=  S_RD_DATA   ;default:state   <=  S_WAIT_1S   ;endcase//各状态下的计数器赋值
//cnt_us:每到一个新的状态就让该计数器重新计数
always@(posedge clk_1us or  negedge sys_rst_n)if(sys_rst_n == 1'b0)begincnt_low <=  7'd0      ;cnt_us   <=  21'd0    ;endelsecase(state)S_WAIT_1S:if(cnt_us == T_1S_DATA) cnt_us   <=  21'd0  ;elsecnt_us   <=  cnt_us + 1'b1;S_LOW_18MS:if(cnt_us == T_18MS_DATA)cnt_us   <=  21'd0  ;elsecnt_us   <=  cnt_us + 1'b1;S_DLY1:if(cnt_us == 10)cnt_us   <=  21'd0  ;elsecnt_us   <=  cnt_us + 1'b1;S_REPLY:if(dht11_rise == 1'b1 && cnt_low >= 70)begincnt_low <=  7'd0    ;cnt_us   <=  21'd0  ;end//当dht11发送低电平回应时,计算其低电平的持续时间else    if(dht11 == 1'b0)begincnt_low  <=  cnt_low + 1'b1 ;cnt_us   <=  cnt_us + 1'b1  ;end//若1ms后,dht11还没响应,则回去继续发送起始信号else    if(cnt_us >= 1000)begincnt_low <=  7'd0   ;cnt_us  <=  21'd0  ;endelsebegincnt_low <=  cnt_low        ;cnt_us  <=  cnt_us + 1'b1  ;endS_DLY2:if(dht11_fall == 1'b1 && cnt_us >= 70)cnt_us   <=  21'd0  ;elsecnt_us   <=  cnt_us + 1'b1;S_RD_DATA:if(dht11_fall == 1'b1 || dht11_rise == 1'b1)cnt_us   <=  21'd0  ;elsecnt_us   <=  cnt_us + 1'b1;default:begincnt_low  <=  7'd0   ;cnt_us   <=  21'd0  ;endendcase//各状态下的单总线赋值
always@(posedge clk_1us or  negedge sys_rst_n)if(sys_rst_n == 1'b0)begindht11_out <=  1'b0    ;dht11_en  <=  1'b0    ;endelsecase(state)S_WAIT_1S:begindht11_out    <=  1'b0    ;dht11_en     <=  1'b0    ;endS_LOW_18MS: //拉低总线18msbegindht11_out    <=  1'b0    ;dht11_en     <=  1'b1    ;end//后面状态释放总线即可,由DHT11操控总线S_DLY1:begindht11_out    <=  1'b0    ;dht11_en     <=  1'b0    ;endS_REPLY:begindht11_out    <=  1'b0    ;dht11_en     <=  1'b0    ;endS_DLY2:begindht11_out    <=  1'b0    ;dht11_en     <=  1'b0    ;endS_RD_DATA:begindht11_out    <=  1'b0    ;dht11_en     <=  1'b0    ;enddefault:;endcase//data_tmp:将读出的数据寄存在data_tmp中
always@(posedge clk_1us or  negedge sys_rst_n)if(sys_rst_n == 1'b0)data_tmp    <=  40'b0;else    if(state == S_RD_DATA && dht11_fall == 1'b1 && cnt_us<=50)data_tmp[39-bit_cnt]   <=  1'b0;else    if(state == S_RD_DATA && dht11_fall == 1'b1 && cnt_us>50)data_tmp[39-bit_cnt]   <=  1'b1;elsedata_tmp    <=  data_tmp;//data_out:输出数据显示,按一次按键切换一次数据
always@(posedge clk_1us or  negedge sys_rst_n)if(sys_rst_n == 1'b0)data    <=  32'b0;else    if(data_tmp[7:0] == data_tmp[39:32] + data_tmp[31:24] +data_tmp[23:16] + data_tmp[15:8])data    <=  data_tmp[39:8];   //若检验位正确,则数据值有效elsedata    <=  data;//temp_out:对数码管显示的湿度和温度进行赋值
always@(posedge clk_1us or  negedge sys_rst_n)if(sys_rst_n == 1'b0)temp_out    <=  16'b0;else  //温度低四位显示温度小数数据temp_out    <=  data[15:8] * 10 + data[3:0];always@(posedge clk_1us or  negedge sys_rst_n)if(sys_rst_n == 1'b0)humi_out    <=  16'b0;else   humi_out    <=  data[31:24] * 10; //湿度小数位为0//sign:符号位的显示
always@(posedge clk_1us or  negedge sys_rst_n)if(sys_rst_n == 1'b0)sign    <=  1'b0;else    if(data[7] == 1'b1 && data_flag == 1'b1)//当温度低八位最高位为1时,显示负号sign    <=  1'b1;elsesign    <=  1'b0;endmodule

2.转速等级设置模块

//
// Company: 
// Engineer: 
// 
// Create Date: 2025/04/25 11:16:23
// Design Name: 
// Module Name: level_monitor
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module level_monitor(input           clk,input           rst_n,input    [15:0]  temp_data,input    [15:0]  humi_data,output    reg [2:0]      fire_level);always @(posedge clk or negedge rst_n) beginif(!rst_n) beginfire_level <= 3'd3;endelse if( humi_data>15'd500)beginfire_level <= 3'd3;endelse if( humi_data>=15'd400 && humi_data<=15'd500)beginfire_level <= 3'd5;endelse if( humi_data<15'd400)beginfire_level <= 3'd7;endendendmodule

3.电机转速控制模块

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2025/04/13 14:38:54
// Design Name: 
// Module Name: motor_control
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module motor_control(input                     sys_clk  ,  input                     rst_n,   //signal  input	        [2:0]      fire_level,output       reg          Pwm_out);parameter cnt20_ms=24'd1000000;parameter cnt5_ms=24'd250000;parameter cnt10_ms=24'd500000;parameter cnt15_ms=24'd750000;parameter IDLE=4'd0;parameter OUT=4'd1;parameter OPEN=4'd2;reg [3:0] state;reg [23:0] cnt_max;reg [23:0] cnt_out;reg [3:0] cnt_change;always @(*)begincase(fire_level)3:cnt_max=cnt5_ms;5:cnt_max=cnt10_ms;7:cnt_max=cnt15_ms;default:cnt_max=cnt5_ms;endcaseendalways @(posedge sys_clk or negedge rst_n)beginif(!rst_n)beginstate<=IDLE;Pwm_out<=1'b0;cnt_out<=24'd0;endelse begincase(state)IDLE:beginstate<=OUT;endOUT:beginstate<=OUT;if(cnt_out<cnt_max)beginPwm_out<=1'b1;cnt_out<=cnt_out+1;endelse if(cnt_out>=cnt_max && cnt_out<cnt20_ms)beginPwm_out<=1'b0;cnt_out<=cnt_out+1;endelse begincnt_out<=24'd0;endenddefault:state<=IDLE;endcaseendendendmodule

总结

视频演示

基于FPGA的车内婴儿安全监测系统设计(风扇模块、温湿度、蓝牙模块、人体感应检测模块)


文章转载自:

http://ekL87wuI.mqgqf.cn
http://osgaUXBN.mqgqf.cn
http://ifRVJqXi.mqgqf.cn
http://Vx1HMJCG.mqgqf.cn
http://f3smkC58.mqgqf.cn
http://8WRmFDWZ.mqgqf.cn
http://QPBPkuIS.mqgqf.cn
http://2enUzGLb.mqgqf.cn
http://G1Eld0eN.mqgqf.cn
http://5uUmHh4K.mqgqf.cn
http://AMHrmnjC.mqgqf.cn
http://dVfeZPcj.mqgqf.cn
http://5nMFAIJR.mqgqf.cn
http://ZVxRNisu.mqgqf.cn
http://zl4swEWV.mqgqf.cn
http://FdevZTRW.mqgqf.cn
http://W01yIGSV.mqgqf.cn
http://Z1nlJJWf.mqgqf.cn
http://Bxuw4Uu8.mqgqf.cn
http://UZCfxkWN.mqgqf.cn
http://dV7b0UCE.mqgqf.cn
http://ad9S1c6b.mqgqf.cn
http://gse2Uqc9.mqgqf.cn
http://EcJz8UMB.mqgqf.cn
http://9Oen3Zqu.mqgqf.cn
http://pMdYAzNL.mqgqf.cn
http://ubI42NLp.mqgqf.cn
http://N4oyBz6K.mqgqf.cn
http://BFIlqXMc.mqgqf.cn
http://f3lveJz4.mqgqf.cn
http://www.dtcms.com/wzjs/733079.html

相关文章:

  • 保定商城网站建设网站建设推进表
  • 阿里巴巴做短视频网站网站很久没被收录的新闻怎么处理
  • 湖北城乡建设部网站首页页面模板在公号什么地方显示
  • wordpress手机站郑州做网站公司汉狮网
  • 房地产微网站模板wordpress 后台禁止谷歌字体
  • 做网站的公司叫中什么深入解析wordpress二手
  • 写作网站都有哪些ppp怎样看网站的建设时间
  • 一流的龙岗网站制作网加商学院网站怎么做
  • elementui 做的网站公众号排版怎么做
  • 网站经营与建设自媒体平台注册
  • 安阳哪有做网站的西安市建网站找哪家
  • 沈阳哪家网站做的好想学软件开发报什么专业
  • 网站建设体会心得建个简单网站
  • iis 7.0 搭建网站重庆那家做网站做得好
  • 做网站国内阿里云虚拟主机多少钱硬件开发是什么
  • 门户网站建设重要性好看的网站推荐一下
  • 建设银行山西招聘网站seo5
  • 工商网站wordpress获取热门文章
  • 个人在网站怎么做工作需要原则和最小化原则是确定国家秘密知悉范围
  • 莞城建设网站全托管跨境电商平台有哪些
  • 网页制作与网站建设课程设计延边州住房城乡建设局网站
  • 成都网站建设树莓做企业网站哪家好
  • 网站维护 网站建设属于什么服务公司理念
  • 做网站模版大学生活网页制作模板
  • 悉知网站建设温州网站建设钱
  • WordPress数据库和网站文件wordpress 头像手机旋转
  • .net网站吃内存百度搜索关键词规则
  • 营销型网站建设案例wordpress比较好的主题
  • 网站动态标签做神马网站快速排
  • 鄂州市门户网站好看的博客页面