
金鱼定时喂食控制器(三等奖).pdf
10页第三届 第三届 电子设计大赛参赛作品资料 电子设计大赛参赛作品资料 作品名称 作品名称 金鱼定时喂食控制器 金鱼定时喂食控制器 作者 作者 计算机与信息工程系 计算机与信息工程系 集成 0506 集成 0506 徐海良 徐海良 问题提出:好多人都喜欢养金鱼,但养金鱼和养其它宠物一样,都是要人去喂养, 有时工作忙,没时间就会忘记给金鱼喂食,有时又会给金鱼喂食的太多, 于是严重时会导致金鱼死亡根据这一问题,于是设计出金鱼定时喂 食控制器,能够达到定时定量地给金鱼喂食的目的! 工作原理:三个两位数码管分别显示时数、分数、秒数,LED1、LED2、LED3 分别 是时、分、秒选择指示灯,当灯亮时表示可以对相应的数进行设置, LED4、LED5、LED6 为定时一、二、三选择指示灯,KEY1 为时间设置按 钮,KEY2 为加数设置按钮,KEY3 为减数设置按钮,KEY4 为选择定时 设置按钮, KEY5 为保存/取消按钮 LED7 为定时开指示, 开关 switch 为定时开关 由 NE555,WP1 等构成的电路为单稳态电路(如图三) ,起定时作用, 当 P2.0 给 NE555 的 2 脚输入一个下降延时, 3 脚就会输出一个高电平, 这高电平持续的时间由 WP1,C,R 决定,该高电平最长持续时间大概 为 60 秒。
J1 连接电磁阀来控制放饲料的开和关调节 WP1 能够达到 控制电磁阀开的时间长短,从而控制喂食量(图四) 本电路最多可以进行三个定时设置,最长定时时间达 24 小时 说明:定时开关 switch 要在定时设置完后才开,设置顺序:先定时设置后时 间校准设置!喂食量喂食时间可由用户设定!断电复位! org 0000h ;复位地址 入口地址 显示) 方式一 1 优先级 ///// ;时数显示 r,#tab ;取表 tab r ljmp main ;转主程序 org 0003h ;INTO 中断ljmp sheone ;转 INTO 中断服务程序org 000bh ;TO 中断入口地址 ljmp zduan ;转 TO 中断服务程序org 0013h ;INT1 中断入口地址 ljmp shetwo ;转 INT1 中断服务程序org 0100h ;主程序入口地址 main:mov p1,#0f8h ;置 P1 初始数 mov p2,#00000001b ;置 P2 初始数 mov 30h,#25 ;置 30H 初始数mov 33h,#25 ;置 33H 初始数 mov 36h,#25 ;置 36H 初始数 mov r0,#23 ;置 R0 初始数(时mov r1,#59 ;置 R1 初始数(分显示) mov r2,#00 ;置 R2 初始数(秒显示) setb it0 ;打开 INT0 setb it1 ;打开 INT1 mov tmod,#01h ;置 TO 工作mov th0,#3ch ;置 TO 定时值 mov tl0,#0bah ;置 TO 定时值 mov ie,#10000111b ;开 TO,INT0,INTSETB PX0 ;设 INTO 为中断SETB PX1 ;设 INT1 为中断优先级 mov r7,#20 ;置 TO 定时值 setb tr0 ;打开 T0 ;////////////////////////////////////////////////////////////// ;显示子程序 l00p:mov a,r0 mov b,#10 div ab mov dptmovc a,@a+dptr mov p0,a setb p2.7 lcall delay mov a,b mov dptr,#movc a,@a+dptclr p2.7 mov p0,asetb p2.6 lcall delay mov a,r1 ;分数显示 r,#tab r tab r mov a,r2 ;秒数显示 r,#tab r tab r //////////////////////////////////////////// 1 判断 )是否相等,否转定时 2(C001) 定时 1(分)是否相等,否转定时 2(C001) 定时 1(秒)是否相等,否转定时 2(C001) mov b,#10 div ab mov dptmovc a,@a+dptclr p2.6 mov p0,asetb p2.5 lcall delay mov a,b mov dptr,#movc a,@a+dptclr p2.5 mov p0,asetb p2.4 lcall delay mov b,#10 div ab mov dptmovc a,@a+dptclr p2.4 mov p0,asetb p2.3 lcall delay mov a,b mov dptr,#movc a,@a+dptclr p2.3 mov p0,asetb p2.2 lcall delay clr p2.2 ljmp l00p ;///////////////////////// ;TO 定时中断服务子程序 zduan:mov a,r0 ;定时cjne a,30h,c001 ;判断定时 1(时mov a,r1 ; cjne a,31h,c001 ;判断mov a,r2 ; cjne a,32h,c001 ;判断jnb p2.1,c001 ;判断定时开关打开否 clr p2.0 ;在 P2.0 口输出一个脉冲 2 判断 )是否相等,否转定时 3(C002) 定时 2(时)是否相等,否转定时 3(C002) 定时 2(时)是否相等,否转定时 3(C002) 冲 3 判断 )是否相等,否转 TO 定时中断服务程序(C003) 定时 3(时)是否相等,否转 TO 定时中断服务程序(C003) 定时 3(时)是否相等,否转 TO 定时中断服务程序(C003) 冲 T0 初值 定时到否 定时值 定时值 定时值 setb p2.0 ; jmp c001 ; c001:mov a,r0 ;定时cjne a,33h,c002 ;判断定时 2(时mov a,r1 ; cjne a,34h,c002 ;判断mov a,r2 ; cjne a,35h,c002 ;判断jnb p2.1,c002 ;判断定时开关打开否 clr p2.0 ;在 P2.0 口输出一个脉setb p2.0 ; jmp c002 ; c002: mov a,r0 ;定时cjne a,36h,c003 ; 判断定时 3(时mov a,r1 ; cjne a,37h,c003 ;判断mov a,r2 ; cjne a,38h,c003 ;判断jnb p2.1,c003 ;判断定时开关打开否 clr p2.0 ;在 P2.0 口输出一个脉setb p2.0 ; jmp c003 ; c003: mov th0,#3ch ;重置mov tl0,#0bah ; djnz r7,goret ;判断inc r2 ;秒加一 mov r7,#20 ;重置 T0cjne r2,#60,goret;判断秒是否满 60 mov r2,#00 ;秒清 0 inc r1 ;分加一 mov r7,#20 ;重置 T0cjne r1,#60,goret;判断分是否满 60 mov r2,#00 ;秒清 0 mov r1,#00 ;分清 0 inc r0 ;时加一 mov r7,#20 ;重置 T0cjne r0,#24,goret;判断时是否满 24 mov r2,#00 ;秒清 0 mov r1,#00 ;分清 0 mov r0,#00 ;时清 0 goret:reti ;中断返回 ;/////////////////////////////////////////////////////// tab:db 0c0h,0f9h,0a4h,0b0h,99h ;取表 db 92h,82h,0f8h,80h,90h ;取表 10 //////////////////////////////////////// ;关 TO 1.3 是否为 0 ,是转 LOP1(按键时间设置接收入口) ) P1.0 是否为 1 ,是转 LP1 分灯亮) 时灯亮) P1.0 是否为 1 ,是转 LP4 设置,数加一) ; 置,数加一) 置,数加一) ;/////////////////////////////////////////////////////// ;延时子程序 delay:mov r6,#c01:mov r5,#250c02:djnz r5,c02 djnz r6,c01 ret ;//////////////// ;INTO 中断服务子程序 sheone:clr tr0 jnb p1.3,lop1 ;判断 Pjnb p1.4,lop2 ;判断 P1.4 是否为 0 ,是转 LOP2(按键+设置接收入口) jnb p1.5,lop3 ;判断 P1.5 是否为 0 ,是转 LOP3(按键-设置接收入口) jnb p1.6,lop4 ;判断 P1.6 是否为 0 ,是转 LOP4(按键定时设置接收入口reti ; lop1: jb p1.0,lp1 ;判断jb p1.1,lp2 ;判断 P1.1 是否为 1 ,是转 LP2jb p1.2,lp3 ;判断 P1.2 是否为 1 ,是转 LP3 lp1:clr p1.0 ;(设置秒灯亮) setb p1.1 ; lcall yanchi ; ljmp go ;lp2:clr p1.1 ;(设置setb p1.2 ; lcall yanchi ; ljmp go ;lp3:clr p1.2 ;(设置setb p1.0 ; ljmp go ; lop2: jb p1.0,lp4 ;判断jb p1.1,lp5 ;判断 P1.1 是否为 1 ,是转 LP。
