历史上的今天
今天是:2024年10月09日(星期三)
2021年10月09日 | 基于51单片机的光照强度检测系统
2021-10-09 来源:eefocus
一.硬件方案
本设计采用单片机作为数据处理与控制单元,为了进行数据处理,通过光敏电阻来感应光强弱变化,经过ADC0804转换,直接将数字信号送入到单片机中进行数据处理。单片机数据处理之后,将光照强度发送到LED进行显示,并通过和LED进行声光。
主要由51单片机+最小系统+数码管显示模块+光线检测模块+0804模数转换模块+按键模块;如图:

二.设计功能
(1)采用四位数码管显示光线值;
(2)采用光敏电阻检测光线,ADC0804模数转换芯片将模拟量转换成数字量;
(3)光强分0-600等级。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

四.软件设计
(1)程序流程图

(2)主程序源码
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次,防止电压值跳动
}
}
上一篇:基于51单片机的智能饮水机设计
史海拾趣
|
板子是松鼠的STM32,没有JLINK JTAG,有点旧,功能还能用。现在我用不到了,特将此送给需要的坛友们!~要求:1,邮费自理 2,写明用途 3,写出开发心得请详细阐述申请板子、申请缘由,所做项目,愿意分享的内容,以及在这方面的经历吧。这样我们好 ...… 查看全部问答> |
|
请问下,我现在正在使用LM3S9B92,在SSI0的发送通道使用DMA,目前发现一个问题,当设置仲裁为1的时候,实际传输的数据总会比设置传输的少1个字节,而如果设置仲裁为其他值,则少的更离谱,比如设置为2,则少4个字节,设置为4,则少7个。我的初始化 ...… 查看全部问答> |
|
好像搞ucos有一段时间了,哈哈,感觉自己是慢热型。很多问题后面才恍然大悟,我擦,原来这么简单。不过学习的乐趣就在于此。可能刚开始觉得很难得问题在后来你甚至觉得可能是个弱智问题,但是当初就是为难了你那么久。 前几天写工作报告,哈哈,觉 ...… 查看全部问答> |
|
【TI首届低功耗设计大赛】+ DIY低功耗TI Wacth之夏普屏点亮 本帖最后由 wgsxsm 于 2014-10-28 19:47 编辑 之前一直在开发板上搞来搞去,屏幕往上一盖,其他接口都用不了,而且不是自己做的东西,接口改来改去比较难弄 刚好参加了TI样品申请活动,有幸申请到2片MSP430FR5969,加之利用一下,DIY一个小板供自己来调 ...… 查看全部问答> |




