Aduc单片机数据采集最小系统软件设计方案.docx
《Aduc单片机数据采集最小系统软件设计方案.docx》由会员分享,可在线阅读,更多相关《Aduc单片机数据采集最小系统软件设计方案.docx(8页珍藏版)》请在冰豆网上搜索。
Aduc单片机数据采集最小系统软件设计方案
封面
作者:
PanHongliang
仅供个人学习
基于Aduc845单片机数据采集最小系统的软件设计
摘要:
本文介绍了一种基于Aduc845单片机和其它芯片构成的多路数据采集系统的软件设计方案,详细说明了系统的工作原理、传感器的数据采集过程、数据的读取、数据的显示。
该系统设计简单,便于操作,可用于农业生产,易于实现农业的现代化管理,有广阔的应用前景。
关键字:
数据采集系统,Aduc845单片机,传感器,数据实时显示
在工农业生产中由于某些场所物理环境比较恶劣,不方便人工采集数据,但实际生产又需要实时采集处理数据以支持后面的生产,因此如何实现方便快捷的采集数据和准确高效的处理数据就成为我们研究的重点,因此本文提出了基于Aduc845单片机的数据采集系统的软件设计。
1系统整体设计
数据采集系统主要对光照强度、湿度、温度三个数据采集,并按照要求将其转换为数字量进行计算处理,通过按键将采集的数据进行排序送给单片机,最后用LCD显示器将数据进行实时显示。
因此,系统由光照传感器、湿度传感器、温度传感器、键盘、显示器、控制器部分六个部分组成,其整体设计如图
(1)。
图
(1)
2软件总体设计
2.1主程序设计
数据采集系统通过检测是否有按键按下对数据进行采集,如果有按键按下则调用相应的传感器程序并进行实时显示,如果没有按键按下,则返回welcome显示程序显示“welcome”,数据采集系统的工作流程如图
(2)所示,其中welcomxainshi()程序用于显示“welcome”字符,zhuBH1750()程序、wenduzhuchengxu()程序、shidu()程序分别用于对光照强度、温度、湿度的测量与显示,其对应程序见附录1。
图
(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;i<3;i++)//连续读取6个地址数据,存储在BUF中
{
BUF[i]=BH1750_RecvByte();//BUF[0]存储0x32地址中的数据
if(i==3)
{BH1750_SendACK
(1);}//最后一个数据需要回NOACK
else
{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);//延时200ms
InitLcd();//初始化LCD
Init_BH1750();//初始化BH1750
while
(1)//循环
{Single_Write_BH1750(0x01);//通电
Single_Write_BH1750(0x10);//连续高分辨率模式
delay_nms(180);//延时180ms
Multiple_Read_BH1750();//连续读出数据
dis_data=BUF[0];//存储在BUF中
dis_data=(dis_data<<8)+BUF[1];//合成数据
temp=(float)dis_data/1.2;
conversion(temp);//计算数据和显示
guangzhaoshuju();//数据显示
if(key2==0)break;//如果key2键按下则跳出循环;
if(key3==0)break;//如果key2键按下则跳出循环;
}
}
版权申明
本文部分内容,包括文字、图片、以及设计等在网上搜集整理。
版权为潘宏亮个人所有
Thisarticleincludessomeparts,includingtext,pictures,anddesign.CopyrightisPanHongliang'spersonalownership.
用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人的书面许可,并支付报酬。
Usersmayusethecontentsorservicesofthisarticleforpersonalstudy,researchorappreciation,andothernon-commercialornon-profitpurposes,butatthesametime,theyshallabidebytheprovisionsofcopyrightlawandotherrelevantlaws,andshallnotinfringeuponthelegitimaterightsofthiswebsiteanditsrelevantobligees.Inaddition,whenanycontentorserviceofthisarticleisusedforotherpurposes,writtenpermissionandremunerationshallbeobtainedfromthepersonconcernedandtherelevantobligee.
转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任。
Reproductionorquotationofthecontentofthisarticlemustbereasonableandgood-faithcitationfortheuseofnewsorinformativepublicfreeinformation.Itshallnotmisinterpretormodifytheoriginalintentionofthecontentofthisarticle,andshallbearlegalliabilitysuchascopyright.