基于单片机光照强度检测(光敏电阻)系统Proteus仿真(含全部资料)

 全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等

资料下载:

通过网盘分享的文件:资料分享
链接: 百度网盘 请输入提取码 提取码: tgnu


目录

资料下载:

Proteus仿真功能

项目文件资料:

一、Proteus仿真源文件

二、AD原理图文件

二、报告说明书

三、系统流程图

四、Keil c语言程序源代码


项目功能:

基于51单片机的光照强度检测(光敏电阻)
由STC89C52单片机+四位数码管显示+光敏电阻+ADC0804等构成
具体功能:
①光敏电阻实时采集环境光照值;
②采用ADC0804将模拟值转换为数字量;
③四位数码管显示当前的光照值(00.0-60.0)。


项目文件:

一、Proteus仿真源文件

​​

二、AD原理图文件

二、报告说明书

三、系统流程图

​​

四、器件清单

1)7*9万用板
2)四位一体共阳数码管
3)stc89c51单片机
4)adc0804
5)40脚座
6)20脚座
7)光敏电阻
8)10k电阻*3
9)2.2k电阻*5
10)1.5k电阻
11)103排阻
12)9012*4
13)12M晶振
14)10uf电容
15)30pf电容*2
16)自锁按键
17)DC电源插口
18)小红灯LED
19)104电容
20)按键
21)TL431
22)102电容
23)导线若干
24)焊锡若干
25)usb电源线

五、Keil c语言程序源代码(部分)

#include <reg51.h>
#include <intrins.h> 	  //包含头文件
sbit adc_rd=P3^7;    //RD
sbit adc_wr=P3^6;    //WR
sbit s3=P2^2;
sbit s4=P2^3;	//四个数码管位选端
sbit key=P2^4;	//按键控制输出(选配)
sbit out=P2^5;	//输出控制(选配)

unsigned char Disbuf[]={0,0,0};	//显示暂存空数组

unsigned char code tab[]={0xC0,0xF9,0xA4,0xB0,0x94,0x92,0x22,0xF0,0x80,0x90};//数字显示编码

void display();	 //声明函数
void dsxms()	 //延时
{
  unsigned char i;
  for(i=0;i<250;i++);
} 

void display() //显示函数
{
  unsigned char i;
  for(i=0;i<10;i++)	//每次循环10次
    {
     P1=tab[Disbuf[2]];	//显示个位
     s4=0;				//打开位
     dsxms();			//延时
     s4=1;				//关闭位
  
     P1=tab[Disbuf[1]];//显示十位,&0x7f是显示小数点
     s3=0;					  //打开位
     dsxms();				  //延时
     s3=1;					  //关闭位
  
	 if(Disbuf[0]==0)		  //如果百位是0时
	 P1=0xff;				  //该位不显示
	 else					  //百位不为0时
     P1=tab[Disbuf[0]];		  //显示百位数据
     s2=0;					  //打开位
     dsxms();				  //延时
     s2=1;					  //关闭位

	 P1=0xff;           //显示空白
     s1=0;				//打开位
	 dsxms();			//延时
	 s1=1;				//关闭位
   }  
}

void adc()					  //adc的初始化函数
 { 
    adc_wr=0;
    _nop_();
    adc_wr=1;
 }

unsigned char read()		  //读AD转换值
 {
   unsigned char r;
   P0=0xff; 				  //P0口复位
   _nop_();					  //延时
   adc_rd=0;				  //rd拉低
   r=P0; 					  //读取P0口数据
   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;
  		   //循环
    {
     adc();  		   //ad初始化
     display();		   //显示函数
     fw(read());	   //读到电压值处理数据
     for(p=0;p<20;p++) display();//显示函数循环20次,防止电压值跳动
    }
 }

六、全套资料包含

​​

七:项目资源获取

需要完整的资料可以点击下面的名片关注,回复“资料”!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值