基于单片机的宠物喂食器电路设计.docx

上传人:b****5 文档编号:14943826 上传时间:2023-06-28 格式:DOCX 页数:58 大小:1.17MB
下载 相关 举报
基于单片机的宠物喂食器电路设计.docx_第1页
第1页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第2页
第2页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第3页
第3页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第4页
第4页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第5页
第5页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第6页
第6页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第7页
第7页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第8页
第8页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第9页
第9页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第10页
第10页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第11页
第11页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第12页
第12页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第13页
第13页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第14页
第14页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第15页
第15页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第16页
第16页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第17页
第17页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第18页
第18页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第19页
第19页 / 共58页
基于单片机的宠物喂食器电路设计.docx_第20页
第20页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的宠物喂食器电路设计.docx

《基于单片机的宠物喂食器电路设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的宠物喂食器电路设计.docx(58页珍藏版)》请在冰点文库上搜索。

基于单片机的宠物喂食器电路设计.docx

基于单片机的宠物喂食器电路设计

摘要

本设计所研究的是实现一个宠物自动喂食器,即先将宠物饲料放入其中,通过设定五个喂食时间点,当到达这一时间点后,系统发出喂食信号吸引宠物,自动进行喂食。

本设计主要研究如何设定五个时间点并发出喂食信号。

宠物喂食器系统主要包括单片机控制、自动开关与蜂鸣器提示、倒计时间设定系统。

喂食器的喂食过程,通过键盘设定五个倒计时间,当依次到达这五个时间时,发光二极管发光,蜂鸣器发出响声,吸引宠物过来进食并自动投放食物。

本设计解决了工作时或节假日时由于主人不在不能对宠物进行喂食,避免了宠物由于饮食不正常所产生的问题。

在整个系统中,利用单片机对各个系统进行控制。

倒计时系统时间通过六位七段数码管显示出来。

利用键盘设定五个倒计时间,单片机不停的读取时间,并判断是否到达喂食时间。

开关系统电阻与发光二极管表示,发光二级管收到低电平时导通表示开关打开投放喂食。

同时接有蜂鸣器,当到达喂食时间后蜂鸣器发出响声吸引宠物进行喂食。

关键词:

智能;定时喂养;单片机AT89S52;

 

Abstract

Thestudydesignistoachieveanautomaticpetfeeder,petfeedintowhichwillsetthefivefedpoint,whenyoureachthispointintime,automaticallyfeeding.Themainpointofhowtosetthetimewithinthepetfoodputout.PetfeedersystemincludesMCUcontrol,automaticswitchandmusicalertsystem,theremainingtimesettingsystem.Feederfeedingprocess,thefiveremainingtimesetbythekeyboard,whentheorderreachesthefivetime,whilethetimerchiptosendasignalrelayandmusic,musicplaybackchip,apieceofmusicattractedthepet,therelayswitchisclosedSothataredlightemittingdiode,saidswitchdeliveryoffood.Thisdesignsolvestheholidayswhenworkornotisnottheownerofthepettofeed,toavoidthepetfoodisnotnormalbecausetheproblemsarising.

Throughoutthesystem,theuseofsinglechipcontrolsystemofeach.Countdowntothesystemtimebysixoutofsevensegmentdigitaldisplay.Usingthekeyboardtosetthefiveremainingtime,microcontrollerreadsthestoptimeandtodeterminewhetherthefeedingtimearrives.Switchingsystembytherelayandthelight-emittingdiode,saidswitchisclosedwhentherelayreceivedhighlight-emittingdiode,saidswitchisrunningfeeding.Tiphasamusicsystem,whenthearrivaltimeafterfeedingapieceofmusictipsmusicplaybackchiptofeedpets.

Keywords:

intelligent;automaticfeeding;MCU

 

中文摘要

英文摘要

1绪论

1.1设计意义

单片机自20世纪70年代问世以来,以其极高的性能价格比受到人们的重视与关注,应用广泛,发展快速。

单片机具有体积小、速度快、抗干扰能力强,环境要求不高,性能可靠与价格低廉等优点,通常在其外部配置外围电路就可构成一完整的控制系统。

由于具有以上优点,在我国,单片机已广泛应用与工业自动化控制、自动检测、智能仪器仪表、家电电器、电力电子、武器装备、机电一体化设备等各个方面。

单片机,亦称单片微电脑或单片微型计算机。

它是把中央处理器(CPU)、随机存取

存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。

现在越来越多的家庭都饲养有猫、狗等宠物,但是由于工作等原因,宠物的饮食

规律得不到一定的保障,宠物喂食器可以解决这一问题,宠物自动喂食器可以定时定

量的进食,且设计简单方便,有一定的实用价值。

1.2设计要求

利用单片机的定时功能设计一个宠物自动喂食盒的电路,要求:

可以通过键盘输入至少3个倒计时时间,每一个倒计时时间到后,发出宠物开始喂食信号;

扩展功能:

按照年/月/日/时/分的格式输入宠物进食时间;

 

2设计方案

分析本题,根据设计要求先确定了本系统的整体设计原理框图如图1:

图1系统整体设计原理框图

2.1按键模块

采用7个触键开关,可实现五个倒计时间依次键入,同时还有两个调时按键,再一个复位按键。

2.2自动开关模块

采用三极管与发光二极管近似表示。

本系统是基于52单片机的宠物自动喂食的设计,用电阻与发光二极管代替比较容易,当发光二级管接收到一个低电平时开关闭合,发光二极管导通发出绿光表示自动投食。

2.3蜂鸣器模块

采用一个三极管与一个蜂鸣器,由蜂鸣器发出响声吸引宠物过来进食。

当发光二极管亮灯时,蜂鸣器接收到一个低电平,蜂鸣器器发出响声吸引宠物过来进

食。

2.4显示模块

选用数码管显示,用普通的数码管显示简单的数字、符号、字母。

只需一次显示5个倒计时间,而且每个时间只需显示6个数字,即年/月/日。

3硬件电路的设计

3.1单片机

3.1.1AT89S52单片机的简介

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工80C51产品指令与引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

3.1.1.1主要性能

与MCS-51单片机产品兼容

8K字节在系统可编程Flash存储器

1000次擦写周期

全静态操作:

0Hz~33Hz

三级加密程序存储器

32个可编程I/O口线

三个16位定时器/计数器

八个中断源

全双工UART串行通道

低功耗空闲与掉电模式

掉电后中断可唤醒

看门狗定时器

双数据指针

掉电标识符

3.1.1.2AT89S52双列直插式引脚图

图2.1AT89S52双列直插式引脚图

3.1.1.3端口介绍

P0口:

P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入。

当访问外部程序与数据存储器时,P0口也被作为低8位地址/数据复用。

在这种模式下,P0具有内部上拉电阻。

在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。

程序校验时,需要外部上拉电阻。

P1口:

P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。

对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

此外,P1.0与P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)与时器/计数器2的触发输入(P1.1/T2EX)。

在flash编程与校验时,P1口接收低8位地址字节。

P2口:

P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。

对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。

在这种应用中,P2口使用很强的内部上拉发送1。

在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。

在flash编程与校验时,P2口也接收高8位地址字节与一些控制信号。

P3口:

P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。

对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

P3口亦作为AT89S52特殊功能(第二功能)使用。

在flash编程与校验时,P3口也接收一些控制信号。

3.1.2AT89S52的时钟介绍

单片机的工作过程是:

取一条指令、译码、进行操作,再取一条指令、译码、进行微操作,这样自动的一步一步的由微操作依序完成相应指令规定的功能。

各指令的微操作在时间上由严格的次序,各种微操作的时间次序称作为时序。

3.1.2.1AT89S52的时钟信号产生方式

AT89S52单片机的时钟信号通常有两种产生方式:

一是内部时钟方式,二是外部时钟方式。

内部时钟方式如图2.2所示。

在AT89S52单片机内部有一振荡电路,只要在单片机的XTAL1与XTAL2引脚外接石英晶体,就构成了自激振荡器并在单片机内部产生时钟信号。

图中电容器C1、C2的作用是稳定频率,快速起振,电容值在5~30pF;晶振CYS的振荡器频率为1.2~12MHz。

图2.2内部时钟方式

外部时钟方式是把已有时钟信号引入到单片机内,如图2.3所示。

此方式多用于多片AT89S52单片机同时工作。

以便于各单片机同步。

一般要求外部信号高电平的持续时间大于20ns,且为频率低于12MHz的方波。

对于采用CHMOS工艺的单片机,外部时钟主要由XTAL1端引入,而XTAL2端引脚应悬空。

图2.3外部时钟方式

3.1.2.2AT89S52的时钟信号

晶振周期为最小的时序单元。

晶振信号经分频器形成两相错开的时钟信号P1与P2.时钟信号的周期也称为S状态,它是晶振周期的两倍。

即一个时钟周期包含两个晶振周期。

在每个时钟周期的前半周期,相位1有效,在每个时钟周期的后半周期,相位2有效。

每个时钟周期有两个节拍P1与P2,CPU以两相时钟P1与P2为基本节拍指挥各个部件协调工作。

晶振信号12分频后形成机器周期。

一个晶振周期包含12个晶振周期或6个时钟周期。

因此每个机器周期的12个晶振脉冲可以表示为S1P1S2P2……S6P6。

晶振周期与机器周期是单片机内计算其他时间值的基本时序单位。

如晶振频率为12HZ,则机器周期为1us,指令周期为1-4us。

3.1.3单片机中断的介绍

在设计中用到了外部中断INT0/INT1与定时器T0。

它们的中断请求标志分别为IE0,IE1与TF0。

这些中断请求标志位分别由特殊功能寄存器TCON与TMOD的相应位锁存。

在这个设计中,中断允许寄存器是首要介绍的。

3.1.3.1中断允许寄存器IE控制CPU对中断源的开放或屏蔽。

中断的开放与屏蔽实现2级控制,一个总开关中断控制所有的中断。

IE的格式如下:

IE

EA

ES

ET1

EX1

ET0

EX0

位地址

AFH

ACH

ABH

AAH

A9H

A8H

 

当EA=0时,所有的中断请求被屏蔽,CPU不接受任何请求。

当EA=1时,CPU开中断,此时只要五个中断源的中断请求允许为1,则开中断。

3.1.3.2TMOD-工作方式控制寄存器

用于选择定时器/计数器的工作模式,字节地址为89H,8位分2组,高4位控制T1,低4位控制T0,其格式如下:

D7

D6

D5

D4

D3

D2

D1

D0

TMOD

GATE

C/T

M1

M0

GATE

C/T

M1

M0

下面对工作方式选择位做说明:

M1M0---工作方式选择位,M1M0共有4种编码,分别对应4种工作方式。

如表1:

表1工作方式选择

M1M0

工作方式

00

方式0,为13位定时器/计数器

01

方式1,为16位定时器/计数器

10

方式2,8位的常数自动重新装载的定时器/计数器

11

方式3,仅适应于T0,T0分为两个8位的计数器,停止计数

中断的触发方式:

电平触发方式与下降沿触发方式。

3.2电源电路

单片机电源(220v转5v)设计电源电路采用LM7805集成稳压器作为稳压器件,用典型接法,220V电源整流滤波后送入LM7805稳压,在输出端接一个470U与0.1U电容进一步滤除纹波,得到5V稳压电源。

电路如图2.4所示

图2.4电源电路图

3.3时钟电路

单片机工作的时间基准,决定单片机工作速度。

时钟电路就是振荡电路,向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。

AT89S51单片机时钟频率范围:

0—33MHz,本电路选择11.0592MHZ。

电路如图2.5所示。

图2.5时钟电路图

3.4复位电路

单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。

89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。

当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。

单片机系统的复位方式有:

手动按钮复位与上电复位,这里选用手动按钮复位。

手动按钮复位需要人为在复位输入端RST上加入高电平。

一般采用的办法是在RST端与正电源VCC之间接一个按钮。

当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。

由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。

复位电路工作原理如图所示,VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。

工作期间,按下S,C放电。

S松手,C又充电,在10K电阻上出现电压,使得单片机复位。

几个毫秒后,单片机进入工作状态。

图2.6复位电路图

3.5LED数码管显示

3.5.1数码管显示简介

数码管LED串口显示模块通常有两种显示方法:

动态显示与静态显示。

动态显示:

连接方法是将每个二极管的同名端连在一起,而每个显示器的公共极COM各自独立的接受I/O线控制,CPU向字段输出端口输出字型码,所有显示器接受到相同的字符,而要使用哪个显示器要取决于他们的COM的电平,而这段是由I/O端控制的,由单片机输出。

动态扫描时连续的动态扫描,只是肉眼暂留现象,乃发光二极管的余辉效应,给人的感觉是一组稳定的显示数据。

静态显示:

静态显示显示效果好,但是功耗大,但不占用端口,只需两个串口线输出,变成较为简单。

而且采用静态显示需要的驱动器件多,硬件成本相对更高。

比较以上两种方案,方案一硬件简单程序复杂,方案二硬件复杂程序简单,考虑到实惠与对自己的编程锻炼,选择方案动态显示。

动态扫描方法是用其接口电路把所有显示器的8个笔画字段(a—g与dp)同名端连在一起,而每个显示器的公共极COM各自独立的接受I/O线控制。

CPU向字段输出端口输出字型码时,所有显示器接受到相同的字型码,但究竟使用哪个显示,则取决于公共极COM端,而这一端是由/WR与/RD控制的,由单片机决定何时显示哪一位。

动态扫描用分时的方法去轮流控制各个显示的COM端,时各个显示器轮流亮。

在轮流点亮扫描过程中,每为显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的于辉效应,给人的印象就时一组稳定的显示数据。

显示部分电路图:

图2.7数码管显示原理

3.5.2数码管编码表

7段数码管可以包括小数点的0~9的数字与部分的英文字母,为了获得不同的字符,数码管各段所加的电平也不同,编码也不一样。

共阴极数码管的字型,字段与编码的关系如下表2:

表2数码管编码表

十六进制数

hgfedcba

显示代码

0

0x3f

1

0x06

2

0x5b

3

0x4f

4

0x66

5

0x6d

6

0x7d

7

0x07

8

0x7f

9

0x6f

.

0x80

3.6开关控制

本电路要实现可设定5个倒计时设计要求,需要1个复位键,一个“+”与一个“-”按键,另外再加5个时间设定按键用于实现倒计时间设定,按键时可直接输出相应倒计时间。

3.7单片机的去抖动

单片机去抖动可以用软件与硬件两种方法。

硬件方法就是加去抖动电路,例如在按键两端并联10uF的电容或通过RS触发器连接按键,硬件去抖动从根本上避免抖动;软件方法则采用时间延时以躲过抖动,待信号稳定之后再进行键扫描。

对于系统软件量不大的场合,采用软件去除抖动既节约硬件开销又很实用且有效。

所以本设计采用软件去抖动。

 

4电路的软件部分

单片的使用除了硬件,同样也要软件的使用,我们写汇编程序编程CPU可执行的机器码有两种方法,一种是手工汇编,一种是机器汇编。

机器汇编通过汇编软件变为机器码,用于MSC-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从使用普通汇编语言到高级语言的不断发展,Keil是目前最流行开发MCS-51系列单片机的软件。

Keilc51汇编,PLM语言与C语言的程序设计,界面友好。

Keil是美国keilsoftware公司出品的52系列兼容单片机c语言开发系统。

用过汇编语言后再使用C语言来开发,体会更加深刻。

程序框图:

图2.8程序框图

源程序如下:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitb1=P1^0;

sbitb2=P1^1;

sbitb3=P1^2;

sbitb4=P1^3;

sbitb5=P1^4;

sbitbell=P2^6;

sbits1=P3^0;

sbits2=P3^1;

sbits3=P3^2;

sbits4=P3^3;

sbits5=P3^4;

sbitadd=P3^6;

sbitdec=P3^7;

charsecond1=1,minute1=1,hour1=1,second2=2,minute2=2,hour2=2,second3=3,minute3=3,hour3=3;

charsecond4=4,minute4=4,hour4=4,second5=5,minute5=5,hour5=5;

ucharg;

unsignedcharcodetable[]={//共阴极0~f数码管编码

0x3f,0x06,0x5b,0x4f,//0~3

0x66,0x6d,0x7d,0x07,//4~7

0x7f,0x6f,0x77,0x7c,//8~b

0x39,0x5e,0x79,0x71//c~f

};

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voiddelay1(uintz)

{

for(;z>0;z--);

}

voiddisplay(uchara,ucharb,ucharc)

{

uchari,j;

i=a/10;

j=a%10;

P2=0xfb;

P0=table[i];

delay

(2);

P2=0xf7;

P0=table[j];

delay

(2);

i=b/10;

j=b%10;

P2=0xef;

P0=table[i];

delay

(2);

P2=0xdf;

P0=table[j];

delay

(2);

i=c/10;

j=c%10;

P2=0xfe;

P0=table[i];

delay

(2);

P2=0xfd;

P0=table[j];

delay

(2);

}

voiddelay2(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--)

display(0,0,0);

}

voidinit()

{

EA=1;//开总中断

ET0=1;//本例中使用的是定时器T0,如果用T1。

则为ET1=0,TMOD=0x10。

TMOD=0x01;//定时器工作方式1

TH0=(65535-50000)/256;//因为晶振用的是11.0592MHZ。

在取初值时,大概定义为一个中断为50MS

TL0=(65535-50000)%256;

TR0=1;

P1=0xff;

}

voidturn_val1(charnewval,ucharflag,ucharslnum)

{

if(flag)//判断是加一还是减一

{

newval++;

switch(slnum)

{

case1:

if(newval>23)newval=0;

display(hour1,minute1,second1);

hour1=newval;

break;

case2:

if(newval>59)newval=0;

display(hour1,minute1,second1);

minute1=newval;

break;

case3:

if(newval>59)newval=0;

display(hour1,minute1,second1);

second1=newval;

break;

default:

break;

}

}

else

{

newval--;

switc

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2