單片機(jī)課程設(shè)計--基于單片機(jī)的水位控制系統(tǒng)設(shè)計_第1頁
已閱讀1頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  基于單片機(jī)的水位控制系統(tǒng)設(shè)計</p><p><b>  摘要</b></p><p>  本設(shè)計是采用AT89C51單片機(jī)為核心芯片,及其他相關(guān)硬件來實(shí)現(xiàn)的水位控制系統(tǒng),并用兩位七段共陰LED顯示器示水位高度,檢測水位數(shù)據(jù)。當(dāng)水位低于用戶設(shè)定的值時,系統(tǒng)會實(shí)施報警安全提示,并自動打開電機(jī)上水。當(dāng)水位達(dá)到設(shè)定值時,系統(tǒng)停止報警,并自動關(guān)閉電機(jī)。當(dāng)

2、水位高于另一設(shè)定值時,系統(tǒng)再次報警,電機(jī)自動打開放水,直到水位正常,報警停止,電機(jī)自動關(guān)閉。</p><p>  關(guān)鍵字:單片機(jī),LED顯示器,電機(jī)</p><p><b>  Abstract</b></p><p>  This design uses AT89C51 chip microcomputer as the most impor

3、tant chip,and other related hardware to realize the water level control system,with the two-position,seven segment and common negative LED display to show the water level height,to check the water level data.When water l

4、evel is under the user’s set point, the system will give an alarm and implement safe hint, and automatically open electric motor to provide water.When water level reaches the set point,system will stop giving an alarm,a&

5、lt;/p><p>  Key words:single-chip microcomputer, LED display, electric motor</p><p><b>  1 引言</b></p><p>  本設(shè)計對水箱的水位進(jìn)行控制,主要為了避免水箱的“無水”和“溢水”現(xiàn)象,使水位保持在一定的范圍內(nèi),同時也避免了對水資源的浪費(fèi)。本設(shè)計

6、利用了單片機(jī)來實(shí)現(xiàn)這一功能。這一小塊芯片上集成了一個微型計算機(jī)的各個組成部分,它的誕生使眾多自動化控制系統(tǒng)得以實(shí)現(xiàn)。讓51單片機(jī)與數(shù)碼顯示連接可隨時掌握水位高度,與電機(jī)相連實(shí)現(xiàn)自動給水排水功能。</p><p><b>  2 設(shè)計方案及原理</b></p><p><b>  1.1 設(shè)計原理</b></p><p> 

7、 該水位控制系統(tǒng)由一片AT89C51單片機(jī)芯片,一塊兩位七段共陰LED顯示器,一片電機(jī)驅(qū)動芯片1298,一個電機(jī),8個高低排列符合物理順序的按鍵,用來模擬水位的高低,每一個按鍵代表10cm高的水位,當(dāng)水位低于30cm時,系統(tǒng)會實(shí)施報警安全提示,并自動打開電機(jī)上水。當(dāng)水位達(dá)到設(shè)定值時,系統(tǒng)停止報警,并自動關(guān)閉電機(jī)。但是當(dāng)水位60cm時,系統(tǒng)也會報警,電機(jī)自動打開放水,直到水位正常,報警停止,電機(jī)自動關(guān)閉,使水位始終保持在30cm-60cm

8、之間。同時數(shù)碼管也會隨時顯示水位的高低數(shù)值。</p><p><b>  1.2 設(shè)計方案</b></p><p><b>  (1)硬件設(shè)計</b></p><p>  系統(tǒng)電路是由按鍵輸入電路,二極管、LED顯示輸出電路,晶振電路,及復(fù)位電路組成。選用一片AT89C51單片機(jī),三個發(fā)光二極管,一塊兩位七段共陰LED顯示

9、器,一片電機(jī)驅(qū)動芯片1298,一個電機(jī),8個高低排列符合物理順序的按鍵,一個蜂鳴器。按鍵由P1口輸入(P1.0為最高水位,P1.7為最低水位),顯示器由P0口輸出,P1口接報警裝置,P2口接電機(jī)驅(qū)動裝置。具體系統(tǒng)組成框圖及電路原理設(shè)計圖如下圖所示:</p><p><b>  圖1 系統(tǒng)組成框圖</b></p><p>  圖2 電路原理整體設(shè)計圖</p>

10、<p>  圖3 電機(jī)驅(qū)動電路 圖4 按鍵輸入電路</p><p><b>  (2)軟件設(shè)計</b></p><p>  實(shí)驗程序由C語言編寫,keil C編譯,proteus仿真實(shí)驗電路。程序除主程序外,包含一個延時程序,一個顯示子程序,一個蜂鳴器子程序。每個相鄰的按鍵間相隔10cm高度的

11、水位。0~20水位過低,蜂鳴器響起;30~50水位正常;60~80水位過高,蜂鳴器響;LED隨時顯示。蜂鳴器的響聲是利用高低電平的反復(fù)交替使其震動而產(chǎn)生的。主程序是由9個if條件句組成,分別表示按鍵按下模擬不同水位時,蜂鳴器、數(shù)碼管及發(fā)光二極管的不同反應(yīng)。紅燈表示水位過低,電機(jī)正轉(zhuǎn),進(jìn)水;綠燈表示水位正常,電機(jī)停轉(zhuǎn);黃燈表示水位過高,電機(jī)反轉(zhuǎn),出水。</p><p><b>  源程序見附錄。</

12、b></p><p>  程序流程圖及仿真調(diào)試如下圖所示:</p><p><b>  圖3 程序流程圖</b></p><p>  圖4 系統(tǒng)仿真及調(diào)試圖 正常水位</p><p>  圖5系統(tǒng)仿真及調(diào)試圖 高水位 圖6 系統(tǒng)仿真及調(diào)試圖 低水位</p><p&

13、gt;<b>  3 總結(jié)</b></p><p>  本次課程設(shè)計的系統(tǒng)主要介紹了水體的液位檢測控制,主要核心就是AT89C51單片機(jī),利用LED和發(fā)光二極管來進(jìn)行信號的輸出顯示, 按鍵模擬信號輸入,系統(tǒng)的結(jié)構(gòu)簡化, 具有良好的人機(jī)交互功能,并設(shè)有液位報警,有問題立即就能發(fā)現(xiàn),通過自動調(diào)節(jié)控制液位并實(shí)現(xiàn)水體的液位報警,操作人員勞動強(qiáng)度小</p><p>  該設(shè)計主

14、要為了避免水箱的“無水”和“溢水”現(xiàn)象,使水位保持在一定的范圍內(nèi),同時也避免了對水資源的浪費(fèi)。同時運(yùn)用proteus對設(shè)計進(jìn)行仿真,用keil C對C語言進(jìn)行編譯,用visio對設(shè)計框圖和程序流程圖的繪畫,還有對word熟練掌握下編寫的課程設(shè)計報告。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]謝自美.電子線路設(shè)計、實(shí)驗與測試[M].華中科

15、技大學(xué)出版社.2003.</p><p>  [2]馮建華. 基于單片機(jī)的控制系統(tǒng)研究,單片機(jī)學(xué)報[M].2007.</p><p>  [3]馬忠梅,張凱等.單片機(jī)的C語言應(yīng)用程序設(shè)計[M].北京:北京航空航天大學(xué)出版社.2003.</p><p>  [4]秦獲輝.科技英語(電子類).西安:西安電子科技大學(xué)出版社[M].2005.</p><

16、p>  [5]李萍. AT80C51單片機(jī)原理、開發(fā)與應(yīng)用實(shí)例[M].中國電力出版社.2008. </p><p><b>  附錄</b></p><p>  #include<reg52.h>//0~30水位過低,40~50合適,60~80水位過高</p><p>  #define ui unsigned int&l

17、t;/p><p>  #define uc unsigned char</p><p>  uc flag; //水位是否蜂鳴器報警標(biāo)志位</p><p>  uc dang; //水位高度的檔次</p><p>  uc shuiwei,geshuiwei,shishuiwei;</p><p>  uc co

18、de table[]={0x3f,0x06,0x5b,0x4f,</p><p>  0x66,0x6d,0x7d,0x07,0x7f,0x6f,</p><p>  0x77,0x7c,0x39,0x5e,0x79,0x71};</p><p>  sbit red=P2^0;</p><p>  sbit green=P2^1;</

19、p><p>  sbit yellow=P2^2;</p><p>  sbit wei1=P2^3;</p><p>  sbit wei2=P2^4;</p><p>  sbit motor1=P2^5;</p><p>  sbit motor2=P2^6;</p><p>  sbit b

20、ee=P2^7;</p><p>  void delay(ui a) //延時程序</p><p>  { ui i,j;</p><p>  for(i=a;i>0;i--)</p><p>  for(j=110;j>0;j--);</p><p><b>  } </b>

21、;</p><p>  void display(uc dang) //LED顯示器的子程序</p><p><b>  {</b></p><p>  shuiwei=dang*10;</p><p>  geshuiwei=shuiwei%10;</p><p>  shishuiwei=

22、shuiwei/10;</p><p><b>  wei2=1;</b></p><p><b>  wei1=0;</b></p><p>  P0=table[shishuiwei];</p><p><b>  delay(1);</b></p><

23、p><b>  wei1=1;</b></p><p><b>  wei2=0;</b></p><p>  P0=table[geshuiwei];</p><p><b>  delay(1);</b></p><p><b>  } </b&

24、gt;</p><p>  void fengmingqi() //蜂鳴器的子程序</p><p><b>  {</b></p><p>  if(flag==1)</p><p><b>  {</b></p><p><b>  bee=~bee;<

25、/b></p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  if(flag==2)</p><p><b>  {</b></p><p><b>  bee=~bee;&l

26、t;/b></p><p><b>  delay(2);</b></p><p><b>  }</b></p><p>  display(dang);</p><p><b>  }</b></p><p>  void main() /

27、/主程序</p><p><b>  {</b></p><p>  while(1) //0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03;0x01,0x00</p><p><b>  {</b></p><p>  if(P1==0xff) //最低水位</p>

28、;<p><b>  {</b></p><p>  dang=0; display(dang);</p><p>  green=1;yellow=1;red=0; //紅燈表示水位過低</p><p>  motor1=1; motor2=0; //電機(jī)正轉(zhuǎn),進(jìn)水</p><p><b> 

29、 flag=1; </b></p><p>  while(P1==0xff)fengmingqi();</p><p><b>  }</b></p><p>  if(P1==0x7f)//1</p><p><b>  {</b></p><p>  da

30、ng=1; display(dang);</p><p>  green=1;yellow=1;red=0; //紅燈表示水位過低</p><p>  motor1=1; motor2=0; //電機(jī)正轉(zhuǎn),進(jìn)水</p><p><b>  flag=1; </b></p><p>  while(P1==0x7f)f

31、engmingqi();</p><p><b>  } </b></p><p>  if(P1==0x3f)//2</p><p><b>  {</b></p><p>  dang=2; display(dang);</p><p>  green=1;yello

32、w=1;red=0; //紅燈表示水位過低</p><p>  motor1=1; motor2=0; //電機(jī)正轉(zhuǎn),進(jìn)水</p><p><b>  flag=1; </b></p><p>  while(P1==0x3f)fengmingqi();</p><p><b>  }</b>&

33、lt;/p><p>  if(P1==0x1f)//3</p><p><b>  {</b></p><p>  dang=3; display(dang);</p><p>  green=0;yellow=1;red=1; //綠燈表示水位正常</p><p>  motor1=0; moto

34、r2=0; //電機(jī)停轉(zhuǎn)</p><p><b>  flag=0; </b></p><p>  while(P1==0x1f)fengmingqi();</p><p><b>  }</b></p><p>  if(P1==0x0f)//4</p><p><

35、b>  {</b></p><p>  dang=4; display(dang);</p><p>  green=0;yellow=1;red=1; //綠燈表示水位正常</p><p>  motor1=0; motor2=0; //電機(jī)停轉(zhuǎn)</p><p><b>  flag=0; </b>

36、;</p><p>  while(P1==0x0f)fengmingqi();</p><p><b>  }</b></p><p>  if(P1==0x07)//5</p><p><b>  {</b></p><p>  dang=5; display(dang)

37、;</p><p>  green=0;yellow=1;red=1; //綠燈表示水位正常</p><p>  motor1=0; motor2=0; //電機(jī)停轉(zhuǎn)</p><p><b>  flag=0; </b></p><p>  while(P1==0x07)fengmingqi();</p>

38、<p><b>  }</b></p><p>  if(P1==0x03)//6</p><p><b>  {</b></p><p>  dang=6; display(dang);</p><p>  green=1;yellow=0;red=1; //黃燈表示水位過高<

39、;/p><p>  motor1=0; motor2=0; //電機(jī)反轉(zhuǎn),出水</p><p><b>  flag=2; </b></p><p>  while(P1==0x03)fengmingqi();</p><p><b>  }</b></p><p>  if(

40、P1==0x01)//7</p><p><b>  {</b></p><p>  dang=7; display(dang);</p><p>  green=1;yellow=0;red=1; //黃燈表示水位過高</p><p>  motor1=0; motor2=0; //電機(jī)反轉(zhuǎn),出水</p>

41、<p><b>  flag=2; </b></p><p>  while(P1==0x01)fengmingqi();</p><p><b>  }</b></p><p>  if(P1==0x00)//8</p><p><b>  {</b><

42、/p><p>  dang=8; display(dang);</p><p>  green=1;yellow=0;red=1; //黃燈表示水位過高</p><p>  motor1=0; motor2=0; //電機(jī)反轉(zhuǎn),出水</p><p><b>  flag=2; </b></p><p&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論