畢業(yè)設(shè)計(論文)基于單片機(jī)的加藥自動控制電路的設(shè)計_第1頁
畢業(yè)設(shè)計(論文)基于單片機(jī)的加藥自動控制電路的設(shè)計_第2頁
畢業(yè)設(shè)計(論文)基于單片機(jī)的加藥自動控制電路的設(shè)計_第3頁
畢業(yè)設(shè)計(論文)基于單片機(jī)的加藥自動控制電路的設(shè)計_第4頁
畢業(yè)設(shè)計(論文)基于單片機(jī)的加藥自動控制電路的設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘要加藥自動控制電路的設(shè)計對早前的加藥控制器進(jìn)行了改進(jìn),之前的加藥控制器需要人工的監(jiān)測,加藥自動控制電路的設(shè)計免去了這種既耗時間又耗經(jīng)濟(jì)的弊端。本設(shè)計是在基于單片機(jī)的基礎(chǔ)上實現(xiàn)自動控制,在單片機(jī)最小系統(tǒng),檢測電路模塊,電源電路模塊,報警電路模塊,adc0804模數(shù)轉(zhuǎn)換電路模塊,顯示電路模塊和軟件編程的基礎(chǔ)上來實現(xiàn)藥水水位的自動控制。文章結(jié)合了1602,蜂鳴器,stc89c52,adc0804模數(shù)轉(zhuǎn)換器,水位傳感器等的使用方法,水位傳感器是根據(jù)內(nèi)部阻值感應(yīng)水位高低而改變,繼而在整體的電路中產(chǎn)生電壓的變化并在lcd上顯示電壓的變化,功能模塊通過水位傳感器檢測水位高低得到電壓的不同值,然后再通過模數(shù)

2、轉(zhuǎn)換器把由于水位高低的不同而引起的電壓不同值轉(zhuǎn)換成數(shù)字信號輸入給單片機(jī),單片機(jī)在做出相應(yīng)的處理從而達(dá)到設(shè)計要求的自動檢測水位功能。實踐表明,此設(shè)計有良好的應(yīng)用前景。關(guān)鍵詞:自動控制;單片機(jī);altium designer;lcd1602;adc0804abstract this design of dosing automatic control circuit has refined the previous dosing controller which needs artificial monitoring. and the new design of dosing automatic

3、control circuit has successfully avoided the disadvantages of wasting time and money . this design is based on single chip microcomputer to achieve the automatic control and realize the automatic control of liquid medicine water level through the minimum scm system, detection circuit module, power c

4、ircuit module, alarm circuit module, adc0804 analog digital conversion circuit module, display circuit module and software programming. this article has combined with application methods of 1602 liquid crystal display, buzzer,stc89c52, adc0804 analog digital converter and water level sensor which va

5、ries with internal resistance induction of water level and causes changes of the whole circuits voltage accordingly, then makes it showed in the lcd . afterwards, through the different voltage values inducted by water level sensor which soon will be converted into digital signals by the analog digit

6、al convertor, the function module then inputs the digital signals into the scm. and the scm makes corresponding processing, thus meets the design requirements for automatic function of detecting water level. practice shows that this design has a good application prospect. key words: automatic contro

7、l; single chip microcomputer; altium designer; 1602 liquid crystal display; adc0804 analog digital converter目錄摘要iabstractii1 緒論11.1 引言12 系統(tǒng)的整體方案設(shè)計22.1 功能要求22.2 設(shè)計要求22.3 單片機(jī)選擇23 系統(tǒng)的硬件設(shè)計43.1 電路原理框圖43.2 主控芯片簡介43.2.1 主控芯片stc89c52概述43.3 液晶屏1602簡介73.3.1 液晶屏1602的簡單介紹73.4 系統(tǒng)功能電路83.4.1 最小系統(tǒng)工作原理83.4.2 蜂鳴器報警電路

8、原理113.4.3 電機(jī)驅(qū)動電路113.4.4 液晶1602顯示功能電路123.4.5 電源電路133.4.6 adc0804模數(shù)轉(zhuǎn)換電路143.5 系統(tǒng)總原理圖154 系統(tǒng)的軟件設(shè)計174.1 編程語言介紹174.1.1 c語言介紹174.2 系統(tǒng)程序設(shè)計184.2.1 程序設(shè)計步驟184.3 程序流程圖195 電路焊接調(diào)試及體會205.1 硬件的焊接和調(diào)試205.2 軟件調(diào)試206 總結(jié)21參考文獻(xiàn)22附錄一23附錄二24附錄三29致謝301 緒論1.1 引言自動控制理論是研究自動控制共同規(guī)律的一門學(xué)科。目前,已有工程控制論,生物控制論,經(jīng)濟(jì)控制論和社會控制論等多個分支,其中工程控制論是研

9、究工程領(lǐng)域的自動控制,本設(shè)計也是用到了工程控制論的加藥自動控制。所謂自動控制,就是指在沒有人直接參與的情況下,利用控制裝置使整個生產(chǎn)過程或設(shè)備自動地按規(guī)律運行,或使其某個參數(shù)按要求變化,此次設(shè)計是設(shè)計一個自動加藥的裝置,在工程應(yīng)用中很是廣泛。加藥自動控制的設(shè)計是在單片機(jī)的基礎(chǔ)上結(jié)合硬件電路模塊和軟件程序部分共同實現(xiàn)的。自動加藥控制電路設(shè)計是通過單片機(jī)來控制藥汞藥水水位的監(jiān)測,外加液晶顯示屏來顯示設(shè)備的運行狀況,水位傳感器電路來檢測藥水水位的高低,最后通過報警電路和電機(jī)驅(qū)動電路來模擬加藥水,從而實現(xiàn)智能自動加藥,此設(shè)計不需要人為監(jiān)測,省時又省錢,帶來了許多方便。在藥汞的設(shè)計上可以根據(jù)用戶需求來設(shè)

10、計大小,在此設(shè)計中通過報警電路的設(shè)計來編寫程序,從而設(shè)定自動加藥的間隔時間。加藥自動控制在國內(nèi)外化工行業(yè),農(nóng)業(yè)方面使用都比較普遍,隨著科學(xué)技術(shù)的發(fā)展自動控制技術(shù)也在不斷的提升改進(jìn),相信在以后自動控制技術(shù)將會給農(nóng)工行業(yè)帶來許多的便利,加藥自動控制的設(shè)計也是在農(nóng)工行業(yè)很是常見。2 系統(tǒng)的整體方案設(shè)計2.1 功能要求 實際藥水水位的控制在藥汞中有個限定的范圍,不能過高也不能過低,此次設(shè)計中通過運用水位傳感器來檢測藥水水位的高低,繼而來控制電動機(jī)保持藥水水位正常。檢測裝置是在以單片stc89c52為核心的基礎(chǔ)上,通過液晶屏1602和報警電路來實現(xiàn)藥水水位過低報警和過高報警并且相應(yīng)處理的設(shè)計要求。2.2

11、 設(shè)計要求 現(xiàn)場提出急需一種自動檢測水位,當(dāng)水位降低到某個閾值時,發(fā)出報警信號并自動停汞。并讓藥汞周期性間歇運行,運行周期為一個小時,或者可以隨意設(shè)定每周期的加藥的定時時間的自動控制系統(tǒng)。在通電下,電機(jī)會隨著水位傳感器而工作,藥水水位過低時,電機(jī)會轉(zhuǎn)動,蜂鳴器也會報下警,液晶屏也會顯示藥水水位過低。藥水水位正常時,電機(jī)停止轉(zhuǎn)動,蜂鳴器也會報下警,液晶屏顯示藥水水位正常。 2.3 單片機(jī)選擇目前電子市場上有種類較多的單片機(jī),像51單片機(jī),avr單片機(jī)和pic單片機(jī)等。由于單片機(jī)的種類比較眾多,各類單片機(jī)的功能也不一樣,我們選擇單片機(jī)的時候不是要求它功能有多好,僅僅只需要符合我們的設(shè)計要求即可。性

12、能比較差的單片機(jī)不能實現(xiàn)我們設(shè)計所需要求,而且性能差的單片機(jī)相當(dāng)不穩(wěn)定,給我們做設(shè)計帶來一些麻煩;高性能的單片機(jī)卻是能滿足我們設(shè)計所需要求,但是性能高的話,價格一定比較貴并且可能有很多功能不一定會用到,這么一來就顯得有點浪費,所以我們做設(shè)計時選擇單片機(jī)不能隨便選擇,要選擇自己最合適的;因此本次設(shè)計我選用的單片機(jī)是stc89c52單片機(jī)。stc89c52的單片機(jī)是一個低電壓,高性能的cmos8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的flash只讀存儲器和256 bytes的隨機(jī)存儲器,器件采用atmel公司高密度,非易失行存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng),片內(nèi)置通用8為中央處理器

13、和flash存儲單元,stc89c52單片機(jī)在電子行業(yè)有著廣泛的應(yīng)用。3 系統(tǒng)的硬件設(shè)計3.1 電路原理框圖單片機(jī)最小模塊報警電路adc0804模數(shù)轉(zhuǎn)換電路電機(jī)驅(qū)動電路電源電路檢測電路圖 3-1 電路原理框圖 此次設(shè)計的電路設(shè)計框圖大致如圖3-1所示,在單片機(jī)最小系統(tǒng)的基礎(chǔ)上加上了外圍電路來實現(xiàn)設(shè)計的要求。電源電路是設(shè)計的開端,而后有報警電路和電機(jī)驅(qū)動電路是根據(jù)設(shè)計要求在檢測水位時蜂鳴器報警和電機(jī)轉(zhuǎn)動模擬加水,檢測電路應(yīng)用到了水位壓力傳感器產(chǎn)生模擬信號,此時加上模數(shù)轉(zhuǎn)換電路把模擬信號轉(zhuǎn)換為數(shù)字信號輸給單片機(jī),讓單片機(jī)來工作,此次設(shè)計的硬件電路模塊方面就是這些。3.2 主控芯片簡介3.2.1 主

14、控芯片stc89c52概述stc89c52是一種功耗較低,高性能cmos8位微控制器,具有8k 在系統(tǒng)可編程flash 存儲器。在單芯片上,擁有靈巧的8 位cpu 和在系統(tǒng)可編程flash,使得stc89c52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。主要特性: 6時鐘/機(jī)器周期和12時鐘/機(jī)器周期可以任意選擇, 工作電壓:5.5v3.3v 工作頻率范圍:040mhz,實際工作頻率 可達(dá)48mhz 用戶應(yīng)用程序空間為8k字節(jié) 片上集成512字節(jié)ram 通用i/o口(32個),復(fù)位后為:p1/p2/p3/p4是準(zhǔn)雙向口/弱上拉,p0 口是漏極開路輸出,作為總線擴(kuò)展用時,不用加上拉電阻

15、,作為i/o口 用時,需加上拉電阻。 isp/iap,無需專用編程器,無需 專用仿真器,可通過串口(rxd/p3.0,txd/p3.1)直接下載用戶程序, 數(shù)秒即可完成一片 具有eeprom功能,門狗功能,3個16位定時器/計數(shù)器。即定時器t0、t1、t2 通用異步串行口(uart),還可用定時器軟件實現(xiàn)多個uart 工作溫度范圍:-40+85(工業(yè)級)stc89c52引腳功能: vcc:電源電壓 vss:接地 p0端口(p0.0p0.7,3932引腳):p0口是一個漏極開路的8位雙向i/o口。作 為輸出端口,每個引腳能驅(qū)動8個ttl負(fù)載,對端口p0寫入“1”時,可以作為高阻抗輸 入。在訪問外

16、部程序和數(shù)據(jù)存儲器時,p0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用 總線。此時,p0口內(nèi)部上拉電阻有效。 p1端口(p1.0p1.7,18引腳):p1口是一個帶內(nèi)部上拉電阻的8位雙向i/o 口。p1的輸出緩沖器可驅(qū)動4個ttl輸入。對端口寫入1 時,通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。p1口作輸入口使 用時,因為有內(nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個電流。 此外,p1.0和p1.1還可以作為定時器/計數(shù)器2的外部技術(shù)輸入 p2端口(p2.0p2.7,2128引腳):p2口是一個帶內(nèi)部上拉電阻的8位雙向i/o 端口。p2的輸出緩沖器可以驅(qū)動4個ttl輸入。對端口寫入1 時

17、,通過內(nèi)部的上拉電阻把端口拉到高電平,這時可用作輸入口。p2作為輸入口使 用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸出一個電流。 在訪問外部程序存儲器和16位地址的外部數(shù)據(jù)存儲器p2送出高8位地址。 時, 在訪問8位地址的外部數(shù)據(jù)存儲器時,p2口引腳上的內(nèi)容(就是專用寄存器(sfr)區(qū)中的p2寄存器的內(nèi)容), 在整個訪問期間不會改變。 在對flash rom編程和程序校驗期間,p2也接收高位地址和一些控制信號。 p3端口(p3.0p3.7,1017引腳):p3是一個帶內(nèi)部上拉電阻的8位雙向i/o 端口。p3的輸出緩沖器可驅(qū)動4個ttl輸入。對端口寫入1 時,通過內(nèi)部的上拉電阻把端

18、口拉到高電位,這時可用作輸入口。p3做輸入口使用 時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸入一個電流。 在對flash rom編程或程序校驗時,p3還接收一些控制信號。 p3口引腳復(fù)用功能引腳號 p3.0 p3.7復(fù)用功能分別如下:rxd(串行輸入口)txd(串行輸出口) (外部中斷0) (外部中斷1)t0(定時器0的外部輸入)t1(定時器1的外部輸入)(外部數(shù)據(jù)存儲器寫選通) (外部數(shù)據(jù)存儲器讀選通) rst(9引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個機(jī)器周期以上高電平時為有效,用 來完成單片機(jī)單片機(jī)的復(fù)位初始化操作。看門狗計時完成后,rst引腳輸出96個晶 振周期的高電平。特殊寄存器

19、auxr(地址8eh)上的disrto位可以使此功能無效。 disrto默認(rèn)狀態(tài)下,復(fù)位高電平有效。 ale/(30引腳):地址鎖存控制信號(ale)是訪問外部程序存儲器時,鎖存低 8位地址的輸出脈沖。在flash編程時,此引腳()也用作編程輸入脈沖。(29引腳):外部程序存儲器選通信號()是外部程序存儲器選通信號。 vpp(31引腳):訪問外部程序存儲器控制信號。 xtal1 :片內(nèi)震蕩反相放大器和時鐘發(fā)生器電路的輸入端當(dāng)使用片內(nèi)振蕩器時,該引腳接外部石英晶體和微調(diào)電容;當(dāng)采用外接時鐘源時,接外部時鐘振蕩器的信號。 xtal2 :片內(nèi)振蕩器反相放大器的輸出端。當(dāng)采用片內(nèi)振蕩器時,接外部石英晶

20、體和微調(diào)電容;當(dāng)采用外部時鐘源時,懸空。 rst :復(fù)位信號輸入端,高電平有效。加上大于2個機(jī)器周期的高電平,就可以使單片機(jī)復(fù)位。ea/vpp : ea是外部程序存儲訪問允許控制端,vpp 在對片內(nèi)flash進(jìn)行編程時可用。 ale/prog :ale為cpu訪問外部程序存儲器或外部數(shù)據(jù)存儲器提供一個地址鎖存信號,將低8為地址鎖存在片外的地址鎖存器中。prog 在對片內(nèi)flash存儲器編程時,此引腳作為編程脈沖輸入端。 psen :片外程序存儲器的讀選通信號,低電平有效。圖3-2 單片機(jī)引腳圖3.3 液晶屏1602簡介3.3.1 液晶屏1602的簡單介紹液晶屏1602是一種專門用來顯示數(shù)字,符

21、號,字母等的點陣型液晶模塊,液晶屏1602是由多個5x7或5x11等點陣字符組成,在液晶屏1602中每一個單獨的點陣字符位都可以顯示一個字符;位與位之間有一個點距的間隔行與行之間也是一樣也有間隔,就是這些間隔讓液晶屏在顯示的時候呈現(xiàn)出字符間的間隔和行距之間間隔,使我們觀看的時候更直觀,清晰。1602lcd是指在顯示屏上我們可以看到16x2,也就是說可以顯示兩行,每行16個字符液晶模塊。液晶屏1602管腳功能特性:第一腳:vss是接電源地第二腳:vdd接5v電源正極第三腳:v0為液晶顯示器對比度調(diào)整端口,當(dāng)v0接至電源正極時,對比度最弱;相反當(dāng)v0接地時,對比度卻是最高。 第四腳:rs是寄存器選

22、擇,當(dāng)是高電平1時選擇的是數(shù)據(jù)寄存器,低電平0時選擇的是指令寄存器。第五腳:rw是讀寫信號線,執(zhí)行讀操作的指令是高電平1時,執(zhí)行低電平的操作指令是低電平0.第六腳:en端是使能端。第七十四腳:d0d7是8位雙向數(shù)據(jù)端。第十五十六腳:空腳或背燈電源,15腳是背光正極,16腳背光負(fù)極。 1602lcd液晶顯示屏的特征:微功耗,體積較小,內(nèi)容顯示比較豐富,超薄輕巧,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中。液晶1602有三條控制線,rs/數(shù)據(jù)命令端,rw/讀寫選擇端、en/使能端,一個8位的數(shù)據(jù)端3.4 系統(tǒng)功能電路3.4.1 最小系統(tǒng)工作原理 圖3-4 單片機(jī)最小系統(tǒng)單片機(jī)最小包含復(fù)位電路和晶振電路。晶

23、振電路是單片機(jī)的動力來源,與單片機(jī)的xatl1和xatl2兩引腳相連接 我選用的是11.0592m的晶振。圖3-5 晶振電路上圖是復(fù)位電路,分為手動按鍵復(fù)位和上電復(fù)位兩種。上電復(fù)位的原理是在系統(tǒng)剛上電時電容兩端電壓不會突然變化,因此rst上的電平就為高電平,這個過程時間比較短,但是還是能夠讓單片機(jī)復(fù)位的。手動按鍵復(fù)位的原理是在系統(tǒng)工作時可以通過手動按鍵來使單片機(jī)復(fù)位。圖 3-6復(fù)位電路3.4.2 蜂鳴器報警電路原理蜂鳴器報警電路使用的是9012pnp三極管驅(qū)動,pnp管的發(fā)射機(jī)接蜂鳴器器然后再接到+5v的電壓,集電極接地,基集串連一個1k的電阻連接到單片機(jī)的p1.0口。在單片機(jī)的p1.0口為低

24、電平時,9012三極管導(dǎo)通,蜂鳴器會報警發(fā)出聲音,當(dāng)p1.0口是高電平時,三極管處于截止?fàn)顟B(tài),蜂鳴器沒有反應(yīng)不會發(fā)出聲音。在實現(xiàn)設(shè)計功能時,當(dāng)傳感器檢測到藥水水位過低,則將p1.0端口拉低使三極管導(dǎo)通,讓蜂鳴器報警提示目前水位過低;當(dāng)傳感器檢測到水位過高時,也將p1.0端口拉低,三極管導(dǎo)通,蜂鳴器報警,提示當(dāng)前水位過高,當(dāng)水位正常時,蜂鳴器是不報警狀態(tài),當(dāng)然單單靠蜂鳴器報警還不能辨別水位是過高還是過低,這還需要設(shè)計的另一模塊來輔助說明,也就是即將要介紹的電機(jī)驅(qū)動模塊,在設(shè)計中我選擇的蜂鳴器是有源蜂鳴器。圖3-7 蜂鳴器報警電路3.4.3 電機(jī)驅(qū)動電路電機(jī)驅(qū)動電路使用的是irf540n場效應(yīng)管,

25、與蜂鳴器報警電路工作原理幾乎一樣,但電機(jī)驅(qū)動電路接的是單片機(jī)的p2.0口,也與蜂鳴器報警電路一樣,在p2.0口是低電平時電機(jī)轉(zhuǎn)動,高電平時,電機(jī)不工作。在實現(xiàn)功能時,電機(jī)模塊是結(jié)合蜂鳴器報警電路來共同提示水位的高低狀況的,當(dāng)水位過低時,蜂鳴器報警而且此時還需要驅(qū)動電機(jī)轉(zhuǎn)動來實現(xiàn)模擬加水,當(dāng)水位從低水位上到正常水位時,此時蜂鳴器不報警,電機(jī)保持原狀態(tài)繼續(xù)轉(zhuǎn)動,一直達(dá)到高水位,蜂鳴器報警,電機(jī)停止轉(zhuǎn)動。相反,若是水位從高降到正常水位,電機(jī)模塊也是保持原狀態(tài)停止轉(zhuǎn)動,直到低水位的時候在驅(qū)動轉(zhuǎn)動來實現(xiàn)自動加藥水的這一自動控制技術(shù)。圖3-8 電機(jī)驅(qū)動電路3.4.4 液晶1602顯示功能電路液晶1602顯

26、示器共有16個引腳,每一個引腳的意義都不一樣。其中4號5號6號是控制引線;7號到14號引腳是信號線。還有就是3號引腳是背光電源指示端,它這個所接電阻阻值不一樣,背光就會有不一樣的結(jié)果,在此我選用的背光電阻是10k的電阻。圖3-9 液晶1602顯示電路圖3.4.5 電源電路電源電路是由變壓器,單相橋式整流電路,三端穩(wěn)壓器7805,濾波電路組成。此次的設(shè)計需要的是一個5v的直流電源,但我們的日常電壓是220v,不能直接接在電路上,所以在這里就需要一個變壓器將電壓降下來。日常220v電壓是交流電壓,但我的設(shè)計需要的是直流,所以在此加上一個單相橋式整流電路,將交流電壓轉(zhuǎn)換成設(shè)計所需的直流電壓,它是由四

27、個二極管組成,橋式整流電路是利用二極管的單向?qū)щ娦?,四個二極管輪流導(dǎo)通,在負(fù)載上產(chǎn)生的一直是一個單向的電壓。電解電容是有極性的,阻止電壓反相,電容的充放電也起到了濾波的作用,最后引出兩個接口作為電源的正極個負(fù)極。圖3-10 電源電路3.4.6 adc0804模數(shù)轉(zhuǎn)換電路adc0804是逐次比較性的模數(shù)轉(zhuǎn)換芯片,它的一些主要特性如下:1. 工作電壓:vcc =+5v。2. 分辨率:8位。3. 轉(zhuǎn)換時間:100us。4. 模擬輸入電壓范圍:0 到 +5v。5. 參考電壓:2.5v。6. 轉(zhuǎn)換誤差:+ -11sb。引腳功能說明:6號腳vin(+)和7號腳vin(-)是adc0804模數(shù)轉(zhuǎn)換器的兩模擬

28、信號輸入端。db0db7是模數(shù)轉(zhuǎn)換器的數(shù)據(jù)輸出端,具有三態(tài)特性。agnd:模擬信號地。10號腳:數(shù)字信號地。clkin:外電路提供時鐘脈沖輸入端。19號腳clkr:內(nèi)部時鐘發(fā)生器外接電阻端口。1號腳cs:片選信號輸入端,是低電平有效,只有在低電平的時候,才能選中該芯片,然后工作。2號腳rd:讀信號端,低電平有效,該引腳要正常工作不僅要次引腳是低電平而且前提要cs為低電平。3號腳wr:寫信號端,低電平有效,與讀信號端一樣,要前提選中該芯片即cs為0,才能啟動轉(zhuǎn)換。intr:轉(zhuǎn)換結(jié)束輸出信號,低電平有效。當(dāng)它輸出低電平時,就代表轉(zhuǎn)換已經(jīng)完成。圖3-11 模數(shù)轉(zhuǎn)換電路3.5 系統(tǒng)總原理圖系統(tǒng)的總原理

29、圖就是以上電路的總和,有單片機(jī)最小系統(tǒng),蜂鳴器報警電路,電機(jī)驅(qū)動電路,1602液晶顯示電路,指示燈,模數(shù)轉(zhuǎn)換電路,電源電路。圖3-11系統(tǒng)總原理圖4 系統(tǒng)的軟件設(shè)計4.1 編程語言介紹4.1.1 c語言介紹 c語言是世界上廣泛流行的計算機(jī)高級語言。它適合作為系統(tǒng)描述語言,既可以用來編寫系統(tǒng)軟件,也可以用來編寫應(yīng)用軟件。早期的操作系統(tǒng)軟件住喲是用匯編語言編寫的(包括unix操作系統(tǒng)在內(nèi))。但是匯編語言程序可讀性和課移植性比較差,所以為了改變這種現(xiàn)狀c語言就在這種情況下應(yīng)運而生了。c語言是在b語言的基礎(chǔ)上發(fā)展起來的,根源追溯到algol 60.最初的c語言只是為描述和實現(xiàn)unix操作系統(tǒng)提供一種工

30、作語言而設(shè)計的。1973年,ken thompsin和d.m.ritchie合作把unix的百分之九十以上用c語言改寫(即unix第5版。原來的unix操作系統(tǒng)是1969年由美國的貝爾實驗室的ken thompsin和d.m.ritchie開發(fā)成功的,是用匯編語言來編寫的)。后來c語言多次做了改進(jìn),在1975年unix第6版發(fā)布后,c語言的突出優(yōu)點才引起人們的普遍注意。c語言和unix可以說是一對孿生兄弟,在發(fā)展過程中相輔相成。1978年以后,c語言先后移植到大,中,小,微型計算機(jī)上,已經(jīng)獨立于unix和pdp了。c語言便很快風(fēng)靡全世界,成為世界上應(yīng)用最廣泛的幾種計算機(jī)語言之一。c語言是一種結(jié)

31、構(gòu)性語言,層次清晰而且還容易調(diào)試和維護(hù)。它不僅有非常豐富的運算符和數(shù)據(jù)類型,便于實現(xiàn)各種比較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。它還有一項功能是可以直接訪問內(nèi)存的物理地址,進(jìn)位一級的操作,因為c語言實現(xiàn)了對硬件的編程操作,所以c語言既可以用于系統(tǒng)軟件開發(fā),又可以用于應(yīng)用軟件的開發(fā)。c語言具有繪圖能力強(qiáng),可移植性強(qiáng),還有良好的數(shù)據(jù)處理功能,所以非常實用編寫系統(tǒng)軟件,動畫和多位圖,也是樹脂計算的高級語言。c語言的主要特點共有8點,具體如下(1) 語言簡潔,緊湊,使用方便,靈活。(2) 運算符豐富。c語言的運算符包含的范圍很廣泛,共有34種運算符(3) 數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結(jié)構(gòu)。c語言提供的數(shù)據(jù)類型有:

32、整型,浮點型,字符型,數(shù)組型,指針類型,結(jié)構(gòu)體類型,共用體類型等,能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算。尤其是指針類型數(shù)據(jù),使用十分靈活和多樣化。(4) 具有結(jié)構(gòu)化的控制語句(像if.else語句,while語句,for語句等)。用函數(shù)作為程序的模塊單位,便于實現(xiàn)程序的模塊化。(5) 語法限制不太嚴(yán)格,程序設(shè)計自由度大。(6) c語言允許直接訪問物理地址,能進(jìn)行位操作,能實現(xiàn)匯編語言的大部分功能,可以直接對硬件進(jìn)行操作。(7) 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。c語言一般只比匯編程序生成的目標(biāo)代碼效率低百分之十到百分之二十。(8) 用c語言編寫的程序可移植性好。基本上不做修改就能用于各種型號的

33、計算機(jī)和各種系統(tǒng)操作。4.2 系統(tǒng)程序設(shè)計4.2.1 程序設(shè)計步驟c語言程序設(shè)計一般包括三個基本步驟:(1)分析問題:這一步必須做到:a. 作為解決問題的一種方法, 確定要產(chǎn)生的數(shù)據(jù)(輸出)。 作為這一子步的一部分, 你應(yīng)定義表示輸出的變量。b.確定需產(chǎn)生輸出的數(shù)據(jù)(稱為輸入), 作為這一子步的一部分, 你應(yīng)定義表示輸入的變量。c.研制一種算法, 從有限步的輸入中獲取輸出。 這種算法定義為結(jié)構(gòu)化的順序操作, 以便在有限步內(nèi)解決問題。就數(shù)字問題而言, 這種算法包括獲取輸出的計算, 但對非數(shù)字問題來說, 這種算法包括許多文本和圖象處理操作。(2) 畫出程序的基本輪廓:這一步需要一些句子來畫出程序的

34、基本輪廓。每個句子對應(yīng)一個簡單的程序操作。若是個簡單的程序,列出程序順序執(zhí)行的動作就可以直接生成偽代碼;然而復(fù)雜點的則需要將整個過程進(jìn)行有條理的組織。(3) 實現(xiàn)程序:1. 編寫程序 2.測試和調(diào)試程序 3.提供數(shù)據(jù)打印結(jié)果對于源程序應(yīng)該包含文字注釋的文件編制,以說明程序各個部分實現(xiàn)何種工作。另外還應(yīng)該包含調(diào)試程序段,來測試程序的運行情況,并允許查找編程錯誤。若程序運行正常,可以刪去調(diào)試程序段,但文件編制卻要保留,便于維護(hù)和修改。4.3 程序流程圖是否在設(shè)定范圍內(nèi)開始蜂鳴器報警,電機(jī)轉(zhuǎn)動蜂鳴器報警,電機(jī)停止初始化水位檢測低nyny圖3-12 程序流程圖程序流程圖如上圖所示,上電之后先初始化,然

35、后對水位進(jìn)行檢測接著就是判斷水位是否是在設(shè)定的正常水位區(qū)間,若是在此區(qū)間則表示水位正常不需要做額外的工作返回到水位檢測;若開始水位檢測部在設(shè)定的區(qū)間則在判斷是不是處于設(shè)定的低水位,若是則讓蜂鳴器報警,電機(jī)轉(zhuǎn)動模擬加水,然后返回水位檢測;若不是低水位則表示處于高水位,此時讓蜂鳴器報警,電機(jī)停止轉(zhuǎn)動,最后也返回水位檢測。5 電路焊接調(diào)試及體會5.1 硬件的焊接和調(diào)試實物圖見附錄一,此次畢業(yè)設(shè)計實物的焊接也是很重要的一大部分,做出實物即就是把論文中的理論實踐到實物中來,實物的成功能夠讓我們更加直觀的了解設(shè)計的功能原理帶來的結(jié)果,對于實物的焊接,由于我們是手工制作,難免會比較粗糙,在線路的排布引腳的焊

36、接等方面都有可能會出現(xiàn)錯誤,而且在焊接實物的過程中也是我們進(jìn)一步的對原理圖的認(rèn)知,能更清楚的了解每一個模塊的電路是怎樣走線,怎樣與單片機(jī)連接在一起。所以我們在焊接實物的開始得先畫出草圖排布好線路的走位,我們是一個一個電路模塊的焊接,所以在焊接的同時我們應(yīng)該穿插每部分的檢測在里面,這樣做的目的第一是確保我們所焊接的電路模塊能夠正常導(dǎo)通,第二這樣做也能節(jié)約時間,若是全部焊接完了再去檢測,由于線路比較多,可能會導(dǎo)致我們在檢測的行進(jìn)中速度比較慢,所以第三點就是焊接一部分檢測一部分給我們帶來了很打的方便。電路的檢測是很重要的一部分,在上電后,若是不能正常工作按原理圖分模塊進(jìn)行電路檢測,是否有虛焊或漏焊現(xiàn)

37、象;如焊接正常,在按信號傳遞的方向逐級檢測,找出出問題的一級,并向該級的上級進(jìn)行檢測,直到將故障排除。電路的調(diào)試我們可以分步驟來就行:第一步:元器件在焊接之前用萬用表對其進(jìn)行檢測。第二步:焊接完一個小模塊電路之后,用萬用表檢測焊接之間的布線是否導(dǎo)通,因為可能在焊接的時候由于技術(shù)的不熟練會導(dǎo)致虛焊。第三步:軟件測試,可以編寫一個功能小程序來檢測電路模塊是否能正常工作,若是不能正常工作,在來判斷是硬件的焊接錯誤還是軟件程序的編寫錯誤。5.2 軟件調(diào)試在軟件編程過程中,先可以寫出單元模塊的程序然后在單元模塊上進(jìn)行測試,這樣的做法是讓我們思路更清晰不會混亂。軟件的調(diào)試過程中,聯(lián)機(jī)調(diào)試非常重要,在硬件電

38、路都正常的情況下,聯(lián)機(jī)調(diào)試就成了設(shè)計能否成功的關(guān)鍵。6 總結(jié) 此次設(shè)計是對大學(xué)四年所學(xué)的一個小總結(jié),涉及到多方面的專業(yè)知識,首先根據(jù)設(shè)計的要求需要選定了stc89c52單片機(jī)來作為此次設(shè)計的主體,而后在加上總結(jié)的構(gòu)思添加了lcd1602液晶顯示模塊,adc0804模數(shù)轉(zhuǎn)換模塊,蜂鳴器報警電路,電機(jī)驅(qū)動電路來實現(xiàn)基于單片機(jī)的自動加藥控制設(shè)計。在此次設(shè)計的制作過程中熟知了很多新的知識,對lcd1602液晶顯示的引腳功能和市場情況都有一定的了解,掌握了a/d轉(zhuǎn)換的原理。最后大概重述下我的設(shè)計內(nèi)容,基于單片機(jī)的自動加藥控制設(shè)計,要求是自動檢測水位并且設(shè)置自動加水的時間,我的構(gòu)思是通過水位傳感器根據(jù)水位

39、的高低不同引起傳感器阻值的變化繼而相應(yīng)于電壓的變化,然后再通過adc0804模數(shù)轉(zhuǎn)化器把模擬信號電壓轉(zhuǎn)換成單片機(jī)可讀的數(shù)字信號,最后在根據(jù)設(shè)計要求在水位低時,蜂鳴器報警并驅(qū)動電機(jī)轉(zhuǎn)動模擬自動加藥水,在水位過高時,蜂鳴器也報警,但要停止電機(jī)轉(zhuǎn)動。程序上對應(yīng)著電路模塊功能相應(yīng)編程也添加了設(shè)計要求的加水周期性時間的設(shè)置,最后完成了我的畢業(yè)設(shè)計,設(shè)計中我也了解到基于單片機(jī)的自動加藥設(shè)計在農(nóng)工業(yè)有著廣泛的應(yīng)用,它不需要人為,節(jié)約了時間,又節(jié)約了金錢。參考文獻(xiàn)1 張毅剛,彭喜元,彭宇.單片機(jī)原理及應(yīng)用m.北京:高等教育出版社,2010年.2 薛弘曄,劉原,馬永.計算機(jī)控制技術(shù)m.西安:電子科技大學(xué)出版社,

40、2008年.3 華成英,童詩白。模擬電子技術(shù)基礎(chǔ)m.北京:高等教育出版社,2006年.4 史久貴.基于altium designer的原理圖與pcb設(shè)計m.北京:機(jī)械工業(yè)出版社.5 譚浩強(qiáng).c程序設(shè)計m.北京:清華大學(xué)出版社.6 閻石.數(shù)字電子技術(shù)基礎(chǔ)m.高等教育出版社,2005年.7 聶青.模擬電路設(shè)計m.高等教育出版社,2007年.8 王港元.電工電子實踐指導(dǎo)m.江西科技出版社,2005年.9 楊寧.單片機(jī)與控制技術(shù)m.北京航空航天大學(xué)出版社,2004年.10 于海生.微型計算機(jī)控制技術(shù)m.清華大學(xué)出版社,1993年.11 程佩青.數(shù)字信號處理教程m.北京:清華大學(xué)出版社,2007年.12

41、 汪貴平.單電源多量程8通道,12位a/d轉(zhuǎn)換器max197的原理和應(yīng)用m.2005年.13 丁鎮(zhèn)生.傳感器與傳感技術(shù)應(yīng)用m.北京:電子工業(yè)出版社,1998年.14 來清民.傳感器與單片機(jī)接口及實例m.北京:北京航空航天出版社,2008年.15 陳霞,白小軍.基于單片機(jī)的液位監(jiān)控系統(tǒng)j.武漢理工大學(xué)學(xué)報.16 蔡黎.一種基于單片機(jī)的水位控制系統(tǒng)設(shè)計j.儀器儀表用戶,2007年.17 王曉明.電動機(jī)的單片機(jī)控制m.北京:航空航天大學(xué)出版社,2002年.18 desbourough l, miller r, increaser customer value of industrial contro

42、l performance monitoring-honeywell experiencej.aichesymposium series,2002年. 附錄一3-12 實物圖附錄二#include #include #define uint unsigned int#define uchar unsigned char#define lcd_data p0 /數(shù)據(jù)口#define delaynop(); _nop_();_nop_();_nop_();_nop_();sbit lcdrs=p25;sbit lcdrw=p26;sbit lcden=p27;sbit moter=p20;sbit

43、 beep=p10;sbit green=p11;sbit red=p12;sbit cs=p22;sbit rd=p24;sbit wr=p23;uchar code str1 = voltage of power;uchar code str2 = 00.00 v;double vol,rs,cp;uint t0,t1,dianya;uchar temp;void delay_ms(uint z) uint x,y; for(x=z;x0;x-) for(y=123;y0;y-);void check_busy() lcdrs=0; lcdrw=1; lcden=1; p0=0xff; w

44、hile(p0&0x80)=0x80);/忙則等待 lcden=0;void write_com(uchar cmd) /寫命令 check_busy(); lcdrs = 0; lcdrw = 0; lcd_data = cmd; lcden = 1; delaynop(); lcden = 0; void write_date(uchar dat) /寫數(shù)據(jù) check_busy(); lcdrs = 1; lcdrw = 0; lcd_data = dat; lcden = 1; delaynop(); lcden = 0; void write_str(uchar *p) while(*p) write_date(*p+);void diyihang(uint z) z-; write_com(0x80+z);void dierhang(uint z) z-; write_com(0x80+0x40+z);void lcd_init() /液晶初始化 delay_ms(40); write_com(0x38); /基本指令操作 delay_ms(5); write_com(0x38); /基本

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論