基于51单片机的光照强度检测系统

一.硬件方案

        本设计采用单片机作为数据处理与控制单元,为了进行数据处理,通过光敏电阻来感应光强弱变化,经过ADC0804转换,直接将数字信号送入到单片机中进行数据处理。单片机数据处理之后,将光照强度发送到LED进行显示,并通过和LED进行声光。
        整体电路主要由51单片机最小系统,数码管显示模块,光线检测模块,0804模数转换模块及按键模块;原理图如图:

 

        Protues仿真图如下:

 

二.设计功能

(1)采用四位数码管显示光线值;
(2)采用光敏电阻检测光线,ADC0804模数转换芯片将模拟量转换成数字量;
(3)光强分0-600等级。

三.软件设计

主程序源码

unsigned char read()          //读AD转换值
 {
   unsigned char r;
   P0=0xff;                   //P0口复位
   _nop_();                      //延时
   adc_rd=0;                  //rd拉低
   _nop_();                      //延时
   r=P0;                       //读取P0口数据
   _nop_();                      //延时
   adc_rd=1;                  //rd拉高
   return(r);                  //返回读到的数据
 }
 
void fw(unsigned char dat)      //将读到的数据处理
{
 unsigned int i;
 i=dat*2.353;            //将ad数据计算得到一个介于0-600之间的数值
 Disbuf[0]=i/100;        //将数据/1000得到千位(显示的百位)
 Disbuf[1]=(i%100)/10;//将数据/100得到百位(显示的十位)
 Disbuf[2]=(i%100)%10;//将数据/10得到十位(显示的个位)
}

main()                   //主函数
 {
 unsigned char p;
  while(1)             //循环
    {
     adc();             //ad初始化
     display();           //显示函数
     fw(read());       //读到电压值处理数据
     for(p=0;p<20;p++) display();//显示函数循环20次,防止电压值跳动
    }
 }

资料链接:https://pan.baidu.com/s/1Iim7wf5gtHdUVb4YAl7Erg?pwd=7fru 
提取码:7fru

猜你喜欢

转载自blog.csdn.net/m0_60790717/article/details/127814958