国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【畢業(yè)設(shè)計(jì)】基于單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) - 嵌入式 物聯(lián)網(wǎng) stm32 51單片機(jī) 智能魚缸

這篇具有很好參考價(jià)值的文章主要介紹了【畢業(yè)設(shè)計(jì)】基于單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) - 嵌入式 物聯(lián)網(wǎng) stm32 51單片機(jī) 智能魚缸。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


1 簡(jiǎn)介

Hi,大家好,今天向大家介紹一個(gè) 單片機(jī)項(xiàng)目, 大家可用于 課程設(shè)計(jì) 或 畢業(yè)設(shè)計(jì)

基于單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

?? 項(xiàng)目分享與指導(dǎo):https://gitee.com/sinonfin/sharing

1 課題背景意義

近年以來,隨著我國綜合實(shí)力飛速飆升,人們對(duì)物質(zhì)和精神生活質(zhì)量的要求也不斷提升,各式各樣的智能家居不斷問世并得到消費(fèi)者的喜愛。因而各樣的智能魚缸作為裝飾品和智能家居的合體應(yīng)景入駐家庭、辦公室、商場(chǎng)等場(chǎng)所。它不僅可以作為裝飾品給我們帶來視覺享受,緩解精神疲勞,而且將中國傳統(tǒng)水文化引入日常生活,極大的豐富了人們的生活。但目前市面上各式魚缸魚龍混雜,格式各異,大多為非智能,需要手動(dòng)操作實(shí)現(xiàn)溫控,換水,充氧,投食等。這將造成諸多不便,浪費(fèi)使用者的大量時(shí)間精力,且影響魚缸的美觀性。但現(xiàn)代社會(huì)生活節(jié)奏較快,人們沒有足夠的時(shí)間動(dòng)手照顧魚缸,導(dǎo)致魚缸生物成活率低。因而,現(xiàn)階段智能魚缸具有一定的市場(chǎng)需求。

本課題設(shè)計(jì)的目的為實(shí)現(xiàn)魚缸溫控、換水、充氧、投食的一體化和智能化。 該設(shè)計(jì)具有科研和實(shí)用兩重價(jià)值。

2 課題研究方法

本課題設(shè)計(jì)主要是利用單片機(jī)為主控芯片,結(jié)合嵌入式技術(shù)、傳感器技術(shù)、C語言編程等技術(shù)設(shè)計(jì)出滿足功能的智能魚缸系統(tǒng)。總體上,我們首先要根據(jù)智能魚缸的使用場(chǎng)合和工作環(huán)境明確我們所設(shè)計(jì)系統(tǒng)所需的總體功能。其次,我們構(gòu)思出系統(tǒng)的總體框架,繪出硬件和軟件流程框圖,然后根據(jù)流程圖著手設(shè)計(jì)。硬件方面考慮到市場(chǎng)現(xiàn)有的芯片、元器件種類繁多,我們需要斟酌選用滿足系統(tǒng)功能且穩(wěn)定實(shí)惠的元器件。系統(tǒng)軟件編程我們采用模塊化程序設(shè)計(jì),先根據(jù)系統(tǒng)功能要求構(gòu)思出出程序框圖,再利用C語言對(duì)各個(gè)模塊進(jìn)行編程設(shè)計(jì)。最后利用KeiluVision5對(duì)源程序進(jìn)行調(diào)試、查錯(cuò)和修改,最后導(dǎo)入硬件設(shè)備,總體運(yùn)行系統(tǒng),確保系統(tǒng)滿足功能要求且能穩(wěn)定的運(yùn)行。

3 智能魚缸系統(tǒng)功能要求

該智能魚缸系統(tǒng)的設(shè)計(jì)是以日常生活中魚缸的養(yǎng)護(hù)為背景, 根據(jù)當(dāng)前市場(chǎng)上的需求, 智能魚缸系統(tǒng)需要自動(dòng)實(shí)現(xiàn)自動(dòng)溫控、 換水、 充氧、 投食等功能。

系統(tǒng)需要穩(wěn)定運(yùn)行盡可能避免發(fā)生故障, 且需要盡可能的降低成本, 具有實(shí)用價(jià)值。系統(tǒng)需要對(duì)魚缸內(nèi)部環(huán)境進(jìn)行檢測(cè), 并保持環(huán)境參數(shù)保持在適宜魚類生存的范圍內(nèi)。 首先是溫度, 根據(jù)了解, 魚類的適宜的生存環(huán)境一般都在 22~28℃, 當(dāng)溫度傳感器檢測(cè)到水溫低于 22℃時(shí), 系統(tǒng)啟動(dòng)加熱器加熱, 當(dāng)溫度達(dá)到 28℃時(shí)系統(tǒng)停止加熱, 使溫度在適宜魚類生存的范圍內(nèi)波動(dòng)。

其次是充氧, 目前生活中人們無法對(duì)充氧做到很好的把控, 長(zhǎng)時(shí)間不充氧容易導(dǎo)致魚類缺氧死亡, 而一直開啟氧泵無疑是對(duì)資源的浪費(fèi), 因而, 利用定時(shí)控制氧泵開關(guān),保證水中的一定的溶氧量將一定程度上解決上述問題。

魚類的投食頻率一般是 12 小時(shí)或者 24 小時(shí), 最佳時(shí)間一般在中午這個(gè)時(shí)間段, 因而可以利用系統(tǒng)的時(shí)鐘模塊定時(shí)控制投食器。

水循環(huán)主要是為了除去水中的雜質(zhì), 改良水質(zhì), 可以利用利用系統(tǒng)定時(shí)模塊定時(shí)開關(guān)水泵, 將水通過活性炭海綿等過濾完成凈化, 為魚類提供適宜生存的環(huán)境。

4 系統(tǒng)結(jié)構(gòu)

魚類生存的環(huán)境要素包含很多, 如光照、 水的溫度、 營養(yǎng)物、雜質(zhì)含量、 溶氧量、 PH 等等。 在此設(shè)計(jì)中, 我們主要考慮到魚類生存的四大環(huán)境要素:水溫、 水溶氧量、 水雜質(zhì)含量、 營養(yǎng)物。 而各個(gè)要素對(duì)應(yīng)的系統(tǒng)處理功能如下表所示

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

學(xué)長(zhǎng)設(shè)計(jì)的智能魚缸控制系統(tǒng)主要實(shí)現(xiàn)自動(dòng)加熱、 自動(dòng)水循環(huán)、 自動(dòng)充氧、 自動(dòng)投食四個(gè)功能, 選用 STC89C52 單片機(jī)作為系統(tǒng)核心芯片, 控制溫控模塊、 時(shí)鐘模塊和其他一些模塊。 溫度控制模塊中 DS18B20 溫度傳感器負(fù)責(zé)采集溫度參數(shù)傳送至主控芯片,利用繼電器控制加熱器以實(shí)現(xiàn)恒溫。 時(shí)鐘模塊通過繼電器控制氧泵、 水泵的開關(guān), 實(shí)現(xiàn)定時(shí)充氧、 定時(shí)水循環(huán)。 而自動(dòng)投食功能利用時(shí)鐘模塊控制步進(jìn)電機(jī)來模擬。 系統(tǒng)結(jié)構(gòu)框圖如下圖所示。

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

5 硬件模塊

5.1 單片機(jī)最小系統(tǒng)

本設(shè)計(jì)采用的是STC89C52單片機(jī)芯片,…單片機(jī)最小系統(tǒng)電路如圖所示。

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

(1)復(fù)位電路:復(fù)位電路的作用就是在程…。

(2)晶振電路:晶振電路為單片…

5.2 溫度檢測(cè)模塊

此溫度模塊為DS18B20,主要組成部分由一個(gè)…。

該芯片通過引腳2同單片機(jī)P1.7口進(jìn)行對(duì)接?!瓬囟葯z測(cè)模塊如圖3-3所示。

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

5.3 繼電器模塊

在排水或者進(jìn)行投食時(shí)均要啟用電機(jī)裝置,…繼電器模塊如圖

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)
繼電器一共有6個(gè)引腳,…引腳功能如下

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

5.4 顯示模塊

電路中采用了LCD1602顯示器?!璍CD1602顯示器如圖所示。

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

6 實(shí)現(xiàn)效果

將各個(gè)硬件部分組裝后得到最終實(shí)物圖

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

其中, 1 是 USB 電源接口, 為系統(tǒng)提供 5V 的電源。 2 是按鈕控制開關(guān), 是系統(tǒng)的主開關(guān)。 3 是 LCD1602 顯示器, 用于顯示相關(guān)數(shù)據(jù)。 4 是 DS1302 時(shí)鐘芯片。 5 是 24C02存儲(chǔ)芯片。 6 是四個(gè)控制按鍵, 用于設(shè)置系統(tǒng)參數(shù)。 7 是 DS18B20 溫度傳感器, 與用于采集實(shí)時(shí)溫度值。 8、 9、 10 依次是控制加熱、 充氧、 水循環(huán)的三個(gè)繼電器。 11 為用于模擬投食的步進(jìn)電機(jī)。 12 為步進(jìn)電機(jī)電源輸入接口。

自動(dòng)溫控
基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

學(xué)長(zhǎng)在演示中用手握住溫度傳感器來模擬加熱器工作水溫上升, 溫度上升超過上限值 31℃時(shí), 繼電器 1 燈滅, 表示模擬加熱器斷電, 加熱結(jié)束, 如圖所示。 加熱結(jié)束后溫度逐漸降低, 直至溫度再次低于下限溫度值時(shí), 繼電器再次通電, 啟動(dòng)加熱, 以維持魚缸溫度在一定范圍內(nèi)波動(dòng)。

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

自動(dòng)投食

根據(jù)系統(tǒng)的需求, 投食頻率大致為 24 小時(shí)一次, 通過定時(shí)開啟投食器來實(shí)現(xiàn)。 但為了方便演示, 我們通過按鍵將 Feed Time 設(shè)置為系統(tǒng)時(shí)間的下一分鐘, 當(dāng)系統(tǒng)時(shí)間達(dá)到設(shè)定時(shí)間, 步進(jìn)電機(jī)轉(zhuǎn)動(dòng), 用于模擬投食。

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

自動(dòng)充氧

自動(dòng)充氧與投食相似, 我們可以設(shè)置固定的時(shí)間, 為了演示方便, 我們也可以設(shè)置在系統(tǒng)時(shí)間的下一分鐘, 當(dāng)系統(tǒng)時(shí)間達(dá)到設(shè)定時(shí)間后, 繼電器 2 亮燈開啟, 進(jìn)行模擬充氧。

基于51單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì),單片機(jī)

7 關(guān)鍵代碼

#include"reg52.h"
#include "delay.h"
#include "typedef.h"
#include "1602.h"
#include "key.h"
#include "set.h"
#include "18b20.h"
#include "24c02.h"
#include "ds1302.h"
uchar PageNum=0; //0顯示溫濕度 1顯示溫度和報(bào)警數(shù)值2顯示濕度和報(bào)警數(shù)值
float Temp_Data=0;
uchar AlarmTemp[]={32,20}; //高低溫度
unsigned char FeedTime[3]={0}; //喂食時(shí)間
unsigned char O2Time[3]={0};  //充氧氣時(shí)間
unsigned char LoopTime[3]={0}; //水循環(huán)時(shí)間
sbit RELAY1 = P2^2; //加水繼電器
sbit RELAY2 = P2^1; //加熱繼電器
sbit RELAY3 = P2^0; //放水繼電器
sbit ENA=P3^2;
sbit ENB=P3^3;
void TimerInit(void);
void GetTemp(void);
void PageInit(void);
void PageDisplay(void);
void DataLoad(void); //數(shù)據(jù)加載
void TempInit(void); //
void HeatControl(void); //加熱自動(dòng)控制
void Timer1_Init(void);  //50毫秒@11.0592MHz
void IncO2Control(void);
void FeedControl(void);
void LoopControl(void);
unsigned char FeedSecond=0;
unsigned char O2Second=0;
unsigned int LoopSecond=0;
unsigned char CountTime[3]={0}; //水循環(huán)時(shí)間計(jì)時(shí)
void main(void)
{
Delay_1ms(100);
LCD_Init();
TimerInit();
PageInit();
DataLoad();
TempInit();
Timer1_Init();
while(1)
{
 GetTemp();
 DS1302_Read();
 FeedControl();
HeatControl();
 IncO2Control();
PageDisplay();
 LoopControl();
 Delay_1ms(50);
} 
}
void Timer0_Serve(void) interrupt 1
{ 
TH0 = (65535-20000)/256; //20MS定時(shí)
TL0 = (65535-20000)%256;
LCD_Refresh(); //LCD刷新
KEY_Scan();
}
void Timer1_Serve(void) interrupt 3 //50ms定時(shí)
{ 
 static unsigned char T50MS=0;
 TL1 = 0x00;  //設(shè)置定時(shí)初值
 TH1 = 0x4C;   //設(shè)置定時(shí)初值
 T50MS++;
 if(T50MS>=20)
 {
 T50MS=0;
 CountTime[2]++;
if(CountTime[2]>=60)
 {
 CountTime[2]=0;
  CountTime[1]++;
  if(CountTime[1]>=60)
  {
  CountTime[1]=0;
  CountTime[0]++;
if(CountTime[0]>23)
  CountTime[0]=0;
 }
} 
 if(FeedSecond>0)
 FeedSecond--;
 if(O2Second>0)
 O2Second--;
  if(LoopSecond>0)
  {
  LoopSecond--;
 }
 }
}
void HeatControl(void) //加熱控制
{
/*------------------低于下限開始加熱---------------------*/
 if(Temp_Data<AlarmTemp[1])
 {
RELAY1=0;
 }
/*------------------高于上限停止加熱---------------------*/
if(Temp_Data>AlarmTemp[0])
 {
 RELAY1=1;
 }
}
void TimerInit(void)
{
 TMOD &= 0xF0;
 TMOD |= 0X01; //T1工作在定時(shí)模式, T0 工作在8位自動(dòng)重載計(jì)數(shù)
 TL0 = (65535-20000) % 256; //T0工作在定時(shí)模式 50ms定時(shí)
TH0 = (65535-20000)  / 256;
 ET0 = 1;
 TR0 = 1;
 EA = 1;
}
void PageDisplay(void)
{
/*---------------------------------------------------------*/
if(KeyVal=='E')
{
KeyVal=0;
 PageNum++;
 if(PageNum>4)
{
 PageNum=0;
 }
 PageInit();
}
/*-------------------------------------------------------*/
switch(PageNum)
{
/*-------------------------------------------------------*/
case 0: //顯示和設(shè)置實(shí)時(shí)時(shí)間
{
  LCD_DisplayDate(0,Date);
  LCD_DisplayTime(16,Time);
  if(KeyVal=='S')
  {
  KeyVal = 0;
  SetRTC();
 }
}break;
/*-------------------------------------------------------*/
case 1: //顯示實(shí)時(shí)溫度和上下限值
 {
TempDisplay(5,Temp_Data);
DisplayU8(18,AlarmTemp[0]);  //
DisplayU8(26,AlarmTemp[1]);  //
if(KeyVal=='S')
{
KeyVal=0;
SetTempHigLow(AlarmTemp);
WrToROM(AlarmTemp,5,2); //溫度存儲(chǔ)地址0
}
 }break;
/*-------------------------------------------------------*/
 case 2:
 {
 LCD_DisplayTime(16,FeedTime);
  if(KeyVal=='S')
  {
  KeyVal=0;
  SetClockTime(FeedTime);
 WrToROM(FeedTime,20,3);
  } 
 }break;
/*-------------------------------------------------------*/
case 3:
{
 LCD_DisplayTime(16,O2Time);
  if(KeyVal=='S')
  {
  KeyVal=0;
  SetClockTime(O2Time);
 WrToROM(O2Time,25,3);
  } 
}break;
/*-------------------------------------------------------*/
case 4:
{
 LCD_DisplayTime(16,LoopTime);
  if(KeyVal=='S')
{
  KeyVal=0;
  SetClockTime(LoopTime);
  WrToROM(LoopTime,30,3);
  }
}break;
default: { PageNum=0; PageInit(); }break;
}
/*-------------------------------------------------------*/
}
void IncO2Control(void)
{
 if(1==CompareClock(O2Time,Time))
 {
 O2Second=60;
 }
 if(O2Second>0)
 RELAY2=0;
 else
 RELAY2=1;
}
void FeedControl(void)
{
 if(1==CompareClock(FeedTime,Time))
 {
FeedSecond=10;
 }
 if(FeedSecond>0)
 {
 ENA=0;
 ENB=1;
 }
 else
 {
 ENA=1;
 ENB=1; 
 }
}
void LoopControl(void)
{
 if(1==CompareClock(LoopTime,CountTime))
 {
 CountTime[0]=CountTime[1]=CountTime[2]=0;
 LoopSecond=60;
 }
 if(LoopSecond>0)
 {
 RELAY3=0;
 }
 else
{
 RELAY3=1;
 }
}


8 最后

?? 項(xiàng)目分享與指導(dǎo):https://gitee.com/sinonfin/sharing文章來源地址http://www.zghlxwxcb.cn/news/detail-759169.html

到了這里,關(guān)于【畢業(yè)設(shè)計(jì)】基于單片機(jī)的智能魚缸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) - 嵌入式 物聯(lián)網(wǎng) stm32 51單片機(jī) 智能魚缸的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包