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

基于环境光传感器的自动调光系统设计Verilog代码Quartus 正点原子新起点开发板

2025/09/17
678
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-241022193406125.doc

共1个文件

名称:基于环境光传感器的自动调光系统设计Verilog代码Quartus  正点原子新起点开发板

软件:Quartus

语言:Verilog

代码功能:

基于环境光传感器的自动调光系统设计

要求

采用FPGA作为控制中心,采用环境光传感器采集当前光亮度,并将亮度数据显示在数码管,同时根据亮度控制led灯的亮度,环境越暗,led灯亮度越大,反之亦然。

FPGA采用EP4CE10F17C8,环境光传感器采用AP3216C。

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

本代码已在正点原子新起点开发板验证,正点原子新起点开发板如下,其他开发板可以修改管脚适配:

正点原子新起点开发板.png

演示视频:

设计文档:

1. 设计思路:采用FPGA作为控制中心,采用环境光传感器采集当前光亮度,并将亮度数据显示在数码管,同时根据亮度控制led灯的亮度,环境越暗,led灯亮度越大,反之亦然。

FPGA采用EP4CE10F17C8,环境光传感器采用AP3216C。

系统框图如下:

FPGA内部模块图如下:

2. 工程文件

3. 顶层电路图

4. 程序模块

5. 程序编译

6. 管脚分配

部分代码展示:

//测量环境光照强度和距离值
module ap3216c(
    //system clock
    input                 clk        ,    // 时钟信号
    input                 rst_n      ,    // 复位信号
    //i2c interface
    output   reg          i2c_rh_wl  ,    // I2C读写控制信号
    output   reg          i2c_exec   ,    // I2C触发执行信号
    output   reg  [15:0]  i2c_addr   ,    // I2C器件内地址
    output   reg  [ 7:0]  i2c_data_w ,    // I2C要写的数据
    input         [ 7:0]  i2c_data_r ,    // I2C读出的数据
    input                 i2c_done   ,    // I2C一次操作完成
    //user interface
    output   reg  [15:0]  als_data   ,    // ALS的数据
    output   reg  [ 9:0]  ps_data         // PS的数据
);
//parameter define
parameter      TIME_PS   = 14'd12_500  ;  // PS转换时间为12.5ms(clk = 1MHz)
parameter      TIME_ALS  = 17'd100_000 ;  // ALS转换时间为100ms(clk = 1MHz)
parameter      TIME_REST =  8'd2       ;  // 停止后重新开始的时间间隔控制
//reg define
reg   [ 3:0]   flow_cnt   ;               // 状态流控制
reg   [18:0]   wait_cnt   ;               // 计数等待
reg   [15:0]   als_data_t ;               // ALS的临时数据
reg            als_done   ;               // 环境光照强度值采集完成信号
reg   [ 9:0]   ps_data_t  ;               // PS的临时数据
reg            ir_of      ;               // 溢出标志(判断ps_data是否有效)
reg            obj        ;               // 物体状态标志(0远离1靠近)
//*****************************************************
//**                    main code
//*****************************************************
//配置AP3216C并读取数据
always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        i2c_exec   <=  1'b0;
        i2c_addr   <=  8'd0;
        i2c_rh_wl  <=  1'b0;
        i2c_data_w <=  8'h0;
        flow_cnt   <=  4'd0;
        wait_cnt   <= 18'd0;
        ps_data    <= 10'd0;
        ps_data_t  <= 10'd0;
        ir_of      <=  1'b0;
        obj        <=  1'b0;
        als_done   <=  1'b0;
        als_data_t <= 16'd0;
    end

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

  • 2-241022193406125.doc
    下载

相关推荐