ImageVerifierCode 换一换
格式:DOCX , 页数:49 ,大小:210.30KB ,
资源ID:8594348      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8594348.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于52单片机的自动浇灌系统毕业设计论文.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于52单片机的自动浇灌系统毕业设计论文.docx

1、基于52单片机的自动浇灌系统毕业设计论文实 践 教 学 目 标 实 践 报 告 项目: 自动浇灌系统 1. 任务和要求a. 概述 主要是以51单片机80c52为主控芯片,利用DALAS一线式温度传感器DS18B20实现对周围温度环境的采集,单片机再根据采集的温度值来控制电磁阀的开关及持续时间等操作,从而实现在不同的温度对周围浇灌对象实施间隔性的灌溉,浇灌持续的时间与不同的温度范围有关,同时相关的状态信息要在点阵汉字液晶屏上实时的显示。b.功能(1)汉字液晶屏上实时显示的信息有:(见图1)1.第一行显示:制动浇灌系统;2.第二行显示:低温:*.*,或常温:*.*,或高温:*.* 。注:假设24以

2、下为低温,2535为常温,35以上为高温。电磁阀状态:开,或关。3.第三行显示:时间:*时*分*秒。4.第四行显示:浇灌次数。a可以显示设置的界面b可以查看低、常、高温的值和浇灌时间及间隔时间c可以设置的低、常、高温的值和浇灌时间及间隔时间目的是为了实现浇灌 c. 性能使得浇灌器在低温时,电磁阀始终关,浇灌时间为0分0秒;在常温时,浇灌时间为30分钟,浇灌次数间隔为8小时;在高温时,浇灌时间为50分钟,浇灌次数间隔为4小时。从低温进入常温,浇灌时间为30分钟,浇灌次数间隔为8小时;蜂鸣器响 从常温进入高温时,浇灌时间为50分钟,浇灌次数间隔为4小时。蜂鸣器响从高温进入常温,浇灌时间为30分钟,

3、浇灌次数间隔为8小时;蜂鸣器响 从常温进入低温时,浇灌时间为0分0秒,阀关闭。蜂鸣器响d. 接口(软件、硬件)2.方案(思路)a) 总的思考利用DALAS一线式温度传感器DS18B20实现对周围温度环境的采集,单片机再根据采集的温度值来控制电磁阀的开关及发出声音,实现在不同的温度对周围浇灌对象实施间隔性的灌溉,浇灌持续的时间与不同的温度范围有关,同时相关的状态信息在点阵汉字液晶屏上实时的显示b.CPU选择80C52;c.硬件选择;水阀开关 蜂鸣器 继电器 液晶显示器(TG12864B) 电源 电线;d.开发和测试环境Keil 2;Proteus;e.系统框架图和系统功能说明温度仪(感应周边温度

4、) 水阀功能说明:使得浇灌器在低温时,电磁阀始终关,浇灌时间为0分0秒;在常温时,浇灌时间为30分钟,浇灌次数间隔为8小时;在高温时,浇灌时间为50分钟,浇灌次数间隔为4小时。从低温进入常温,浇灌时间为30分钟,浇灌次数间隔为8小时;蜂鸣器响兰花草 从常温进入高温时,浇灌时间为50分钟,浇灌次数间隔为4小时。蜂鸣器响兰花草从高温进入常温,浇灌时间为30分钟,浇灌次数间隔为8小时;蜂鸣器响兰花草从常温进入低温时,浇灌时间为0分0秒,阀关闭。蜂鸣器响兰花草f.接口概述蜂名器g开发计划序号任务内容负责人计划开始时间计划结束时间实际开始时间实际结束时间1任务和要求概述,功能,性能,接口刘路2013.9

5、.092013.9.092013.9.10.2013.9.102方案总的思考 软硬件选择 开发和测试环境 系统框架图和系统功能说明 接口概述 开发计划刘路2013.9.10.2013.9.102013-9-122013-9-123系统设计列出所需要的硬件软件电路及功能状态图 刘路2013.9.122013.9.122013.9.172013.9.174详细设计将主体程序分解成各个功能模块 列出各模块的功能所需刘路2013.9.172013.9.172013.9.232013.9.235编码依照详细设计所考虑的思路 进行编码 刘路2013.9.232013.9.232013.10.122013.

6、10.86系统测试利用Proteus进行仿真 通过控制DS18B20的值 测试程序在各个温度下 显示 浇灌 时间 功能是否完整 有无错误刘路2013.10.122013.10.82013.10.172013.10.123.系统设计a) 硬件设计i. 框图水阀ii. 功能描述硬件设计主要包括:DS18B20温度采集模块:用于温度采集;汉字液晶屏显示状态信息模块:用于将相关信息显示出来;将数字温度传感器DS18B20并接在一起,数据线与单片机的P1.0相连,液晶显示器与单片机的连接采用模拟接口方式。蜂鸣器:利用外部中断触发 定时器t0控制音调高低 T1控制节拍长短(1)传感器DS18B20图1-4

7、 DS18B20引脚图 DS18B20是美国DALLAS公司推出的数字温度传感器,将温度传感器、数字转换电路集成到了一起,外形如同一只三极管。微型化、低功耗、高性能、抗干扰能力强;它采用独特的单线接口方式,与单片机连接时,仅需一根口线;这样可以非常方便地构成多路温度测量系统。DS18B20的测温范围为-55度125度,可完全满足要求。其引脚图如图1-4所示。DQ:数据输入/输出。在数据总线供电方式可给传感器提供电源。VDD:可选的电源电压DS18B20有两种供电方式:数据总线供电方式和外部供电方式。若采用数据总路线供电方式,VDD应接地,这样可省一根线,但测浊的时间较长。GND:电源地。 温度

8、与数字量的对应关系表如右表所示。(2)单片机80C52单片机内部有P0、P1、P2、P34个8位双向I/O口,其引脚如图1-8所示,外设与这些端口可以直接连接,无需另外的接芯片。P0P3既可以按字节输入或输出,也可以按位进行输入或输出,共32条口线,其控制十分灵活方便。各个端口的结构功能有所不同。在自动浇灌系统的设计中主要用到了P0、P1、P3这3 个口。 1)P0口图-10 P0口作输出口时需加上拉电阻 P0口每一位内部结构如图1-9所示,其基本功能是数据的输入与输出,此外在扩展程序存储器、外部数据存储器或I/O口时,作为数据总线和低8位地址总线。需要说明的是P0口作为输出口使用时,“控制”

9、引脚为低,使场效应管VT1截止,P0口实际上为漏极开路输出电路,因此需加上拉电阻,如图1-10所示;P0作为输入口使用时,必须首先写端口输出“1”,使VT2截止,否则如果VT2导通,在输入引脚数据时,引起的的高电平会被强制拉成低电平。2)P1口在自动浇灌系统设计中,P1.1与传感器DS18B20的DQ连接,将温度传感器上的值传送到单片机80C51在液晶屏上显示出来。3)P3口P3口险了双向I/O口功能外,还具有第二功能。在自动浇灌系统中P3.7、P3.6、P3.5不再是P3口的第二功能,RD、WR、T1是作为I/O口分别控制液晶模块的RS、R/W、E引脚,产生相应的时序信号。(3)TG1286

10、4B液晶屏图1-11 TG12864B模块引脚图 TG12864B是128*64点阵的液晶显示模块,能够显示各种字符(128个8*8点阵字符,或32个16*16点阵的汉字)或图形,具有8位标准数据总线及相应的控制信号,可与单片机接口直接相连。其外观及引脚排列如图1-11所示:其引脚功TG12864B液晶模块实际上是由左右两块独立的64*64点阵液晶屏拼接而成,每半屏有一个8*64*8bit DDRAM,左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。它可显示4行16*16点阵的汉字,每行显示8列,如果列号小于4,则显示在左半屏,否则显示在右半屏。TG12864B液晶模块内部没有字库,

11、因此必须将ASCII的点阵信息放在程序存储器中,显示时根据ASCII值找到该字符的点阵码送到液晶显示模块DDRAM中。(4)蜂鸣器三极管主要是做驱动用的。因为单片机的IO口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音,你要是输出高电平,三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,当输出低电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音。b) 软件设计i. 运行环境keil 2;Proteus;ii. 功能描述在低温时,电磁阀始终关,浇灌时间为0分0秒;在常温时,浇灌时间为30分钟,浇灌次数间隔为8小时;在高温时,浇灌时间为50分钟,浇灌

12、次数间隔为4小时。从低温进入常温,浇灌时间为30分钟,浇灌次数间隔为8小时;从常温进入高温时,浇灌时间为50分钟,浇灌次数间隔为4小时。从高温进入常温,浇灌时间为30分钟,浇灌次数间隔为8小时;响起音乐兰花草 从常温进入低温时,浇灌时间为0分0秒,阀关闭。1主程序模块功能:主要是要调用的函数的声明;变量的定义;根据温度,在该屏上逐行显示:温度、水龙头开关状态、浇灌时间等信息。2DS18B20温度采集模块功能:温度采集,通过温度传感器获取当前的温度值,再将温度值传到主程序中,然后在液晶屏显示相应的温度值。3汉字液晶屏显示状态信息模块功能:对液晶屏进行初始化、复位、打开显示、设置起始行、清屏。4定

13、时器模块功能:实现记录不同温度段的浇灌时间及浇灌间隔时间等信息5控制电磁阀开/关模块功能:根据温度信息控制继电器吸合及断开,从而控制电磁阀的开关,实现浇灌与否。6响乐模块功能:单片机可以依据不同频率的脉冲信号 让蜂鸣器产生与音符相应的声音 可以利用单片机p3.2或者.p3.3引脚 外部中断来控制控制蜂鸣器相关。iii.状态图常温/开阀高温/开阀低温低温不浇灌高温低温/关阀常温浇灌高温浇灌常温/开阀蜂鸣器开,显示浇灌时间到/关阀浇灌时间到/关阀降温低温高温/开阀蜂鸣器开,显示常温/开阀高温不浇灌NO状态条件事件动作目标状态1低温不浇灌常温开阀门/蜂鸣器响 显示常温浇灌2常温浇灌低温关阀门/显示低

14、温不浇灌3常温不浇灌低温关阀门/显示低温不浇灌4常温浇灌30分钟时间到关阀门/显示常温不浇灌5常温不浇灌8小时时间到开阀门/显示常温浇灌6常温浇灌高温蜂鸣器响 显示高温浇灌7高温浇灌常温显示常温浇灌8高温浇灌50分钟时间到关阀门/显示高温不浇灌9高温不浇灌4小时时间到开阀门/显示高温浇灌10常温不浇灌高温开阀门/显示蜂鸣器响高温浇灌11高温不浇灌常温关阀门/显示常温不浇灌 iii. iv. 主要流程图初始化浇灌系统浇灌v. 程序总体结构图水阀处理vi. 接口设计蜂名器4.详细设计c) 硬件详细设计i. Proteus图d) 软件详细结构图Reset(初始化DS18B20)Convert(启动温

15、度转换)Readt(读取温度暂存器的值)Wrbyte(写字节)Rdbyte(读字节)Ds18b20InitTimer0 (定时器T0中断)InitTimer0 (定时器T1中断)定时器Lcd_ LCD_DispFill (填充液晶屏)Lcd_dispIni(初始化液晶屏)LCD_DispChar(显示字符)LCD_DispStr(显示字符串)LCD_DispHZ(显示汉字)LCD_DispHZStr(显示汉字字符串)液晶显示模块e.软件详细设计i. 函数描述名称:void wrbyte(uchar d) 功能:向DS18B20写入一个字节 入口参数:d(uchar型 写入字节) 出口参数:无

16、返回值:无 名称: uchar rdbyte(void) 功能: 从DS18B20读取一个字节 入口参数:无 出口参数:无 返回值:无名称:int readt(void) 功能:读取DS18B20暂存器中的温度值 入口参数:无 出口参数:无 返回值:无名称:void LCD_DispChar(uchar cy, uchar cx, char dispdata) 功能:在液晶屏的cy(0-7)行、cx(0-15)列显示字符dispdata入口参数:cy(uchar型 设置行) ; cx(uchar型 设置列); dispdata(char型 显示字符);出口参数:无返回值:无名称:void LC

17、D_DispStr(uchar cy, uchar cx, char *disp_str) 功能: 在液晶屏的cy(0-7)行、cx(0-15)列显示字符串disp_str入口参数: cy(uchar型 设置行) cx(uchar型 设置列) *disp_str(char型 显示字符串)出口参数:无返回值:无名称:void LCD_DispHZ(uchar cy, uchar cx, uchar dispdata功能:在液晶屏cy,cx位置显示汉字字符入口参数:cy(uchar型 设置行) ; cx(uchar型 设置列); dispdata(uchar显示汉字字符)出口参数:无返回值:无名称

18、:void LCD_DispHZStr(uchar cy, uchar cx, uchar *disp_str) 功能:在液晶屏cy,cx位置显示汉字字符串入口参数:cy(uchar型 设置行) cx(uchar型 设置列) *disp_str(uchar型 显示汉字字符)出口参数:无返回值:无名称:void LCD_DispFill(uchar filldata)功能:以filldata充填液晶屏入口参数:filldata(uchar);出口参数:无返回值:无名称:void LCD_DispIni(void) 功能:初始化液晶入口参数:无出口参数:无返回值:无名称:void InitTime

19、r0(void)功能:定时器中断入口参数:无出口参数:无返回值:无 5.编码、集成和调试主函数模块:#include #include #define uchar unsigned char #define uint unsigned int#define water_time 3 /常温的浇灌时间#define water_time1 6 /高温的浇灌时间extern void LCD_DispIni(void);extern void LCD_DispFill(uchar filldata);extern void LCD_DispChar(uchar cy,uchar cx,char d

20、ispdata);extern void LCD_DispStr(uchar cy,uchar cx,char *disp_str);extern void LCD_DispHZ(uchar cy,uchar cx,uchar dispdata);extern void LCD_DispHZStr(uchar cy,uchar cx,uchar *disp_str);extern void late();extern int readt(void);extern void convert(void); uchar code dp16=0,0,1,1,2,3,3,4,5,5,6,6,7,8,8,

21、9;/小数部分转换uchar count,count1;uchar s;uchar m;uchar h;uchar s1;uchar m1;uchar h1;uchar time_s,time_m;uchar counter; /定义的一个判断浇灌时间的中间变量uchar dbuf= ; /小数部分转换uchar dbuf1= ;uchar idata dbuf2= ;uchar idata t;sbit led=P11;sbit SOUND=P17;void time0(void) interrupt 1 /interrupt N表示函数声明为中断服务函数,1:定时器/计数器T0中断 TH0

22、=-50000/256; /定时时间为50MS /取高8位 TL0=-50000%256; /取低8位 count+; /每中断一次,计数器加1 if(count=20) /每秒执行一次 count=0; s+; if(s=60) m+; s=0; if(m=60) m=0; h+; void time1(void) interrupt 3 /3:定时器/计数器T1中断 TH1=-50000/256; TL1=-50000%256; count1+; if(count1=20) count1=0; s1+; if(s1=60) m1+; s1=0; if(m1=60) m1=0; h1+; m

23、ain() int temp,i; /用来存放传感器的温度值 uchar str7=0,0,0,0,0,0; /用于将温度值转换为字符串 uchar st2=0,0; uchar buf=0,1,2,3,4,5,0xff; uchar du=24,0xff; uchar chang=9,10,8,0xff; uchar di=11,12,8,0xff; uchar gao=6,7,8,0xff; uchar jgsj=13,14,8,0xff; uchar dcf=13,14,8,0xff; uchar on=22,0xff; uchar off=23,0xff; uchar fen=20,0

24、xff; uchar miao=21,0xff; uchar cou=15,16,25,26,0xff; int fleg=1,flag=1; bit zf; /正负标记 温度在0度以下为1,否则为0 LCD_DispIni(); str1=:; /在屏幕指定位置显示 LCD_DispHZStr(0,1,buf); LCD_DispHZStr(1,6,du); LCD_DispHZStr(1,0,dcf); LCD_DispHZStr(2,0,jgsj); LCD_DispHZStr(2,5,fen); LCD_DispHZStr(2,7,miao); LCD_DispHZStr(3,0,co

25、u); count=0; s=0; TMOD=0x11; /定时器0和1都设置成方式1 TH0=-50000/256; TL0=-50000%256; TH1=-50000/256; TL1=-50000%256; ET0=1; /允许T0中断 TR0=1; /启动T0中断 ET1=1; TR1=1; EA=1; /开CPU中断 while(1) EA=0; convert(); for(i=0;i0x01E0) /判断温度是否大于30度 LCD_DispHZStr(1,0,gao); counter=m*60+s; if(counter3) /高温浇灌时间间隔 s=0; m=0; h=0; fleg=1; time_s=0; time_m=0; led=1; else if(temp0x0190)/判断温度是否低于25度 TR0=0; TR1=0; s=0; m=0; h=0; s1=0; m1=0; h=0; LCD_DispHZStr(1,0,di); LCD_DispHZStr(2,3,off); time_s=0; time_m=0; led=1; else LCD_DispHZStr(1,0,chang); time_s=0; time_m=0; counter=m*60+s; if(counter3) /常温浇灌时间间隔 s=0; m=0; h=0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1