单片机.docx
- 文档编号:20720652
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:25
- 大小:268.46KB
单片机.docx
《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(25页珍藏版)》请在冰豆网上搜索。
单片机
湖南农业大学工学院
课程设计说明书
课程名称:
单片机原理及应用
题目名称:
基于单片机的温室自动供水系统的设计
班级:
20级专业班
姓名:
学号:
指导教师:
评定成绩:
教师评语:
指导老师签名:
2011年12月6日
目录
摘要2
1绪论2
1.1课题研究的目的与意义2
2系统结构与设备选型3
2.1系统总体设计3
2.2单片机主机系统电路3
2.3数据采集处理电路5
2.4LED显示系统电路6
2.5超限报警电路8
3系统软件件设计9
3.1系统主程序设计9
3.2采样子程序设计11
3.3数据处理12
4谢辞19
参考文献20
基于单片机的温室自动供水系统的设计
摘要:
随着现代科技的发展,电子计算机已用于控制温室环境。
控制系统由中央控制装置、终端控制设备、传感器等组成。
先编制出温室大白菜各生育阶段最适环境条件的管理程序表,存储于电子计算机的记忆装置中,电子计算机根据程序表确认、修正各栋温室内的参数,并给终端控制系统指令。
终端控制设备向中央控制装置输送检测信息,根据中央控制装置的指令输出控制信号,使电器机械设备执行动作,实现温室环境调节。
温室环境自动化控制系统在大型现代化温室的利用,是设施栽培高新技术的体现。
关键字:
传感器,单片机,温室,自动控制
1绪论
1.1课题研究的目的与意义
随着农业现代化的发展,设施园艺工程因其涉及学科广、科技含量高、与人民生活关系密切,己越来越受到世界各国的重视。
我国的现代化温室是在引进与自我开发并进的过程中发展起来的。
温室是植物栽培生产中必不可少的设施之一,温度是影响植物生长发育最重要的因子之一。
植物生长的温度范围以15—35摄氏度最适。
为它们提供一个更适宜其生长的封闭的、良好的生存环境,以提早或延迟花期,最终将会给我们带来巨大的经济效益。
随着现代科技的发展,电子计算机已用于控制温室环境。
控制系统由中央控制装置、终端控制设备、传感器等组成。
先编制出温室花卉各生育阶段最适环境条件的管理程序表,存储于电子计算机的记忆装置中,电子计算机根据程序表确认、修正各栋温室内的参数,并给终端控制系统指令。
终端控制设备向中央控制装置输送检测信息,根据中央控制装置的指令输出控制信号,使电器机械设备执行动作,实现温室环境调节。
该系统可自动控制加热、降温、通风。
;温室环境自动化控制系统在大型现代化温室的利用,是设施栽培高新技术的体现。
改变传统的控制方式,实施温室环境的计算机监控,开发符合中国国情的温室自动控制系统,对加快中国温室生产的现代化水平和提高温室的经济效益具有重要意义。
2系统结构与设备选型
2.1系统总体设计
该系统以AT8052单片机为核心,由单片机、变频器、测量与转换、显示及用户设定等几个主要部分组成。
如图2.1所示。
图2.1整体方案图
2.2单片机主机系统电路
AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。
内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与IntelMCS-51系列单片机的指令和输出管脚相兼容。
由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。
图3单片机主机系统图
2.2.1时钟电路
单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通
常用两种电路形式得到:
内部振荡和外部振荡。
MCS-51单片机内部有一个用于
构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输
入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实
际使用中常采用这种方式,如图3所示在其外接晶体振荡器(简称晶振)或陶
瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外
石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。
图3中外接晶体以及电容C2和C1构成并联谐振电路,它们起稳定振荡频
率、快速起振的作用,其值均为30P左右,晶振频率选6MHzo
RESET
2.2.2复位电路
为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位
后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。
单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两
个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为
高电平,单片机就处于循环复位状态。
复位后系统将输入/输出(1/0)端口寄存
器置为FFH,堆栈指针SP置为07H,SBUF内置为不定值,其余的寄存器全部
清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。
复
位操作有两种情况,即上电复位和手动(开关)复位。
本系统采用上电复位方式。
图3中R9和Cl组成上电复位电路,其值R取为1KQ,C取为1pF.
2.2.3数据存储器的扩展电路
AT89C51单片机外接数据RAM时,P2口输出存储器地址的高8位,PO口
分时输出地址的低8位和传送指令字节或数据。
PO口先输出低8位地址信号,
在ALE有效时将它锁存到外部地址锁存器中,然后PO口作为数据总线使用,此
处地址锁存器选用74LS373,实际电路图连接如图4所示。
图4数据存储器的扩展电路
2.3数据采集处理电路
ADC0809是一种8位逐次逼近式A/D转换器,内部具有锁存控制的8路模
拟开关,外接8路模拟输入端,可同时对8路0-5V的输入模拟电压信号分时进
行采集转换,本系统只用到INO和INl两路输入通道。
ADC0809转换器的分辨
率为8位,最大不可调误差小于士1LSB,采用单一+5V供电,功耗为15mW,
不必进行零点和满度调整。
由于ADC0809转换器的输出数据寄存器具有可控的
三态输出功能,输出具有TTL三态锁存缓冲器,故其8位数据输出引脚可直接
与数据总线相连。
A/D转换器需外部控制启动转换信号方能进行转换,这一启动
转换信号可由CPU提供,不同型号的A/D转换器,对启动转换信号的要求也不
同,分脉冲启动和电平启动两种,ADC0809采用脉冲启动转换,只需给A/D转
换器的启动控制转换的输入引脚((START)上,加入正脉冲信号,即启动A/D
转换器进行转换,转换开始后,转换结束信号输出端(EOC)信号变低,转换结
束时,EOC返回高电平,以通知主机读取转换结果的数字量,这个信号可以作
为A/D转换器的状态信号供查询,也可以用作中断请求信号。
图5数据采集处理电路
本系统中ADC0809与AT89C51单片机的接口如图5所示,采用等待延时方式。
ADC0809的时钟频率范围要求在10-1280kHz,AT89C51单片机的ALE脚的频率是单片机时钟频率的1/6,因此当单片机的时钟频率采用6MHz,ADC0809输入时钟频率即为CLK=1MHz,发生启动脉冲后需延时100Us才可读取A/D转换数据。
如图5连接方式,ADC0809的8位数据输出引脚可直接与数据总线相连,地址译码引脚A,B,C分别与74LS373的A,B,C相连,以选通INO-IN7中的一个通道。
AT89C51的p2.6作为片选信号,在启动AM转换时,由单片机的写信号WR和p2.。
控制ADC的地址锁存和转换启动。
由于ALE与START连在一起,因此ADC0809在锁存通道地址的同时也启动转换,在读取转换结果时,用单片机的读信号RD和p2.。
引脚一级或非门产生的正脉冲作为OE信号,用以打开三态输出锁存器。
2.4LED显示系统电路
微机化测控系统中常用的测量数据的显示器有发光二极管显示器(简称LED或数码管)和液晶显示器(简称LCD)。
这两种显示器都具有线路简单、耗电少、成本低、寿命长等优点,本系统输出结果选用4个LED显示。
数码管有共阴共阳之分,本系统采用8段共阴型LED,其原理图如图6所示,每位数码管内部有8个发光二极管,公共端由8个发光二极管的阴极并接而成,正常显示时公共端接低电平(GND),各发光二极管是否点亮取决于a-dp各引脚上是否是高电平。
LED数码管的外形结构如图6,外部有10个引脚,其中3,8脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字((0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可。
由于系统要显示的内容比较简单,显示量不多,所以选用数码管既方便又经济。
LED有共阴极和共阳极两种。
如图6所示。
二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。
一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。
当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。
为了保护各段LED不被损坏,需外加限流电阻。
图6LED数码管结构原理图:
符号和引脚共阴极共阳极
数码管显示器有两种工作方式,即静态显示方式和动态扫描显示方式。
为节省端口及降低功耗,本系统采用动态扫描显示方式。
动态扫描显示方式需要解决多位LED数码管的“段控”和“位控”问题,本电路的通过P1口实现:
而每一位的公共端,即LED数码管的“位控”,则由P3口控制。
这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。
在这一瞬时,只有这一位在显示,其他几位则暗。
在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开头”状态。
因AT89C51单片机I/O口资源有限,必须对其Il0口进行扩展才能满足实现系统功能,如图7所示为用8155扩展1/0口的4个8位LED动态显示器,显示扫描由程控实现,其中PA口输出字型码,PC口输出位选信号即扫描信号,图中片选线CE和AT89C51的P2.7口相连,IO/M选通输入线与P2.4口相连,该系统中当P2.7=0且P2.4=1时,选中8155芯片内三个I/O口。
相应的端口地址分配如表4-1:
表4-18155端口地址分配
图7显示电路
2.5超限报警电路
为了在某些紧急状态或反常状态下,能使操作人员不致忽视,以便及时处理,往往需要有某种更能引起人们注意提起警觉的报警信号产生,这种报警信号通常有三种类型:
闪光报警、鸣音报警、语音报警,本系统采用简单易行的声光报警电路。
如图8所示报警电路,报警设备选用压电式蜂鸣器,它约需要10mA的驱动电流,只需在其两条引线上加3一15V的直流电压,即可产生3KHz左右的蜂鸣声音,图中蜂鸣器的一端接在高电平+SV,另一端接Pl.0,在初态Pl.0始终输出高电平1,当需要报警时,程序对其端口清零即可,声音的长短可用延时程序控制实现。
图中接入的发光二极管LED为超高线报警器,当P1.1端输出为低电平“0”时,二极管导通,灯亮发出报警信号
图8报警电路
3系统的软件设计
统软件程序设计主要包括:
主程序设计,采样子程序设计,数据处理程序,显示子程序,串口通信程序等。
各芯片地址编码为:
RAM6116:
OFOOOH-OF7FFH81551/0口:
7FF8H-7FFDH
ADC0809:
OBFF8H-OBFFFH
3.1系统主程序设计
ADTURNOEQU21H;INO通道A/D转换数据存放首址
ADTURN1EQU2CH;IN1通道A/D转换数据存放首址
LINEADROEQU37H;1N0采集数据经滤波处理数据存
放地址
LINEADR1EQU38H;INl采集数据经滤波处理数
据存放地址
LINEADREQU39H;平均值存放地址
HUMIDEQU3BH;标度变换后的湿度值存放地址
BCDADREQU3CH;BCD转换后的湿度值存放地址
HUMADREQU3DH;上位机传来的湿度值存放地址
TIMEADREQU3EH;上位机传来的时间值存放地址
T100USEQU256-50;延时参
Cl00USEQU3FH
SHOWADREQU40H;显示区数据存放首址
ORGOOOOH
SJMPSTART
ORGOOOBH;定时器0中断服务程序入口
LimpTOINT
ORG0023H;串行I/O中断服务程序入口
LimpSERVE
ORG0050H
START:
MOVSP,#50H;设置堆栈
MOVHUMADR,#OFFH
SETBOD3H;选中寄存器3
SETSOD4H
MOVR0,#HUMADR
CLROD3H;选中寄存器0
CLROD4H
MovTMOD,#22H;主程序初始化
MovTH1,#OF3H
MovTLl,#OF3H
MovSCON,#50H
MovPCON,#80H
movDPTR,#7FF8H
movA,#4DH
MOVX@DPTR,A
SETBTR1
SETBEA
SETBES
RUN:
LCALLAD;调用A/D转换子程序
LCALLMAOPAO;调用滤波子程序
LCALLTURN;调用湿度转换子程序
MovA,HUMID;将湿度值送往上位机
MovSBUF,A
LCALLTWOSEC;延时等待两妙钟
LCALLBCDTURN;调用BCD转换子程序
LCALLSHOW;调用显示子程序
MovA,HUMID
CJNEA,HUMADR,COMP;检测到的湿度值大于上位机送来
的湿度值时,则循环采样,否则报
警灌溉
DONE:
CLRP1.1
LCALLALARM;调用报警延时子程序进行灌溉动作
LCALLTIME
ORLP1,#02H
LCALLTENMIN;灌水结束等待10分钟
LimpRUN;回到主程序
COMP:
JCDONE
LJMPRUN
END
3.2采样子程序设计
根据电路图5,因EOC未接入单片机,故只能采用延时等待的方法来读取A/D转换结果,ADC0809的INO和INl两个地址分别是OBFF8H,OBFF9H,INO通道采集到的11个数据放入以ADTURNO(片内21H)为首址的一片数据区内,IN1通道采集到的11个数据放入以ADTURN1(片内2CH)为首址的另一片数据区内。
程序清单:
AD:
MOVR0,#ADTURNO
MOVR6,#OBH
ADLOOP:
MOVDPTR,#OBFF8H;启动INO通道A/D转换
GOON:
MOVX@DPTR,A
MOVR7,#OAOH;延时等待转换结束
DLAY:
NOP
NOP
NOP
NOP
NOP
DJNZR7,DLAY
MOVXA,@DPTR
MOV@R0,A;将转换后的数据送入以
ADTURNO为首址的一片
RAM内
INCRO
DJNZR6,ADLOOP
SJMPAD
RET
3.3数据处理
3.3.1数字滤波技术
在单片机进行数据采集时,输入信号总难免受到这样那样的随机干扰,它们
来自被测信号源、传感器、外界干扰等,从而使A/D送入单片机的数据中存在误
差,这种因随机千扰而引入的误差为随机误差,其特点是在相同条件下测量同一
量时,其大小和符号作无规则变化而无法预测,但测量次数足够多时,其总体服
从统计规律,大多数随机误差服从正态分布。
为了克服随机干扰引起的误差,硬
件上可采用滤波技术;软件上可按照统计规律采用数字滤波方法来抑制有效信号
中的干扰成分,消除误差。
本系统即采用数字滤波法。
数字滤波无需硬件,它是用软件算法来实现的,只要适当改变软件滤波程序
的运行参数,就能方便的改变其滤波特性,实时性很强。
常用的数字滤波算法有:
限幅滤波法、中位值滤波法、算术平均滤波法、去极值平均滤波法、移动平均滤
波法、加权平均滤波法、低通滤波法、复合滤波法等。
中位值滤波法能有效的克服偶然因素引起的波动或采样器不稳定引起的误
码等脉冲干扰,对变化比较缓慢的被测参数采用此法能收到良好的滤波效果。
因
本系统的被测参数土壤湿度为缓慢变化参数,故采用中位值滤波算法。
中位值滤波算法实际上是一种排序方法,其具体思路是:
对被测参数连续采
样N次(一般N为奇数),然后把N次采样值按大小排列,取其中间值为本次采
样值。
本程序每次对土壤湿度连续采样11次,ADTURNO为片内RAM的21H地
址单元,是采样值放入内存的首地址,滤波结果放入片内RAM的37H地址单元,
即LINEADRO地址。
程序清单:
MAOPAO:
MOVRl,#ADTURNO
MOVR5,#OAH
CLROOH
FILTER:
MOV3CH,@R1
INCRl
MOVA,@R1
CLRC
SUBBA,3CH
JNCNEXT
MOVA,@Rl
MOV@R1,3CH
DECR1
MOV@Rl,A
INCRl
SETBOOH
NEXT:
DJNZR5,FILTER
JBOOH,MAOPAO
MOVLINEADRO,26H
RET
图9数字滤波程序流程图
3.3.2标度变换
在微机化测控系统中,经A/D转换器接口送入微机的数据,是对被测量进行
测量得到的原始数据。
这些原始数据送入微机后通常要先进行一定的处理,然后
才能输出作为显示器的显示数据。
例如当被测温度为1000C,经热电偶转换成热
电势,再经放大和A/D转换得到的数字是10,这个A/D转换结果10虽然与100
0C温度是对应的,但数字上并不是相等的。
因此,不能当作温度值去显示或打
印,必须把A/D转换结果10变换成供显示或打印的温度值100,这个变换就是
数字显示的标度变换。
在该系统中,湿度传感器和A/D相连,川D转换器和单片机相连,其中不包
括任何非线性的数字化测量通道,因此被测量的值N‘与A/D转换结果D,存在如
图10所示线性关系。
图10线性关系
在该系统中,土壤湿度测量范围0100%对应的输出电压范围为0-5V,ADC0809为8位A./D转换器,转换输出的数码为0255。
即根据上面公式,DL=0lDH=255,NL=0,NH=100.
TURN:
SETBOD3H
CLROD4H;选则第一组寄存器
CLRC
MOVA,LINEADR
MOVB,#20
MULAB
CLROD2H
MOVR7,B
MOVR6,A
MOVR5,#00H
MOVR4,#33H
LOOP1:
MOVA,R7
JNZLOOP2
MOVA,R6
JNZLOOP2
MOVR7,#0
MOVR6,#0
SJMP$
LOOP2:
CLRA
MOVR2,A
MOVR3,A
MOVRl,#16
ADIN:
CLRC
MOVA,R6
RLCA
MOVR6,A
MOVA,R7
RLCA
MOVR7,A
MOVA,R2
RLCA
MOVR2,A
MOVA,R3
RLCA
LOOP3:
DJNZR1,ADIN
MOVA,R3
JBACC.7,LOOP4
MOVA,R2
RLCA
MOVR2,A
MOVA,R3
RLCA
SUBBA,R5
JCDONE1
JNZLOOP4
MOVA,R2
SUBBA,R4
JCDONE1
LOOP4:
MOVA,R6
ADDA,#1
MOVR6,A
MOVA,R7
ADDCA,#0
MOVR7,A
DONE1:
MOVHUMID,R6
CLR0D3H
RET
3.3.3BCD转换
计算机所能识别和处理的是二进制数,在进行标度变换后的结果都是用二进
制数进行计算和存储的,而在输入/输出系统中,按照人们的习惯均采用十进制
数比较直观一些。
在计算机中十进制数常采用BCD码(即用四位二进制数代表
单片机控制的节水灌溉系统的研究
一位十进制数)表示,这样采样得到的数据才可以以十进制的形式输出显示。
本
系统将二进制数转换成BCD数的方法是将其除以10”次幂,即得相应位数,最
后的余数为个位数。
程序如下:
BCDTURN:
MOVSHOWADR+3,#00H‘因湿度值只能小于100,故千位数为0
MOVB,#100
MOVA,HUMID
DIVAB
MOVSHOWADR+2,A‘将百位数送SHOWADR+2显示地址
MOVA,#10
XCHA,B
DIVAB
MOVSHOWADR+1,A‘将十位数送SHOWADR+1显示地址
MOVSHOWADR,B‘将个位数送SHOWADR显示地址
RET
3.4LED动态显示程序
根据LED动态显示系统电路图4-8,8155控制口的地址为7FF8H,POA口
地址为7FF9H,PC口地址为7FFBH,片内显示缓冲区为
SHOWADR-SHOWADR+3(40H-43H),共4个单元对应4个数码管。
程序中先
取SHOWADR-I-3中的数,对应选中最左边的数码管,其余类推。
由于LED为
共阴极接法,并有反相驱动,字型表TAB中有效的字型码为:
LED显示段码
字型
共阳极段
共阴极段
字型
共阳极段
共阴极段
0
C0H
3FH
9
90H
6FH
1
F9H
06H
A
88H
77H
2
A4H
5BH
B
83H
7CH
3
B0H
4FH
C
C6H
39H
4
99H
66H
D
A1H
5EH
5
92H
6DH
E
86H
79H
6
82H
7DH
F
84H
71H
7
F8H
07H
空白
FFH
00H
8
80H
7FH
P
8CH
73H
程序清单如下:
MOVDPTR,#7FF8H;指向8155控制口
MOVA,#4DH;设置8155工作方式字
MOVX@DPTR,A;设A口、C口均为输出
SHOW:
CLROD3H
SETBOD4H;选中寄存器2组
MOVR4,#OFFH
SHOWSTART:
MOVR0,SHOWADR+3;指向缓冲区末单元
MOVR1,#4;显示4位LED
SHOWLED:
MOVR6,#20H
MOVR7,#00H
DIR1:
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机