您好,欢迎访问三七文档
微机与单片机原理及应用课程设计报告题目:模拟智能灌溉系统学号: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:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;五个中断源的中断控制系统;一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。引脚图引脚功能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复位信号(2)、74HC138基本功能HC138按照三位二进制输入码和赋能输入条件,从8个输出端中译出一个低电平输出。真值表引脚图引脚功能(3)、DS1302基本功能74HC138可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。引脚图引脚功能DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.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~AIN3:模拟信号输入端。A0~A2:引脚地址端。VDD、VSS:电源端。(2.5~6V)SDA、SCL:I2C总线的数据线、时钟线。OSC:外部时钟输入端,内部时钟输出端。EXT:内部、外部时钟选择线,使用内部时钟时EXT接地。AGND:模拟信号地。AOUT:D/A转换输出端。VREF:基准电源端。数据格式在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变。SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件;SCL线是高电平时,SDA线由低电平向高电平切换,这个情况表示停止条件。(5)、24C02基本功能串行E2PROM是基于I2C-BUS的存储器件,遵循二线制协议,其具有接口方便,体积小,数据掉电不丢失等特点。引脚图引脚功能A0,A1,A2:器件地址选择SDA:串行数据、地址SCL:串行时钟WP:写保护Vcc:1.8V-6.0V工作电压Vss:地数据格式同上(PCF8591)2、系统电路图:X1X2SCLSDASCLSDASCLSDAXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U2AT89C51A1B2C3E16E24E35Y015Y114Y213Y312Y411Y510Y69Y77U374LS138234567891RP1RESPACK-8SCL10SDA9A05A16A27AIN01AIN12AIN23AIN34AOUT15VREF14AGND13EXT12OSC11U5PCF859133%RV11kVolts+1.65RL112VR510kD1LED-REDBUZ1BUZZERRST5SCLK7I/O6X12X23VCC18VCC21U1DS1302X2CRYSTALSCK6SDA5WP7A01A12A23U424C02CD2LED-REDD3LED-GREENS4S5S6S7二、软件部分2、程序#includereg51.h#includei2c.h#includeds1302.h#includeintrins.h#defineGPIO_DIGP0//--定义使用的IO--////--定义PCF8591的读写地址--//#defineWRITEADDR0x90//写地址#defineREADADDR0x91//读地址//74LS138定义sbitLSA=P2^2;sbitLSB=P2^3;sbitLSC=P2^4;//独立按键sbitS4=P1^0;sbitS5=P1^1;sbitS6=P1^2;sbitS7=P1^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(adNum99)adNum=99;if(adNumnum){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((n50)&&(S7==0)){Delay10ms(1
本文标题:模拟灌溉系统
链接地址:https://www.777doc.com/doc-6853656 .html