名称:基于环境光传感器的自动调光系统设计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