教室灯光控制系统_第1页
教室灯光控制系统_第2页
教室灯光控制系统_第3页
教室灯光控制系统_第4页
教室灯光控制系统_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 指导教师评定成绩: 审定成绩: 重 庆 邮 电 大 学自动化学院综合设计报告 设计题目:教室灯光控制系统 单位(二级学院): 自动化学院 学 生 姓 名: 专 业: 自动化 班 级: 学 号: 指 导 教 师: 设计时间:2014年10月重庆邮电大学自动化学院制摘要本次课程设计,所研究的教室灯光控制器主要是由硬件和软件两大部分组成。硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动的教室照明智能控制。 本文所研究的教室灯光控制器主要是由硬件和软件两大部分组成。硬件部

2、分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动的教室照明智能控制。设计主要是通过红外传感器、温度传感器以及光电传感器来检测教室内的人,然后通过OLED显示出来。通过设定一定的时间段内是否有人来检测并调节教室内的亮度,用于控制是否开灯。如果超出此时间段,一旦检测到有人,系统就会认为异常,进行报警和闪烁。 该系统基本节能功能已实现,可以运用到生活中去。关键词:检测、传感器、调节、控制II目录任务书1设计题目1设计目的1设计要求1 第一章:控制对象分析 1 1.1教室灯光控制

3、方案的分析2 1.2系统控制模块的硬件设计2第二章控制模块的硬件构成2 2.1系统主控电路4 2.2系统供电电路5 2.3红外检测模块5 2.4声音检测模块7 2.5光电检测模块7 2.6温度检测模块8 2.7 OLED模块9 2.8 继电器驱动接口电路15 2.9电路图绘制及PCB板制作17 2.10 单总线传输原理18 2.11 SPI总线传输原理19第三章、软件实现21 3.1 主程序流程21 3.2 OLED显示模块执行逻辑22 3.3 HC-SR501人体红外感应模块执行逻辑23 3.4 温度传感器DS18B2024第四章、课程设计总结25参考文献25第五章、附录29III任务书设计

4、题目 设计一个电路系统,在规定时间内,通过红外传感器和声音传感器检测是否存在人在教室,通过光电传感器检测教室亮度,用于控制是否开灯,如果超出该时间时间段如果检测有人,则认为是异常,进行报警和闪灯。设计目的(1) 掌握检测控制系统设计方法。(2) 掌握A/D转换和单片机的接口连线。(3) 掌握数据采集电路设计方法。(4) 掌握LED显示和键盘设计方法。设计要求(1)画出系统的架构框图。(2)选择合适元器件进行电路设计,画出电路原理图。(3)画出系统功能实现流程图。第一章 控制对象的分析1.1教室灯光控制方案的分析在自然环境光较强光线足够时,无论人是否存在,都不开灯;在自然环境光较弱时,有人存在且

5、超过一定时间,控制器自动打开电灯,直到人离开后再延时一定时间后关灯。同时,还要按作息时间来控制,夜晚11到早上7点,若还有人存在,则实行报警。本文所研究的教室灯光控制器主要是由硬件和软件两大部分组成。硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动的教室照明智能控制。1.2系统控制模块的硬件设计 系统控制是以单片机最小控制系统为核心,以及其他检测模块、输出模块等组成,如:人体红外模块、声音检测模块、光强检测模块、温度采集模块、OLED显示模块、声光报警模块、继电器模

6、块等。 系统信息传递有3种方式:温度采集模块DS18B20与单片机采用单总线通信协议,OLED显示屏与单片机采用SPI总线传输协议,人体红外感应模块、声音检测模块和光强检测模块与单片机采用开关量。第二章 控制模块的硬件构成 系统控制单元是以单片机主控模块为核心,其他外围电路包括系统供电模块、人体红外模块、声音检测模块、光强检测模块、温度采集模块、OLED显示模块、声光报警模块、继电器模块、其结构框图如图1所示:图1硬件结构图2.1系统主控电路 本系统的主控模块主要采用STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器的STC89C52。STC89C52

7、芯片参数:1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051.2. 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V 单片机)3.工作频率范围:040MHz,相当于普通8051 的080MHz,实际工作 频率可达48MHz4. 用户应用程序空间为8K字节5. 片上集成512 字节RAM6. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。7. ISP(在系统可编程)/IAP(在应用可编程)

8、,无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片8. 具有EEPROM 功能9. 共3 个16 位定时器/计数器。即定时器T0、T1、T210.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒11. 通用异步串行口(UART),还可用定时器软件实现多个UART12. 工作温度范围:-40+85(工业级)/075(商业级)图2 最小单片机系统2.2系统供电电路要取得+5V电压,若选用12V的变压器,整流滤波后输出往往大于12V,会使稳压器功耗大,自身温度较高。故不选用

9、输出电压为12V的变压器,而选用输出电压为9V的变压器。系统接通220V交流电源后,将220V交流电变压到9V,然后经过电容C1和一个正输出稳压器LM7805,为了缓冲负载突变,改善瞬态响应,输出端再接一个C2,最后得到+5V电压。由于电路中耗电功率比较大,怕一路电源功率不够,因此采用了两路电源供电。图3供电原理图2.3红外检测模块HR-SR501是基于红外线技术的自动控制模块,如图5所示,采用德国原装进口LHI778探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备。图4红外检测模块HR-SR501热释电传感器模块有以下功能特点: 1、全自动感应2、两种

10、可选择的触发方式:a、不可重复触发方式b、可重复触发方式3、具有感应封锁时间4、工作电压范围宽:默认工作电压DC4.5V-20V。5、微功耗:静态电流<50微安,特别适合干电池供电的自动控制产品。6、输出高电平信号:可方便与各类电路实现对接。原理:感应模块采用双元探头,探头的窗口为长方形,双元(A元B元)位于较长方向的两端,当人体从左到右或从右到左走过时,红外光谱到达双元的时间、距离有差值,差值越大,感应越灵敏,当人体从正面走向探头或从上到下或从下到上方向走过时,双元检测不到红外光谱距离的变化,无差值,因此感应不灵敏或不工作;所以安装感应器时应使探头双元的方向与人体活动最多的方向尽量相平

11、行,保证人体经过时先后被探头双元所感应。为了增加感应角度范围,本模块采用圆形透镜,也使得探头四面都感应,但左右两侧仍然比上下两个方向感应范围大、灵敏度强,安装时仍须尽量按以上要求。2.4声音检测模块声音检测采用声音检测模块,检测到人声则达到开灯条件之一。本次设计中,声音检测模块,使用的是高灵敏的电容式极柱体麦克风传感器。模块有2个输出:1、 AO,模拟量输出,实时输出麦克风的电压信号;2、 DO,当声音强度达到某个阀值时,输出高低电平信号(阀值-灵敏度可以通过电位器调节)。模块特点: 1、尺寸小36mmX16mm; 2、有3mm的安装螺丝孔; 3、可以使用3-5.5V的直流电源供电; 4、有模

12、拟量输出; 5、有阀值翻转电平输出; 6、极柱体麦克风灵敏度高; 7、有电源指示灯。2.5光电检测模块 BH1750光敏传感器在本次设计中主要负责实时的感测周围环境中的光线强度,通过光敏电阻的光敏特性,改变BH1750数据线SDA的电平,最后直接由单片机读取SDA电平(开关量),从而结合其他模块实现在不同环境下对室内灯光的控制。BH1750中的关键元器件为光敏电阻。光敏电阻,又称光敏电阻器,或光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。这是由于光照产生的载流子都参与导电,在外加电场的作用下作漂移运动,电子

13、奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。BH1750内部原理图如下所示:图5 BH1750内部原理图最左端为光敏电阻,根据环境的光强输出不同的光敏电流,AMP运算放大器再将光敏电阻的电流信号放大并转换至电压信号,电压信号经过ADC模数转换芯片,最后得到转换出的数字信号,最后经过logic和ICC界面与参考数字电压值进行比较,输出“开关量”到SDA内置寄存器。为了简化系统的设计,在本次设计中,考虑到BH1750仅需要输出两个比较的单一的结果,其一为“光线足(输出低电平)”,其二为“光线不足(输出高电平)”,因此并未采用ICC的标准时序来控制BH1750的数据传输,仅使

14、用SDA端口输出开关量(0或1)即可。2.6温度检测模块温度检测采用DS18B20,其特性如下:1、测温范围:-55-+125。2、A/D转换精度:9位-12位。3、体温分辨率:0.06254、通信方式:被测温度用符号扩展的16位数字量方式串行输出。5、内部结构:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL配置寄存器。图6传感器模块2.7 OLED显示模块 主控采用AT89C52管脚不足,故显示采用同步串行总线SPI进行通信的12864OLED模块。(1)12864显示原理图7 12864显示原理 如上图所示这样8个页和128个列,把屏幕分为1024个字节,字节是高位在上,低位在

15、下.12864有命令可以实现上下颠倒和左右反转,有的12864分为左半屏和右半屏,分别由两个引脚控制.向某个地方写一个字节可以分为三步:确定某页,确定某列,写一个字节 : 1.确定某页:就是向12864写一个命令“0xBx”,x为07,比如0xB0就是指定第0页. 2. 确定某列:这要向12864连续写两个字节:0x1x和0x0y,x为列地址的高4位,y为列地址的低4位,比如0x15和0x03,就是指定0x53列。 3.直接写一个字节就行  编程如下: /显示一个字节 void display_byte(u8 page,u8

16、 column,u8 byte)   write_command(0XB0+page);        /在page页写字符的上半部分,写入页地址的指令为0xBx,x为07 write_command(0x10+column/0x10);        /写入列地址的指令为连续输入0x1x和0x0y,x为列地址的高4位   write_comman

17、d(0x00+column%0x10);        /y为列地址的低4位     write_data(byte); (2) 芯片介绍 1、硬件特性: 提供 8 位串行接口 自动电源启动复位功能 内部自建振荡源 64×16 位字符显示 RAM(DDRAM 最多 16 字符×4 行,LCD 显示范围 16×2 行) 2M 位中文字型 ROM(CGROM),总共提供 8192 个中文字型(16×16 点阵) 16K

18、位半宽字型 ROM(HCGROM),总共提供 126 个西文字型(16×8 点阵)64×16 位字符产生 RAM(CGRAM)2、软件特性: 文字与图形混合显示功能 画面清除功能 光标归位功能 显示开/关功能 光标显示/隐藏功能 显示字体闪烁功能 光标移位功能 显示移位功能(3)内部功能器件及相关功能1. 指令寄存器(IR) IR是用于寄存指令码,与数据寄存器数据相对应。当D/I=0时,在E信 号下降沿的作用下,指令码写入IR。2数据寄存器(DR)DR是用于寄存数据的,与指令寄存器寄存指令相对应。当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电

19、平作用下由DR读到DB7DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。3忙标志:BF BF标志提供内部工作情况。BF=1表示模块在内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。  利用STATUS READ指令,可以将BF读到DB7总线,从检验模块之工作状态。4显示控制触发器DFF   此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY OFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。 

20、60; DDF的状态是指令DISPLAY ON/OFF和RST信号控制的。5XY地址计数器   XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。   X地址计数器是没有记数功能的,只能用指令设置。   Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。6显示数据RAM(DDRAM) DDRAM是存储图形显示数据的。

21、数据为1表示显示选择,数据为0表示显示非选择。DDRAM与地址和显示位置的关系见DDRAM地址表。7Z地址计数器  Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。  Z地址计数器可以用指令DISPLAY START LINE预置。因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM共64行,屏幕可以循环滚动显示64行。(3)12864LCD的指令系统及时序 该类液晶显示模

22、块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。其指令表如表1所示:指令名称控制信号控制代码R/WRSDB7DB6DB5DB4DB3DB2DB1DB0显示开关0000111111/0显示起始行设置0011XXXXXX页设置0010111XXX列地址设置0001XXXXXX读状态10BUSY0ON/OFFRST0000写数据01写数据读数据11读数据表1:12864LCD指令表各功能指令分别介绍如下。1、显示开/关指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00000111111/0当DB01时,LCD显示RAM中的内容;DB00时,关闭显示。

23、2、显示起始行(ROW)设置指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00011显示起始行(063)该指令设置了对应液晶屏最上一行的显示RAM的行号,有规律地改变显示起始行,可以使LCD实现显示滚屏的效果。3、页(PAGE)设置指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00010111页号(07)显示RAM共64行,分8页,每页8行。4、列地址(Y Address)设置指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00001显示列地址(063)设置了页地址和列地址,就唯一确定了显示RAM中的一个单元,这样MPU就可

24、以用读、写指令读出该单元中的内容或向该单元写进一个字节数据。5、读状态指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB010BUSY0ON/OFFREST0000该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下:BUSY:1-内部在工作0-正常状态ON/OFF:1-显示关闭0-显示打开RESET:1-复位状态0-正常状态在BUSY和RESET状态时,除读状态指令外,其它指令均不对液晶显示模块产生作用。在对液晶显示模块操作之前要查询BUSY状态,以确定是否可以对液晶显示模块进行操作。6、写数据指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB0

25、01写数据7、读数据指令R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB011读显示数据     读、写数据指令每执行完一次读、写操作,列地址就自动增一。必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。2.8 继电器驱动接口电路 这里继电器有PNP型号的三极管老驱动,开机时,单片机初始化后D3为高电平,三极管截止,所以开机后继电器始终处于释放状态。如果D3为低电平,三极管的基极就会拉低而产生足够的基极电流,使三极管导通,继电器就会得电吸合,从而驱动负载,点亮相应电灯。每个继电器都有一对常开常闭的

26、触点,便于在其他电路中使用,继电器线圈两端反相并联的二极管是起到吸收反向电动势的功能,保护相应的驱动三极管,这种继电器驱动方式硬件结构比较简单。图 7 继电器驱动接口电路2.8电路图绘制及PCB板制作图 8 总电路图图9 PCB图2.9 单总线传输原理 采用单根信号线,既传输时钟,又传输数据而且数据传输是双向的,它具有节省 I/O 口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。 基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成,应答脉冲使主机知道 总线上有从机设备。 在主机检测到应答脉冲后,就可以发出ROM命令这些命令与各个从机

27、设备的唯一64位ROM代码相关,允许主机在单总线上连接多个从机设备时,指定操作某个从机设备这些命令还允许主机能够检测到总线上有多少个从机设备以及其设备类型,或者有没有设备处于报警状态, 从机设备可能支持5种ROM命令实际情况与具体型号有关,每种命令长度为8位,主机在发出功能命令之前,必须送出合适的ROM 命令。 当系统初始上电时,主机必须找出总线上所有从机设备的ROM代码,这样主机就能够判断出从机的数目和类型,主机通过重复执行搜索 ROM循环搜索ROM命令跟随着位数据交换,以找出总线上所有的从机设备,如果总线只有一个从机设备,则可以采用读ROM命令来替代搜索ROM命令。在每次执行完搜索 ROM

28、 循环后,主机必须返回至命令序列的第一步初始化 在写时隙期间,主机向单总线器件写入数据而在读时隙期间,主机读入来自从机的数据,在每一个时隙,总线只能传输一位数据。 存在两种写时隙“写1”和“写0”。主机采用写1时隙向从机写入1,而采用写0时隙向从机写入0。所有写时隙至少需要60s。且在两次独立的写时隙之间至少需要1s的恢复时间。两种写时隙均起始于主机拉低总线图?所示。产生写1时隙的方式主机在拉低总线后,接着必须在15s之内释放总线,由5k上拉电阻将总线拉至高电平而产生写0时隙的方式在主机拉低总线后,只需在整个时隙期间保持低电平即可,至少60s。在写时隙起始后15-60s期间,单总线器件采样总线

29、电平状态,如果在此期间采样为高电平,则逻辑1被写入该器件如果为0则写入逻辑0。 单总线器件仅在主机发出读时隙时,才向主机传输数据。所以,在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。所有读时隙至少需要60s,且在两次独立的读时隙之间至少需要1s的恢复时间。每个读时隙都由主机发起,至少拉低总线1s。在主机发起读时隙之后,单总线器件才开始在总线上发送0或1。若从机发1,则保持总线为高电平若发送0则拉低总线。当发送0时,从机在该时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态,从机发出的数据在起始时隙之后,保持有效时间15s。因而,主机在读时隙期间必须释放总线,并且在时隙

30、起始后的15s之内采样总线状态。(在主机发出ROM命令以访问某个指定的DS18B20,接着就可以发出 DS18B20支持的某个功能命令,这些命令允许主机写入或读出DS18B20 暂存器,启动温度转换以及判断从机的供电方式)2.10 SPI总线传输原理 SPI即串行外围设备接口。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多

31、个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。(1)SDO主设备数据输出,从设备数据输入(2)SDI主设备数据输入,从设备数据输出(3)SCLK时钟信号,由主设备产生(4)CS从设备使能信号,由主设备控制 其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位

32、的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。 要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由

33、主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义。 在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。 最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。第三章 软件实现3.1 主程序流程图

34、10 主程序流程图 初始化系统,检测外部环境,判断是否满足开灯条件,如果满足则再延迟5秒后再检测,依旧满足则开灯,否则关灯,同时根据当前时间判断是否报警。3.2 OLED显示模块程序执行逻辑图11 OLED程序流程图3.3 HC-SR501人体红外感应模块程序执行逻辑图12红外检测模块程序流程图传感器检测是否有人体活动,若检测到有人体活动信号,则向单片机输出一段时间的高电平,同时继续检测是否有人体信号,检测到有继续输出一段时间的高电平,若没检测到,一段延迟时间后向单片机输出低电平。3.4 温度传感器DS18B20图13温度检测流程图温度传感器DS18B20的程序主要由四部分组成:初始化函数、读

35、数据函数、写数据函数以及获取温度并转化函数。第四章课程设计总结 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一

36、起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。参考文献1周明珠.无触点开关在控制中的应用J.现代电子技术,2002,4(1):62-71 2赵玉安.人体热释电红外传感器介绍J.中国电子制作,2006,9(1):35-403俞海珍,李宪章,冯浩.热释电红外传感器及其应用J.电子照明技术,2006. 7(1):25-284曹巧媛.单片机原理及应用M.北京:北京:电子工业出版社,19975胡向东.传感器与检测技术M.北京:机械工业出版社,2009.6张友德等.单片机原理应用与实验M.上海:复旦大学出版社,19927郭天祥.新概念51单片机C语言教程-入门、提

37、高、开发、拓展全攻略M.北京:电子工业出版社,2011.8张毅刚.新编MCS-51单片机应用设计M.哈尔滨:哈尔滨工业大学出版社, 2003.9谭浩强.C程序设计M.北京:清华大学出版社,1991.第五章、附录主程序:#include "Config.h"#include "OLED.h"#include "Flash.h"#include "Delay.h"#include "codetab.h"#include "18B20.h"#define uint unsigned

38、 int#define uchar unsigned char bit light_flag=0;bit voice_flag=0; bit nfr_flag =0;bit time_flag =0;bit warning_flag =0;sbit D0=P10; /声音 检测到为 0sbit D1=P11; /人体红外 检测到为 1sbit D6=P14; /光敏 检测到为 0sbit D2=P15; /18B20sbit D3=P16; /继电器sbit D4=P37; /蜂鸣器sbit D5=P36; /LEDuchar time=0;uchar time1=0;void T0_init

39、() TMOD=0X01; TH0=(65536-45872)/256; /50ms TL0=(65536-45872)%256; EA=1; ET0=1; TR0=0;void T0_timer() interrupt 1 TH0=(65536-45872)/256; TL0=(65536-45872)%256; time+; if(time%10&&warning_flag) /0.5s D4=D4; D5=D5; time1+; if(time1=6) /报警3s warning_flag=0; TR0=0;time1=0; if(time=100) /5s time=0

40、; time_flag=1; void display_init()Lcd_Init();FlashInit();Lcdclear();LcdDisplay_Chinese(0,0,"重庆邮电大学");LcdDisplay_Chinese(24,2,"自动化学院");LcdDisplay_Chinese(32,4,"课程设计");LcdDisplay_Chinese(16,6,"教室灯光系统"); DelayS(1);Lcdclear();LcdDisplay_Chinese(0,3,"系统初始化中&qu

41、ot;);DelayS(1);Lcdclear();LcdDisplay_Chinese(0,0,"光敏电阻:"); / 教室人员LcdDisplay_Chinese(0,2,"人体红外:"); / 灯光状态LcdDisplay_Chinese(0,4,"声音模块:"); /报警状态LcdDisplay_Chinese(0,6,"当前温度:"); /LcdDisplay_Chinese(98,6,""); /void displayefresh(uchar display1,bit displa

42、y2,bit display3,uint display4) display_num(80,0,display1/10); /教室人数display_num(88,0,display1%10);if(display2) /灯光状态1开 0关 LcdDisplay_Chinese(80,2,"开");else LcdDisplay_Chinese(80,2,"关");if(display3) /灯光状态1开 0关 LcdDisplay_Chinese(80,4,"开");else LcdDisplay_Chinese(80,4,&quo

43、t;关");display_num(80,6,display4/10); /当前温度display_num(88,6,display4%10);void main(void) dsinit(); display_init(); T0_init(); while(1) /开灯 if(D0=0&&D1=1&&D6=1) / 检测到声音且光线不足且感受到红外 开灯 D3=0; /关灯 if(D6=0|D1=0)&&D3=0) /光线充足或未检测到人并且处于开灯状态 TR0=1; /开启定时器 if(time_flag=1) /5后再检测一次

44、如果没有检测到人体红外 关灯 time_flag=0;if(D1=0)|(D6=0)&&D3=0) /光线充足或未检测到人并且处于开灯状态 warning_flag=1; /报警标志置1 满足条件 D3=1; /关灯 报警 /显示 displayefresh(D6,D1,D0,25); / getds() 延迟程序:#include "Delay.h"void DelayUs(unsigned int time)for(;time>0;time-)_nop_();/一个指令周期,对于12MHz的晶振,刚好是1uS,但对于11.0592MHz的晶振,延时

45、时间是12/11.0592void DelayMs(unsigned int time) unsigned int i,j; for(i=0;i<time;i+) for(j=0;j<111;j+);void DelayS(unsigned int time)unsigned int i;for(i=0;i<time;i+)DelayMs(1021);OLED程序:u8 LcdDisplay_HZ(u8 xPos,u8 yPos,u8 *GBCodeptr)u8 msb,lsb,zknum;u8 zkzip32; /读取字库数据的缓存区u32 offset; /字库地址索引LCD_CS(0);if(xPos>=LCD_X_Parameter | yPos>=LCD_Y_Parameter) return 0 ; /超范围退出msb= *GBCodeptr; /汉字或ASC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论