《毕业论文-基于STC89C52单片机的智能灯光设计11872.doc》由会员分享,可在线阅读,更多相关《毕业论文-基于STC89C52单片机的智能灯光设计11872.doc(32页珍藏版)》请在三一文库上搜索。
1、新疆大学毕业论文(设计)目 录第一章 前言21.1 本课题的研究背景和意义21.2 本课题研究的主要内容21.3 本论文的主要内容及结构安排2第二章 系统设计3系统总体设计方案32.1 系统硬件设计32.2.1 主控板电路设计42.2.2 STC89C52简介42.2.3 检测模块的设计与选用42.2.4继电器输出模块52.2.5 nRF2401A无线射频模块62.2.6 基于MAX232与PC通讯82.3.1 遥控器的设计92.3.2 显示屏LCD160292.3.3 时钟芯片DS1302102.3.4 LM7805与AMS1084112.3.5 按键指示电路及实现122.4硬件设计开发13
2、2.4.1 开发环境protel99SE132.4.2 电路板的制作14第三章 程序的设计实现153.1 系统整体程序框架153.2.1 主控板程序设计163.2.2 灯光延时等待的设计与思考173.3.1 遥控器程序设计193.3.2 NRF2401A无线射频通讯的程序设计193.3.2 LCD1602显示模块的程序设计233.3.3 DS1302时钟芯片的设计263.4软件设计开发283.4.1 软件开发环境KeiluVision4简介283.4.2 KEIL的使用283.4.3单片机程序的烧写29第四章 调试结果30结束语311 绪论1.1 本课题的研究背景和意义随着科技的发展,和人们的
3、生活水平不断提高,居住环境的改善备受关注,于是家居智能化的快速兴起,满足人们对舒适,安全,便捷以及节能环保的时尚生活的追求。现阶段人类社会的进步越来越依赖于对能源的开发与利用,然而人们对能源无尽的需求量和有限的能源数量形成了不可抗拒的矛盾,能源匮乏不仅是我国所面临的危机,更是世界所面临的严峻考验。而中国是一个人口大国,家庭是其中最基本的一个组成单元,家庭照明占我国电能消耗的一大部分。管理好家庭灯光照明系统,不仅能减少电能的巨大浪费,优化我们的生活方式和居住环境,还能为我们提供优质、舒适、安全的生活空间。灯光的智能化是智能家居的重要组成部分,本文介绍了一种基于单片机和无线射频技术的的智能灯光控制
4、系统(增多)1.2 本课题研究的主要内容本设计所制作的智能灯光主要用来控制照明灯,通过检测室内有无人员和室内光线的强弱来控制照明灯的开启和关闭,以达到根据不同的环境,人们的不同需要实现室内不同位置的照明需求,并且可以通过遥控对室内的灯光进行控制,实现自动/手动切换,更加人性化的设计,让该系统有了更高的实用价值。该设计主要由主控板和遥控器组成,其中:主控板包括单片机控制模块、检测输入模块、射频通讯模块、PC上位机监控模块、驱动电路模块、继电器输出模块。遥控器包括单片机控制模块、无线射频模块、键盘模块、显示器模块。通过测试,系统稳定,能够根据外界环境的变化自动进行开关的控制。由于单片机的I/O口资
5、源丰富,可将后级扩展成多路自动开关,同时控制多路照明灯,使其应用于宾馆、学校、家庭等环境。所以该设计具有较广泛的应用前景。(合并)1.3 论文的主要内容及结构安排鉴于无线通讯与灯光智能系统的重要意义及单片机在该系统中的独特优势,本论文选择以单片机为核心,以红外感应与光强感应为被测量,开关按钮可切换状态,设计了智能灯光系统。不但实现了下位机对灯光的自动控制、实时监测与遥控器的通讯,还在此基础上实现了对时间的显示,操作系统的简便化,让系统更容易被用户使用。论文结构安排如下:第一章:智能灯光系统的普遍性性与研究现状,以及论文的主要内容与结构。第二章:总体设计方案与硬件设计,其中包括主控板和遥控器的设
6、计。第三章:主控板和遥控器的程序设计。第四章:调试结果。2 方案设计图2-1 系统总体设计方案系统总体设计方案如图2-1所示,单片机选用STC89C52,通过光强检测模块检测出外界光强,是否合适开灯,由红外检测模块检测是否有人进入房间,通过主控板的单片机进行控制。在主控板上有状态转换按键,通过按键控制各个房间的状态,是强制开/强制关/自动状态。主控板通过无线射频模块与遥控器通讯,给遥控器传送各个房间的状态信息,并且接收遥控器发来的控制信号。在遥控器上,把接收来的状态信号,将其通过LCD1602显示屏显示出来。用户在不去该房间的情况下监控房间灯光的状态,并且通过遥控器上的键盘进行控制。时钟模块将
7、当前时间发送给单片机,单片机再通过程序控制,将时间显示在显示屏上。2.1 系统硬件设计单片机选用的是STC89C52,光强检测模块采用光敏电阻实现,红外检测模块采用HC-SR501 人体红外感应模块,RS232通讯模块采用MAX232对信号转换,无线射频模块采用nRF2401A模块,显示屏使用LCD1602,时钟芯片使用DS1302,键盘使用可复位按键开关。2.2.1 主控板电路设计电路设计我用的是protel99绘制。由于光强检测和红外检测需要较大的空间,我将单片机P1口都接出来了外部接口,将其制作成方便安装的分离模块式。P0口主要功能是与nRF2401A无线射频模块相连。P2口我将其分成三
8、部分P2.0,P2.1,P2.2三个管脚我用它们作为继电器输出接口;P2.3,P2.4,P0.7作为各个房间的自动状态指示灯;P2.5,P2.6,P2.7采集主控板上按键信号,用于转换各个房间的控制状态。TXD和RXD两个管脚分别接MAX232芯片的R1_OUT和T1_IN位,作为单片机与PC通讯的接口。电路原理图如图2-2所示。图2-2 主控板总原理图2.2.2 STC89C52简介STC89C52是一种低功耗、高性能、价格低廉的CMOS8位微控制器,具有 8K 在系统可编程Flash 储存器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制
9、应用系统提供高灵活、超有效的解决方案。CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。其引脚图如图2-3所示。图2-3 STC89C52单片机2.2.3 检测模块的设计与选用1)光强检测模块光强检测模块采用的是光敏电阻5516,其亮电阻约5K,暗电阻约500K。将其与电阻串联,与三极管9014组成光强检测模块,工作电压为5V(如图2-4所示)。在光照下,其阻值迅速下降,三极管9014的基极电压升高,三极管导通,输出信号由高变低。当光照强度变暗后,光敏电阻的阻值升高,三极管基极电压降低, 图2-4 光强检测模块电路三级管截止,光强检测信号由低变高。 2)红外检测模块红外检测模块
10、采用封装好的红外热释传感器HC-SR501(图2-5),感应范围138*125,感应距离7m,工作温度-15+70。通过跳线将其触发模式调成可重复收发模式,接入工作电压+5V,将其信号端接入单片机端口。图2-5 红外传感器2.2.4继电器输出模块该系统采用的继电器为24V继电器,需要使用ULN2003将单片机输出的5V电压信号放大到24V驱动继电器工作。由于STC89C52单片机一般用并口进行编程,理论上可以直接用单片机的几根I/O口接并口线,但如果电路板没做好,可能会连带把计算机并口烧坏,所以要加个74HC244芯片隔离一下。(如图2-7所示)ULN2003是高耐压、大电流复合晶体管阵列,由
11、七个硅NPN 复合晶体管组成(图2-6)。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。由于ULN2003是一个非门电路,继电器线圈另一端接在+24V电源上,当+5V的控制信号传送到ULN2003中, 图2-6 ULN2003 ULN2003会输出一个低电平,让线圈吸合。74HC244是一个三态缓冲器,作为单片机输出缓冲作用。可以将单片机输出信号长时间保持。图2-7 继电器输出模块电路图2.2.5 nRF2401A无线射频模块作为
12、主控板与遥控器通讯的重要组成枢纽,无线射频模块,该系统选用的是nRF2401A无线射频模块,如图2-8所示。nRF2401A是挪威Nordic公司推出的2.4G单片无线射频收发芯片,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。该芯片具有接收灵敏度高、外围电路少、发射功率低、传输速率高、低功耗等优点。nRF2401 适用于多种无线通信的场合,如:无线鼠标、无心数据采集、小型无线网络、无线抄表、门禁系统、小区传呼、监控系统、非接触RF智能卡、无线遥控、无线音频/视频数据传输等。图2-8 nRF2401A引脚示意图nFR2401A引脚功能如表2
13、-1所示:表2-1 NRF2401A引脚功能表引脚名称引脚功能描述1VCC电源电源正极2VCC电源电源正极3GND电源电源地4PWR_UP数字输入芯片激活端5CE数字输入使nFR2401A工作于接收或发送状态6DR2数字输入频道2接收数据准备好7GND电源电源地8CLK2数字I/O频道2接收数据时钟输入/输出9GND电源电源地10DOUT2数字输出频道2接收数据11CS数字输入配置模式的片选端12DR1数字输入频道1接收数据准备好13GND电源电源地14CLK1数字I/O频道2接收数据时钟输入/输出15GND电源电源地16DATA数字I/O频道1接收/发送数据端nFR2401A的工作模式有配置
14、模式、收发模式、待机模式、关机模式四种。模式由主控芯片通过软件设置。芯片上电后,STC89C52通过接口将配置数据送入芯片,设置收发模式、收发频率、接收地址、发射功率、CRC校验和的长度、有效数据的长度等。传输中,只有地址,校验和匹配的数据包才能被进一步处理,产生中断信号。这时,S3C2440读取数据。在同一时刻nRF2401A只能处于接收或发送模式中的一种,一般以接收模式为待机状态。工作模式PWR_UPCECS收发模式110配置模式101空闲模式100关机模式0XXnRF2401A工作模式如表2-2所示:表2-2 nRF2401A工作模式该系统是用的是通道一,所以单片机接口只需接入PWR_U
15、P,CE,CS,CLK1四个控制位和数据位DATA1。同时将CLK2第二通道的脉冲输入信号接地,以防干扰。nRF2401A工作电压为+3.3V而单片机使用的是+5V的直流电源,所以使用AMS1084-3.3V降压芯片将+5V的直流电转换成+3.3V的直流电为nRF2401A供电。其外围电路如图2-9所示。图2-9 AMS1088-3.3V外围电路 图2-10 MAX2322.2.6 基于MAX232与PC通讯MAX232是一种把电脑的串行口rs232信号电平(-10 ,+10v)转换为单片机所用到的TTL信号点平(0 ,+5)的芯片, 使用+5v单电源供电,MAX232共16跟引脚,第一部分是
16、电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。其接线电路如图2-10所示。图2-11 MAX232周边电路在该系统中,MAX232分别连接着RS232串口和单片机的TXD,RXD位,使用的是通道1,即使用的输入输出的管脚是T1_OUT,T1
17、_IN,R1_OUT,R1_IN。周边电路如图2-11所示。2.3.1 遥控器的设计在遥控器的设计中,P0口外接一个排阻,排阻公共端接的是AMS1084-3.3V输出的+3.3V电源,主要控制nRF2401A无线射频模块,负责与主控板进行无线通讯;P1口连接的是LCD1602显示屏的8位数据位DB0-DB7,P3.4接LCD的E端(使能端),P3.5接LCD1602的R/W管脚,负责控制LCD1602的读写控制,P3.6接LCD1602的RS管脚,负责对寄存器的选择。同时,LCD1602的VSS位接地,VDD接LM7805提供的+5V电源。并且VEE外接一个电位器,控制背光亮度。单片机的P2.
18、1-P2.4分别接了四个低电平触发的按键,作为UP上翻,DOWN下翻,SWITCH切换,BACKLIGHT背光。P2.5-P2.7三位分别接入时钟芯片DS1302的SLCK,I/O,CE,作为读写时间的控制位和数据通道。同时单片机的TXD,RXD与MAX232相连,通过RS232串口与计算机通讯。总电路原理图如图2-12所示。图2-12 遥控器总电路原理图2.3.2 显示屏LCD16021602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有
19、间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。LCD1602功能管脚如表2-3所示:表2-3 LCD1602功能管脚第1脚VSS接电源地。第2脚VCC接+5V第3脚VEE背光对比度调整端第4脚RS寄存器选择端第5脚RW读写信号线第6脚E 使能端第714脚D0D7八位双向数据线第15-16脚15脚背光正极,16脚背光负极在设计中,我们将VCC和VSS分别接电源+5V和地,为LCD1602供电,在VEE端接了一个20K的变阻器到+5V电源,通过调整变阻器的阻值来调整LCD1602的对比度,当电压越高时对比度越弱,反之越强。RS寄存器选择端,RW读写信号线,E使能端这三位分
20、别接入单片机的P3.6,P3.5,P3.4。通过程序控制这三位控制位对LCD1602的读写操作。15脚和16脚主要是为LCD1602的背光供电,将其分别接入电源+5V和电源地。2.3.3 时钟芯片DS1302DS1302 是美国DALLAS公司推出地一种高性能、低功耗、带RAM的实时时钟电路,它能对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能。工作电压为2.5V5.5V,外接32.768MHz的晶振。采用三线接口与单片机进行同步通信,并可采用突发方式,一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的RAM寄存器,用于临时性存放数据。DS1302是DS1202的升级
21、产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。DS1302功能引脚如表2-4所示:表2-4 DS1302管脚功能管脚号管脚名称描述1VCC2主电源,使用+5V供电2XLAT132.768MHz晶振接口3XLAT2同上4GND电源地5CE复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。6I/O串行数据输入输出端(双向)。7SCLK时钟输入端8VCC1备用电源正极,可采用大电容或者电池供电。在该系统中,VCC2用LM7805提供的+5V电压供电,VCC1备用电源使用的是纽扣电池CR2016,提供的电压是+3V。I/O管脚接
22、单片机的P2.6脚,作为单片机对DS1302进行读写操作的数据通道,SCLK接入单片机P2.5口,作为单片机与DS1302的通讯时钟输入端,CE接入单片机P2.7口主要对DS1302发送片选信号。2.3.4 LM7805与AMS10841)LM7805应用图2-13 LM7805典型应用电路单片机电源电路的设计以三端集成稳压器LM7805为核心,它属于串联稳压电路,其工作原理与分立元件的串联稳压电源相同。图2-13是三端稳压集成电路LM7805的典型应用电路,三端集成稳压器设置的启动电路,在稳压电源启动后处于正常状态时,启动电路与稳压电源内部其他电路脱离联系,这样输入电压变化不直接影响基准电路
23、和恒流源电路,保持输出电压的稳定。电路中Ci的作用是消除输入连线较长时其电感效应引起的自激振荡,减小纹波电压,取值范围在0.1F1F之间,本文Ci选用0.33F;在输出端接电容Co是用于消除电路高频噪声,改善负载的瞬态响应,一般取0.1F左右,本文Co即选用0.1F。一般电容的耐压应高于电源的输入电压和输出电压。另外,为避免输入端断开时Co从稳压器输出端向稳压器放电,造成稳压器的损坏,在稳压器的输入端和输出端之间跨接一个二极管,对LM7805起保护作用。LM7805输入电压为8V到36V,最大工作电流1.5A,具有输入电压范围宽,工作电流大,输出精度高且工作及其稳定,外围电路简单等特点,太阳能
24、电池电压即使有较大的波动,也能稳定的输出5V电压,从而是单片机等控制电路正常工作,且成本低。2)AMS1084由于单片机、LCD、DS1302使用电压为+5V直流电,而NRF2401A射频使用电压为+3.3V+3.6V,所以需要将5V的直流电变压成3.3V为NRF2401A射频芯片供电,其接线图如图2-14所示图2-14 AMS1084-3.3V外部接线图2.3.5 按键指示电路及实现在单片机应用系统中,按键主要有两种形式:1、独立按键;2、矩阵编码键盘。独立按键的每个按键都单独接到单片机的一个I/O口上,独立按键则通过判断按键端口的电位即可识别按键操作;而矩阵键盘通过行列交叉按键编码进行识别
25、。通常所用的按键为轻触机械开关,正常情况下按键的接点是断开的,当我们按压按钮时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而机械触点在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性及操作人员按键动作决定,一般为5ms20ms;按键稳定闭合时间的长短是由操作人员的按键按压时间长短决定的,一般为零点几秒至数秒不等。在本设计中由于按键不是太多,故采用独立按键法,这样可以减小编程的难度,图2-15为本设计的按键接线图。图2-15 按键接线图2.4 硬件电路板制作2.4.1 开发环境protel99SE开发硬件设计主要使用的是pro
26、tel 99软件如图15所示,protel是Altium公司在80年代末推出的EDA软件,在电子行业的CAD软件中,它当之无愧地排在众多EDA软件的前面,是电子设计者的首选软件,它较早就在国内开始使用,在国内的普及率也最高,有些高校的电子专业还专门开设了课程来学习它,几乎所有的电子公司都要用到它,许多大公司在招聘电子设计人才时在其条件栏上常会写着要求会使用protel。Protel99 SE共分5个模块,分别是原理图设计、PCB设计(包含信号完整性分析)、自动布线器、原理图混合信号仿真、PLD设计。图2-16 protel工作空间界面首先进入protel新建一个工程,在菜单栏中的filenew
27、,然后选择路径和设定工程名称,单机OK,这样就成功的新建了一个工程。在右边会出现工作空间,单机右键new选择Schematic Document,这样就新建了一个电气原理图(如图2-16),修改原理图名称,然后进入原理图,绘制需要的电气图。在原理图绘制完毕后,对每个元件选择相应的封装,接着在菜单栏里的design菜单中选择Update to PCB,protel会自动在工作空间中生成与原理图同名的PCB图,并且在PCB中标记有飞线,这样会方便布线,分布号元器件位置,设置好线宽,焊盘等设置,即可开始绘图。如图2-17所示。图2-17 PCB图形绘制2.4.2 电路板的制作绘制完毕PCB图后,将其
28、打印在转印纸上,将其覆盖在擦洗打磨干净的覆铜板上,平整的固定住,与其一起在快速制版机中加热。注意,温度过高可能会使覆铜板铜皮翘起,温度太低会使碳粉吸附不牢固。转印好铜板后,将转印好的铜板放入氯化铁溶液中浸泡腐蚀,将没有覆盖碳粉的部分腐蚀掉,待腐蚀完毕后,用细砂纸将电路上的碳粉打磨掉露出同色的铜皮即可。使用0.5mm的钻头在焊盘上打孔,并且对照着PCB图焊接好对应的元器件,经过万用表测试无断线无短路即可上电使用。成果如图2-18所示。图2-18 焊接完毕的电路板第三章 程序的设计实现3.1 系统整体程序框架本设计整体工作主要由单片机程序控制实现,其工作过程为:电路启动初始化,电路功能选择,通讯握
29、手,读取信号,显示信号,输出选择并确定输出,单片机采集外部光强和红外信号等,程序整体框架如图3-1所示。图3-1 程序整体框架图3.2主控板程序设计本设计流程框图如图3-2所示。首先上电,对各个模块进行初始化,然后检测各个房间的灯光状态(自动状态,强制开,强制关),将状态写给NRF2401A射频芯片的缓存区,并将其发射给遥控器。再进行对各个状态的处理,强制开状态则将该房间对应的管脚置1;反之,强制关则将对应房间的管脚清零。继电器输出模块会通过管脚电平变化改变继电器线圈电流,控制线圈吸合或者断开,从而控制房间灯光的开关。如果是自动状态,则通过光强传感器、红外传感器判断房间是否应该开灯。当外部亮度
30、足够亮,则不需要开灯;若外部亮度较暗,则通过红外传感器检测是否有37的红外频率出现,当有人被红外传感器检测到,红外传感器信号位跳变为高电平,单片机相应管脚接收到该信号会进行处理,控制对应房间的管脚变为高电平。图3-2 主控板程序流程图3.2.1 灯光延时等待的设计与思考考虑到在家居时,很多人会暂时离开一下某件屋子,然后会回来,这样使灯具频繁的开关可能会导致灯具的损坏,所以设计了一套灯光延时等待程序,为了节省MCU的占用率,该段程序使用的是内部定时器进行计时,这样可以再执行其他程序的同时进行延时。通过TMOD将单片机内部定时器0与定时器1的工作方式选方式一。TMOD状态字如表3-1所示表3-1
31、TMOD状态字D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0定时器/计数器1定时器/计数器0计算出计时器每次计时时间,并对TH1,TL1,TH0,TL0进行赋值。计算公式如3-2式。T=(65536-X)TCY(3-2)在式3-2中T为定时器定时时间,X为寄存器存储值,将其高八位写入TH中低八位写入TL中;TCY为一个指令周期,TCY与晶振频率f有关,TCY =12/f。由于每次计时器计时长度有限约10ms(方便计算),不能达到系统要求,在使用时,设定了一个时间次数变量TIME,让其循环100次即可延时1S,如需时间改变,改变TIME值即可。定时器的调用步骤如图3
32、-3所示。图3-3 定时器调用框图鉴于本设计有多个房间(多于两个)而单片机中仅有两个定时器,所以在每次调用定时器时都会有一个对定时器选择的程序。当需要使用定时器时,先进行判定,定时器0是否被其他房间所占用,若没有被占用则使用定时器0,若被占用了,则使用定时器1 。若定时器0与定时器1同时被占用,则调用手动编写的延时定时器程序,由于该程序段比较占用单片机,会影响到系统整体的运行速度,所及将其优先级放在最后。3.3.1 遥控器程序设计遥控器主要包含的模块有LCD1602显示器,DS1302时钟芯片,NRF2401A射频模块,还有按键部分。主要设计思路如下,首先上电对各个模块初始化,读取DS1302
33、中的时间数据,同时让LCD液晶显示屏显示时间与房间,接着通过NRF2401A向主控板发送信号,要求返回各个房间的状态,并将其写入LCE液晶显示屏上。然后扫描键盘,判断是否有房间状态需要改变,若有键盘按下,则将按键信号通过NRF2401A射频发送到主控板中,主控板接收到信号后改变房间状体,同时返回当前房间状态,让遥控板上的LCD作出相应的显示。其流程框图如图3-4所示。图3-4 遥控器工作流程图3.3.2 NRF2401A无线射频通讯的程序设计1)初始化程序初始化函数:void n1A_Init_Dev() 程序包括端口初始化和向芯片写控制字操作,初始化流程如图3-2所示。图3-5 NRF240
34、1A初始化框图NRF2401A的工作模式如表3-2所示:表3-2 NRF2401A工作模式工作模式PWR_UPCECS收发模式110配置模式101空闲模式100关机模式0XX对nRF2401A的初始化包括nRF2401A上电和向nRF2401A写控制字。nRF2401A上电是将芯片的PWR-UP管脚设置为高电平,上电以后才可以对nRF2401A进行控制和读写操作。nRF2401A共有18Byte(144bit)的命令字。其配置字格式如表3-3所示。表3-3配置字格式位(bit)位数名字功能1111048DATA1_W通道1有效数据长度63240ADDR1通道1地址23186ADDR_W通道1地
35、址长度171CRC_L8或6位CRC,0是8位,1是16位161CRC_ENCRC使能位141CM1是ShockBurstTM模式12103XO_F晶振频率选择982RF_PWR发射功率717RF_CH#信道频率01RXEN0使能发射,1使能接收向nRF2401A写控制字操作时序图3-6所示。图3-6向nRF2401A写命令字时序图PWR-UP为高, CE为低时,置位CS,芯片处于命令字写入状态,通过通道1向芯片的控制字缓冲区写入命令字,按照由高位到低位的顺序,命令字全部写入后,将CS置底,nRF2401A芯片将会根据命令字配置相应的内部模块。在第一次配置操作结束后,只有最后两个字节的命令字可
36、以被更改,前16个字节的修改无效,如果需要修改前16个字节的命令字(如果通道接收地址,接收数据长度等),则需要掉电(PWR-UP置低)后重新上电(PWR-UP置高),才能对芯片进行彻底初始化操作。2)数据发送程序nRF2401A采用ShockBurstTM(突发模式)方式发送数据。单片机向nRF2401A发送数据流程图3-4所示。图3-7单片机向nRF2401A发送数据流程单片机向nRF2401A发送数据的时序如图3-8所示。图3-8单片机向nRF2401A发送数据时序图图3-9单片机向nRF2401A发送数据格式AnA0为接收机地址,不超过40位,通过更换地址,可以向多个nRF2401A模块
37、发送数据;DkD0为待发送的数据。以上数据由单片机发送到nRF2401A之后,nRF2401A将会进行打包并发射,打包后的数据格式如图3-10所示。前缓冲地址有效数据循环冗余校验图3-10 nRF2401A对外发送数据的打包格式其中,前缓冲是硬件自动添加,地址由用户设定。为32-40位;循环冗余校验由内置CRC纠检错硬件电路自动添加。可设为O、8或6位。所有的数据总共长度为256位。3)据接收程序当接收端成功接收到数据后,将会置位对应的管脚数据请求DR1/DR2,单片机通过按键查询该管脚状态,或者通过中断方式接受数据。数据接收流程如图3-11所示。图3-11单片机读取数据流程单片机从nRF20
38、401A读取数据的时序如图3-12所示。图3-12单片机从nRF2401A读取数据时序图3.3.2 LCD1602显示模块的程序设计四种基本操作LCD有四种基本操作,具体如表3-4所示。表3-4LCD与单片机之间有四种基本操作RSR/W操作00写命令操作(初始化,光标定位等)01读状态操作(读忙标志位)10写数据操作(要显示内容)11读数据操作(可以把显示存储区中的数据反读出来)(1)读状态操作执行读状态字操作如表3-4所示,须满足RS=0、R/W=1。根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线。同时可以保持一段时间,从而实现读状态字的功能。图2-8所示为读入状态字流
39、程图。图3-13 LCD读入状态字流程(2)写命令操作由表3-4可知当RS=0,R/W=0时,才可以通过单片机或用户指令把数据即命令,写到LCD模块,此时就对LCD进行调制。可采用查询方式:先读入状态字,再判断忙标志,最后写命令字。1)命令字表3-5所示为命令字,其主要介绍了指令名称、控制信号及控制代码。其指令名称是指要实现的功能,控制代号是采用的十六进制的数值表示的。a.清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除;b.归home位:将光标送到初始位;其中的*号为任意,高低电平均可;c.输入方式:设光标移动方向并指定整体显示,是否移动。I/D=0:减量方式,S=1:移位,S=0
40、:不移位;d.显示状态:D指设置整体显示开关;C指设置光标显示开关;B指设置光标的字符闪耀;e.光标画面滚动:R/L指右移或左移;S/C指移动总体或光标;f.功能设置:DL接口数位,L指显示行数,F显示字型;g.CGRAM地址设制:相当于一个数据库,可以在其中选择所需要的符号;h.DDRAM地址设制:显示定位;i.读BF和AC:B为最高位忙的标志,F为标志位;j.写数据:将数据按要求写入到对应的单元;k.读数据:读相应单元内的数据。表3-5命令字指令名称控制信号控制代码RSRWD7D6D5D4D3D2D1D0清屏0000000001归HOME位000000001*输入方式设制00000001I
41、/DS显示状态设制0000001DCB无标画面滚动000001S/CRL*功能设置00001DLNF*CGRAM地址设制0001A5A4A3A2A1A0DDRAM地址设制001A6A5A4A3A2A1A0读BF和AC01BFAC6AC5AC4AC3AC2AC1AC0写数据10数 据读数据11数 据2)写命令字流程(如图3-14所示)图3-14 LCD1602写命令字流程图3)定义光标位置把显示数据要某个位置,就是把显示数据写在相应的DDRAM地址中,DDRAM地址占7位。SetDDRAMaddress命令如表3-6所示。光标定位,写入一个显示字符后,DDRAM地址会自动加1或减1,加或减由输入
42、方式设置。表3-6SetDDRAMaddress命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0001AC6AC5AC4AC3AC2AC1AC0第1行DDRAM地址与第2行DDRAM地址并不连续。如表3-7所示。表3-7DDRAM地址row12345141516line180H81H82H83H84H8dH8eH8fHline20c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH4)LCD初始化从通电开始通过延时,先经过判忙后再进行功能设置,过一段时间后可以设制显示状态(如设置行、位或阵列)再经过延时后清屏后再可以设置输入方式,具体如图3-15所示。图3-15 LCD
43、初始化流程LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,LCD就可以按输入的字符串显示。3.3.3 DS1302时钟芯片的设计1)DS1302的控制字DS1302的控制字节如表3-8所示:表3-8 命令字节格式位765432101RAMA4A3A2A1A0RDCKWR控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 2)DS1302的数据输入输出
44、在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7,数据读写时序如图3-16所示:图3-16 数据读写时序3) DS1302的寄存器DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表2。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器的内容。 DS1302与RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H-FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。表3-9 DS1302的日历、时钟寄存器及其控制字寄存器名