当前位置:文档之家› 基于51单片机的光照强度检测报告

基于51单片机的光照强度检测报告

课程设计报告课程名称:智能仪器课程设计题目:基于51单片机的光照强度摘要光敏电阻测光强度系统,该系统可以自动检测光照强度的强弱并显示让人们知道此时光照强度的强弱。

人们可以通过看此装置的显示了解现在的光照状态,做合理的光照调节。

该设计可分为三部分:即光照检测部分、信号处理部分、光强显示部分。

还可加上照明部分。

对于光照检测部分可利用光敏电阻传感器作为检测元件,它可以完成从光强到电阻值的信号转换,再把电阻值转换为电信号就可以作为系统的输入信号。

对输入信号处理后,就可以用来显示了。

对于显示部分可利用数码管来显示,不同的光强对应于不同的数值,就能简单的显示出不同的光强了。

本设计就是由单片机STC89C52RC芯片,AD采集模块,运算放大,和1602液晶为核心,辅以必要的电路,构成了一个单片机光照强度检测系统。

该光照强度检测系统可以通过检测光照强度,使得光照在低于一定强度的时候让照明灯亮,是一种常用的测试仪器,它可以用在需要照明的各个地方,根据灯光的强弱,自动控制照明灯的开关,有力地节约了电力资源。

关键词:51单片机,,LM358,ADC0809,1602液晶,光敏电阻目录一、设计任务、要求 (3)1.1 设计任务: (3)1.2 设计要求: (3)二、方案总体设计 (4)2.1 方案一: (4)2.2 方案二: (4)2.3系统采用方案 (4)三、硬件设计 (6)3.1 单片机最小系统 (6)3.2 液晶显示模块 (6)3.3 系统电源 (7)3.4 整体电路 (8)四、软件设计 (10)4.1 keil软件介绍 (10)4.2程序流程图 (10)五、仿真与实现 (12)5.1 proteus软件介绍 (12)5.2 仿真过程 (12)5.3 实物制作与调试 (14)5.4 使用说明 (16)六、总结 (17)6.1设计总结: (17)6.2经验总结: (18)七、参考文献 (19)一、设计任务、要求1.1 设计任务:1).对更多小器件的了解2).巩固51单片机和C语言的知识,熟悉单片机和C语言的实际操作运用3).掌握仿真软件的运用和原理图的绘制4).掌握小信号的放大,滤波与采集5).熟悉调试方法和技巧,提高解决实际问题的能力6).熟悉设计报告的编写过程1.2 设计要求:1).三个按键控制照明灯的控制2).对小信号进行放大,滤波和采集3).1602液晶显示所测光照强度二、方案总体设计设计一个基于51单片机的光照强度检测系统。

液晶屏幕第一行显示接通照明灯的最低允许光照强度,第二行显示当前光照强度;利用光敏电阻随光照强度的改变而相对应地变化的特性来分压产生一个小信号,再通过运放进行放大,最后通过AD转换进行采集,并且显示出来。

利用按键对照明灯控制状态进行调节。

蓝滑动变阻器来调节液晶亮度。

2.1 方案一:由于光敏电阻的阻值围比较大,并且要输出一个小信号,所以提供给光敏电阻和用于分压的电阻的电压。

利用一条由两个电阻组成的分压电路来提供一个小电压。

利用两极运放对小信号进行放大,第一级放大10倍,第二级放大5倍,总体放大50倍。

利用ADC574进行8位数据的转换,单片机通过P1引脚将数据采集存储,再软件滤波,利用算数平均滤波的方法滤波。

再用四位数码管显示出来。

用三个按键调节照明灯的控制状态照明灯,一个控制照明灯的总开关,按一下照明灯是否允许亮的状态就改变,一个控制设置的允许照明灯亮的最高亮度值进行单位加,另一个控制设置的允许照明灯亮的最高亮度值进行单位减。

利用一个引脚接控制一个照明灯。

2.2 方案二:由于光敏电阻的阻值围比较大,并且要输出一个小信号,所以提供给光敏电阻和用于分压的电阻的电压。

利用一条由一个稳压二极管和一个电阻组成的分压电路来提供一个小电压。

利用一极运放对小信号进行放大,放大50倍。

利用ADC0809进行8位数据的转换,单片机通过P2引脚将数据采集存储,再软件滤波,利用中位值滤波的方法滤波。

再用液晶1602显示出来。

用三个按键调节照明灯的控制状态照明灯,一个控制照明灯的总开关,按一下照明灯是否允许亮的状态就改变,一个控制设置的允许照明灯亮的最高亮度值进行单位加,另一个控制设置的允许照明灯亮的最高亮度值进行单位减。

利用一个引脚接控制一个照明灯。

2.3系统采用方案1)总体设计:系统总体框架图如图所示:图1 系统总体框架2)总体方案工作原理在给光敏电阻提供一个用于分压的电源时,如果利用两个电阻分出电压的话,当光敏电阻的阻值变化时,分出来的电源电压就会变化。

所以采用稳压二极管分一个电压,这样更稳定。

采用运放的时候,如果用二级运放,由于运放存在零漂,这样会会使得零漂的现象更加严重,但如果只用一级放大并且放大的倍数达到几十倍的话,失真的现象又会变严重。

至于到底失真多大,就不得而知,并且零漂的问题无从解决,就选择一级放大。

如果选用ADC574的话,还要接正负15V电源供电,选择ADC0809直接用5V供电。

所以选择ADC0809。

因为既要显示允许照明灯亮的最高光照值,又要显示当前的光照强度值,为了更直观的显示,选择1602液晶。

根据这些对比,最终选择选择方案二。

三、硬件设计3.1 单片机最小系统单片机要正常工作,首先要产生片时钟信号。

在单片机部的振荡器的输入端XTAL1和输出端XTAL2之间接一个石英晶振就可以够成一个自激振荡器。

再在两端之间串联接个电容并且在两个电容之间接地以便于稳定频率还对振荡频率有微调作用。

电容通常选30uF左右,振荡脉冲频率围为0~24MHZ。

该电路中选用12MHZ晶振。

时钟电路图如下:、图2 时钟电路图单片机在启动时与其他微处理器一样,要让CPU及系统各部件处于确定的初始状态,并从初始开始工作。

这就需要复位操作。

复位电路有两种方式:上电自动复位和按键自动复位。

上电自动复位只是在开始接通电源瞬间复位,接下来想要再次复位就需要断电重启,不方便。

按键自动复位不仅可以在开始接通电源瞬间复位还可以通过按下按键复位随时复位。

所以选择按键复位方式。

复位电路如下:图3 复位电路图3.2 液晶显示模块该系统需要显示两行。

控制1602液晶亮度的是蓝白滑动变阻器。

1602液晶有16个管脚。

编号为1,2管脚为电源正负极管脚,15,16为背光源正负极管脚;7~14为dataI/O管脚与单片机的P0口相连,负责液晶与芯片之间的信息传送;4,5,6分别为数据/命令选择端、读/写选择端、使能端,与单片机的, P3.3,P3.5,P3.6相连,负责控制液晶与芯片之间数据命令的读写操作;3为液晶显示偏压信号端,用于调整液晶显示对比度。

1602液晶显示原理图如下:图4 液晶显示系统图3.3 系统电源为了方便控制系统的上电与断电,系统电源中连接了一个8*8的蓝白自锁开关。

此开关两边各有三个引脚,不同的连接方式,开关的控制方法就不同。

带有字母的那面为正面,从正面观看,该秒表的电源的正极接在蓝白自锁开关的左边,负极则接在蓝白自锁开关的右边。

为了方便观察电源是否接上,在电路中的VCC与GND之间接一个发光二极管并且加一个1K的限流电阻防止发光二极管烧坏,电源通电时发光二极管亮,断电时,则暗。

再接四个排针,靠两边的两个排针用于外部电源给系统上电,中间的两个排针是用于单片机烧录程序。

如图所示:图5 系统电源图3.4 整体电路这是采用网络标号的画出的以一整体电路图。

它将整秒表的电路原理图分为七个部分:电源模块,P0口上拉电阻,1602液晶显示模块,51单片机,复位晶振电路,控制按键,清零按键。

整原理看起来美观,并且根据标号很容易找到与之对应的引脚。

在看原理图的时候,看到提供了两种液晶显示系统的模板,我就分析了一下电路原图,认为两种版本的原理图连接方式都是正确的,并且第一种版本的还和上次做数码管显示的秒表更相似,焊接的时候可能更容易上手。

我就选择做第一版本的原理图去做液晶显示的秒表。

在焊接的时候,我突然想到为什么要提供两个版本的原理图给我们。

我就去问了一下同学,结果得知,老师要求按照第二版本的原理图来做。

但是已经有几个元器件焊到板子上去了,无法更改只能照着第一版本的原理图继续做下去。

而事实是第一版本的设计不合理,是要反方向安插液晶的。

这次错误给了我一个深刻地教训,在我刚看到有两个版本的原理图时,我就应该问自己一下,为什么要提供两个版本的原理图,这两个版本的原理图对比起来有什么不同,我应该选择哪个版本的。

最后为了确定我的选择是否正确,我还应该问一下知道的同学,这样才能避免犯错。

图6 整体电路图图7 PCB整体电路图图8 洞洞板整体电路四、软件设计4.1 keil软件介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。

机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。

运行Keil 软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。

掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

用过汇编语言后再使用C来开发,体会更加深刻。

4.2程序流程图图9 主程序流程图图10 定时器中断程序流程图五、仿真与实现5.1 proteus软件介绍Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

相关主题