名称:基于环境光传感器的自动调光系统设计Verilog代码Quartus 正点原子新起点开发板
软件:Quartus
语言:Verilog
代码功能:
基于环境光传感器的自动调光系统设计
要求
采用FPGA作为控制中心,采用环境光传感器采集当前光亮度,并将亮度数据显示在数码管,同时根据亮度控制led灯的亮度,环境越暗,led灯亮度越大,反之亦然。
FPGA采用EP4CE10F17C8,环境光传感器采用AP3216C。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在正点原子新起点开发板验证,正点原子新起点开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
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
678