《学士学位论文—-计算机控制课程设计单片机光照强度检测系统.doc》由会员分享,可在线阅读,更多相关《学士学位论文—-计算机控制课程设计单片机光照强度检测系统.doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机控制技术课程设计说明书摘要BH1750是一款新型的测光芯片,本设计系统就是基于BH1750设计的测光系统,它可以自动检测光照强度的强弱并显示让人们知道此时光照强度的强弱。人们可以通过看此装置的显示了解现在的光照状态,做合理的光照调节。该设计可分为三部分:即光照检测部分、信号处理部分、光强显示部分。对于光照检测部分是利用BH1750作为检测元件及信号处理元件,其内部集成了AD转换芯片。它可以完成从光强到电信号的转换并将信号处理进行处理。对输入信号处理后,就可以用来显示了。对于显示部分可利用LCD1602来显示,不同的光强对应于不同的数值,就能简单的显示出不同的光强了。本设计就是由单片机ST
2、C89C52RC芯片,BH1750模块和1602液晶为核心,辅以必要的电路,构成了一个单片机光照强度检测系统。该光照强度检测系统可以通过检测光照强度,使得光照在低于或高于一定强度的时候发出警示,是一种常用的测试仪器。关键词:51单片机,LM7805,BH1750,1602液晶目 录0 引言11设计内容与要求11.1 设计任务11.2 设计要求12 方案总体设计12.1 光照强度采集方案设计22.2 控制芯片及实现方案32.3 数据显示方案32.4 系统总体框图43 硬件设计53.1 单片机最小系统53.2 BH1750采集模块63.3 液晶显示模块63.4 系统电源73.5 整体电路和PCB图
3、84 软件设计94.1 keil软件介绍94.2 程序流程图104.3 各模块程序105 仿真与实现155.1 Proteus软件介绍155.2 仿真过程165.3 实物制作与调试176 总结187 参考文献19第 0 页 共 21 页0 引言随着改革开放的不断深化和城镇化的不断发展,越来越多的人移居到城市生活,而这需要足够的食物作为支撑。同时随着工业化的不断发展,人们对自身的健康越来越关注,对居室的环境要求也越来越高。而携带方便,能够及时准确的显示的光照强度检测仪的产生是人们的迫切需求。便携式光照强度检测仪是现代社会的产物,是以后发展的方向。它是一个集光照强度感知,自动提示与一体的综合系统。
4、就如大棚种植、牲畜养殖以及人们对生活的需求凸显了本系统拥有广泛的应用前景。其中,蔬菜需要控制光照强度,以利于生长素的产生,从而加快蔬菜的生长速度,创造出更高的经济效益和社会效益。而人们的生活环境(学生的学习环境,办公室,工厂等)需要控制光照强度,使人们有一个好学习生活环境。同时需要控制居室光照强度,以便人们健康的生活。便携式光照强度检测仪也可以用于太阳能的研究和利用,农作物生长方面,太阳能能源使用,气象研究,建房朝向等等。因此,本课题开展便携式光照强度检测仪系统的设计具有一定的应用价值及实际意义。1设计内容与要求1.1 设计任务1) 选择传感器,设计数据采集电路,对温室的光照强度进行实时数据采
5、集, 要求光照强度的测量范围是:2600LX,精度为2%。2)实现温室光照强度的自动实时显示,显示到小数点后一位。3)编写计算机监测程序。4)写出设计说明书。1.2 设计要求 1)查阅资料,确定设计方案。2)选择器件,设计硬件电路,并画出原理图和PCB图。3)画出流程图,编写控制程序。4)撰写课程设计说明书。2 方案总体设计设计一个基于51单片机的光照强度检测系统。液晶屏幕第一行显示当前的光照强度,第二行显示报警信息即光照超过光照强度上限还是下限;利用BH1750传感器模块将采集到的光照强度经过一系列处理转换成数字信号,使用IIC通信协议将数据传送到单片机中,经过处理运算在LCD1602上显示
6、,可利用蓝滑动变阻器来调节液晶亮度。2.1 光照强度采集方案设计方案一:采用光敏电阻作为采样元件,将光照强度转换成电阻,再由电阻转换成电信号经过信号处理输入到AD转换器中进行模数转换。最后将转换出来的数字信号传送到单片机中进行数据处理并显示。 方案如图2.1所示。图2.1 光敏电阻采样方案方案二:采用BH1750光照传感器模块作为光强度采样及信号处理的元件,BH1750内部集成了16位AD转换,则无需再外扩AD转换器,并且其转换精度很高,只需通过IIC通信将采集处理得到的数据传输到单片机即可使用。BH1750的内部原理图如图2.2所示。图2.2 BH1750内部原理图综合以上两种方案,由于方案
7、二所得光照强度更加简便、数据的测量范围和精度都较高,所以选择方案二作为本系统的采样系统部分。2.2 控制芯片及实现方案AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。外形及引脚排列如图2.3所示。图2.3 AT89C52引脚图功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为
8、复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。2.3数据显示方案LCD1602是工业字符型液晶,能够同时显示1602即
9、32个字符。图2.4 LCD1602引脚图1602采用标准的16脚接口,其中:第1脚:GND为电源地第2脚:VCC接5V电源正极.第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,以51为例的简单原理图低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令;第714脚:D0D7为8位双向数据端;第15
10、16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。2.4系统总体框图本系统主要由AT89S52单片机、5V稳压电源、BH1750传感器模块、液晶显示电路、单片机外围时钟电路和复位电路组成。系统总体框架图如图2.5所示。图2.5 系统总体框架3 硬件设计3.1 单片机最小系统单片机要正常工作,首先要产生片内时钟信号。在单片机内部的振荡器的输入端XTAL1和输出端XTAL2之间接一个石英晶振就可以够成一个自激振荡器。再在两端之间串联接个电容并且在两个电容之间接地以便于稳定频率还对振荡频率有微调作用。电容通常选30uF左右,振荡脉冲频率范围为024MHZ。该电路中选用12MHZ晶振。时钟电路图
11、如图3.1:、图3.1 时钟电路图单片机在启动时与其他微处理器一样,要让CPU及系统各部件处于确定的初始状态,并从初始开始工作。这就需要复位操作。复位电路有两种方式:上电自动复位和按键自动复位。上电自动复位只是在开始接通电源瞬间复位,接下来想要再次复位就需要断电重启,不方便。按键自动复位不仅可以在开始接通电源瞬间复位还可以通过按下按键复位随时复位。所以选择按键复位方式。复位电路如图3.2:图3.2 复位电路图3.2 BH1750采集模块BH1750FVI是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨
12、率可以探测较大范围的光强度变化(1lx-65535lx)。BH1750采集模块的原理图如图3.3所示。图3.3 BH1750采集模块原理图3.3 液晶显示模块该系统需要显示两行。控制1602液晶亮度的是蓝白滑动变阻器。1602液晶有16个管脚。编号为1,2管脚为电源正负极管脚,15,16为背光源正负极管脚;714为dataI/O管脚与单片机的P0口相连,负责液晶与芯片之间的信息传送;4,5,6分别为数据/命令选择端、读/写选择端、使能端,与单片机的P3.3,P3.5,P3.6相连,负责控制液晶与芯片之间数据命令的读写操作;3为液晶显示偏压信号端,用于调整液晶显示对比度。1602液晶显示原理图如
13、图3.4所示:图3.4 液晶显示系统图3.4 系统电源为了实现各个部分的稳定供电,且根据各部分供电电压要求,本系统采用了LM7805制作了5V的稳压电源以对各部分实现稳定可靠供电。三端稳压集成电路LM7805。电子产品中,常见的三端稳压集成电路有正电压输出的lm78 系列和负电压输出的lm79系列。顾名思义,三端IC是指这种稳压用的集成电路,只有三条引脚输出,分别是输入端、接地端和输出端。lm78XX系列集成稳压器的电路图如图所示,是一个输出正5V直流电lm7805稳压电路。 图3.5 系统电源图3.5 整体电路和PCB图Altium Designer 提供了唯一一款统一的应用方案,其综合电子
14、产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式软件开发以及PCB版图设计、编辑和制造。并集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案-一个既满足当前,也满足未来开发需求的解决方案。这是采用网络标号的画出的以一张整体电路图。它将整张电路原理图分为六个部分:电源模块,P0口上拉电阻,1602液晶显示模块,51单片机,复位晶振电路,BH1750模块外界电路。整张原理看起来美观,并且根据标号很容易找到与之对应的引脚。整体电路原理图和PCB图如图3.6和3
15、.7所示。图3.6 整体电路图3.7 PCB整体电路图4 软件设计4.1 keil软件介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种
16、是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘
17、空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。4.2程序流程图 对于程序设计主要分为各部分初始化,BH1750的数据读写,数据显示这几部分组成。程序流程图如图所示。 图9 主
18、程序流程图4.3 各模块程序(1) LCD初始化程序及显示程序void InitLcd()WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0c,1);/*/void DisplayOneChar(uchar X,uchar Y,uchar DData)Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);(2) BH1750模
19、块数据读写程序void BH1750_Start() SDA = 1; /拉高数据线 SCL = 1; /拉高时钟线 Delay5us(); /延时 SDA = 0; /产生下降沿 Delay5us(); /延时 SCL = 0; /拉低时钟线/停止信号void BH1750_Stop() SDA = 0; /拉低数据线 SCL = 1; /拉高时钟线 Delay5us(); /延时 SDA = 1; /产生上升沿 Delay5us(); /延时/发送应答信号/入口参数:ack (0:ACK 1:NAK)void BH1750_SendACK(bit ack) SDA = ack; /写应答信
20、号 SCL = 1; /拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时/接收应答信号bit BH1750_RecvACK() SCL = 1; /拉高时钟线 Delay5us(); /延时 CY = SDA; /读应答信号 SCL = 0; /拉低时钟线 Delay5us(); /延时 return CY;/向IIC总线发送一个字节数据void BH1750_SendByte(BYTE dat) BYTE i; for (i=0; i8; i+) /8位计数器 dat = 1; /移出数据的最高位 SDA = CY; /送数据口 SC
21、L = 1; /拉高时钟线 Delay5us(); /延时 SCL = 0; /拉低时钟线 Delay5us(); /延时 BH1750_RecvACK();/从IIC总线接收一个字节数据BYTE BH1750_RecvByte() BYTE i; BYTE dat = 0; SDA = 1; /使能内部上拉,准备读取数据, for (i=0; i8; i+) /8位计数器 dat = 1; SCL = 1; /拉高时钟线 Delay5us(); /延时 dat |= SDA; /读数据 SCL = 0; /拉低时钟线 Delay5us(); /延时 return dat;void Singl
22、e_Write_BH1750(uchar REG_Address) BH1750_Start(); /起始信号 BH1750_SendByte(SlaveAddress); /发送设备地址+写信号 BH1750_SendByte(REG_Address); /内部寄存器地址, BH1750_Stop(); /发送停止信号/*单字节读取*uchar Single_Read_BH1750(uchar REG_Address) uchar REG_data; BH1750_Start(); /起始信号 BH1750_SendByte(SlaveAddress); /发送设备地址+写信号 BH1750
23、_SendByte(REG_Address); /发送存储单元地址,从0开始 BH1750_Start(); /起始信号 BH1750_SendByte(SlaveAddress+1); /发送设备地址+读信号 REG_data=BH1750_RecvByte(); /读出寄存器数据BH1750_SendACK(1); BH1750_Stop(); /停止信号 return REG_data; /连续读出BH1750内部数据void Multiple_read_BH1750(void) uchar i; BH1750_Start(); /起始信号 BH1750_SendByte(SlaveAd
24、dress+1); /发送设备地址+读信号 for (i=0; i3; i+) /连续读取2个地址数据,存储中BUF BUFi = BH1750_RecvByte(); /BUF0存储0x32地址中的数据 if (i = 3) BH1750_SendACK(1); /最后一个数据需要回NOACK else BH1750_SendACK(0); /回应ACK BH1750_Stop(); /停止信号 Delay5ms();/初始化BH1750,根据需要请参考pdf进行修改*void Init_BH1750() Single_Write_BH1750(0x01); 5 仿真与实现5.1 prote
25、us软件介绍Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持KEIL,IAR和MPLAB等多种编译器。Proteus不仅可将许多单片机实例功能形象化,也可将许多单片机实例运
26、行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用 Proteus 开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。
27、实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus有较高的推广利用价值。5.2 仿真过程图10为Proteus仿真原理图。在Proteus界面连接好电路图后,箭头放在单片机上单击右键,会出现一个对话框,可以通过这个对话框中的选项,加载程序到仿真图的单片机中,也进行元器件的放置方向进行调整,也可以删除元器件,还用很多功能选择项,不过在画这张原理图时暂时还没用到。在出现的对话框中点击EDIT PROPOTES再在出现的对话框中点击program file那行的那个文件图标,从里面找出先前已经在KEIL软件中编译的HEX文件,。点
28、击文件后,然后在单击edit component对话框的右上角的OK选项。然后点击Proteus的首界面的左下角形状是黑色三角型的play键,仿真图上的显示系统就出现了初始状态,单击控制开关,秒表开始计数,再单击一下控制开关后,计时停止。也可以点击play键右边那个step键,让程序一步一步执行step键右边是pause键,按一下这个键程序就暂停运行,再按一下程序就又开始运行。仿真完后按一下stop键结束仿真。当看到仿真电路上出现现象和操作时所达到的效果和我在编程时所预想的情况一样后,再保存所画的电路图,单击左上角的file中,再在出现的选项中单击save,可以选择自己想要保存的地方。下次打开
29、Proteus时可以单击file,再在出现的选项中单击open design的选项,可以从保存的地方直接选择所画的电路图打开,并且可以直接仿真。在要用Proteus仿真软件的时候,刚开始不会使用,因为我电脑里有学习这款软件的视频,然后我就看视频学习。老师看到我在看视频学习时,就要我不要通过看视频学习,直接看文档,先简单的学一些,够现在用就行,以后边用边学。确实通过看文档,边看边操作,再问一下同学,没花多少时间我就可以使用了。要不是老师指导一下,我可能要花上好多时间在学习Proteus软件上面。在以后学习中,我尽量多看书,看视频虽说细致但太费时间,看书实在看不懂再去看看详细讲解的视频,特别是学习
30、软件,看视频不单费时间,看了还容易忘,看文档边看边操作,花的时间少还记得牢。Proteus仿真图如图5.1所示。图5.1 Proteus仿真图5.3 实物制作与调试本次设计采用了Altium Designer软件画出了控制电路的原理图和相应的PCB图,并通过打印、转印、腐蚀、打孔、焊板这一系列步骤制作出了硬件实物,最后通过使用STC-ISP如软件将程序烧录到单片机中,以实现用BH1750传感器模块采集和LCD1602显示功能。实物图如图5.2所示。图5.2 实物图6 总结我的课题是基于51单片机光强度采集系统的设计。当我选择了这个课题的时候,我就先开始想在平常生活中光照强度的功能是怎样的,需要
31、一些什么器件来实现这些功能。在确定了自己要设计一个怎样的光照检测系统之后就开始列出做这个系统所需要的元器件。这个系统是基于给定的显示系统上设计的,所以在设计电路原理图之前,我先要掌握给定的显示系统原理图的连接方式和连接原理。这一些都弄明白之后,我再考虑如何在现有的基础上进行外围设计使之达到预想的功能。经过一番斟酌,确定我的外围硬件只需添加一个采集模块就可以实现光强度采集的功能。由于在我参加过全国大学生电子设计竞赛和对AD10软件的熟悉使用的基础上,我自己画了原理图和PCB图,并制作出了实物。设计线路的时候要尽量减少飞线的使用,画完之后和给出的图进行对照,确定我没有连接错误之后,修正洞洞板图,使
32、线路没有断路并且更加笔直,接点处没有连线出头,修正完后保存洞洞板图。硬件设想好了,接下来,我就要给我所要设计的秒表进行软件设计,使之实现智能化。进过了几次调试之后,在Keil软件中我的程序显示0 error。没有错误的程序,不代表它就能实现我预期的功能。为了初步验证我的编写的程序所达到的效果,就需要用仿真软件在电脑进行仿真。而在前面已经介绍过了,在仿真软件当中,Proteus软件是一款非常适合我们的软件,所以我们一般选择使用Proteus软件进行仿真。在Proteus软件界面画好电路图之后,检查一下,确定连接符合洞洞板原理图后,再加载之前在Keil软件中编译好的HEX文件,单击play键开始程
33、序运行,观察液晶显示的初始状态,操作秒表的原理图上的控制按键,观察运行过程中数码管显示出的状态,以及蓝色和红色小方点所显示的电平变化。根据现象进行调试,直到仿真软件上的秒表和预想的一致。仿真的步骤完成后,就开始画DXP原理图,采用网络标号的形式更加方便,只需要把系统分成各个小模块,在元器件的接口上标明该接口所连接单片机的对应的引脚,再分区放置标明模块。图的大体结构画完之后再和给出的图进行对照,确定我没有连接错误之后,修正DXP原理图,使线路没有断路并且更加笔直。DXP原理图画完后,整个电路设计就算完成了。我的设计过程与思路大体就是这样子。最后,通过此次课程设计让我了解到要想成为单片机高手,我们首先要学好汇编语言,然后转入C语言学习,所以我们不能学到后面就忘了前面的知识,更应该将所学的知识紧紧的结合在一起,综合运用,所谓设计,就是要求创新,只有将知识综合运用起来才能真正的设计好。7 参考文献1 杨长兴、刘卫国.C+程序设计M.北京:中国铁道部出版社.20032 李朝青.单片机原理及接口技术M.北京:北京航空航天大学出版社.20103 程德福、林君.智能仪器M.北京:机械工业出版社.20054 刘坤、赵红波、张宪栋.51单片机C语言运用(第二版)M.北京:人民邮 电出版社.20055 阎石.数字电子计数基础(第五版)M.上海:高等教育出版社.2007第 18 页 共 19 页
限制150内