基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频)

仿真图proteus 7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0029

主要功能:

结合实际情况,基于51单片机设计一个电子钟万年历。该系统应满足的功能要求为:

电机驱动,数码管(或液晶)显示、独立键盘。

具体功能:

\1. 采用C语言。

\2. 通过小键盘设置自动/手动喂食模式切换。

\3. 自动模式下,可设置喂食时间和当前时间,步进电机正转模拟投食,投食结束后电机反转:手动模式下,按键手动喂食开,手动喂食关;

\4. 数码管(或液晶)显示每次喂食时间和当前时间。

\5. 上位机监控功能要求:通过串口或USB口实现上/下位机通信,能够显示步进电机当前状态。

资料下载链接(可点击):

【腾讯文档】S0029 网盘链接

以下为本设计资料展示图:

仿真

img

开始仿真

img

开始仿真后显示当前实时时间,mos代表当前运行模式Z代表自动,S代表手动。串口显示电机工作状态Z是正转F是反转。按下自动模式按键,运行模式改为自动模式。按下手动模式按键,运行模式改为手动模式。手动模式下短按设置分别可以设置定时时间和当前实时时间,通过加减按键做调整,定时时间到电机正转后再反转。手动模式下,开盖按键电机正转模拟投食,关盖按键按下电机反转模拟投食结束。

程序:

img

主函数

void main(){
  	xiezhilin(0x01);    //显示清屏
	xiezhilin(0x38);   //显示模式设置
    xiezhilin(0x0c);     //光标设置
    TH1 = 0xFD;  //晶振11.0592mhz 波特率设为9600  
    TL1 = 0xFD;  
    TMOD = 0x21;    //定时器1方式2  
    SCON = 0x50;     //串口接收使能  
    ES = 0;          //串口中断使能    //使用外中断函数必须ES为0
    TR1 = 1;         //定时器1使能  
    TI = 0;          //发送中断标记位,必须设置  
	EA = 1; 
	 xianshi(0x80+0,'m');//显示m
	 xianshi(0x80+1,'o');//显示O
	 xianshi(0x80+2,'s');//显示S
	 xianshi(0x80+14,'D');//显示D
	 xianshi(0x80+15,'Y');//显示Y
	 dushi();
	 shijian=1;		
  	while(1){ 
		ms++;
	   if(ms>=5){aa=~aa;ms=0;dushi();}	
	   if(shu=='Z')z_zhuan();  			
       if(shu=='F')f_zhuan();
		shu=0;		
		key();
		xian();			 
		if((shi==shi_n)&&(fen==fen_n)&&(miao==miao_n)){//定时时间到
         shijian=1; 
        }				 
        if(shijian==1){//定时时间到之后,延时一段时间再反转,期间读取时间。
				 z_zhuan();
				 dushi();
				 xian();
				 delay(100);
				 dushi();
				 xian();
				 delay(100);
				 dushi();
				 xian();
				 delay(100);
				 dushi();
				 xian();
				 delay(100);
				 dushi();
				 xian();
				 delay(100);
				 dushi();
				 xian();
				 delay(100);
				 dushi();
				 xian();
				 delay(100);
				 dushi();
				 xian();
				 delay(100);
				 dushi();
				 xian();
				 f_zhuan();
				 shijian=0;
       }
	}
}

资料清单:

img

资料下载链接(可点击):

https://docs.qq.com/doc/DS3JtdFBGdGdVR2NK

更多资源 点击下方链接:

https://docs.qq.com/sheet/DS0xIa0llTmtNakRW

微信公众号:嘉盛单片机

img