【《路灯自动开关系统的单片机硬件和软件设计案例》3400字】_第1页
【《路灯自动开关系统的单片机硬件和软件设计案例》3400字】_第2页
【《路灯自动开关系统的单片机硬件和软件设计案例》3400字】_第3页
【《路灯自动开关系统的单片机硬件和软件设计案例》3400字】_第4页
【《路灯自动开关系统的单片机硬件和软件设计案例》3400字】_第5页
已阅读5页,还剩9页未读, 继续免费阅读

下载本文档

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

文档简介

路灯自动开关系统的单片机硬件和软件设计案例目录TOC\o"1-3"\h\u2998路灯自动开关系统的单片机硬件和软件设计案例 1321541硬件设计 1172511.1STM32最小系统 131661.2北斗模块 3236431.3实时时钟模块 3158171.4继电器模块 4283551.5电源模块 4163091.6显示模块 5138701.7光敏电阻模块 561531.8按键模块 6243462软件设计 6201402.1软件总体设计思路 6208802.2系统软件主要模块设计 7133822.2.1主函数程序设计 7269942.2.2OLED屏显示页面程序设计 850492.2.3北斗模块程序设计 9211092.2.4实时时钟模块程序设计 10196422.2.5按键模块程序设计 11115012.2.6光敏电阻模块程序设计 1220452.2.7继电器模块程序设计 131硬件设计1.1STM32最小系统该设备选用STM32最小系统作为MCU,主芯片是STM32F103C8T6芯片。该模块如图3-1所示:图3-1STM32最小系统(1)电源电路此电路由连接外部1.3V的稳定的电源VCC提供电能。为了保证能获取备用寄存器的内容,VBAT在外部被连接在电源上,允许RTC正常运行。VDD、VDDA引脚连接到稳定的VCC电源上。电容C4、C5、C6和C7四个电容组成滤波电路,从而提高电路的稳定性。(2)时钟电路STM32F103C8T6芯片有三个不同的时钟源和两个二级时钟源,用来驱动系统时钟(SYSCLK)。它们可以被单独打开或关闭,从而降低电能的消耗。在其外部电路中,C1和C2为可加载电容,Y1为8MHz外部晶振,能够产生精确的主时钟,减小输出失真和启动稳定时间。(3)复位电路复位电路的作用是重置系统中寄存器的值。当NRST引脚上为低电平时,系统会进行复位,使电路恢复到起始状态。(4)BOOT启动电路STM32F103C8T6中系统的启动方式由BOOT0引脚和BOOT1引脚决定。当BOOT0处于低电平时是用户闪存启动;当BOOT1处于低电平,BOOT0处于高电平时是系统内存启动;当BOOT1处于低电平,BOOT0处于高电平时是SRAM启动。(5)调试接口电路此电路的作用是将设备连接到主机上,由硬件调试器UART2、连接器SWD和若干连接线组成。1.2北斗模块在此模块中,当主电源断电时,MS62IFE电池会供电,保证系统能正常供电。模块通过天线接收到信息时,D2指示灯闪烁。L76-LB模块主要通过RXD1和TXD1两个引脚接到主芯片的PA10和PA9上,与STM32最小系统进行通行,将获取到经纬度和时间信息传给主控模块。当L76-LB芯片的RESET为低电平时,就会进行复位,让模块回到最初的工作状态。北斗模块的电路原理图如图3-2所示:图3-2北斗模块电路原理图1.3实时时钟模块此模块选用的是DS1302芯片复位引脚5接主芯片的PB12;串行时钟引脚7接主芯片PB10,为;引脚6接主芯片的PB11,为端口输入/输出引脚。这个模块就是通过这三个端口与主控模块进行数据传输的;引脚2和3为晶振引脚。DS1302会及时更新获取获取的北斗数据,RST为低电平时,系统开始初始化数据,在CLK处于上升沿时输入数据,当CLK处于下降沿时,输出数据,向系统提供实际时间,便于系统将日出和日落时间与实际时间对比。实时时钟模块电路原理图如下图3-3所示:图3-3实时时钟模块电路原理图1.4继电器模块继电器模块中采用总控方式控制多盏路灯的开闭。继电器模块中的三极管Q6、Q7、Q8三个三级管起放大电流的作用,J3、J4、J5为常用的5V继电器,其中D3、D4、D5为线圈,利用电流的磁效应控制路灯的开闭。Power1、Power2、Power3分别接到STM32F103C8T6芯片中的PB13、PB14、PB15引脚,继电器接入火线中,灯泡接在接线端子上,从而控制多盏路灯的开闭。继电器模块电路原理图如图3-4所示:图3-4继电器模块电路原理图1.5电源模块此系统的电源用的是220V市电,但因为很多芯片都是5V或者兼容1.3V电压直接供电,因此需要对220V市电进行转化,先降为5V再降为1.3V,从而向系统供电。保险丝(F1)和压敏电阻(VDR)对电路起保护作用,当D6指示灯闪烁时,接通电源。电阻R35起限流作用,电容C8、C9、C10、C11起滤波作用,增加电路的稳定性。电源模块电路原理图如图3-5所示:图3-5电源模块电路原理图1.6显示模块本设计的显示模块选用的是OLED屏幕,市面上的OLED屏幕已经比较成熟了,在此系统中只需通过接线端子接入OLED屏幕即可。CS接PA4端口,功能为片选信号;DC接PA48端口,功能是区分命令和数据;RST引脚接到主芯片的PA11端口,功能是复位;D0接PA5端口,D1是接到主芯片的PA7端口,是双向的数据输入/输出口。显示模块接线端原理图如图3-6所示:图3-6显示模块接线端原理图1.7光敏电阻模块该模块通过AD端连接到核心处理器的PA1端口,电阻R36和滑动变阻器R25起分压作用。当北斗模块获取数据完全失败时,该模块起作用,光敏电阻感应环境光强的大小改变阻值,从而改变AD端的电压。当核心处理器检测到AD端的电压值满足预先设定的值时,就会自动打开或者关闭路灯,保证路灯能够正常使用。光敏电阻模块原理图如图3-7所示:图3-7光敏电阻模块电路原理图1.8按键模块K2、K3、K4、K5是组成独立式按键模块,它们的一端接地,另一端接上拉电阻,分别对应端口K1、K2、K3、K4。在上拉电阻的作用下,按键没被按下时,各端口都处于高电平,然后与主控芯片的PB0、PB1、PB3、PB9连接,对应的功能分别是确认、上/+、返回/删除、下/-。当有按键按下时,相应端口被拉为低电平,主芯片就会检测到信号,进而实现按键对应的功能。按键模块电路图如图3-8所示:图3-8按键模块电路原理图2软件设计2.1软件总体设计思路程序的开发是在KeiluVision5软件中进行,选用的语言是C语言。总体思路如下:先对各个模块进行初始化,检测是否有设置路灯所在地的实时时间模式的按键按下,如果有按键按下,判断是自动校准还是手动校准当地的时间;如果没有按键按下,默认是自动校准当地的时间。通电后,北斗模块就开始获取北斗数据,判断北斗模块是否能成功获取数据,如果获取成功就对获取的数据进行解析,得出路灯所在位置的经度、纬度和时间信息传送给STM32最小系统,由此运用公式计算出日出时间和日落时间,实时时钟模块校准实时时间,比较实时时间与日出日落时间,当实时时间>日落时间时开灯,当日出时间<实时时间<日落时间时关灯。如果北斗模块获取数据失败,就采集光敏电阻模块的电压,当AD端的电压值大于1.0V就开灯;反之,当AD端的电压值小于0.8V则关灯。为了能够更加方便进行程序设计,软件设计程序总体流程如图4-1所示:图4-1软件设计程序流程图2.2系统软件主要模块设计2.2.1主函数程序设计主函数的总体流程图如下图4-2所示:图4-2主函数程序流程图2.2.2OLED屏显示页面程序设计OLED屏幕能储存字节,也就是每行能存储128个字节,每列能存储64个字节,每个字节用一个点表示。当对一个点写入1时,该点对应的位置就会亮起;相反,当对一个点写入0时,该点对应的位置就会灭。因此,该系统的显示页面就是利用这种原理显示经纬度、日出日落时间和当地实时的时间。OLED显示程序流程图如下图4-3所示:图4-3OLED屏显示程序流程图2.2.3北斗模块程序设计北斗模块的程序设计主要是对L26-LB&L76-LB_GNSS_协议进行解析,主要运用此模块支持的NMEA语句来实现功能。北斗模块的作用就是获取经纬度、UTC时间,因此,主要解析以“RMC”为头部的语句,规定的格式为:$--RMC,<a>,<b>,<c>,<d>,<e>,<f>,<g>,<h>,<i>,<j>,<k>,<l>,<n>*<Checksum><CR><LF>其中“$”是每条语句的开始,“--RMG”指的是该条语句的ID,<a>是路灯所在位置的UTC时间;<b>是指数据的有效性;<c>是指路灯所在地的纬度;<d>是指纬度的方向;<e>是指路灯所在地的经度;<f>是指经度的方向;<i>是指北斗模块获取到的UTC日期,格式为“日日月月年年”;“*”指的是数据字段结束符;<Checksum>”对数据进行校验和;<CR><LF>的是回车和换行位,标志着NMEA语句的结束。通过此语句获得的数据,需要进一步提取出需要的数据信息,按照通信协议把数据转换成单片机能识别的语言,再通过串口发送给单片机。北斗模块子程序的流程如图4-4所示:图4-4北斗模块程序设计流程图2.2.4实时时钟模块程序设计此模块的芯片是DS1302,其读写字节的原理如图4-5所示:图4-5实时时钟模块程序流程图2.2.5按键模块程序设计按键模块的作用就是手动设置时间,实现手动控制路灯的开闭。在上拉电阻的作用下,没按下按键时,K1、K2、K3、K4接线端均处于高电平,此时路灯的控制由系统自动控制。当按下按键时,此按键对应的接线端的电平就会被拉低,这时系统的实时时间就以手动设置的为准,再以此时间和当天的日出日落时间进行对比,从而实现路灯的开闭。按键模块程序流程如图4-6所示:图4-6按键模块程序流程图2.2.6光敏电阻模块程序设计光敏电阻模块主要是通过采集AD端的电压进行比较判断北斗模块是否完全失灵,完全失灵的情况下才会使起作用。当光敏电阻起模块时,其阻值会随光强发生变化,故该模块的电压输出值也随其阻值改变而改变,再将输出的模拟电压转换为数字电压传送给STM32最小系统,最后通

温馨提示

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

评论

0/150

提交评论