蓝牙遥控密码锁毕业设计


    毕业设计[文]





    题目:蓝牙遥控密码锁



    学 院: 电子电气工程学院
    专 业: 光电信息工程
    姓 名:
    指导教师:






    着社会发展进步家居智化越越成未发展趋势目前市场电锁门禁采键机械密码锁定程度安全度够高够性化文设计种基单片机微控制器控制蓝牙遥控密码锁系统
    户通手机控制密码锁开关脱机情况够通键解锁项目系统设计分硬件软件两部分硬件部分分电锁控制器板设计电锁受控模块设计软件部分包括数收发模块蓝牙通信模块等系统实现功蓝牙远程控制功键密码输入功干接点弱电控制功等实验表明该系统够手机蓝牙发送控制信号密码方式控制密码锁开合状态蓝牙控制受限情况够通机携带键密码输入控制密码锁开合具设计成低性高特点达设计求
    关键词:密码锁蓝牙收发模块STM32F4uCOSII系统智手机
    ABSTRACT

    With the development and progress of society intelligent household more and more to become the future development trend At present mechanical cipher lock is mainly to be used on the market to a certain extent security is not high enough and the use of lack of humanization This thesis present an bluetooth remote control cipher lock system based on microcontroller which can allow users to control the password lock switch by mobile phone bluetooth and through the keys to unlock in the offline condition The system contains hardware module and software module The former contains the controller of electric lock and the controlled of clectric module and the latter contains data transmission and buletooth communication module The mainly functions contain bluetooth remote controller key password input electric controller etc Experiments show that the system can not only be controlled by bluetooth of smart phone but also can be controlled by key password The system has the characteristics of low cost high reliability and satisfies the design requirements
    Keywords Coded Lock Bluetooth Transceiver STM32F4 uCOSII Syestem
    Smart Phone
    目 录

    1 绪1
    11 课题意义1
    12 国外研究现状1
    13 研究容 2
    2 蓝牙遥控密码锁系统方案设计2
    21 系统总体功分析 2
    22 系统设计流程3
    23 系统功模块设计3
    24 系统工作流程5
    3 系统硬件设计6
    31 系统模块芯片特性6
    311 STM32F4微控制器芯片6
    312 MP2359电源芯片.9
    313 HC05蓝牙接收芯片10
    314 TLP5211光耦隔离芯片11
    315 GT9147触摸屏驱动芯片12
    32 板硬件电路设计12
    321 STM32系统设计12
    322 电源电路设计16
    323 蓝牙接收模块17
    324 TFT触摸屏模块18
    325 LED驱动电路20
    326 蜂鸣器驱动电路20
    327 干接点输出电路21
    328 干接点检测电路21
    4 系统软件设计22
    41 HC05通USART接口实现数接收22
    42 触摸屏驱动27
    43 脱机键盘C语言实现31
    44 系统运行状态指示模块46
    45 密码掉电存储47
    5 总结49
    参考文献52
    致谢53

    1 绪
    11 课题意义
    日常生活中锁广泛常锁具保证贵重物品家庭安全目提高安全性常见锁普通机械锁机械密码锁电磁卡锁指纹(虹膜)锁等普通机械锁极容易强行破坏安全系数高需携带钥匙生活带便机械密码锁然安全系数高造价相较高电磁卡锁磁卡信息极易受外界干扰失磁导致法开锁指纹(虹膜)锁然安全性会手指划伤虹膜充血等收限制生活提高时代进步类文明迈进研究种新型密码锁具高现实需求性
    21世纪科技蓬勃发展年代种高科技产品层出穷着通信技术计算机技术网络技术控制技术迅猛发展提高促家庭实现生活现代化居住环境舒适化安全化高科技已影响生活方方面面改变生活惯提高生活质量正居住环境智化舒适程度等求提高家居智化种形势应运生会智家居发展提供市场空间家居智化已成必然趋势智家居通物联网技术家中种设备(音频设备明系统窗帘控制空调控制安防系统数字影院系统网络家电)智家居系统细分致二十类:控制机智明系统电气控制系统家庭背景音乐家庭影院系统讲系统视屏监控防盗报警电锁门禁智窗帘暖通空调系统太阳节设备动抄表智家居软件家居布线系统家庭网络厨卫电视系统运动健康监测花草动浇灌宠物动物制
    文研究范围仅仅智家居系统中子系统电锁门禁目前言数越越赖手机特年轻甚手机离身基文设计款蓝牙遥控密码锁时具触摸键手机APP两种种开锁方式
    12 国外研究现状
    电子锁研究世纪30年代开始某特殊场合早应研究种锁初衷提高锁具安全性密码锁密码量机械锁配合避免钥匙仿制出现问题安全性提高前提需钥匙越越欣赏现代生活
    钥匙求钥匙形变成形安全求数量机械钥匙逐渐数量数字密码锁升值数字量更生物资料识系统取代特进入20世纪80年代着电子锁专集成电路出现电子锁体积缩性提高廉价产品开始出现电子锁进入众生活提供目前西方发达国家电子密码锁已广泛应智门禁系统中通种更加安全更加技术实现门窗理国电子密码锁成高应广泛希通努力电子密码锁国广泛应
    13 研究容
    文研究蓝牙遥控密码锁想融入智家居系统必具四点非常重功:
    ①稳定通信功
    ②设备足性功(脱机功)
    ③设备性化
    ④交互系统
    根文研究容文结构安排:
    第1章简介绍课题研究意义密码锁研究现状发展趋势简介绍文工作
    第2章确定系统设计方案分析系统设计总体功流程设计系统功模块
    第3章详细介绍系统硬件设计包括控制器板电控锁模块等
    第4章详细介绍系统软件设计包括ucosII单片机实时操作系统智手机指令发送app等
    第5章详细介绍实验情况基础蓝牙遥控密码锁系统进行总结未工作进行展

    2 蓝牙遥控密码锁系统方案设计
    21 系统总体功分析
    课题设计蓝牙遥控密码锁基单片机智电锁系统[1]作智家居系统子系统需具功:
    ①稳定通信功:指蓝牙密码锁够智家居控制终端系统进行稳定通信蓝牙密码锁够接受控制终端命令执行控制终端命令实现密码传输开关控制蓝牙协议采标准蓝牙通信协议确保系统扩充性扩展性保证厂商间系统兼容互联
    ②足性(脱机功)功:指控制终端系统种原(包括控制终端系统死机)法机系统正常通信情况蓝牙密码锁够通键盘密码方式进行开关需控制终端控制干预
    ③性化功:蓝牙密码锁终者广消费者专门电子工程师必须易功涉易接线必须傻瓜式操作必须键式
    ④交互系统:蓝牙遥控密码锁者需解密码锁状态密码锁开关状态密码输入位数密码回删重置密码系统需视化交互界面
    22 系统设计流程
    蓝牙遥控密码锁系统结构清晰方便系统进行调试改进系统采模块化设计思想分硬件设计软件设计两部分课题基研究步骤:
    ①翻阅量文献资料确定蓝牙遥控密码锁系统设计思路基实现方案
    ②选取系统设计中需元器件型号详细解产品规格
    ③解选控制器部资源结构掌握方法编程技巧
    ④查阅功模块器件相关资料解具体控制架构
    ⑤学ucosII单片机实时操作系统编写视化交互界面
    ⑥编译通程序载检测硬件电路进行模块调试
    ⑦模块调试通进行系统联调
    ⑧完成系统设计进行系统功测试
    23 系统功模块设计
    蓝牙遥控密码锁系统硬件设计分板设计干接点弱点控制模块两部分
    中两部分模块包含部分:
    ①微控制器模块:模块课题设计蓝牙遥控密码锁系统核心部分目前单片机种类较系统设计微控制器功复杂需高端ARM处理器时保证系统运行速度采51核单片机[1]选较先进ARM CortexM4核STM32F407单片机[2]拥丰富外设完全够满足次设计求利日产品升级需求成较低易产业化
    ②电源模块[2]:蓝牙遥控密码锁板需电源高效稳定5 V课题选DCDC芯片(MP2359)采DCDC芯片板系统供电范围十分宽(DC616 V供电)适应较范围供电电源耗电较情况课题触摸屏实时监测种供电方式够系统提供足够供电电流
    ③触摸屏模块:模块课题设计蓝牙遥控密码锁系统脱机核心部分系统ALIENTEK47寸TFTLCD模块带触摸屏[3]该电容触摸屏具手感需校准支持点触控透光性等优点密码锁系统家仅满足电容触摸屏环境求会提供较户体验
    ④蓝牙发送模块:课题设计蓝牙遥控密码锁系统实现通手机蓝牙控器发送数指令调试程中安卓手机蓝牙系统通安装Bluetooth Serial control APP完成蓝牙信号发送
    ⑤蓝牙接收模块:次设计需够蓝牙遥控控制窗帘开合利微控制器驱动蓝牙模块接收位机发送指令系统蓝牙接收模块选HC05嵌入式蓝牙串口通信模块采SPI通信非常易连接单片机
    ⑥蜂鸣器反馈模块:板接收遥控传信息会通声音形式接收状态反馈户显示出正常接收结果蜂鸣器特求系统设计板电源模块采5 V供电需选择5 V蜂鸣器
    ⑦干接点弱电控制模块:避免外接干接点影响系统功干接点模块采弱电控制采取隔离方式利光耦隔离继电器获电接点信号
    中光耦驱动器采TLP521芯片
    ⑧LED反馈模块[4]:户想较远方解密码锁开关状态时候通判断密码锁板面LED反馈灯颜色快速解密码锁状态LED特殊求系统设计板电源模块采5 V供电需选择5 VLED
    ⑨电控锁模块:系统设计程考虑功实现性电控锁选较济赛瑞XG03 DC12 V24 V电锁该电控锁模块通干接点弱点控制实现户根身实际求选电锁模块
    24 系统工作流程
    传统控制窗帘方式课题设计蓝牙遥控密码锁系统具两种控制方式:①蓝牙遥控控制电锁开关②脱机触摸键盘控制电锁开关两种方式均访问系统
    蓝牙遥控密码锁系统蓝牙遥控脱机键盘控制功通板部分设计实现实现参数设置远程通信功图21示蓝牙遥控密码锁板系统工作框架


    图21 蓝牙遥控密码锁系统板工作框架

    系统通高频率扫描系统获取蓝牙指令触摸屏指令控制信息根获信息利板部分微控制器STM32F4判断密码正确性正确产生干接点信号
    控制光耦继电器开闭选择连通驱动电源电控锁时户选择密码见见户修改密码

    3 系统硬件设计
    课题设计蓝牙遥控密码锁设计少硬件模块具体:①微控制器STM32F407芯片②MP2359电源芯片③蓝牙接收模块ATKHC05④光耦隔离芯片TLP5211⑤TFTLCD电容触摸屏驱动芯片
    面功模块芯片特性进行详细介绍分析
    31 系统模块芯片特性
    311 STM32F407微控制器芯片
    蓝牙遥控密码锁核心部分机部分微控制器目前单片机种类较系统设计微控制器功复杂需高端ARM处理器时保证系统运行速度采51核单片机选较先进ARM CortexM4[5]核STM32F407ZGT6单片机拥丰富外设完全够满足次设计求利日产品升级需求成较低易产业化系列芯片工作频率168 MHz嵌ARM CortexM4核置高速存储器种中高端32位微控制器STM32F407增强型系列芯片具省电模式保证低功耗应求包含512 K FLASH192K SRAM硬件FPU1216位定时器232位定时器包含许标准先进通信接口适合种应场合
    STM32F407系统包含CortexM4核系统32位层AHB总线矩阵构成实现部分互连:
    八条 控总线:CortexM4F核I总线D总线S总线DMA1存储总线DMA2存储总线DMA外设总线太网DMA总线USB OTG HS DMA总线
    七条控总线:部Flash ICode总线部Flash DCode总线部SRAM1(112 KB)辅助部SRAM(16 KB)辅助部SRAM3(64 KB)(仅适STM32F42xxxSTM32F43xxx器件)AHB1外设(外设AHBAPB总线桥APB外设)AHB2外设FSMC
    助总线矩阵实现控总线控总线访问样高速外设时运行期间系统实现发访问高效运行系统架构图31示


    图31 STM32F407系统结构

    STM32F407三种时钟源驱动系统时钟(SYSCLK):HSI振荡器时钟高速外部时钟信号(HSE)振荡器时钟PLL时钟图32示STM32F407时钟树HSI时钟信号部8 MHzRC振荡器产生HSEHSE外部晶体陶瓷谐振器两种时钟源产生部PLL倍频HSI RC输出时钟HSE晶体输出时钟

    图32 STM32F103时钟树

    STM32F4中五重时钟源HSIHSELSILSEPLL中PLL实际分两时钟源分PLL专PLL时钟频率分分高速时钟源低速时钟源五中HSIHSEPLL高速时钟LSI
    LSE低速时钟源分外部时钟源部时钟源外部时钟源外部通接晶振方式获取时钟源中HSELSE外部时钟源部时钟源
    该器件具两次级时钟源:①2 kHz低速部RC(LSI RC)该RC驱动独立门狗选择提供RTC停机机模式动唤醒②32768 kHz低速外部晶振(LSE晶振)驱动RTC时钟(RTCCLK)
    312 MP2359电源芯片
    蓝牙遥控密码锁板需电源5 V选MP2359开关电源芯片引脚图图33示


    图33 MP2359引脚图

    MC2359芯片输入电压范围6~16 V输出电压范围33 V输出电流达12 A工作频率高达14 MHz价格便宜实现电源降压满足板系统工作求降压电路图34示


    图34 MP2359降压电路

    降压电路工作程:
    ①较器反相输入端(脚5)通外接分压电阻R1R2监视输出电压Uo根公式Uo125(1+ R2R1)知道UoR1R2数值关果R1R2阻值变Uo保持稳定
    ②利部较器脚5部基准电压125 V进行较脚5电压值低125 V时较器输出跳变电压RS触发器S脚控制门开启Q端高电驱动T2导通T1导通电容Co充电Uo增加脚5电压值高125 V时RS触发器S脚控制门封锁Q端低电状态T2截止T1截止
    ③振荡器Ipk输入(脚7)监视开关T1峰值电流控制振荡器脉输出RS触发器Q端
    ④脚3外接振荡器需定时电容Co决定振荡器频率高低决定开关T1通断时间
    313 HC05蓝牙接收芯片
    ATKHC05模块ALIENTEK生成款高新体蓝牙串口模块种带蓝牙功电脑蓝牙机手机PDAPSP等智终端配该模块支持非常宽波特率范围:4800~1382400模块兼容5 V33 V单片机系统方便您产品进行连接非常灵活方便ATKHC05模块非常巧模块通6254 mm间距排针外部连接模块外观图35示


    图35 ATKHC05模块外观图

    314 TLP5211光耦隔离芯片
    蓝牙遥控密码锁采干接点弱点控制模块实现单片机低电压控制12 V外部驱动电源通断采光耦隔离芯片TLP5211实现电路隔离保护TLP5211引脚图图36示


    图36 TLP5211引脚图

    TLP5211控制光电耦合器件光电耦合器件广泛电脑终端系统控硅系统设备测量仪器家电等电路间信号传输前端负载完全隔离目增强安全性减电路干扰简化电路设计
    315 TFTLCD电容触摸屏驱动芯片
    GT9147采新电容检测技术置高性微信号检测电路解决LCD干扰模干扰问题软件算法方面专门基单层互容电气环境设计支持五点触控芯片原理图图37示


    图37 GT9147芯片原理图

    该芯片具众突出优点:置电容检测电路高性MPU电容屏传感器环境适应性(初始化动校准动温度补偿)先进通讯接口(标准IIC通讯接口)响应时间短单电源供电电源纹波支持种应开发工具(支持触摸屏模组参数侦测配置参数动生成触摸屏模组性综合测试工具模组量产测试工具控软件开发参考驱动)
    32 板硬件电路设计
    课题设计蓝牙遥控密码锁硬件部分功模块电路设计
    321 STM32系统设计
    STM32单片机系统包括:电源电路复位电路时钟电路BOOT电路SWD调试电路
    ①STM32电源电路
    系统中采单电源设计模拟电源数字电源相电源会相互干扰设计中必须采模拟电源数字电源隔离做法STM32电源电路分数字电源部分模拟电源部分中数字电源部分提供电源
    STM32部数字外设IO口SPI等外设模拟电源提供电源STM32部模拟外设ADC系统中利电感隔离数字电源模拟电源图38示


    图38 数字电源模拟电源隔离电路

    ②STM32复位电路
    确保微机系统中电路稳定工作需设计复位电路利电路恢复起始状态复位电路具三求:电路通电时马进行复位操作必时手动操作根程序者电路运行需动进行常见复位方式:手动钮复位电复位系统复位电路电复位工作供电电源475~525 VSTM32电复位电路图39示板电时电容充电NRST引脚保持低电定时间低电持续时间通电阻值1 k电容值01 μF控制进实现STM32复位


    图39 STM32电复位电路

    ③STM32时钟电路
    系统利单片机晶振提供基时钟信号般系统晶振保持部分步通信系统基频射频晶振通电子调整频率方法保持步STM32时钟高速时钟低速时钟构成中STM32部带高速RC低速RC振荡器部RC时钟稳定会影响STM32部外设条件允许情况量外部时钟设计中高速时钟外部晶振震荡电路图310示STM32时钟电路


    图310 STM32时钟电路

    ④STM32 BOOT电路
    STM32芯片置三种启动模式:户闪存(芯片置Flash)SRAM(芯片置RAM区存)系统存储器(芯片ROM区)STM32芯片两脚BOOT0BOOT1两脚芯片复位时电状态决定芯片复位区域开始执行程序图311示STM32BOOT电路户闪存启动正常工作模式:BOOT1xBOOT00厂家设置系统存储器启动模式:BOOT10BOOT01置SRAM启动调试模式:BOOT11BOOT01般置SRAM启动SRAM掉电数丢失数情况SRAM调试时障局部诊断写段程序加载SRAM中诊断板电路方法读写板FlashEEPRO等


    图311 STM32 BOOT电路

    ⑤STM32 JTAG调试接口
    JTAG(Joint Test Action Group联合测试行动组)种国际标准测试协议芯片部测试系统进行仿真调试目前数较复杂器件ARMDSPFPGA等含支持JTAG协议模块处理器标准JTAG接口4线:TMSTCKTDITDO分测试模式选择测试时钟测试数输入测试数输出目前JTAG接口连接两种标准14针接口20针接口里采标准JTAG接法开发板处理器般采标准4线JTAG接口包含TMSTCKTDITDO接口(引脚)包含nTRST(测试系统复位信号)接口STM32开发板板载标准20针JTAGSWD接口图312示


    图312 STM32 JTAG调试接口

    Jlink工具实现开发板处理器中程序调试(线)仿真开发板需建立20针排针JLink工具JTAG接口通排线连接排针然开发板处理器中关JTAG接口引出排针JTAG接口应引脚相连里采标准JTAG接法STM32SWD接口SWD需少两根线(SWCLKSWDIO)载调试代码串口载代码差
    ⑥STM32F407系统
    图313示STM32单片机系统电路模块

    图313 STM32系统

    322 电源电路设计
    线性电源优势结构相简单性相较高电流纹波率容易做较低维修较方便传统线性电源相开关电源效率高损耗较发热较低需体积重量非常散热器工作频率较高会电网周围设备造成干扰必须妥善处理问题实际电路中般开关电源电路线性电源电路组合图314示系统电源电路[7]


    图314 电源电路

    323 蓝牙接收模块
    ATKHC05模块ALIENTEK生产款高性体蓝牙串口模块种带蓝牙功电脑蓝牙机手机等智终端配模块兼容5 V33 V单片机系统应方便灵活模块原理图图315示


    图315 蓝牙接收模块原理图

    模块单片机连接少需4根线:VCCGNDTXDRXDVCCGND模块供电模块TXDRXD连接单片机RXDTXD模块兼容5 V 33 V单片机系统方便连接系统里面ATKHC05模块单片机系统典型连接方式图316示


    图316 ATKHC05 模块单片机系统连接图

    324 TFT触摸屏模块
    现智手机包括板电脑采电容屏作触屏电容屏利体感应进行触点检测控制需直接接触需轻微接触通检测感应电流定位触摸坐标
    ALIENTEK 43寸TFTLCD模块带触摸屏采电容式触摸屏面简介绍电容式触摸屏原理
    电容式触摸屏分两种:
    ①表面电容式触摸屏
    表面电容式触摸屏技术利ITO(铟锡氧化物种透明导电材料)导电膜通电场感应方式感测屏幕表面触摸行进行表面电容式触摸屏局限性识手指者次触摸
    ②投射电容式触摸屏
    种触摸屏传感器利触摸屏电极发射出静电场线般投射电容传感技术电容类型两种:电容交互电容
    电容称绝电容广采种方法电容通常指扫描电极构成电容玻璃表面ITO制成横扫描电极电极间构成电容两极手触摸笔触摸时候会联电容电路中该条扫描线总体电容量改变扫描时候控制IC次扫描横电极根扫描前电容变化确定触摸点坐标位置笔记电脑触摸输入板采种方式笔记电脑输入板采X*Y传感电极阵列形成传感格子手指触摸输入板时手指传感电极间产生量电荷采特定运算法处理行列传感器信号确定手指位置
    交互电容做跨越电容玻璃表面横ITO电极交叉处形成电容交互电容扫描方式扫描交叉处电容变化判定触摸点位置触摸时候会影响相邻电极耦合改变交叉处电容量交互电容扫面方法侦测交叉点电容值触摸电容变化需扫描时间电容扫描方式相长需扫描检测X*Y根电极目前智手机板电脑等触摸屏采交互电容技术ALIENTEK选择电容触摸屏采投射式电容屏(交互电容类型)面仅投射式电容屏作介绍透射式电容触摸屏采横两列电极组成感应矩阵感应触摸两交叉电极矩阵:X轴电极Y轴电极检测格感应单元电容变化图317示


    图317 投射式电容屏电极矩阵示意图

    示意图中电极实际透明里方便家理解图中XY轴透明电极电容屏精度分辨率XY轴通道数关通道数越精度越高电容触摸屏具手感需校准支持点触摸透光性等优点成高精度高抗干扰力差
    TFTLCD模块触摸屏总五根线STM32F4连接连接电路图图318示

    图318 TFTLCD模块连接图

    325 LED驱动电路
    户想较远方解密码锁开关状态时候通判断密码锁板面LED反馈灯颜色快速解密码锁状态LED特殊求系统设计板电源模块采33 V供电需选择33 VLED般采串接电阻方式限流控制LED亮度电路图319示


    图319 LED连接电路图

    326 蜂鸣器驱动电路
    板接收遥控传信息会通声音形式接收状态反馈户显示出正常接收结果蜂鸣器特求系统设计板电源模块采33 V供电需选择33 V蜂鸣器STM32单片机IO口驱动力限果IO口直接连接IO口法正常驱动蜂鸣器需增加功率放驱动蜂鸣器驱动蜂鸣器常见方式利三极驱动图320示利NPN三极驱动蜂鸣器

    图320蜂鸣器驱动电路

    327 干接点输出电路
    避免外接干接点影响系统功干接点模块采弱电控制采取隔离方式干接点信号种源开关信号常见实现方式利继电器开合继电器机械性碰触寿命限制继电器反应速度远半导体光耦继电器仅够实现干接点信号够实现良隔离保证电路稳定利光耦驱动器获电接点信号中光耦驱动器采TLP521芯片图321示干接点输出电路


    图321 干接点输出电路

    328 干接点检测电路
    单片机检测干接点信号干接点信号引入电信号利三极饱截止功实现干接点信号转化高低电利光耦驱动器够隔离外部电路保护部电路作系统中采光耦驱动器实现检测干接点信号

    图322 干接点检测电路

    图322示干接点信号检测电路2公端端子座13段断开时光耦3号引脚输出低电端子座132短接时应光耦3号引脚输出高电实现检测干接点信号

    4 系统软件设计
    软件部分包含:HC05通USART接口实现数接收触摸屏驱动脱机键盘C语言实现系统运行状态指示模块密码掉电存储
    41 HC05通USART接口实现数接收
    HC05蓝牙模块接收手机蓝牙发送指令发送单片机进行信息处理整程中采串行通信
    串行通信[6]指数位位串行序传送通信方式构成二进制代码序列1条信道位(码元)单位时间序位输入方式典型串行传输通常2根信号线构成包括数信号线时钟信号线数流方分分单工半双工全双工等3种方式数信号时钟信号步
    串行通信指数位位串行序传送通信方式构成二进制代码序列1条信道位(码元)单位时间序位输入方式典型串行传输通常2根信号线构成包括数信号线时钟信号线数流方分分单工半双工全双工等3种方式数信号时钟信号步否分步通信方式异步通信方式2种生活中通常称呼串行通信实UART接口通信种异步通信次设计中采种方式面介绍种通信方式重参数特率数位停止位奇偶校验
    ①特率:衡量通信速度参数②数位:衡量通信中实际数位参数③停止位:表示单包位④奇偶校验位:串口通信中种简单检错方式
    异步通信中传输1帧字符字符前面必须加起始位0面加停止位1种起止式通信方式字符间没固定间隔长度占传输时间求传送数量较场合速度慢异步数发送器先送出1起始位送出具定格式串行数位奇偶检验位停止位传送字符时应插入空闲位空闲位保持1接收端断检测线路状态数发送器发送1字符数时首先发送1起始位信号0数接收器检测0开始准备接收起始位表示字符传送开始时做步接收端时钟保证接收正确起始位面数位数位5678位数数位低位开始传送数位发送奇偶检验位占1位通信双方通信时须约定致奇偶校验位数位(没奇偶检验时)发送停止位停止位1位1位半2位定1停止位表示1字符数结束数接收器收停止位知道前符传送结束时接收字符做准备果收0信号表示新字符传送否表示目前通信结束
    异步通信数格式:①1位起始低电②58位数位接着起始位表示传送效数③1位奇偶检验位(加加)④1位1位半2位停止位高电
    字符起始位数位检验位停止位构成称1帧典型格式图41示


    图41 异步传送帧数格式

    STM32单片机台编写串口驱动程序较简单意法半导体公司提供STM32官方固件库编写STM32底层驱动需调固件库API函数[7]需操作复杂寄存器非常利项目开发利官方固件库十分流畅操作串口发送数次设计中需利串口发送字符串发送字符串较常方法利特殊字符特殊字符字符串结尾检测特殊字符时表明接收字符串完成利特殊字符发送字符串够完成字符串发送接收优点软件编写简单缺点特殊字符增加字符串额外长度数传输程中更加容易出现错误者特殊字符串引入必然导致特殊字符够作信息字符基缺点发送字符串应该方法次设计中字符串发送接收方法时间间隔处理具体做法发送字符串字符间时间间隔10 ms通检测两字符接收间时间间隔否10 ms判断前接收字符否前字符串具体单片机操作方法利串口中断定时器发送字符串较简单字符串中字符次发送出接收字符串时利串口接收中断次串口接收中断接收字符添加字符串缓器中开启时间间隔10 ms定时中断果定时中断开清零定时器果10 ms定时中断发生表明次字符串接收完成USART数收发模块串口中段程序清单:
    void uart_init(u32 bound){
    GPIO端口设置
    GPIO_InitTypeDef GPIO_InitStructure
    USART_InitTypeDef USART_InitStructure
    NVIC_InitTypeDef NVIC_InitStructure
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOAENABLE)
    GPIOA时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1ENABLE)
    USART1时钟
    串口1应引脚复映射
    GPIO_PinAFConfig(GPIOAGPIO_PinSource9GPIO_AF_USART1)
    GPIOA9复USART1
    GPIO_PinAFConfig(GPIOAGPIO_PinSource10GPIO_AF_USART1)
    GPIOA10复USART1
    USART1端口配置
    GPIO_InitStructureGPIO_Pin GPIO_Pin_9 | GPIO_Pin_10

    GPIOA9GPIOA10
    GPIO_InitStructureGPIO_Mode GPIO_Mode_AF复功
    GPIO_InitStructureGPIO_Speed GPIO_Speed_50MHz 速度50MHz
    GPIO_InitStructureGPIO_OType GPIO_OType_PP 推挽复输出
    GPIO_InitStructureGPIO_PuPd GPIO_PuPd_UP 拉
    GPIO_Init(GPIOA&GPIO_InitStructure) 初始化PA9PA10

    USART1 初始化设置
    USART_InitStructureUSART_BaudRate bound波特率设置
    USART_InitStructureUSART_WordLength USART_WordLength_8b字长 8位数格式
    USART_InitStructureUSART_StopBits USART_StopBits_1停止位
    USART_InitStructureUSART_Parity USART_Parity_No奇偶校验位
    USART_InitStructureUSART_HardwareFlowControl USART_HardwareFlowControl_None硬件数流控制
    USART_InitStructureUSART_Mode USART_Mode_Rx | USART_Mode_Tx
    收发模式
    USART_Init(USART1 &USART_InitStructure) 初始化串口1
    USART_Cmd(USART1 ENABLE) 串口1
    USART_ClearFlag(USART1 USART_FLAG_TC)
    #if EN_USART1_RX
    USART_ITConfig(USART1 USART_IT_RXNE ENABLE)开启相关中断
    Usart1 NVIC 配置
    NVIC_InitStructureNVIC_IRQChannel USART1_IRQn串口1中断通道
    NVIC_InitStructureNVIC_IRQChannelPreemptionPriority3抢占优先级3
    NVIC_InitStructureNVIC_IRQChannelSubPriority 3 子优先级3
    NVIC_InitStructureNVIC_IRQChannelCmd ENABLE IRQ通道

    NVIC_Init(&NVIC_InitStructure) 根指定参数初始化VIC寄存器
    #endif
    }
    void USART1_IRQHandler(void) 串口1中断服务程序
    {
    #ifdef OS_TICKS_PER_SEC 果时钟节拍数定义说明ucosII
    OSIntEnter()
    #endif
    if(USART_GetITStatus(USART1 USART_IT_RXNE) RESET) 接收中断
    {
    Res USART_ReceiveData(USART1)(USART1>DR)
    读取接收数
    if((USART_RX_STA&0x8000)0)接收未完成
    {
    if(USART_RX_STA&0x4000)接收0x0d
    {
    if(Res0x0a)USART_RX_STA0接收错误重新开始
    else USART_RX_STA|0x8000 接收完成
    }
    else 没收0X0D
    {
    if(Res0x0d)USART_RX_STA|0x4000
    else
    {
    USART_RX_BUF[USART_RX_STA&0X3FFF]Res
    USART_RX_STA++
    if(USART_RX_STA>(USART_REC_LEN1))USART_RX_STA0接收数错误重新开始接收
    }
    }
    }
    }
    42 触摸屏驱动
    系统脱机情况采触摸屏方式进行交互里先驱动触摸屏HARDWARE文件夹新建TOUCH文件夹然新建touchctouchhctiiccctiichott2001acott2001ahgt9147cgt9147h等八文件存放触摸屏相关代码时引入源文件工程HARDWARE分组TOUCH文件夹加入头文件包含路径中touchctouchh电阻触摸屏部分代码带兼电容触摸屏理控制电容触摸屏部分代码
    开touchc文件里面触摸屏相关代码(电阻触摸屏代码)里全部贴出仅介绍重函数
    触摸屏驱动程序清单:
    电容触摸芯片IIC接口初始化
    void CT_IIC_Init(void)
    {
    GPIO_InitTypeDef GPIO_InitStructure
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_G PIOF ENABLE)GPIOBF时钟

    GPIO_InitStructureGPIO_Pin GPIO_Pin_0PB0设置推挽输出
    GPIO_InitStructureGPIO_Mode GPIO_Mode_OUT输出模式
    GPIO_InitStructureGPIO_OType GPIO_OType_PP推挽输出
    GPIO_InitStructureGPIO_PuPd GPIO_PuPd_UP拉
    GPIO_Init(GPIOB &GPIO_InitStructure)初始化
    GPIO_InitStructureGPIO_Pin GPIO_Pin_11PF11设置推挽输出
    GPIO_InitStructureGPIO_Mode GPIO_Mode_OUT输出模式
    GPIO_Init(GPIOF &GPIO_InitStructure)初始化
    }
    产生IIC起始信号
    void CT_IIC_Start(void)
    {
    CT_SDA_OUT() sda线输出
    CT_IIC_SDA1
    CT_IIC_SCL1
    delay_us(30)
    CT_IIC_SDA0STARTwhen CLK is highDATA change form high to low
    CT_Delay()
    CT_IIC_SCL0钳住I2C总线准备发送接收数
    }
    产生IIC停止信号
    void CT_IIC_Stop(void)
    {
    CT_SDA_OUT()sda线输出
    CT_IIC_SCL1
    delay_us(30)
    CT_IIC_SDA0STOPwhen CLK is high DATA change form low to high
    CT_Delay()
    CT_IIC_SDA1发送I2C总线结束信号
    }
    等应答信号
    返回值:1接收应答失败
    0接收应答成功
    u8 CT_IIC_Wait_Ack(void)
    {
    u8 ucErrTime0
    CT_SDA_IN() SDA设置输入
    CT_IIC_SDA1
    CT_IIC_SCL1
    CT_Delay()
    while(CT_READ_SDA)
    {
    ucErrTime++
    if(ucErrTime>250)
    {
    CT_IIC_Stop()
    return 1
    }
    CT_Delay()
    }
    CT_IIC_SCL0时钟输出0
    return 0
    }
    产生ACK应答
    void CT_IIC_Ack(void)
    {
    CT_IIC_SCL0
    CT_SDA_OUT()
    CT_Delay()
    CT_IIC_SDA0
    CT_Delay()
    CT_IIC_SCL1
    CT_Delay()
    CT_IIC_SCL0
    }
    产生ACK应答
    void CT_IIC_NAck(void)
    {
    CT_IIC_SCL0
    CT_SDA_OUT()
    CT_Delay()
    CT_IIC_SDA1
    CT_Delay()
    CT_IIC_SCL1
    CT_Delay()
    CT_IIC_SCL0
    }
    IIC发送字节
    返回机应答
    1应答
    0应答
    void CT_IIC_Send_Byte(u8 txd)
    {
    u8 t
    CT_SDA_OUT()
    CT_IIC_SCL0拉低时钟开始数传输
    CT_Delay()
    for(t0t<8t++)
    {
    CT_IIC_SDA(txd&0x80)>>7
    txd<<1
    CT_IIC_SCL1
    CT_Delay()
    CT_IIC_SCL0
    CT_Delay()
    }
    }
    读1字节ack1时发送ACKack0发送nACK
    u8 CT_IIC_Read_Byte(unsigned char ack)
    {
    u8 ireceive0
    CT_SDA_IN()SDA设置输入
    delay_us(30)
    for(i0i<8i++ )
    {
    CT_IIC_SCL0
    CT_Delay()
    CT_IIC_SCL1
    receive<<1
    if(CT_READ_SDA)receive++
    }
    if (ack)CT_IIC_NAck()发送nACK
    else CT_IIC_Ack() 发送ACK
    return receive
    }
    43 脱机键盘C语言实现
    密码锁手机蓝牙连接出现问题时采机带触摸键盘解锁面软件实现触摸键盘界面键检测软件抖应功代码执行
    开机进入介绍页面触摸屏幕意位置进入密码输入界面循环检测触摸屏满足应区域触摸执行相应代码[8]脱机键盘程序清单:
    void menu(void) 创建键界面
    {
    int ij
    LCD_Clear(LGRAY)
    POINT_COLORRED
    BACK_COLORLGRAY
    LCD_ShowString(55104001616School of Electronic and Electrical Engineering)
    Show_Str_Mid(15650蓝牙遥控密码锁2424)
    LCD_ShowString(280902001616 MrL)
    POINT_COLORGREEN
    LCD_Fill(140150340200WHITE) 输入框
    POINT_COLORRED
    Show_Str_Mid(204163请输入2424)
    for(i0i<4i++) 键盘创建
    {
    for(j0j<3j++)
    {
    LCD_Fill(10+j*155300+i*125160+j*155420+i*125LIGHTBLUE)
    }
    }
    BACK_COLORLIGHTBLUE
    POINT_COLORWHITE
    LCD_ShowNum(2347230124)
    for(i0i<3i++)
    {
    for(j0j<3j++)
    {
    LCD_ShowNum(79+j*155348+i*125i*3+j+1124)
    }
    }
    Show_Str_Mid(61723回删2424)
    Show_Str_Mid(371723确认2424)
    POINT_COLORGRAYBLUE
    BACK_COLORLGRAY
    LCD_ShowString(68240303024Res)
    LCD_ShowString(2002401003024Visible)
    POINT_COLORRED
    LCD_ShowString(371240503024Lock)
    }

    void main_task(void *pdata)
    { u8 t0
    u8 i0j0
    u16 lastpos[5][2] 次数
    Bit0
    Res100
    Firstmenu()
    while(firstmenu1) 显示初始界面 点击意位置进入
    {
    tp_devscan(0)
    lastpos[t][0] tp_devx[t]
    lastpos[t][1] tp_devy[t]
    if(lastpos[t][0]<500||Res<50)
    {
    firstmenu0
    key0
    Res100
    }
    delay_ms(50)
    }
    delay_ms(300)
    menu()
    while(1)
    {
    BACK_COLORWHITE
    POINT_COLORRED
    tp_devscan(0)
    lastpos[t][0] tp_devx[t]
    lastpos[t][1] tp_devy[t]
    LCD_ShowxNum(30240lastpos[t][0]10160)
    LCD_ShowxNum(30270lastpos[t][1]10160)
    LCD_ShowxNum(30200Bit10160)
    LCD_ShowxNum(300200Bit010160)
    LCD_ShowxNum(30150Res10160)
    LCD_ShowxNum(3050ResSet10160)
    if(lastpos[t][0]>500)
    {
    key1
    }
    if(key1) 数字判
    {
    if((lastpos[t][0]>10&&lastpos[t][0]<160&&lastpos[t][1]>300&&lastpos[t][1]<420||Res1)&&Bit<8&&Bit0<8) 1
    {
    key0
    Res100
    if(ResSet1)
    {
    Password[Bit]1
    ShowPassword()
    Bit++
    }
    else
    {
    TEXT_Buffer[Bit0]1
    ShowPasswordRes()
    Bit0++
    }
    }
    else if((lastpos[t][0]>165&&lastpos[t][0]<315&&lastpos[t][1]>300&&lastpos[t][1]<420||Res2)&&Bit<8&&Bit0<8)2
    {
    key0
    Res100
    if(ResSet1)
    {
    Password[Bit]2
    ShowPassword()
    Bit++
    }
    else
    {
    TEXT_Buffer[Bit0]2
    ShowPasswordRes()
    Bit0++
    }
    }
    else if((lastpos[t][0]>320&&lastpos[t][0]<470&&lastpos[t][1]>300&&lastpos[t][1]<420||Re
    s3)&&Bit<8&&Bit0<8)3
    {
    key0
    Res100
    if(ResSet1)
    {
    Password[Bit]3
    ShowPassword()
    Bit++
    }
    else
    {
    TEXT_Buffer[Bit0]3
    ShowPasswordRes()
    Bit0++
    }
    }
    else if((lastpos[t][0]>10&&lastpos[t][0]<160&&lastpos[t][1]>425&&lastpos[t][1]<545||Res4)&&Bit<8&&Bit0<8)4
    {
    key0
    Res100
    if(ResSet1)
    {
    Password[Bit]4
    ShowPassword()
    Bit++
    }
    else
    {
    TEXT_Buffer[Bit0]4
    ShowPasswordRes()
    Bit0++
    }
    }
    else if((lastpos[t][0]>165&&lastpos[t][0]<315&&lastpos[t][1]>425&&lastpos[t][1]<545||Res5)&&Bit<8&&Bit0<8)5
    {
    key0
    Res100
    if(ResSet1)
    {
    Password[Bit]5
    ShowPassword()
    Bit++
    }
    else
    {
    TEXT_Buffer[Bit0]5
    ShowPasswordRes()
    Bit0++
    }
    }
    else if((lastpos[t][0]>320&&lastpos[t][0]<470&&lastpos[t][1]>425&&lastpos[t][1]<545||Res6)&&Bit<8&&Bit0<8)6
    {
    key0
    Res100
    if(ResSet1)
    {
    Password[Bit]6
    ShowPassword()
    Bit++
    }
    else
    {
    TEXT_Buffer[Bit0]6
    ShowPasswordRes()
    Bit0++
    }
    }
    else if((lastpos[t][0]>10&&lastpos[t][0]<160&&lastpos[t][1]>550&&lastpos[t][1]<670||Res7)&&Bit<8&&Bit0<8)7
    {
    key0
    Res100
    if(ResSet1)
    {
    Password[Bit]7
    ShowPassword()
    Bit++
    }
    else
    {
    TEXT_Buffer[Bit0]7
    ShowPasswordRes()
    Bit0++
    }
    }
    else if((lastpos[t][0]>165&&lastpos[t][0]<315&&lastpos[t][1]>550&&lastpos[t][1]<670||Res8)&&Bit<8&&Bit0<8)8
    {
    key0
    Res100
    if(ResSet1)
    {
    Password[Bit]8
    ShowPassword()
    Bit++
    }
    else
    {
    TEXT_Buffer[Bit0]8
    ShowPasswordRes()
    Bit0++
    }
    }
    else if((lastpos[t][0]>320&&lastpos[t][0]<470&&lastpos[t][1]>550&&lastpos[t][1]<670||Res9)&&Bit<8&&Bit0<8)9
    {
    key0
    Res100
    if(ResSet1)
    {
    Password[Bit]9
    ShowPassword()
    Bit++
    }
    else
    {
    TEXT_Buffer[Bit0]9
    ShowPasswordRes()
    Bit0++
    }
    }
    else if((lastpos[t][0]>165&&lastpos[t][0]<315&&lastpos[t][1]>675&&lastpos[t][1]<795||Res23)&&Bit<8&&Bit0<8)0
    {
    key0
    Res100
    if(ResSet1)
    {
    Password[Bit]0
    ShowPassword()
    Bit++
    }
    else
    {
    TEXT_Buffer[Bit0]0
    ShowPasswordRes()
    Bit0++
    }
    }
    else if((lastpos[t][0]>10&&lastpos[t][0]<160&&lastpos[t][1]>675&&lastpos[t][1]<795||Res16)&&(Bit>0||Bit0>0))回删
    {
    key0
    Res100
    if(ResSet1)
    {
    Bit
    ShowPassword1()

    }
    else
    {
    Bit0
    ShowPasswordRes1()
    }
    }
    else if(lastpos[t][0]>320&&lastpos[t][0]<470&&lastpos[t][1]>675&&lastpos[t][1]<795||Res18)确认
    {
    key0
    Res100
    if(ResSet1)
    {
    result1
    if(BitBitRirht)
    {
    result0
    }
    for(i0i {
    if(datatemp[i]Password[i])
    {
    result0
    break
    }
    }
    LCD_ShowxNum(30400result10160)
    if(result1)
    {
    if(ResSetnow1)
    {
    BEEP1
    delay_ms(60)
    BEEP0
    delay_ms(60)
    BEEP1
    delay_ms(60)
    BEEP0
    Bit0
    LCD_Fill(140150340200WHITE)
    Show_Str_Mid(192163密码正确2424)
    delay_ms(600)
    LCD_Fill(140150340200WHITE)
    Show_Str_Mid(168163输入重置密码2424)
    ResSet1
    }
    else
    {
    BEEP1
    delay_ms(60)
    BEEP0
    delay_ms(60)
    BEEP1
    delay_ms(60)
    BEEP0
    Bit0
    Lock1
    POINT_COLORGRAYBLUE
    BACK_COLORLGRAY
    LCD_ShowString(371240503024Lock)
    POINT_COLORRED
    BACK_COLORWHITE
    LCD_Fill(140150340200WHITE)
    Show_Str_Mid(192163密码正确2424)
    }
    }
    if(result0)
    {
    POINT_COLORRED
    BACK_COLORWHITE
    LCD_Fill(140150340200WHITE)
    BEEP1
    Show_Str_Mid(192163密码错误2424)
    delay_ms(60)
    BEEP0
    LCD_Fill(140150340200WHITE)
    delay_ms(60)
    BEEP1
    Show_Str_Mid(192163密码错误2424)
    delay_ms(60)
    BEEP0
    LCD_Fill(140150340200WHITE)
    delay_ms(60)
    BEEP1
    Show_Str_Mid(192163密码错误2424)
    delay_ms(60)
    LCD_Fill(140150340200WHITE)
    BEEP0
    Bit0
    LCD_Fill(140150340200WHITE)
    Show_Str_Mid(192163密码错误2424)
    delay_ms(500)
    LCD_Fill(140150340200WHITE)
    Show_Str_Mid(204163请输入2424)
    }
    }
    else
    {
    POINT_COLORRED
    BACK_COLORWHITE
    TEXT_Buffer[8]Bit0
    LCD_Fill(140150340200WHITE)
    Show_Str_Mid(192163正重置2424)

    STMFLASH_Write(FLASH_SAVE_ADDR(u32*)TEXT_BufferSIZE)
    ReadPassword()
    LCD_Fill(140150340200WHITE)
    Show_Str_Mid(192163重置完成2424)
    提示传送完成
    BEEP1
    delay_ms(60)
    BEEP0
    delay_ms(60)
    BEEP1
    delay_ms(60)
    BEEP0
    delay_ms(60)
    BEEP1
    delay_ms(60)
    BEEP0
    delay_ms(60)
    BEEP1
    delay_ms(60)
    BEEP0
    POINT_COLORGRAYBLUE
    BACK_COLORLGRAY
    LCD_ShowString(68240303024Res)
    ResSet0
    Bit0
    Bit00
    ResSetnow0
    delay_ms(500)
    LCD_Fill(140150340200WHITE)
    POINT_COLORRED
    BACK_COLORWHITE
    Show_Str_Mid(204163请输入2424)
    }

    }
    else if(lastpos[t][0]>50&&lastpos[t][0]<100&&lastpos[t][1]>230&&lastpos[t][1]<274||Res22)重置
    {
    ResSetnow1
    key0
    Res100
    Bit0
    Bit00
    LCD_Fill(140150340200WHITE)
    POINT_COLORGREEN
    BACK_COLORLGRAY
    LCD_ShowString(68240303024Res)
    POINT_COLORRED
    BACK_COLORWHITE
    Show_Str_Mid(168163输入前密码2424)
    }
    else if((lastpos[t][0]>350&&lastpos[t][0]<410&&lastpos[t][1]>230&&lastpos[t][1]<274||Res24)&&Lock1)锁
    {
    key0
    Res100
    Lock0
    LCD_Fill(140150340200WHITE)
    BEEP1
    delay_ms(60)
    BEEP0
    POINT_COLORRED
    BACK_COLORLGRAY
    LCD_ShowString(371240503024Lock)
    Show_Str_Mid(204163请输入2424)
    }
    else if(lastpos[t][0]>150&&lastpos[t][0]<300&&lastpos[t][1]>230&&lastpos[t][1]<274||Res25)Visible
    {
    key0
    Res100
    VisibleVisible
    if(Visible1)
    {
    POINT_COLORGRAYBLUE
    BACK_COLORLGRAY
    LCD_ShowString(2002401003024Visible)
    }
    else
    {
    POINT_COLORRED
    BACK_COLORLGRAY
    LCD_ShowString(2002401003024Visible)
    }
    if(ResSet1)
    {
    POINT_COLORRED
    BACK_COLORWHITE
    ShowPassword1()
    }
    else
    {
    POINT_COLORRED
    BACK_COLORWHITE
    ShowPasswordRes1()
    }
    }
    delay_ms(10)
    }
    }
    }
    44 系统运行状态指示模块
    机系统开机直工作设定系统运行程中绿色指示灯持续闪烁LED持续闪烁表示系统运行停止闪烁表示系统运行卡顿程序跑飞系统运行状态指示程序清单:
    void LED_Init(void)
    {
    GPIO_InitTypeDef GPIO_InitStructure

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF ENABLE)GPIOF时钟

    GPIOF9F10初始化设置
    GPIO_InitStructureGPIO_Pin GPIO_Pin_9 | GPIO_Pin_10LED0LED1应IO口
    GPIO_InitStructureGPIO_Mode GPIO_Mode_OUT普通输出模式
    GPIO_InitStructureGPIO_OType GPIO_OType_PP推挽输出
    GPIO_InitStructureGPIO_Speed GPIO_Speed_100MHz100MHz
    GPIO_InitStructureGPIO_PuPd GPIO_PuPd_UP拉
    GPIO_Init(GPIOF &GPIO_InitStructure)初始化GPIO
    GPIO_SetBits(GPIOFGPIO_Pin_9 | GPIO_Pin_10)GPIOF9F10设置高灯灭
    }

    void led_task(void *pdata)
    {
    while(1)
    {
    LED0Lock
    delay_ms(300)
    }
    }
    45 密码掉电存储
    设备家居设备避免长期出门问题设备长时间需时候工作整天出差断开设备电源省电安全里设计密码锁原始密码户设定新密码存储部FLASH已保证断电重启密码保持变
    说STM32FLASH第反应装程序实际STM32片FLASH仅装程序装芯片配置芯片ID举程序等等然FLASH装数根途STM32片FLASH分成两部分:存储块信息块
    存储块存储程序般程序存储里信息块分成两部分:系统存储器选项字节
    系统存储器存储存放系统存储器举模式启动程(BootLoader)ISP方式加载程序[9]时程序执行区域芯片厂写入BootLoader然锁死户法改变区域选项字节存储芯片配置信息存储块保护信息掉电存储程序清单:
    u32 STMFLASH_ReadWord(u32 faddr)
    {
    return *(vu32*)faddr
    }
    获取某址flash扇区
    addrflash址
    返回值0~11addr扇区
    uint16_t STMFLASH_GetFlashSector(u32 addr)
    {
    if(addrelse if(addrelse if(addrelse if(addrelse if(addrelse if(addrelse if(addrelse if(addrelse if(addrelse if(addrelse if(addrreturn FLASH_Sector_11
    }
    void STMFLASH_Write(u32 WriteAddru32 *pBufferu32 NumToWrite)
    {
    FLASH_Status status FLASH_COMPLETE
    u32 addrx0
    u32 endaddr0
    if(WriteAddrFLASH_Unlock() 解锁
    FLASH_DataCacheCmd(DISABLE)FLASH擦期间必须禁止数缓存
    addrxWriteAddr
    endaddrWriteAddr+NumToWrite*4
    if(addrx<0X1FFF0000)
    {
    while(addrx {
    if(STMFLASH_ReadWord(addrx)0XFFFFFFFF)
    {
    statusFLASH_EraseSector(STMFLASH_GetFlashSector(addrx)VoltageRange_3)
    if(statusFLASH_COMPLETE)break
    }else addrx+4
    }
    }
    if(statusFLASH_COMPLETE)
    {
    while(WriteAddr {
    if(FLASH_ProgramWord(WriteAddr*pBuffer)FLASH_COMPLETE)
    {
    break 写入异常
    }
    WriteAddr+4
    pBuffer++
    }
    }
    FLASH_DataCacheCmd(ENABLE) FLASH擦结束开启数缓存
    FLASH_Lock()锁
    }

    5 总结
    智锁系统必成智家居中子系统智锁未发展趋势课题设计种基STM32单片机智手机智锁系统搭载UCOS实时操作系统[10]实现密码锁智化
    文研究蓝牙遥控密码锁系统实现四种功:①手机APP控制电锁②脱机键盘控制电锁③电锁密码断电存储④电锁密码更新图51示蓝牙遥控密码锁机实物图


    图51 蓝牙遥控密码锁机实物图

    蓝牙遥控密码锁机蓝牙接收模块HC05图矩形方框标出蓝牙指令智手机APP发送然该模块接收数交机处理
    蓝牙遥控密码锁机起始页面图52示起始页面展示作品基信息户通触摸屏幕意位置进入密码输入界面


    图52 蓝牙遥控密码锁机起始页面


    图53示蓝牙遥控密码锁机机交互界面系统中输入密码解锁通点击Visible设置密码输入程中字符见性户选择前已输入密码否见Lock颜色标示着锁前开关状态通点击锁点击Res重置密码重置密码前必须正确输入前密码

    图53 蓝牙遥控密码锁机机交互界面

    手机APP指令发送界面图54示指令系统述脱机键盘功致


    图54 手机APP指令发送界面
    参考文献:
    [1] 李德俊 罗维 单片机原理应[M] 武汉 华中科技学出版社 2012
    [2] 华成英 童诗白 模拟电子技术基础[M] 北京 高等教育出版社 2006
    [3] 阎石 数字电子技术基础[M] 北京 高等教育出版社 2005
    [4] 邱关源 电路(第五版)[M] 北京 高等教育出版社 2006
    [5] Joseph Yiu ARM CortexM3权威指南[M] 北京 北京航空航天学出版社 2009
    [6] 樊昌信 曹丽娜 通信原理[M] 北京 国防科技学 2006
    [7] 蒙博宇 STM32学笔记[M] 北京 北京航空航天学出版社 2012
    [8] 谭浩强 C程序设计(第4版)[M] 北京 清华学出版社 2010
    [9] 谭浩强 C++程序设计(第二版)[M] 北京 北京清华学出版社 2011
    [10] 左忠凯 STM32F4 UCOS开发手册[M] 深圳 深圳学出版社 2004
    致 谢
    伴着毕业答辩告学生活衷感谢学老师学朋友感谢位伴着成长高兴分享精彩四年
    感谢毕业文指导老师XX老师辛勤指导整毕业设计程中帮助严谨治学态度求真务实工作作风学生涯着深远影响
    感谢起实验室学伙伴回想起奋斗日日夜夜起收获成功喜悦难忘
    感谢评审文位专家老师感谢文力支持


    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 10 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    手机蓝牙遥控小车设计毕业论文

     XX 学 院 本科生毕业设计(论文) 学 院: 电子与电气工程学院 专 业: 电气工程及其自动化 学 生: ...

    5年前   
    2162    0

    基于单片机的电子密码锁设计毕业设计

     ####工业大学城市学院 毕业设计说明书 作 者: 李xx 学 号: 09xx 系: 信息工程 ...

    5年前   
    1430    0

    智能遥控窗帘系统设计毕业设计

     毕业设计 题 目 智能...

    5年前   
    1374    0

    电动遥控百叶窗设计毕业设计

    编号:  毕业设计说明书 题 目: 电动遥控百叶窗 摘 要 ...

    5年前   
    856    0

    蓝牙测试标准

    标题蓝牙测试项目和限值内容 本文档描述了蓝牙模块的测试项目和限值,符合蓝牙标准1.2。DIFFUSION

    4年前   
    559    0

    红外遥控电路设计

    摘 要 随着科学技术的飞速发展,信息的飞快传播,红外遥控在人们的生活中已经成为不可或缺的部分。本文重点介绍了利用单片机AT89S52和AT89C2051实现红外发射和接收电路的设计方法...

    5年前   
    1264    0

    基于蓝牙的考勤系统

     基于蓝牙的考勤系统-用户界面设计 基于蓝牙的考勤系统 摘 要随着教育的普及,大学生的数量也越来越多。不同于初高中的管理,大学更偏向于自主学习。且高校流行选分制度班级流动性...

    2年前   
    497    0

    数字电子密码锁课程设计

    课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 《数字电子密码锁》 ...

    3年前   
    572    0

    电子密码锁设计方案

    密码锁设计方案第一部分:课题背景描述l 课题来源:课题思路来源于本次大赛的参考题目l 市场分析:电子密码锁是一种通过单片机来控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简...

    1年前   
    375    0

    单片机红外遥控系统设计

     单片机红外遥控系统设计 摘要:本文设计了一种基于AT89S52单片机的红外遥控系统,可用于控制多种电器的开关,交流电机的转速及启停等方面。阐述了发射部分和接收部分的设计原理和工作...

    5年前   
    1112    0

    遥控社团课程设计

    课程名称:遥控社团教师: 附件二:一学期结束上交内容与实施(以一学期计算,约16--20课时,含报名选拔和期末的评价)课时主 要 内 容实施的简要流程1认识遥控车1.社员自我介绍2.认识遥控车...

    1年前   
    513    1

    遥控器操作说明(中文版)

    本产品为单机版高清广告机解码板,用于显示播放商业广告,强大的视频播放功能给您带来全高清体验;独有的全屏、自由分屏播放样式,横竖屏自由切换等功能给您带来极大的便利,是目前国内功能最全的高清广告机解决方案之一。

    5年前   
    2755    0

    遥控直升机飞行原理

    直升机飞行原理1.绪论本文的内容主要着重于飞行原理的介绍。首先介绍简单的旋翼切面原理,其次则为动量理论(momentum theory)及旋翼元素理论(blade element theory...

    2年前   
    737    0

    遥控直升机飞行练习

    直升机飞行教学  遥控飞机是无法在短时间内学好的,但也正因为如此才有它的趣味性,不论如何不要想太多,当你学会飞行时,你一定觉得比想象中的简单。   第一章 从“青蛙跳”开始  一、找一位好老师...

    2年前   
    477    0

    电线电缆毕业设计毕业设计

    专科学校 毕业设计论文 论文题目:WDZB-YJY 8.7/10 3X95 电缆结构设计及阻燃实验 系 部: 电气工程系 专 业:电线电缆制造技术 班 ...

    5年前   
    1291    0

    蓝牙耳机合作招商计划书

    蓝牙耳机合作招商计划书 一、 企业概况 北京XX商贸有限公司是集电脑软件和通讯器材研究开发及销售一体的商贸有限责任公司。公司自成立以来,始终致力于蓝牙科技的开发、推广及应用,以普及蓝牙技术...

    9年前   
    29041    0

    基于蓝牙技术的照明控制系统

    摘要: 随着21世纪信息时代的互联网应用技术和互相联系应用技术的不断进步,家用的人工机械不是手动操控的化已经成为未来发展的必然趋势,人工机械不是手动操控的电灯光照亮作为人工机械不是手动操控的家用...

    4年前   
    838    0

    物业启用车辆蓝牙读卡新闻报道

    规范行车秩序 保障业主安全 ——物业启用车辆蓝牙读卡新闻报道  为给天泰城业主提供更加方便舒适的优质服务,加强天泰城进出车辆规范化管理,经业主委员会授权,天泰城物业服务中心对天泰城车行岗、...

    10年前   
    8627    0

    数字电子技术课程设计电子密码锁

    课程设计说明书课程名称: 数字电子技术课程设计 题 目: 电子密码锁 学生姓名: ...

    1年前   
    498    0

    毕业论文:基于plc的电子密码锁毕业论文设计

    本毕业设计介绍了可编程序控制器(PLC)和PLC控制系统的基本知识,包括PLC的定义、特点、分类、技术指标、基本结构、工作原理、硬件知识及PLC控制系统等相关知识。采用松下公司系列的PLC,设计...

    5年前   
    1824    0

    文档贡献者

    文***享

    贡献于2019-05-31

    下载需要 10 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档