1 / 10

6-3 、光强检测系统设计

任务 6. 6-3 、光强检测系统设计. 任务内容. 1 、光强检测系统设计设计分析 2 、项目硬件电路设计 3 、项目软件设计 4 、功能验证、仿真. 1 、光强检测系统设计分析. 功能: 光强检测系统设计的功能是将光照度通过光敏二极管转换为模拟电压信号后经过 A/D 转换器转换成二进制数值,再由单片机软件编程转换成十进制数值显示光强,并判断光的强度来控制窗帘的打开还是闭合 。.

corby
Download Presentation

6-3 、光强检测系统设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 任务6 6-3、光强检测系统设计

  2. 任务内容 1、光强检测系统设计设计分析 2、项目硬件电路设计 3、项目软件设计 4 、功能验证、仿真

  3. 1、光强检测系统设计分析 功能:光强检测系统设计的功能是将光照度通过光敏二极管转换为模拟电压信号后经过A/D转换器转换成二进制数值,再由单片机软件编程转换成十进制数值显示光强,并判断光的强度来控制窗帘的打开还是闭合 。

  4. 据设计要求,选用性价比较高的ATmega16单片机和1602液晶显示实现,光敏二极管将光强转换为电压信号,经过LM358电压跟随器进入ATmega16A/D转换为数字信号,判断光强度来决定窗帘的开或闭;并输出到LCD显示电路,将相应光强显示出来。据设计要求,选用性价比较高的ATmega16单片机和1602液晶显示实现,光敏二极管将光强转换为电压信号,经过LM358电压跟随器进入ATmega16A/D转换为数字信号,判断光强度来决定窗帘的开或闭;并输出到LCD显示电路,将相应光强显示出来。

  5. 2、项目硬件电路设计 据设计要求,确定所需主要元器件: ATmega16单片机、1602字符点阵液晶显示,TORCH_LDR光电转换模拟器, LM358电压跟随器,继电器和直流电机。仿真电路如下,用光电TORCH_LDR模拟产生一个变化的输入电压,这里电压不能高于单片机工作电压,考虑到试验操作中的意外干扰信号,AREF端通过一个0.1UF的电容连接到AVCC,AVCC为参考电压;继电器和直流电机组成窗帘控制电路,输出光强由1602液晶显示模块显示。

  6. 3、项目软件设计 (1)AD初始化设计 void ATmega16_ADC_Init(void) { ADCSRA=0x00; //关闭ADC ADMUX=0x40; //选择参考电压为AVCC、数据右对齐、通道1 ADCSRA=0x87; //使能ADC、单次转换、ADC转换中断禁止、128分频 }

  7. (2)AD转换结果处理 unsigned int ATmega16_ADC_Convert(void) { unsigned int adc_value; ATmega16_AD_Start; //启动AD转换 while(!(ADCSR&(1<<ADIF))); //等待AD转换结束 adc_value=(unsigned int)ADCL; //读取低8位 adc_value|=((unsigned int)(ADCH&0x03))<<8; //读取高2位 NOP(); return adc_value; }

  8. (3)、窗帘控制 voltage_int=ATmega16_ADC_Convert(); if(voltage_int<=342) PORTB&=~(1<<PB7); else if(voltage_int>=683) PORTB&=~(1<<PB6); else { PORTB|=(1<<PB7); PORTB|=(1<<PB6); }

  9. 4 、功能验证、仿真

More Related