版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模拟灌溉系统本页仅作为文档页封面,使用时可以删除Thisdocumentisforreferenceonly-rar21year.March微机与单片机原理及应用
课程设计报告题目:模拟智能灌溉系统学号:110603136姓名:黄鑫年级:11级自动化指导教师:丛玉华开课学期教室上交时间成绩大三上实B3032013-12-21-、硬件部分1、涉及芯片:(1)、STC90C519RD+基本功能8位CPU-4kbytes程序存储器(ROM)(52为8K)128bytes的数据存储器(RAM)(52有256bytes的RAM)32条I/O口线-111条指令,大部分为单字节指令21个专用寄存器2个可编程定时/计数器・5个中断源,2个优先级(52有6个)一个全双工串行通信口外部数据存储器寻址空间为64kB外部程序存储器寻址空间为64kB逻辑操作位寻址功能・双列直插40PinDIP封装单一+5V电源供电CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;I/O口:四个8位并行I/O口,既可用作输入,也可用作输出T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统;一个全双HUART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。引脚图P1.0匚1V如□VccP1.1C239□P0.0PL2c338□P0,1F1.3c4町nTO,2F1.4匚538ziFO一3匚fi临ZIKO.1P1.6匚7—34□P0.5PL7e8g33□P0,6RSifvpl)匚96界qPD.7洋.O/RXJ)匚10迂31=iI■:A/VppP3.1/TX1)匚11—30nM.E/P[fOCrs.a/nTO匚12o跆□P5EN嘴3/INTI匚13g卵□P2.74/TOt[427□PLs曩n/T]C15□P3.6/■亟匚1625□P2.4P3.7/RD匚1724nP2.3XTAI-2仁M对□5匚22□E2.1&c2021=iP2.0引脚功能P0口有三个功能:1、外部扩展存储器时,当做数据总线2、外部扩展存储器时,当作地址总线3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。、P1口只做I/O口使用:其内部有上拉电阻。P2口有两个功能:1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,PSEN外部程序存储器读选通信号ALE地址锁存控制信号EA访问和序存储器控制信号XTAL1和XTAL2外接晶振引脚。当使用芯片内部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。VCC:电源+5V输入VSS:GND接地RST复位信号、74HC138基本功能HC138按照三位二进制输入码和赋能输入条件,从8个输出端中译出一个低电平输出。真值表引脚图
EsE2ElA*Ai&YOy1Y2Y3Y4EsE2ElA*Ai&YOy1Y2Y3Y4Y5Y6Y7XElXXXXEEIEHHHHEEHXXHXXXFFHHHHrrBIXXXXXrrHHHHrrBHLLLLLLHHHHHHHHLLLLHHLHHHHHHHLLLHLH.HLHHHH.HHLLLHHH.HHLHHH.HIILLHLLE[I[HHLHE[IIHLr.HLHFFHHHHLrrHHLLHHLHHHHHHLHHLLHHHHHHHHHHL74HC138集成译码器功能表.A0*ETE7E3(¥7)¥7顷4DtJEEEEEEldcg网网(¥3){Y4(V5(V6
VCY0Y1Y2Y3Y4Y5Ye
SS23232313235]“H一高电平L一低电平X一任意电平E3.E2.E?为输入使能端Aw,Ai,Aq为二进制数据输入端可"寸为8个输出信号字母上面的J号说明该输入或输出是低电平有效、DS1302基本功能74HC138可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。引脚图VcC218X127・X236GND—45—VcciSCLKI/ORST引脚功能DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给VcC218X127・X236GND—45—VcciSCLKI/ORSTX1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电
平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCLK为时钟输入端。数据格式的控剖宇节的控剖宇节控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。(4)、PCF8591基本功能PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转引脚图引脚功AIN0〜地址dElIX匕pcraseiE叵A1NDA1NLA1N2A1N3A1A£Vga画AOUT模转引脚图引脚功AIN0〜地址dElIX匕pcraseiE叵A1NDA1NLA1N2A1N3A1A£Vga画AOUT回’『R3F画EXT回OSC亟5CLTSDA换。VDD、VSS:电源端。(2.5〜6V)能AIN3:模拟信号输入端。A0〜A2:引脚端。SDA、SCL:I2C总线的数据线、时钟线。OSC:外部时钟输入端,内部时钟输出端。EXT:内部、外部时钟选择线,使用内部时钟时EXT接地。AGND:模拟信号地。AOUT:D/A转换输出端。VREF:基准电源端。数据格式在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变。SDASCL教据线稳定'允音教数据正常|据改变SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件;SCLSDASCL教据线稳定'允音教数据正常|据改变、24C02基本功能串行E2PROM是基于I2C-BUS的存储器件,遵循二线制协议,其具有接口方便,体积小,数据掉电不丢失等特点。引脚图引脚功能A0,A1,A2:器件地址选择SDA:串行数据、地址SCL:串行时钟WP:写保护Vcc:1.8V-6.0V工作电压Vss:地数据格式同上(PCF8591)2、系统电路图:二、软件部分2、程序#include<reg51.h>#include〃i2c.h〃#include"ds1302.h"#include<intrins.h>#defineGPIO_DIGP0//--定义使用的IO--////--定义PCF8591的读写地址--//#defineWRITEADDR0x90//写地址#defineREADADDR0x91//读地址//74LS138定义sbitLSA=P2"2;sbitLSB=P2”3;sbitLSC=P2"4;〃独立按键sbitS4=P「0;sbitS5=P「1;sbitS6=P「2;sbitS7=P「3;sbitLED_RED=P1"4;//红灯,手动模式sbitLED_GREEN=P1”5;〃绿灯,自动模式sbitfengmingqi=P1"6;sbitRELAY=P1”7;bitflag_mode=0;bitissetting=0;ucharnum=50;//—定义全局变量--//unsignedcharcodeDIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsignedcharDisplayData[8];//用来存放要显示的8位数的值unsignedchartable[8];//用来存放自动模式下设置界面//--声明全局变量--//voidDigDisplay();voidDelay10ms(ucharc);bitISendByte(unsignedcharsla,unsignedcharc);unsignedcharIRcvByte(unsignedcharsla);voidAt24c02Write(unsignedchar,unsignedchar);unsignedcharAt24c02Read(unsignedchar);voidTimer0Configuration();voidKey_down();/*****PCF8591**********/voidPcf8591SendByte(unsignedcharchannel);unsignedcharPcf8591ReadByte();/********************************************************************************函数名:main*函数功能:主函数*输入:无*输出:无*******************************************************************************/voidmain()(unsignedintadNum;floatvalue;LED_RED=0;LED_GREEN=0;num=At24c02Read(2);Ds1302Init();while(1)(Pcf8591SendByte(0);//发送电位器转换命令adNum=Pcf8591ReadByte();//将转换结果读走value=adNum/2.55;if(adNum>99)adNum=99;if(adNum>num)(RELAY=1;fengmingqi=1;}else(RELAY=0;fengmingqi=0;}Ds1302ReadTime();Key_down();DisplayData[0]=DIG_CODE[TIME[2]/16];〃时DisplayData[1]=DIG_CODE[TIME[2]&0x0f];DisplayData[2]=0x40;DisplayData[3]=DIG_CODE[TIME[1]/16];〃分DisplayData[4]=DIG_CODE[TIME[1]&0x0f];DisplayData[5]=0x00;DisplayData[6]=DIG_CODE[adNum/10];DisplayData[7]=DIG_CODE[adNum%10];table[0]=0x40;table[1]=0x40;table[2]=0x40;table[3]=0x40;table[4]=0x40;table[5]=0x40;table[6]=DIG_CODE[num/10];table[7]=DIG_CODE[num%10];DigDisplay();}}/********************************************************************************按键*******************************************************************************/voidKey_down()(ucharn=0;if(S7==0)(Delay10ms(1);if(S7==0)(if(flag_mode==0)flag_mode=1;elseflag_mode=0;}while((n<50)&&(S7==0))(Delay10ms(1);n++;}n=0;}if(flag_mode)//手动模式(LED_RED=1;LED_GREEN=0;if(S6==0)(Delay10ms(1);if(S6==0)(fengmingqi—fengmingqi;}while((n<50)&&(S6==0))(Delay10ms(1);n++;}n=0;}if(S5==0)(Delay10ms(1);if(S5==0)(RELAY=0;//打开灌溉系统}while((n<50)&&(S5==0))(Delay10ms(1);n++;}n=0;}if(S4==0)(Delay10ms(1);if(S4==0)(RELAY=1;//关闭灌溉系统}while((n<50)&&(S4==0))(Delay10ms(1);n++;}n=0;}if(adNum>num)(RELAY=1;fengmingqi=1;}}else//自动模式(LED_RED=0;LED_GREEN=1;if(S6==0)Delay10ms(1);if(S6==0)issetting=~issettingwhile((n<50)&&(S6==0))Delay10ms(1);n++;n=0;if(issetting)if(S5==0)Delay10ms(1);if(S5==0)if(num<99)
num++;while((n<50)&&(S5==0))Delay10ms(1);n++;n=0;if(S4==0)Delay10ms(1);if(S4==0)if(num>0)num--;while((n<50)&&(S4==0))Delay10ms(1);n++;}}else(At24c02Write(2,num);}if(adNum>num)(RELAY=1;fengmingqi=1;}else(RELAY=0;fengmingqi=0;}}}/********************************************************************************函数名:DigDisplay*函数功能:使用数码管显示*输入:无*输出:无*******************************************************************************/voidDigDisplay()(unsignedchari;unsignedintj;for(i=0;i<8;i++)(switch(i)//位选,选择点亮的数码管,(case(0):LSA=0;LSB=0;LSC=0;break;//显示第0位case(1):LSA=1;LSB=0;LSC=0;break;//显示第1位case(2):LSA=0;LSB=1;LSC=0;break;//显示第2位case(3):LSA=1;LSB=1;LSC=0;break;//显示第3位case(4):LSA=0;LSB=0;LSC=1;break;//显示第4位case(5):LSA=1;LSB=0;LSC=1;break;//显示第5位case(6):LSA=0;LSB=1;LSC=1;break;//显示第6位case(7):LSA=1;LSB=1;LSC=1;break;//显示第7位}if(issetting)(GPIO_DIG=table[i];〃发送段码}else(GPIO_DIG=DisplayData[i];//发送段码}j=50;//扫描间隔时间设定while(j--);GPIO_DIG=0x00;//消隐}}/*******************************************************************************函数名:voidAt24c02Write(unsignedcharaddr,unsignedchardat)*函数功能:往24c02的一个地址写入一个数据*输入:无*输出:无*******************************************************************************/voidAt24c02Write(unsignedcharaddr,unsignedchardat)(I2C_Start();I2C_SendByte(0xa0,1);//发送写器件地址I2C_SendByte(addr,1);//发送要写入内存地址I2C_SendByte(dat,0);〃发送数据I2C_Stop();}/*******************************************************************************函数名:unsignedcharAt24c02Read(unsignedcharaddr)*函数功能:读取24c02的一个地址的一个数据*输入:无*输出:无*******************************************************************************/unsignedcharAt24c02Read(unsignedcharaddr)(unsignedcharnum;I2C_Start();I2C_SendByte(0xa0,1);//发送写器件地址I2C_SendByte(addr,1);//发送要读取的地址I2C_Start();I2C_SendByte(0xa1,1);//发送读器件地址num=I2C_ReadByte();〃读取数据I2C_Stop();returnnum;}/*******************************************************************************函数名:Pcf8591SendByte*函数功能:写入一个控制命令*输入:channel(转换通道)*输出:无*******************************************************************************/voidPcf8591SendByte(unsignedcharchannel)(I2C_Start();I2C_SendByte(WRITEADDR,1);//发送写器件地址I2C_SendByte(0x40|channel,0);//发送控制寄存器I2C_Stop();}/*******************************************************************************函数名:Pcf8591ReadByte*函数功能:读取一个转换值*输入:无*输出:dat*******************************************************************************/unsignedcharPcf8591ReadByte()(unsignedchardat;I2C_Start();I2C_SendByte(READADDR,1);//发送读器件地址dat=I2C_ReadByte();//读取数据I2C_Stop();//结束总线returndat;}voidDelay10ms(ucharc)(uchara,b;for(;c>0;c--)(for(b=38;b>0;b--)(for(a=130;a>0;a--);}}}三、系统说明手册功能简述:要求“模拟智能灌溉系统”能够实现土壤湿度测量、土壤湿度和时间显示、湿度阈值设定及存储等基本功能。通过电位器Rb2输出电压信号,模拟湿度传感器输出信号,再通过AD采集完成湿度测量功能;通过DS1302芯片提供时间信息;通过按键完成灌溉系统控制和湿度阈值调整功能,通过LED完成系统工作状态指示功能。系统硬件电路主要由单片机控制电路、显示单元、ADC采集单元、RTC单元、EEPROM存储单元、继
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年吉林长春市初二地理生物会考试题题库(答案+解析)
- 妇产科就业方向
- 2026年广西壮族自治区来宾市中考生物试题及答案
- 2025年广东省中山市初二地理生物会考真题试卷+解析及答案
- 浙江金融职业蓝图
- 吊装事故应对指南
- 《将进酒》课件(内嵌视频)2025-2026学年统编版高二语文选择性必修上册
- 新政下商业秘密保护协议范本
- 农民工劳动合同范本下载
- 2026年合作协议书范本:甲方乙方
- 新高考背景下2025年高考物理命题趋势分析与复习备考策略讲座
- CESA-3023-011-《信息技术服务 运行维护服务能力成熟度模型》
- 老旧桥梁翻新整改实施方案
- NB-T20048-2011核电厂建设项目经济评价方法
- DL-T475-2017接地装置特性参数测量导则
- 卵巢恶性肿瘤的保留生育功能治疗
- 2023年新高考II卷数学高考试卷(原卷+答案)
- 中药配方颗粒
- 消防工程移交培训资料及签到表
- GB/T 9239.1-2006机械振动恒态(刚性)转子平衡品质要求第1部分:规范与平衡允差的检验
- 糖肾康颗粒对糖尿病肾病尿渗透压影响临床的研究
评论
0/150
提交评论