基于单片机的宠物喂食器电路设计-毕业设计.doc

上传人:牧羊曲112 文档编号:2771612 上传时间:2023-02-24 格式:DOC 页数:53 大小:1.66MB
返回 下载 相关 举报
基于单片机的宠物喂食器电路设计-毕业设计.doc_第1页
第1页 / 共53页
基于单片机的宠物喂食器电路设计-毕业设计.doc_第2页
第2页 / 共53页
基于单片机的宠物喂食器电路设计-毕业设计.doc_第3页
第3页 / 共53页
基于单片机的宠物喂食器电路设计-毕业设计.doc_第4页
第4页 / 共53页
基于单片机的宠物喂食器电路设计-毕业设计.doc_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《基于单片机的宠物喂食器电路设计-毕业设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的宠物喂食器电路设计-毕业设计.doc(53页珍藏版)》请在三一办公上搜索。

1、精选优质文档-倾情为你奉上摘要本设计所研究的是实现一个宠物自动喂食器,即先将宠物饲料放入其中,通过设定五个喂食时间点,当到达这一时间点后,系统发出喂食信号吸引宠物,自动进行喂食。本设计主要研究如何设定五个时间点并发出喂食信号。宠物喂食器系统主要包括单片机控制、自动开关和蜂鸣器提示、倒计时间设定系统。喂食器的喂食过程,通过键盘设定五个倒计时间,当依次到达这五个时间时,发光二极管发光,蜂鸣器发出响声,吸引宠物过来进食并自动投放食物。本设计解决了工作时或节假日时由于主人不在不能对宠物进行喂食,避免了宠物由于饮食不正常所产生的问题。在整个系统中,利用单片机对各个系统进行控制。 倒计时系统时间通过六位七

2、段数码管显示出来。利用键盘设定五个倒计时间,单片机不停的读取时间,并判断是否到达喂食时间。开关系统电阻和发光二极管表示 ,发光二级管收到低电平时导通表示开关打开投放喂食。同时接有蜂鸣器,当到达喂食时间后蜂鸣器发出响声吸引宠物进行喂食。关键词:智能;定时喂养;单片机AT89S52;AbstractThe study design is to achieve an automatic pet feeder, pet feed into which will set the five fed point, when you reach this point in time, automaticall

3、y feeding. The main point of how to set the time within the pet food put out. Pet feeder system includes MCU control, automatic switch and music alert system, the remaining time setting system. Feeder feeding process, the five remaining time set by the keyboard, when the order reaches the five time,

4、 while the timer chip to send a signal relay and music, music playback chip, a piece of music attracted the pet, the relay switch is closed So that a red light emitting diode, said switch delivery of food. This design solves the holidays when work or not is not the owner of the pet to feed, to avoid

5、 the pet food is not normal because the problems arising. Throughout the system, the use of single chip control system of each. Countdown to the system time by six out of seven segment digital display. Using the keyboard to set the five remaining time, microcontroller reads the stop time and to dete

6、rmine whether the feeding time arrives. Switching system by the relay and the light-emitting diode, said switch is closed when the relay received high light-emitting diode, said switch is running feeding. Tip has a music system, when the arrival time after feeding a piece of music tips music playbac

7、k chip to feed pets.Key words: intelligent; automatic feeding; MCU专心-专注-专业目 录中文摘要英文摘要1 绪论11 设计意义单片机自20世纪70年代问世以来,以其极高的性能价格比受到人们的重视和关注,应用广泛,发展快速。单片机具有体积小、速度快、抗干扰能力强,环境要求不高,性能可靠和价格低廉等优点,通常在其外部配置外围电路就可构成一完整的控制系统。由于具有以上优点,在我国,单片机已广泛应用与工业自动化控制、自动检测、智能仪器仪表、家电电器、电力电子、武器装备、机电一体化设备等各个方面。单片机,亦称单片微电脑或单片微型计算机。它

8、是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。 现在越来越多的家庭都饲养有猫、狗等宠物,但是由于工作等原因,宠物的饮食规律得不到一定的保障,宠物喂食器可以解决这一问题,宠物自动喂食器可以定时定量的进食,且设计简单方便,有一定的实用价值。12 设计要求 利用单片机的定时功能设计一个宠物自动喂食盒的电路,要求:可以通过键盘输入至少3个倒计时时间,每一个倒计时时间到后,发出宠物开始喂食信号;扩展功能: 按照 年/月/日/时/分 的格式输入宠物进食时间;2 设计方案分析本题,根据设计要求先确

9、定了本系统的整体设计原理框图如图1:按键模块单片机自动开关模块蜂鸣器显示模块图1 系统整体设计原理框图21 按键模块采用7个触键开关, 可实现五个倒计时间依次键入,同时还有两个调时按键,再一个复位按键。22 自动开关模块采用三极管和发光二极管近似表示。 本系统是基于52单片机的宠物自动喂食的设计,用电阻和发光二极管代替比较容易,当发光二级管接收到一个低电平时开关闭合,发光二极管导通发出绿光表示自动投食。23 蜂鸣器模块采用一个三极管和一个蜂鸣器,由蜂鸣器发出响声吸引宠物过来进食。当发光二极管亮灯时,蜂鸣器接收到一个低电平,蜂鸣器器发出响声吸引宠物过来进食。24 显示模块选用数码管显示,用普通的

10、数码管显示简单的数字、符号、字母。只需一次显示5个倒计时间,而且每个时间只需显示6个数字,即年/月/日。3 硬件电路的设计31 单片机311 AT89S52单片机的简介AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串

11、行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 3111 主要性能与MCS-51单片机产品兼容8K字节在系统可编程Flash存储器1000次擦写周期全静态操作:0Hz33Hz三级加密程序存储器32个可编程I/O口线三个16位定时器/计数器八个中断源全双工UART串行通道低功耗空闲和掉电模式掉电后中断可唤醒看门狗定时器双数据指针掉电标识符3112 AT89S52双列直

12、插式引脚图图2.1 AT89S52双列直插式引脚图3113 端口介绍P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的

13、引脚由于内部电阻的原因,将输出电流(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口使用很

14、强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3口:P3口是一个具有内部上拉电阻的8位双向I/O 口,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。312 AT89S52的时钟介绍单片机的工作过程是:取一条指令、译码、进行操作,

15、再取一条指令、译码、进行微操作,这样自动的一步一步的由微操作依序完成相应指令规定的功能。各指令的微操作在时间上由严格的次序,各种微操作的时间次序称作为时序。3121 AT89S52的时钟信号产生方式AT89S52单片机的时钟信号通常有两种产生方式:一是内部时钟方式,二是外部时钟方式。内部时钟方式如图2.2所示。在AT89S52单片机内部有一振荡电路,只要在单片机的XTAL1和XTAL2引脚外接石英晶体,就构成了自激振荡器并在单片机内部产生时钟信号。图中电容器C1、C2的作用是稳定频率,快速起振,电容值在530pF;晶振CYS的振荡器频率为1.212MHz。图2.2 内部时钟方式外部时钟方式是把

16、已有时钟信号引入到单片机内,如图2.3所示。此方式多用于多片AT89S52单片机同时工作。以便于各单片机同步。一般要求外部信号高电平的持续时间大于20ns,且为频率低于12MHz的方波。对于采用CHMOS工艺的单片机,外部时钟主要由XTAL1端引入,而XTAL2端引脚应悬空。图2.3 外部时钟方式3122 AT89S52的时钟信号晶振周期为最小的时序单元。晶振信号经分频器形成两相错开的时钟信号P1和P2.时钟信号的周期也称为S状态,它是晶振周期的两倍。即一个时钟周期包含两个晶振周期。在每个时钟周期的前半周期,相位1有效,在每个时钟周期的后半周期,相位2有效。每个时钟周期有两个节拍P1和P2,C

17、PU以两相时钟P1和P2为基本节拍指挥各个部件协调工作。晶振信号12分频后形成机器周期。一个晶振周期包含12个晶振周期或6个时钟周期。因此每个机器周期的12个晶振脉冲可以表示为S1P1 S2P2S6P6。晶振周期和机器周期是单片机内计算其他时间值的基本时序单位。如晶振频率为12HZ,则机器周期为1us,指令周期为1-4us。313 单片机中断的介绍在设计中用到了外部中断INT0/INT1和定时器T0。它们的中断请求标志分别为IE0,IE1和TF0。这些中断请求标志位分别由特殊功能寄存器TCON和TMOD的相应位锁存。在这个设计中,中断允许寄存器是首要介绍的。3131 中断允许寄存器IE控制CP

18、U对中断源的开放或屏蔽。中断的开放和屏蔽实现2级控制,一个总开关中断控制所有的中断。IE的格式如下:IEEAESET1EX1ET0EX0位地址AFHACHABHAAHA9HA8H当EA=0时,所有的中断请求被屏蔽,CPU不接受任何请求。当EA=1时,CPU开中断,此时只要五个中断源的中断请求允许为1,则开中断。3132 TMOD-工作方式控制寄存器用于选择定时器/计数器的工作模式,字节地址为89H,8位分2组,高4位控制T1,低4位控制T0,其格式如下: D7D6D5D4D3D2D1D0TMODGATEC/TM1M0GATEC/TM1M0下面对工作方式选择位做说明:M1 M0-工作方式选择位,

19、M1 M0共有4种编码,分别对应4种工作方式。如表1:表1 工作方式选择M1 M0工作方式0 0方式0,为13位定时器/计数器0 1方式1,为16位定时器/计数器1 0方式2,8位的常数自动重新装载的定时器/计数器1 1方式3,仅适应于T0,T0分为两个8位的计数器,停止计数中断的触发方式:电平触发方式和下降沿触发方式。32 电源电路单片机电源(220v转5v)设计电源电路采用LM7805集成稳压器作为稳压器件,用典型接法,220V电源整流滤波后送入LM7805稳压,在输出端接一个470U和0.1U电容进一步滤除纹波,得到5V稳压电源。电路如图2.4所示图2.4 电源电路图33 时钟电路单片机

20、工作的时间基准,决定单片机工作速度。时钟电路就是振荡电路,向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。AT89S51单片机时钟频率范围:0 33MHz,本电路选择11.0592MHZ。电路如图2.5所示。图2.5 时钟电路图34 复位电路 单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。 单片机系统的复位方式有:手动按钮复位和上电复

21、位,这里选用手动按钮复位。手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源VCC之间接一个按钮。当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。复位电路工作原理如图所示,VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下S,C放电。S松手,C又充电,在10K电阻上出现电压,使得单片机复位。几个毫秒后,单片机进入工作状态。图2.6 复位电路图35 LED数码管显示

22、351 数码管显示简介数码管LED串口显示模块通常有两种显示方法:动态显示和静态显示。动态显示:连接方法是将每个二极管的同名端连在一起,而每个显示器的 公共极COM各自独立的接受I/O线控制,CPU向字段输出端口输出字型码,所有显示器接受到相同的字符,而要使用哪个显示器要取决于他们的COM的电平,而这段是由I/O端控制的,由单片机输出。动态扫描时连续的动态扫描,只是肉眼暂留现象,乃发光二极管的余辉效应,给人的感觉是一组稳定的显示数据。静态显示: 静态显示显示效果好,但是功耗大,但不占用端口,只需两个串口线输出,变成较为简单。而且采用静态显示需要的驱动器件多,硬件成本相对更高。 比较以上两种方案

23、,方案一硬件简单程序复杂,方案二硬件复杂程序简单,考虑到实惠和对自己的编程锻炼,选择方案动态显示。动态扫描方法是用其接口电路把所有显示器的8个笔画字段(ag和dp)同名端连在一起,而每个显示器的公共极COM各自独立的接受I/O线控制。CPU向字段输出端口输出字型码时,所有显示器接受到相同的字型码,但究竟使用哪个显示,则取决于公共极COM端,而这一端是由/WR和/RD控制的,由单片机决定何时显示哪一位。动态扫描用分时的方法去轮流控制各个显示的COM端,时各个显示器轮流亮。在轮流点亮扫描过程中,每为显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的于辉效应,给人的印象就时一组稳定的显示

24、数据。显示部分电路图:图2.7 数码管显示原理352 数码管编码表7段数码管可以包括小数点的09的数字和部分的英文字母,为了获得不同的字符,数码管各段所加的电平也不同,编码也不一样。共阴极数码管的字型,字段和编码的关系如下表2:表2 数码管编码表十六进制数h gf edcba显示代码00x3f10x0620x5b30x4f40x6650x6d60x7d70x0780x7f90x6f.0x8036 开关控制 本电路要实现可设定5个倒计时设计要求,需要1个复位键,一个“+”和一个“-”按键,另外再加5个时间设定按键用于实现倒计时间设定,按键时可直接输出相应倒计时间。37 单片机的去抖动 单片机去抖

25、动可以用软件和硬件两种方法。硬件方法就是加去抖动电路,例如在按键两端并联10uF的电容或通过RS触发器连接按键,硬件去抖动从根本上避免抖动;软件方法则采用时间延时以躲过抖动,待信号稳定之后再进行键扫描。对于系统软件量不大的场合,采用软件去除抖动既节约硬件开销又很实用且有效。所以本设计采用软件去抖动。4 电路的软件部分单片的使用除了硬件,同样也要软件的使用,我们写汇编程序编程CPU可执行的机器码有两种方法,一种是手工汇编,一种是机器汇编。机器汇编通过汇编软件变为机器码,用于MSC-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从使用普通汇编语言到高级语言的不断发展,Keil是

26、目前最流行开发MCS-51系列单片机的软件。Keil c51汇编,PLM语言和C语言的程序设计,界面友好。Keil是美国keilsoftware公司出品的52系列兼容单片机c语言开发系统。用过汇编语言后再使用C语言来开发,体会更加深刻。程序框图:Y开始系统初始化1号键按下?1号盒倒计时时间设定开始倒计时5号键按下?2号键按下?3号键按下?4号键按下?2号盒倒计时时间设定3号盒倒计时时间设定4号盒倒计时时间设定5号盒倒计时时间设定倒计时完?YYYYY结束图2.8 程序框图源程序如下:#include#include#define uchar unsigned char#define uint u

27、nsigned intsbit b1=P10;sbit b2=P11;sbit b3=P12;sbit b4=P13;sbit b5=P14;sbit bell=P26;sbit s1=P30;sbit s2=P31;sbit s3=P32;sbit s4=P33;sbit s5=P34;sbit add=P36;sbit dec=P37;char second1=1,minute1=1,hour1=1,second2=2,minute2=2,hour2=2,second3=3,minute3=3,hour3=3;char second4=4,minute4=4,hour4=4,second5

28、=5,minute5=5,hour5=5;uchar g;unsigned char code table=/共阴极0f数码管编码0x3f,0x06,0x5b,0x4f, /030x66,0x6d,0x7d,0x07, /470x7f,0x6f,0x77,0x7c, /8b0x39,0x5e,0x79,0x71 /cf;void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void delay1(uint z)for(;z0;z-);void display(uchar a,uchar b,uchar c)uchar i,j;

29、i=a/10;j=a%10;P2=0xfb;P0=tablei;delay(2);P2=0xf7;P0=tablej;delay(2);i=b/10;j=b%10;P2=0xef;P0=tablei;delay(2);P2=0xdf;P0=tablej;delay(2);i=c/10;j=c%10;P2=0xfe;P0=tablei;delay(2);P2=0xfd;P0=tablej;delay(2);void delay2(uint z)uint x,y; for(x=z;x0;x-) for(y=110;y0;y-) display(0,0,0);void init() EA=1; /开

30、总中断 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;void turn_val1(char newval,uchar flag,uchar slnum) if(flag) /判断是加一还是减一 newval+; switch(slnum) case 1:if(newval23) newval=0; disp

31、lay(hour1,minute1,second1); hour1=newval; break; case 2:if(newval59) newval=0; display(hour1,minute1,second1); minute1=newval; break; case 3:if(newval59) newval=0; display(hour1,minute1,second1); second1=newval; break; default:break; else newval-; switch(slnum) case 1:if(newval0) newval=23; display(

32、hour1,minute1,second1); hour1=newval; break; case 2:if(newval0) newval=59; display(hour1,minute1,second1); minute1=newval; break; case 3:if(newval23) newval=0; display(hour2,minute2,second2); hour2=newval; break; case 2:if(newval59) newval=0; display(hour2,minute2,second2); minute2=newval; break; ca

33、se 3:if(newval59) newval=0; display(hour2,minute2,second2); second2=newval; break; default:break; else newval-; switch(slnum) case 1:if(newval0) newval=23; display(hour2,minute2,second2); hour2=newval; break; case 2:if(newval0) newval=59; display(hour2,minute2,second2); minute2=newval; break; case 3

34、:if(newval23) newval=0; display(hour3,minute3,second3); hour3=newval; break; case 2:if(newval59) newval=0; display(hour3,minute3,second3); minute3=newval; break; case 3:if(newval59) newval=0; display(hour3,minute3,second3); second3=newval; break; default:break; else newval-; switch(slnum) case 1:if(newval0) newval=23; display(hour3,minute3,second3); hour3=newval; break; case 2:if(newval0) newval=59; display(hour3,min

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号