内容发布更新时间 : 2024/11/8 15:15:20星期一 下面是文章的全部内容请认真阅读。
浙江理工大学信息电子学院本科毕业论文
发送模块流程图I/O初始化参数设置写nRF905配置字设置发送模式,发送数据发送数据图4-3 发送模块
接收模块流程图I/O初始化参数设置写nRF905配置字查询信号否否RI=1?是设置接收模式,接收数据是保护现场接收数据读SBUF家电控制否=31H?=30H?是是现场恢复P1.0=0P1.0=1否
图4-4 接收模块
- 23 -
基于无线传感器网络的智能家居安防系统初步构建
4.3.3 程序语言选择
对于8051单片机,现有四种语言支持,即汇编、PL/M、C 和BASIC.
BASIC通常附在PC机上,是初学编程的语言,适用于要求编程简单而对编程效率或运行速度要求不高的场合。PL/M是Intel从8080微处理器开始为其系列产品开发的编程语言。它很像PASCAL,是一种结构化语言,但它使用关键字去定义结构。但对8051系列,PL/M不支持复杂的算术运算、浮点变量,也无丰富的库函数支持。C语言是一种源于编写UNIX操作系统的语言,它是一种结构化语言,可产生紧凑代码,可读性比较好,对于编写复杂的程序有一定的优势。汇编语言可产生紧凑的代码,但编写较繁琐,可读性较差,但本系统的程序编程并不复杂,所以本人采用汇编语言。 4.3.4 数据采集无线传输模块与接收程序
程序源代码见附录二 4.4 电器控制模块软件设计 4.4.1 电器控制模块软件流程图
电器控制软件流程图如图4-4所示。当RI=1是产生串口中断,跳转到中断响应程序。中断响应程序首先进行现场保护,然后读取输入缓冲区中数据,将读取到的数据与31H和30H比较,若为31H,置P1.0口为低电平,开启电器。若为30H,置P1.0口为高电平,关闭电器。
- 24 -
浙江理工大学信息电子学院本科毕业论文
否主程序运行RI=1?是保护现场现场恢复读SBUF=31H?是否=30H?是否P1.0=0P1.0=1图4-5 家电控制模块
4.4.2 程序语言选择
虽然汇编程序编写较繁琐,可读性较差,但本系统电器控制模块的程序编程较为简单,用汇编编写的难度并不大,所以本人采用汇编语言。 4.4.3 电器控制模块程序
ORG 0000H JMP MAIN ORG 0023H
LJMP RX_INT ORG 0200H
;----主程序---------
MAIN:MOV SP ,#6FH;主程序(初始化)
MOV TMOD,#20H;定时器1,工作方式2(8位自动重装定时/计数器) MOV SCON,#0D8H ;11位异步收发器(9位数据) MOV PCON,#00H
- 25 -
基于无线传感器网络的智能家居安防系统初步构建
MOV TH1,#0FDH ;波特率:9600 效验位:无数据位:8 停止位:1 MOV TH0,#0FDH MOV P1,#0FFH SETB BEEP
SETB P1.0 ;P1.0口置高电平,初始状态电器电源断开 SETB TR1 ;启用定时器1 SETB ES ;开串口中断 SETB EA ;全局中断开关:开 SJMP $ ;等待中断 ;----串行中断响应程序---
RX_INT: PUSH ACC ;现场保护 PUSH PSW ;现场保护
JNB RI,END_RX ;RI=0,无读入,中断返回 CLR RI ;清RI,待下一次读入 MOV A,SBUF LCALL DELAY MOV B,A JNB TI,$ CLR TI
CJNE A,#31H,CLOSE_FAN CLR P1.0 ;打开电器 CLOSE_FAN: MOV A,B CJNE A,#30H,END_RX SETB P1.0 ;关闭电器 ;------中断返回程序---------- END_RX: POP PSW ;恢复现场 POP ACC ;恢复现场 RETI ;中断返回
DELAY: MOV R6,#0FFH ;延时子程序
- 26 -
浙江理工大学信息电子学院本科毕业论文
DJNZ R6, DELAY RET END
4.5 小结
本章系统详细的介绍了本次课题研究系统的软件详细设计流程,及相关软件和语言的选择。为系统设计的核心部分。
- 27 -