日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于51单片机的宠物自动猫粮狗粮喂养机proteus仿真原理图PCB

發布時間:2024/3/12 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于51单片机的宠物自动猫粮狗粮喂养机proteus仿真原理图PCB 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

功能介紹:
0.本系統采用STC89C52作為單片機
功能簡介:
1.LCD1602實時顯示當前時間/溫濕度/食物重量
2.當時間到達設定喂食時間,啟動步進電機進行投喂,投喂量達到預先設定好的重量后停止投喂
3.按鍵可更改當前時間/喂食時間/喂食量
4.按鍵可手動控制喂食(手動控制時,不判斷實物重量)
5.采用DC002作為電源接口可直接輸入5V給整個系統供電

原理圖:

PCB :

主程序:

#include "main.h"char dis[16];enum _MODE_DF_ dispMode; unsigned char setIndex = 0;bit refreshFlag = 1;unsigned long initialWeight = 0; //單位g float objectWeight = 0; //單位gunsigned char feedTime[3] = {18, 0, 0}; //投喂時間18:00:00 int feedWeight = 100; //100g bit feedFlag1 = 0; //自動喂食啟動標志1 bit feedFlag2 = 0; //手動喂食啟動標志2void main(void) {BYJ48 = ((BYJ48 & 0xF0) | REV[0]); //取數據ULN_DQ3 = BIT3;ULN_DQ2 = BIT2;ULN_DQ1 = BIT1;ULN_DQ0 = BIT0;Timer0_Init();Timer1_Init();DS1302_Init();// DS1302_Write_Time();DelayMs(10);LCD_Init();LCD_DispStr(0, 0, " Welcome! ");DelayMs(200);initialWeight = HX711_GetInitialWeight();LCD_Clear();while (1){if (refreshFlag == 1) //每400ms刷新一次屏幕{refreshFlag = 0;if (dispMode == NORMAL){DispNormal();}}if (timeBufDec[4] == feedTime[0] && timeBufDec[5] == feedTime[1] && timeBufDec[6] == feedTime[2]){feedFlag1 = 1; //啟動喂食}if (objectWeight >= feedWeight) //超過喂食重量{feedFlag1 = 0; //停止喂食}KeyProcess();} }void DispNormal() {DS1302_Read_Time(); //讀取實時時間ET1 = 0;objectWeight = HX711_Read();objectWeight = (objectWeight - initialWeight) / GAPVALUE; //讀取實物重量objectWeight = (objectWeight<0)?0:objectWeight;DHT11_0_ReadData(); //讀取溫濕度ET1 = 1;sprintf(dis, "W:%6.3fkg %2d", objectWeight/1000, (int)U8T_data_H);LCD_DispStr(0, 0, dis);LCD_DispOneChar(13, 0, 0xdf);LCD_DispOneChar(14, 0, 'C');sprintf(dis, "%02d:%02d:%02d Hm:%2d%%", (int)timeBufDec[4], (int)timeBufDec[5], (int)timeBufDec[6], (int)U8RH_data_H);LCD_DispStr(0, 1, dis); }/************************* 設置當前時間 *************************/ void DispSetTime(unsigned char setIndex) {sprintf(dis, "%02d:%02d:%02d", (int)timeBufDec[4], (int)timeBufDec[5], (int)timeBufDec[6]);LCD_DispStr(0, 1, dis);switch (setIndex){case 1: LCD_SetCursor(1, 1, 1); break;case 2: LCD_SetCursor(4, 1, 1); break;case 3: LCD_SetCursor(7, 1, 1); break;default:break;} }/************************* 設置喂食時間 *************************/ void DispSetFeedTime(unsigned char setIndex) {LCD_DispStr(0, 0, " Feed Time ");//LCD_DispStr(0, 0, " TIME 2 ");sprintf(dis, " %02d:%02d:%02d ", (int)feedTime[0], (int)feedTime[1], (int)feedTime[2]);LCD_DispStr(0, 1, dis);switch (setIndex){case 1: LCD_SetCursor(5, 1, 1); break;case 2: LCD_SetCursor(8, 1, 1); break;case 3: LCD_SetCursor(11, 1, 1); break;default:break;} }/************************* 設置喂食量 *************************/ void DispSetFeedWeight(unsigned char setIndex) {LCD_DispStr(0, 0, " Food Weight ");sprintf(dis, " %6.3fkg ", (float)feedWeight/1000);LCD_DispStr(0, 1, dis);switch (setIndex){case 1: LCD_SetCursor(8, 1, 1); break;default:break;} }void Timer0_Init() {TMOD &= 0xF0;TMOD |= 0x01; //T0 T1 均在工作方式1PT0 = 1; //優先級設置TR0 = 0;ET0 = 1; //T0開中斷EA = 1; //CPU開中斷 }void Timer1_Init() {TMOD &= 0x0F;TMOD |= 0x10; //T0 T1 均在工作方式1TH1 = (65536 - 18432) / 256; //定時20msTL1 = (65536 - 18432) % 256;TR1 = 1;ET1 = 1; //T0開中斷EA = 1; //CPU開中斷 }void Timer1(void) interrupt 3 //T1中斷程序 {static unsigned int cnt = 0;static unsigned int motorCnt = 0;TL1 = 0x66; //設置定時初始值TH1 = 0xFC; //設置定時初始值 1mscnt++;if (cnt >= 400){refreshFlag = 1;cnt = 0;}if (feedFlag1 == 1 || feedFlag2 == 1) //啟動喂食,正轉{if (motorCnt <= MAXCNT){BYJ48 = ((BYJ48 & 0xF0) | REV[motorCnt % 8]); //取數據ULN_DQ3 = BIT3;ULN_DQ2 = BIT2;ULN_DQ1 = BIT1;ULN_DQ0 = BIT0;motorCnt++;}}else //停止喂食反轉{if (motorCnt > 0){BYJ48 = ((BYJ48 & 0xF0) | REV[motorCnt % 8]); //取數據ULN_DQ3 = BIT3;ULN_DQ2 = BIT2;ULN_DQ1 = BIT1;ULN_DQ0 = BIT0;motorCnt--;}}} //程序結束

仿真演示視頻:
https://www.bilibili.com/video/BV1F24y197J3/

實物演示視頻:
https://www.bilibili.com/video/BV1fN4y1P7Yu/

總結

以上是生活随笔為你收集整理的基于51单片机的宠物自动猫粮狗粮喂养机proteus仿真原理图PCB的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。