1、Aduc单片机数据采集最小系统软件设计方案封面作者:PanHongliang仅供个人学习基于Aduc845单片机数据采集最小系统的软件设计摘要:本文介绍了一种基于Aduc845单片机和其它芯片构成的多路数据采集系统的软件设计方案,详细说明了系统的工作原理、传感器的数据采集过程、数据的读取、数据的显示。该系统设计简单,便于操作,可用于农业生产,易于实现农业的现代化管理,有广阔的应用前景。关键字:数据采集系统,Aduc845单片机,传感器, 数据实时显示在工农业生产中由于某些场所物理环境比较恶劣,不方便人工采集数据,但实际生产又需要实时采集处理数据以支持后面的生产,因此如何实现方便快捷的采集数据和
2、准确高效的处理数据就成为我们研究的重点,因此本文提出了基于Aduc845单片机的数据采集系统的软件设计。1系统整体设计数据采集系统主要对光照强度、湿度、温度三个数据采集,并按照要求将其转换为数字量进行计算处理,通过按键将采集的数据进行排序送给单片机,最后用LCD显示器将数据进行实时显示。因此,系统由光照传感器、湿度传感器、温度传感器、键盘、显示器、控制器部分六个部分组成,其整体设计如图(1)。图(1)2软件总体设计2.1 主程序设计数据采集系统通过检测是否有按键按下对数据进行采集,如果有按键按下则调用相应的传感器程序并进行实时显示,如果没有按键按下,则返回welcome显示程序显示“welco
3、me”,数据采集系统的工作流程如图(2)所示,其中welcomxainshi()程序用于显示“welcome”字符,zhuBH1750()程序、wenduzhuchengxu()程序、shidu()程序分别用于对光照强度、温度、湿度的测量与显示,其对应程序见附录1。图(2)主程序如图下:void main() welcomxainshi()。while(1) if(key1=0) zhuBH1750()。if(key2=0) wenduzhuchengxu()。 if(key3=0) shidu()。 if(key!=0)break; 2. 2 显示程序设计本设计显示部分采用LCD1602显示
4、器,每次在显示前先检查数据端口是否被其他信号占用,如果被占用则等待,没有则向数据端口写数据,流程如图(3)。图(3)初始化完成以下工作:(1)显示两行,使用八位数据和5x7点阵的字形。(2)显示控制开关,光标不显示,字符不闪。(3)光标从左向右移动,内容不移动。部分显示程序如下:/LCD忙函数void WaitForEnable(void) DataPort=0xff。 RS=0。RW=1。_nop_()。E=1。_nop_()。_nop_()。while(DataPort&0x80)。 E=0。/LCD写命令函数void WriteCommandLCM(uchar CMD,uchar Att
5、ribc) if(Attribc)WaitForEnable()。 RS=0。RW=0。_nop_()。DataPort=CMD。_nop_()。 E=1。_nop_()。_nop_()。E=0。 /LCD写数据函数void WriteDataLCM(uchar dataW) WaitForEnable()。 RS=1。RW=0。_nop_()。DataPort=dataW。_nop_()。 E=1。_nop_()。_nop_()。E=0。 2.3 光照程序设计光照传感器BH1750是通过全双工通信完成数据的读写,本设计中SCL脚连接至Aduc845的P2.3口,SDA脚连接P2.4口。BH1
6、750有严格的通信协议来保证各位数据传输的正确和完整,有初始化时序、读时序和写时序。每一次命令和数据的传输都是从单片机启动写时序开始,当要求传感器回送数据,在进行写命令后,单片机需启动读时序完成数据的接收。数据和命令的传输都是低位优先。其工作流程如图(4):图(4)部分光照数据读取程序如下:void Multiple_read_BH1750(void) uchar i。 BH1750_Start()。 /起始信号 BH1750_SendByte(SlaveAddress+1)。 /发送设备地址+读信号 for (i=0。 i3。 i+) /连续读取6个地址数据,存储在BUF中 BUFi = B
7、H1750_RecvByte()。 /BUF0存储0x32地址中的数据 if (i = 3) BH1750_SendACK(1)。 /最后一个数据需要回NOACK else BH1750_SendACK(0)。/回应ACK BH1750_Stop()。 /停止信号 Delay5ms()。4总结本文提出了一种基于ADuC845高性能24位数据采集与系统处理芯片的数据实时采集系统的软件设计,该系统在Keil UVision4开发环境下应用C语言编程,经过实际测试,该系统最突出优点是:该系统最终实现了对温度、湿度、光照强度的实时采集与显示。系统分辨率高,噪音低,克服了传统数据采集系统的不足。【参考文
8、献】1谢维成,杨加国.单片机原理与应用及C51程序设计.清华大学出版社20112康华光.电子技术基础.高等教育出版社20113王永山,王博.计算机原理与应用(第三版).西安电子科技大学出版社 20094王正光,周忠英,侯伯亨,李伯成.数据采集与处理.国防工业大学出版社 19855 谭浩强,C程序设计.清华大学出版社附录1:Welcome显示程序:void welcomxainshi() InitLcd()。 /lcd初始化 WaitForEnable()。 /检查忙函数 DisplayOneChar(5,1,w)。 DisplayOneChar(6,1,e)。 DisplayOneChar(7
9、,1,l)。 DisplayOneChar(8,1,c)。 DisplayOneChar(9,1,o)。 DisplayOneChar(10,1,m)。Delay5ms()。湿度程序:void shidu() InitLcd()。 /lcd初始化 delay2(10)。 while(1) receive()。 /读数据 delay2(100)。 shiduzhuanhuan()。 /数据转换与计算 shujuxianshi()。/数据显示 if(key1=0)break。 /如果key1键按下则跳出循环 if(key2=0) break。 /如果key2键按下则跳出循环 温度程序:void w
10、enduzhuchengxu() InitLcd()。 /lcd初始化initdsl18b20()。/温度传感器初始化 while(1)Read_Temperature()。/读取温度zhuanhuan()。/转换温度wendushuju()。/数据显示delay(100)。 if(key1=0) break。/如果key1键按下则跳出循环if(key3=0)break。 /如果key3键按下则跳出循环 光照程序:void zhuBH1750() float temp。 delay_nms(200)。 /延时200ms InitLcd()。 /初始化LCD Init_BH1750()。 /初始
11、化BH1750 while(1) /循环 Single_Write_BH1750(0x01)。 / 通电 Single_Write_BH1750(0x10)。 / 连续高分辨率模式 delay_nms(180)。 /延时180ms Multiple_Read_BH1750()。 /连续读出数据 dis_data=BUF0。/存储在BUF中 dis_data=(dis_data8)+BUF1。 /合成数据 temp=(float)dis_data/1.2。 conversion(temp)。 /计算数据和显示guangzhaoshuju()。/数据显示 if(key2=0)break。 /如果k
12、ey2键按下则跳出循环;if(key3=0)break。 /如果key2键按下则跳出循环; 版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理。版权为潘宏亮个人所有This article includes some parts, including text, pictures, and design. Copyright is Pan Hongliangs personal ownership.用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本文任何内容
13、或服务用于其他用途时,须征得本人及相关权利人的书面许可,并支付报酬。Users may use the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not inf
14、ringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目的的合理
15、、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任。Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.