毕业设计(论文)-无线家居监控系统.doc_第1页
毕业设计(论文)-无线家居监控系统.doc_第2页
毕业设计(论文)-无线家居监控系统.doc_第3页
毕业设计(论文)-无线家居监控系统.doc_第4页
毕业设计(论文)-无线家居监控系统.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

无线家居监控系统摘要:本系统是以at89s52为现场控制器,以arm主控制器,它们辅以cc1100无线通信模块、温度传感器ds18b20、烟雾报警模块、pwm调光模块组成,实现温度信号的无线传输以及显示、亮度的无线传输显示和烟雾报警。系统使用51单片机采集温度,亮度和烟雾报警信息,然后通过cc1100无线模块将数据发射到arm;arm通过cc1100无线模块接收数据然后显示温度和亮度、也可以通过触摸屏来控制51单片机端的led的亮度和对报警信号进行处理。最终完成了温度、亮度和烟雾信号的准确采集及cc1100的双向通讯,实现对家居的安防和控制。关键词:arm9;s3c2440;ds18b20;cc1100;pwm调光wireless home monitoring systemabstract:the system is based on at89s52 site controller and based on the arm host controller they are supplemented by cc1100 wireless communication module, temperature sensor ds18b20, smoke alarm module, pwm dimming modules, wireless transmission of temperature signals and display brightness wireless transmission display and smoke alarms. 51 single-chip system uses collecting temperature, brightness and smoke alarm information, and then through the cc1100 wireless module to data emission to the arm; the arm cc1100 wireless module to receive data and then display the temperature and brightness, also can via the touch screen to control the brightness of the 51 single-chip side of the led and alarm signal for processing. finally to complete the two-way communication of accurate acquisition of temperature brightness and smoke signals. keywords: arm9; s3c2440; ds18b20; cc1100; pwm dimming44目 录1引言22本设计的任务和基本要求33设计方案及硬件电路结构43.1总体系统设计43.2主控模块的选择及硬件实现43.2.1arm芯片53.2.2sdram存储系统63.2.3flash的存储系统73.2.4lcd触摸屏系统83.3现场控制器的选择及硬件实现83.4温度采集模块的设计及硬件实现93.5调光模块的设计及硬件实现113.6烟雾报警模块的设计及硬件实现123.7无线通信模块的设计及硬件实现134软件设计154.1主控模块的软件设计154.1.1lcd驱动实现164.1.2触摸屏驱动实现164.2现场控制器模块的软件设计184.2.1温度采集软件实现194.2.2pwm软件实现214.2.3烟雾报警软件实现234.3无线收发软件设计234.3.1cc1100的spi通讯234.3.2cc1100发送254.3.3cc1100接收265调试275.1单元模块调试275.1.1无线模块通断调试275.1.2温度无线监测显示调试285.1.3arm对亮度无线控制调试295.1.4烟雾报警调试295.2系统集成调试306总结317参考文献328附 录339谢 辞431 引言许多人的概念里,智能家居这个词离我们的生活似乎异常遥远,只是存在于高科技展览会里的表演,或是富豪们向人们炫耀财富而展示的一种家居装饰。事实上,近年来智能家居已开始一步一步走进越来越多的普通家庭。一套完整的智能系统一般包括保安、电话、影音、空调、灯光等几大子系统,价格上已可以被消费者所接受,业主完全可以根据自己的需要和喜好选择安装子系统,以满足自己居家的各种需求。 随着家居智能化系统的不断完善,我们想象中的家中布满线网的情形不会再有了,家里一个小小的的角落就可解决全部问题。安装一套智能家居,已经不再是一个概念,而是生活中切切实实可以享受到的高科技带来的便利生活体验。 目前智能家居市场上消费者接受程度最高的无疑是安防系统,一套完整的安防系统包括报警系统、视频监控和可视对讲。这些系统下又有许多分支系统,消费者一般根据不同要求和需要来选择安装,很少有人全部选择以最热销的报警系统为例,厨房安全警报和周边防范系统90以上的业主都会选择,而选择这些系统的业主一般都是居住在别墅里,所以周边防范是最隐蔽最实用的安防系统。一般周边防范由四盏位于别墅四周的路灯构成,这些表面看起来普通的路灯实则具有红外线监控系统,能够根据穿过红外线的物体大小判断,进行警报。而厨房安全警报则会自动测量厨房煤气浓度,一旦超标即可发出警报,并自动关闭煤气管道总阀门。 尽管智能家居在我国好几年前已经出现,但至今仍是防盗和监控这两个功能的接受程度最高,这是由国情所决定的。由于系统的不同,造价也高低有差。虽然家庭安防系统偶尔有时会出现误报情况,但是随着科技的进步,相信精确率会越来越高。 在家居娱乐和电器控制方面,智能家居也有突出表现,包括背景音乐系统、数字网络客厅、家居综合布线、灯光控制和电器控制等功能在内的系统,使人们的生活从各个方面变得更加安全、舒适、简单。 娱乐和电器方面的智能家居系统必须要走人性化路线,智能家居具有易于操作控制的特性,只要一块控制模板,就可以在家里的任意一个角落随意控制家里的电器、灯光、电脑。远程控制还可以做到使你在外(如办公室)通过电话控制家里电器的开关,或者在外地能够上网的地方对自家家居进行监控,就如同从前科幻片里的情节一般。 目前市场上,智能家居的主要接受人群仍然是一部分高端人群。业内人士认为,阻挠智能家居发展脚步的主要是价格和消费理念两方面的原因。智能家居还属于高档消费,一套系统要几万元不等。尽管接受度和认同度与以前相比已经大有提高,但仍主要局限于买别墅的高端人群和热爱生活、享受生活的年轻白领一族。 另外,目前许多人对智能家居系统功能的认识不足,许多设计师也缺乏相应的专业知识去向业主推广,导致一部分实际上有需求的业主对智能家居还一无所知。但是近年来,智能家居的普及度正在慢慢提高,随着国外同行业产品不断涌入我国,以及与国内智能家居行业的竞争加剧,客观上逐渐加大了宣传力度,并产生互补。今后我国的智能家居应走品质与服务并重的路线,未来智能家居发展前景广阔今天我们已经进入了一个无线技术无所不在的时代。在家中使用便利的无线电话;出门在外使用手机和远方的亲人通讯;开车gps系统为我们导航指路;工作中使用无线网卡可以随时随地的进行网上办公等等。在信息和知识以成为社会和经济发展的战略资源和基本要素的时代,人们更加需要随时随地的获取信息,原来点对点的固定电话通讯方式已经远不能满足要求了。人们需要无线宽带通讯技术,来满足多媒体化、普及化、多样化、全球化和个性化的信息交流。无线技术给人们带来的影响是无可争议的。如今每一天大约有15万人成为新的无线用户,全球范围内的无线用户数量目前已经超过2亿。这些人包括大学教授、仓库管理员、护士、商店负责人、办公室经理和卡车司机等。他们使用无线技术的方式和他们自身的工作一样都在不断的更新。随着无线通信技术的进步,无线通信和无线网络将迅速地向我们日常生活中的各个方面扩展。嵌入式的无线通信和无线网络正在向我们走来,以无线片上系统为核心的低功耗、小体积、低价格嵌入式无线通信和无线网络系统近年来得到的迅速地发展,已经产生了无数的新应用和新的市场。在农工业生产和日常生活中,为保证各项工作在某恒定的温度和湿度范围内安全进行,对温度和湿度的测量具有极有重要意义。比如电力、电信设备及各类运输工具组件的过热故障预知监控,空调系统的温湿度监控,医疗与健诊的温湿度监控,化工、机械、温室、大棚等。对这些场合的温湿度监控,如果采用人工的方式不仅消耗大量的人力、物力,而且实时性差,准确度地,特别在一些存在热源的生产基地,在短时间内温湿度可能发生剧烈的变化,无法采取人工进行准确的测量和管理,否则可能造成重大事故。如果采用有线传输方式将传感器与主控机相连必然使系统布线复杂、成本增加、故障率高且难以维修,而价格低廉、体积小、功耗低、性能稳定、传输距离长的无线通讯芯片的出现,使无线温湿度监控成为可能。2 本设计的任务和基本要求 (1)制作三个测试节点,每个节点均利用相应传感器,检测室内烟雾浓度(开关量)、亮度(开关量)和温度(2555),将所获信息无线传回监控主机。(2)监控主机当接收到烟雾报警信息时,可无线控制风扇运转,降低烟雾浓度;监控主机可任意无线控制室内灯光。(3)传送距离不小于5m。3 设计方案及硬件电路结构3.1 总体系统设计系统可以完成室内温度的无线监测、通过arm触摸屏进行亮度无线调节和烟雾无线报警。工作流程如下:51单片机采集温度、亮度和烟雾数据,通过cc1100发送给arm,当arm接收到数据后通过lcd显示温度亮度和控制蜂鸣器。另外arm可以通过触摸屏无线控制调光模块。系统设计框图如下所示。图 1 系统设计3.2 主控模块的选择及硬件实现 主控模块采用的是友善之臂的arm9 s3c2440开发板,通过它来控制温度和亮度显示,触摸屏的控制和蜂鸣器报警。主控器模块硬件部分包括arm处理器与sdram、nandflash、norfalsh、和lcd触摸屏等外围电路。 以下是arm9 ssc2440的硬件资源cpu处理器s3c2440 主频400mhz,最高533mhzsdram内存hy57v561620ftp 64m 一片nandflashk9f1208 大小64m 2片norflashsst39vf1601 大小2m 2片lcdnec 256k 色240x320/3.5 英寸tft 真彩液晶屏,带触摸屏100m的以太网接口(dm9000芯片)1个串口3个蜂鸣器1个i2c总线at24c08芯片1个sd接口1个usb接口3个摄像头接口1个3.2.1 arm处理器arm处理器采用的s3c2440。s3c2440是韩国三星公司生产的,基于arm920t的16/32位risc嵌入式处理器,是目前市场上应用非常广泛的一款嵌入式处理器。该处理器是一个多用途的通用芯片,它内部集成了微处理器和常用外围组件,具有较高的性价比。 s3c2440的频率是400mhz,其arm920t核由arm9tdmi、存储管理单元(mmu)和高速缓存三部分组成。其中,mmu可以管理虚拟内存,高速缓存由独立的16kb地址和16kb数据高速cache组成。arm920t有两个内部协处理器:cp14和cp15。cp14用于调试控制,cp15用于存储系统控制以及测试控制。 1.片上资源(1) 1.2v 内核供电, 1.8v/2.5v/3.3v 储存器供电, 3.3v 外部i/o 供电,具备16kb 的指令缓存和16kb 的数据缓存和mmu的微处理器(2) 130 个通用i/o 口和24 通道外部中断源(3) 具有普通,慢速,空闲和掉电模式(4) 具有pll 片上时钟发生器(5) 外部存储控制器(sdram 控制和片选逻辑)(6) lcd 控制器(最大支持4k 色stn 和256k 色tft)提供1 通道lcd 专用dma(7) 4 通道dma 并有外部请求引脚(8) 3 通道uart(irda1.0, 64 字节发送fifo 和64 字节接收fifo)(9) 2 通道spi(10) 1 通道iic 总线接口(支持多主机)(11) 1 通道iis 总线音频编码器接口(12) 兼容sd 主接口协议1.0 版和mmc 卡协议2.11 兼容版(13) 2 通道usb 主机/1 通道usb 设备(1.1 版)(14) 4 通道pwm 定时器和1 通道内部定时器/看门狗定时器(15) 8 通道10 位adc 和触摸屏接口2.它与周围器件的接口图如下图2 s3c2440引脚3.2.2 sdram存储系统最小系统板使用了两片外接的32m bytes 总共 64m bytes 的sdram 芯片( 型号为:hy57v561620ftp),一般称之为内存,它们并接在一起形成32-bit 的总线数据宽度,这样可以增加访问的速度;因为是并接,故它们都使用了ngcs6 作为片选,这就决定了它们的物理起始地址为 0x30000000,下面是sdram的原理图图3 sdram与arm的接口3.2.3 flash的存储系统最小系统具备两种flash,一种是nor flash,型号为sst39vf1601(amd29lv160db与此引脚兼容) ,大小为 2mbyte;另一种是 nand flash,型号为 k9f1208,大小为64m(可兼容最大1g nand flash)。s3c2440 支持这两种flash启动系统,通过拨动开关 s2,你可以选择从nor还是从nand 启动系统。图4 flash与arm的接口3.2.4 lcd触摸屏系统lcd 采用的是tft类型的 分辨率为240*320. 触摸屏采用的是电阻式触摸屏,adc的最大转换速度是500ksps,分辨率是10位。它完成lcd显示和触摸屏控制功能。以下是lcd触摸屏与arm的接口图 图5 lcd触摸屏与arm接口3.3 现场控制器的选择及硬件实现本系统采用at89s52作为现场控制器。主要从以下特点考虑:at89s52是一种低功耗,高性能cmos8位微控制器,具有8k在系统可编程flash存储器。使用atmel公司高密度非易失性存储器技术制造,与工业80c51产品指令和引脚完全兼容。片上flash允许程序存储器在系统可编程,亦适于常规编程器。在单片机芯片上,拥有灵巧的8位cpu和在系统提供高灵活,超有效的解决方案。at89s52具有以下标准功能:8k字节flash,256字节ram,32位i/o口线,看门狗定时器,2个数据指针,三个子16位定时器/计数器,一个6向量子数2级中断结构,全双工串行口,片内晶振及时钟电路。另外,at89s52可降至0kz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu停止工作、允许ram、定时器/计数器、串口、中断继续工作。现场控制器采用51单片机,实现对温度的采集、烟雾报警、pwm调光。以下是51单片机的最小系统图。图6 51单片机最小系统3.4 温度采集模块的设计及硬件实现温度的采集采用ds18b20。ds18b20是dallas公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、搞干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号(提供9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。它具有3引脚to92小体积封装形式,温度测量范围为55125,可编程为9位12位a/d转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个ds18b20可以并联到3根或2根线上,cpu只需一根端口线就能与多个ds18b20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使ds18b20非常适用于远距离多点温度检测系统。ds18b20外形及引脚说明如下。1(gnd):地2(dq):单线运用的数据输入输出引脚3(vdd):可选的电源引脚图7 ds18b20外形及引脚说明ds18b20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25进行比较,若低于0.25,温度寄存器的最低位就置0;若高于0.25,最低位就置1;若高于0.75时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5,四舍五入最大量化误差为1/2lsb,即0.25。温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。ds18b20测量温度时使用特有的温度测量技术。ds18b20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。当计数门打开时,ds18b20进行计数,计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性度加以补偿。测量结果存入温度寄存器中。一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。 图8 温度传感器硬件电路3.5 调光模块的设计及硬件实现方案一:采用模拟调光模拟电压和电流可直接用来进行控制,如对汽车收音机的音量进行控制。在简单的模拟收音机中,音量旋钮被连接到一个可变电阻。拧动旋钮时,电阻值变大或变小;流经这个电阻的电流也随之增加或减少,从而改变了驱动扬声器的电流值,使音量相应变大或变小。与收音机一样,模拟电路的输出与输入成线性比例。尽管模拟控制看起来可能直观而简单,但它并不总是非常经济或可行的。其中一点就是,模拟电路容易随时间漂移,因而难以调节。能够解决这个问题的精密模拟电路可能非常庞大、笨重(如老式的家庭立体声设备)和昂贵。模拟电路还有可能严重发热,其功耗相对于工作元件两端电压与电流的乘积成正比。模拟电路还可能对噪声很敏感,任何扰动或噪声都肯定会改变电流值的大小。 方案二:采用pwm调光pwm的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。对噪声抵抗能力的增强是pwm相对于模拟控制的另外一个优点,而且这也是在某些时候将pwm用于通信的主要原因。从模拟信号转向pwm可以极大地延长通信距离。在接收端,通过适当的rc或lc网络可以滤除调制高频方波并将信号还原为模拟形式。 系统调光模块采用pwm调光。单片机通过定时器输出pwm信号给op27,op27接成电压跟随器,反馈端接到三极管的射极,接一个电阻接地。然后op27的输出端接三极管的基极。pwm信号通过控制三级管的射极电流的大小来控制集电极led的亮度。 图9 pwm调光电路3.6 烟雾报警模块的设计及硬件实现烟雾报警模块采用mq-2烟雾传感器。mq系列气体传感器的敏感材料是活性很高的金属氧化物半导体,最常用的如sno2。金属氧化物半导体在空气中被加热到一定温度时,氧原子被吸附在带负电荷的半导体表面,半导体表面的电子会被转移到吸附氧上,氧原子就变成了氧负离子,同时在半导体表面形成一个正的空间电荷层,导致表面势垒升高,从而阻碍电子流动。 mq-2气体传感器,模拟输出05v电压,浓度越高电压越高。高灵敏度、 快速响应恢复、优异的稳定性 、长寿命、 驱动电路简单。对液化气,天然气,城市煤气有较好的灵敏度,具有长期的使用寿命和可靠的稳定性快速的响应恢复特性。应用于家庭、工厂、商业场所的可燃气体泄漏监测装置, 防火/安全探测系统,可燃气体泄漏报警器,气体检漏仪。 其实物及接线图如下: 图10温度传感器 图11传感器电路 烟雾信号接收到烟雾信号后,经过比较器软后送给51单片机的p0.0口.以下是硬件电路图图12 烟雾检测电路3.7 无线通信模块的设计及硬件实现方案一:采用红外收发管通过编码解码进行数据传输,虽然这种方法成本低廉,但是其传输距离近,抗干扰能力差,传输数据不够稳定。方案二:采用nrf24l01无线模块进行数据传输。nrf24l01是一款新型单片射频收发器件,工作于2.4 ghz2.5 ghz ism 频段。内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合了增强型shockburst 技术,其中输出功率和通信频道可通过程序进行配置。nrf24l01 功耗低,在以-6dbm 的功率发射时,工作电流也只有9 ma;接收时,工作电流只有12.3 ma,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。方案三:采用cc1100进行数据传输,相比nrf2401性能更稳定,抗干扰能力更强,更加灵敏,距离更远。综上所述,最终选用方案三。cc1100模块使用chipcon公司的cc1100芯片开发而成。nrf1100单片无线收发器工作在433/868/915mhz 的ism频段由一个完全集成的频率调制器一个带解调器的接收器一个功率放大器一个晶体震荡器和一个调节器组成。工作特点是自动产生前导码和crc可以很容易通过spi接口进行编程配置,电流消耗低。 图13 cc1100模块硬件电路(1)315、433、868、915mh的ism 和srd频段(2) 最高工作速率500kbps,支持2-fsk、gfsk和msk调制方式(3) 高灵敏度(1.2kbps下-110ddm,1数据包误码率)(4) 内置硬件crc检错和点对多点通信地址控制(5) 较低的电流消耗(rx中,15.6ma,2.4kbps,433mhz)(6) 可编程控制的输出功率,对所有的支持频率可达+10dbm(7) 支持低功率电磁波激活功能(8) 支持传输前自动清理信道访问(cca),即载波侦听系统(9) 快速频率变动合成器带来的合适的频率跳跃系统(10) 模块可软件设地址,软件编程非常方便(11)1.27mmdip间距接口,便于嵌入式应用(12) 单独的64字节rx和tx数据fifo下面是是51单片机和arm分别与cc1100的接口图 图14 cc1100与51单片机的接口 图15 cc1100与arm的接口4 软件设计 软件包括两部分一部分是主控模块软件设计;另一部分是现场控制器模块软件设计。4.1 主控模块的软件设计主控模块软件部分包括lcd驱动、触摸屏驱动和无线的收发。下面是arm软件的流程图: 图16 主控模块软件流程4.1.1 lcd驱动实现lcd驱动主要完成显示图片、温度数据和亮度。lcd的初始化流程1.lcd控制引脚和数据引脚初始化;2.首先设置lcd显示长宽和帧频率,帧频率是决定发送一帧数据的快慢;3.设置lcd的显示模式,此处采用的是64k色;4.设置帧缓冲区的起始和结束地址;5.电源控制引脚使能;6.视频输出使能。以下是lcd初始化的实现函数void tft_lcd_init(void) lcd_port_init();/lcd引脚初始化 lcd_init();/lcd显示初始化lcdbkltset( 70 ) ;/背光设置lcd_powerenable(0, 1);/电源使能 lcd_envidonoff(1);/开启视频输出使能 lcd_clearscr( (0x0011) | (0x005) | (0x00) ); /清屏4.1.2 触摸屏驱动实现触摸屏驱动主要完成触摸屏坐标的采集,通过判断触摸屏上的按钮是否按下,来无线控制led的亮度。以下是触摸屏的初始化流程1.设置adc的时钟源为pclk 和时钟,设置时钟的时候adc的时钟必须小于pclk的5分之1;2.把中断函数地址给装入中断向量表,进入中断等待模式;3.开起adc中断和触摸屏中断允许位。 以下是中断服务函数实现流程1.当触摸屏被按下的时候,进入自动连续x,y转换模式,启动adc转换,等待adc转换完成中断,保存x,y坐标的值。2.清除adc中断和触摸屏中断标志位,开起adc中断和触摸屏中断,等待触摸屏被松开3.触摸屏被松开后通过判断判断x,y的值是否在规定的范围内,改变一个全局变量的值,通过这个值得改变判断是亮度增还是减;4.中断结束清除中断标志位和开中断使能。以下是中断服务函数的实现void _irq adctsauto(void)int i;int x1,y1;u32 saveadcdly; if(radcdat0&0x8000)/触摸屏有没有被按下 /uart_printf(nstylus up!n);radctsc&=0xff;/ 没被按下 radctsc=(13)|(12); /进入自动连续x,y转换模式saveadcdly=radcdly;radcdly=40000; /normal conversion mode delay about (1/50m)*40000=0.8msradccon|=0x1; /启动ad转换while(radccon & 0x1);/等待启动ad转换while(!(radccon & 0x8000); /查看是否转换结束 while(!(rsrcpnd & (bit_adc); /发生adc中断时 表示转换结束 xdata=(radcdat0&0x3ff); ydata=(radcdat1&0x3ff); /yh 0627, to check stylus up interrupt. rsubsrcpnd|=bit_sub_tc;/清除中断位 clearpending(bit_adc); rintsubmsk=(bit_sub_tc);/开触摸屏中断 rintmsk=(bit_adc);/开adc中断 radctsc =0xd3; /进入等待中断模式 radctsc=radctsc|(1=160)&(xdata=110)&(ydata=680)&(xdata=110)&(ydata=210)txbuf0=2; rgpbdat &=led2;/灯亮 mdelay(500); rgpbdat |=led2;elsergpbdat |=led2; /mdelay(10); / halrfsendpacket(txbuf,1);/ 一定要放到接收到数据的那个if里面,它是发送端的应答信号 uart_printf( txbuf0 = 0x%xn, txbuf0 ); / uart_printf(count=%03d xp=%04d, yp=%04dn, count+, xdata, ydata); /x-position conversion data / uart_printf(count=%03d x=%04d.%-3dv, y=%04d.%-3dvn, count+, (int)x, x1,(int)y,y1); /输出电压值 xdata=0;ydata=0;radcdly=saveadcdly; radctsc=radctsc&(18); / 检测 按下中断 rsubsrcpnd|=bit_sub_tc; rintsubmsk=(bit_sub_tc);/ 开中断使能 清除中断位 clearpending(bit_adc);4.2 现场控制器模块的软件设计现场控制器模块软件部分包括温度采集软件实现、pwm软件实现、烟雾报警软件实现和无线收发软件实现。以下是现场控制器模块软件流程图 图17 现场控制器模块软件流程4.2.1 温度采集软件实现温度采集部分是通过ds18b20完成温度数据的采集。图18 ds18b20写时序ds18b20是采用的是单总线。当给ds18b20写0时,数据线拉低大约等待15us,然后数据线持续拉低大约30us的时间,最后释放总线。当ds18b20写1时,dq先拉低15us,然后数据线拉高30us,最后释放总线。以下是函数实现writeonechar(unsigned char dat)unsigned char i=0;for (i=0; i8; i+) dq =1; / 先将数据线拉高 _nop_(); /等待一个机器周期 dq=0; /将数据线从高拉低时即启动写时序 dq=dat&0x01; /利用与运算取出要写的某位二进制数据, /并将其送到数据线上等待ds18b20采样 for(time=0;time10;time+) ;/延时约30us,ds18b20在拉低后的约1560us期间从数据线上采样 dq=1; /释放数据线 for(time=0;time=1; /将dat中的各二进制位数据右移1位 for(time=0;time4;time+) ; /稍作延时,给硬件一点反应时间图19 ds18b20读时序 当ds18b20读逻辑0时,总线先拉低大约1us,然后释放总线读取总线电平,这时候ds18b20拉低总线,读取数据后大约要等待40us。当ds18b20读逻辑1时,总线先拉低大约1us,然后释放总线读取总线电平,这时候ds18b20拉高总线,读取数据后大约要等待40us。以下是读取0或1的程序实现 unsigned char readonechar(void)unsigned char i=0;unsigned char dat; /储存读出的一个字节数据for (i=0;i=1;_nop_(); /等待一个机器周期 dq = 1; /将数据线人为拉高,为单片机检测ds18b20的输出电平作准备for(time=0;time2;time+); /延时约6us,使主机在15us内采样if(dq=1) dat|=0x80; /如果读到的数据是1,则将1存入datelsedat|=0x00;/如果读到的数据是0,则将0存入dat /将单片机检测到的电平信号dq存入rifor(time=0;time8;time+); /延时3us,两个读时序之间必须有大于1us的恢复期 return(dat); /返回读出的十进制数据4.2.2 pwm软件实现pwm完成led亮度的调节。1.pwm的原理脉宽调制(pwm)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换及led照明等许多领域中。通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。此外,许多微控制器和dsp已经在芯片上包含了pwm控制器,这使数字控制的实现变得更加容易了。简而言之,pwm是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。pwm信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(on),要么完全无(off)。电压或电流源是以一种通(on)或断(off)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用pwm进行编码。下图显示了三种不同的pwm信号。图1a是一个占空比为10%的pwm输出,即在信号周期中,10的时间通,其余90的时间断。图1b和图1c显示的分别是占空比为50%和90%的pwm输出。这三种pwm输出编码的分别是强度为满度值的10%、50%和90%的三种不同模拟信号值。例如,假设供电电源为9v,占空比为10%,则对应的是一个幅度为0.9v的模拟信号。 图20 pwm2.pwm的实现若只使用一个定时器,则在定时器中断函数中要判断当前是处于高电平还是低电平,还要重新设置定时器初装值,这些操作会使用较多的cpu时间,甚至会超过10个时钟周期,结果没有办法得到相应宽度的脉冲。简化定时器中断函数中的操作是唯一能解决这个问题的办法,最终我使用的方案是使用两个定时器分别控制高电平与低电平的时间。定时器0只负责将输出脚的电平拉高,定时器1只负责将输出脚的电平拉低,这样定时器中断函数都可以在1个时钟周期内完成操作。两个定时器都采用自动重装的方式工作,周期均为脉冲的周期,令定时器1后于定时器0一定时间工作,令这个时间差正好等于高电平的脉宽,两个定时器轮流工作,正好可以达到要求。 void pwminit(unsigned char a) tmod = 0x22;/设置t0和t1都工作在8位自动重装方式 ea = 1; tr0 = tr1 = 0; th0 = th1 = 256 - 250 ;/设置t0和t1的初值都为250 tl0 = 256 - a;/t0第一次的初值为a tl1 = 256 -250 ;/t1的第一次初值为250 tr0 = 1;/同时开t0和t1中断 tr1 = 1;/ et0 = 1;/允许t0中断 et1 = 1;/允许t1中断void timer_0() interrupt 1 ledpwm = 0;/等灭 void timer_1() interrupt 3 ledpwm = 1;/灯亮 4.2.3 烟雾报警软件实现烟雾报警主要实现烟雾信号的无线传送,当主控模块接收到报警数据后,鸣蜂器。以下是程序 if(rxbuf6=0x00)/ 判断是否收到报警信号 buzzer_freq_set(2000); /蜂鸣器响 else buzzer_stop();/蜂鸣器停4.3 无线收发软件设计它要实现数据的双向通讯。软件包括cc1100的spi通讯、数据的发送和数据的接收。4.3.1 cc1100的spi通讯cc1100通过spi总线与控制器通讯。spi总线系统是一种同步串行外设接口,它可以使mcu与各种外围设备以串行方式进行通信以交换信息。spi有三个寄存器分别为:控制寄存器spcr,状态寄存器spsr,数据寄存器spdr。spi是一种高速的,全双工,同步的通信总线。其工作模式有两种:主模式和从模式。spi是一种允许一个主设备启动一个从设备的同步通讯的协议,从而完成数据的交换。一般来说要求主设备要有spi控制器(也可用模拟方式),就可以与基于spi的芯片通讯。 cc1100采用spi总线进行通讯。spi的时序图如下图21 spi时序图中sclk为时钟信号,cs为控制信号,mosi和miso数据信号。只有cs为0的时候才开可以发送和接收一个字节的数据。当cs=0,sclk开始从0跳变到1时通过读取mosi上数据的第一位来判断是读还是写。如果mosi为0时为放送然后发送完一个字节的数据。如果mosi为1时为接收一个字节的数据保存到temp中。下面采用的是模拟spi总线方式来读写一个字节的数据的 代码如下/功能描述:spi读或写一个字节/*int8u spitxrxbyte(int8u dat)int8u i,temp;temp = 0;sck = 0;for(i=0; i8; i+)if(dat & 0x80)/判断是读还是写

温馨提示

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

评论

0/150

提交评论