您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 基于Aduc845单片机数据采集最小系统的软件设计
基于Aduc845单片机数据采集最小系统的软件设计摘要:本文介绍了一种基于Aduc845单片机和其它芯片构成的多路数据采集系统的软件设计方案,详细说明了系统的工作原理、传感器的数据采集过程、数据的读取、数据的显示。该系统设计简单,便于操作,可用于农业生产,易于实现农业的现代化管理,有广阔的应用前景。关键字:数据采集系统,Aduc845单片机,传感器,数据实时显示在工农业生产中由于某些场所物理环境比较恶劣,不方便人工采集数据,但实际生产又需要实时采集处理数据以支持后面的生产,因此如何实现方便快捷的采集数据和准确高效的处理数据就成为我们研究的重点,因此本文提出了基于Aduc845单片机的数据采集系统的软件设计。1系统整体设计数据采集系统主要对光照强度、湿度、温度三个数据采集,并按照要求将其转换为数字量进行计算处理,通过按键将采集的数据进行排序送给单片机,最后用LCD显示器将数据进行实时显示。因此,系统由光照传感器、湿度传感器、温度传感器、键盘、显示器、控制器部分六个部分组成,其整体设计如图(1)。单片机光照传感器温度传感器湿度传感器键盘电路显示电路图(1)2软件总体设计2.1主程序设计数据采集系统通过检测是否有按键按下对数据进行采集,如果有按键按下则调用相应的传感器程序并进行实时显示,如果没有按键按下,则返回welcome显示程序显示“welcome”,数据采集系统的工作流程如图(2)所示,其中welcomxainshi()程序用于显示“welcome”字符,zhuBH1750()程序、wenduzhuchengxu()程序、shidu()程序分别用于对光照强度、温度、湿度的测量与显示,其对应程序见附录1。开始初始化显示welcome子程序是否有按键按下调用传感器子程序显示子程序结束否是是否继续是否图(2)主程序如图下:voidmain(){welcomxainshi();while(1){if(key1==0)zhuBH1750();if(key2==0)wenduzhuchengxu();if(key3==0)shidu();if(key!=0)break;}}2.2显示程序设计本设计显示部分采用LCD1602显示器,每次在显示前先检查数据端口是否被其他信号占用,如果被占用则等待,没有则向数据端口写数据,流程如图(3)。开始初始化检查忙函数写数据函数结束不忙忙图(3)初始化完成以下工作:(1)显示两行,使用八位数据和5x7点阵的字形。(2)显示控制开关,光标不显示,字符不闪。(3)光标从左向右移动,内容不移动。部分显示程序如下://LCD忙函数voidWaitForEnable(void){DataPort=0xff;RS=0;RW=1;_nop_();E=1;_nop_();_nop_();while(DataPort&0x80);E=0;}//LCD写命令函数voidWriteCommandLCM(ucharCMD,ucharAttribc){if(Attribc)WaitForEnable();RS=0;RW=0;_nop_();DataPort=CMD;_nop_();E=1;_nop_();_nop_();E=0;}//LCD写数据函数voidWriteDataLCM(uchardataW){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口。BH1750有严格的通信协议来保证各位数据传输的正确和完整,有初始化时序、读时序和写时序。每一次命令和数据的传输都是从单片机启动写时序开始,当要求传感器回送数据,在进行写命令后,单片机需启动读时序完成数据的接收。数据和命令的传输都是低位优先。其工作流程如图(4):开始初始化读取数据计算数据结束显示是否继续显示否是图(4)部分光照数据读取程序如下:voidMultiple_read_BH1750(void){uchari;BH1750_Start();//起始信号BH1750_SendByte(SlaveAddress+1);//发送设备地址+读信号for(i=0;i3;i++)//连续读取6个地址数据,存储在BUF中{BUF[i]=BH1750_RecvByte();//BUF[0]存储0x32地址中的数据if(i==3){BH1750_SendACK(1);}//最后一个数据需要回NOACKelse{BH1750_SendACK(0);}//回应ACK}BH1750_Stop();//停止信号Delay5ms();}4总结本文提出了一种基于ADuC845高性能24位数据采集与系统处理芯片的数据实时采集系统的软件设计,该系统在KeilUVision4开发环境下应用C语言编程,经过实际测试,该系统最突出优点是:该系统最终实现了对温度、湿度、光照强度的实时采集与显示。系统分辨率高,噪音低,克服了传统数据采集系统的不足。【参考文献】[1]谢维成,杨加国.单片机原理与应用及C51程序设计.清华大学出版社2011[2]康华光.电子技术基础.高等教育出版社2011[3]王永山,王博.计算机原理与应用(第三版).西安电子科技大学出版社2009[4]王正光,周忠英,侯伯亨,李伯成.数据采集与处理.国防工业大学出版社1985[5]谭浩强,C程序设计.清华大学出版社附录1:Welcome显示程序:voidwelcomxainshi(){InitLcd();//lcd初始化WaitForEnable();//检查忙函数DisplayOneChar(5,1,'w');DisplayOneChar(6,1,'e');DisplayOneChar(7,1,'l');DisplayOneChar(8,1,'c');DisplayOneChar(9,1,'o');DisplayOneChar(10,1,'m');Delay5ms();}湿度程序:voidshidu(){InitLcd();//lcd初始化delay2(10);while(1){receive();//读数据delay2(100);shiduzhuanhuan();//数据转换与计算shujuxianshi();//数据显示if(key1==0)break;//如果key1键按下则跳出循环if(key2==0)break;//如果key2键按下则跳出循环}}温度程序:voidwenduzhuchengxu(){InitLcd();//lcd初始化initdsl18b20();//温度传感器初始化{while(1){Read_Temperature();//读取温度zhuanhuan();//转换温度wendushuju();//数据显示delay(100);if(key1==0)break;//如果key1键按下则跳出循环if(key3==0)break;//如果key3键按下则跳出循环}}}光照程序:voidzhuBH1750(){floattemp;delay_nms(200);//延时200msInitLcd();//初始化LCDInit_BH1750();//初始化BH1750while(1)//循环{Single_Write_BH1750(0x01);//通电Single_Write_BH1750(0x10);//连续高分辨率模式delay_nms(180);//延时180msMultiple_Read_BH1750();//连续读出数据dis_data=BUF[0];//存储在BUF中dis_data=(dis_data8)+BUF[1];//合成数据temp=(float)dis_data/1.2;conversion(temp);//计算数据和显示guangzhaoshuju();//数据显示if(key2==0)break;//如果key2键按下则跳出循环;if(key3==0)break;//如果key2键按下则跳出循环;}}
本文标题:基于Aduc845单片机数据采集最小系统的软件设计
链接地址:https://www.777doc.com/doc-2568074 .html