找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7101|回復(fù): 0
收起左側(cè)

單片機(jī)自動加料機(jī)控制系統(tǒng)設(shè)計(jì) 附源碼

[復(fù)制鏈接]
ID:420142 發(fā)表于 2018-11-7 22:36 | 顯示全部樓層 |閱讀模式
目錄
第一章  緒 論
1.1   題目來源及課題意義
1.2   自動加料機(jī)控制系統(tǒng)的工作原理及技術(shù)要求              1
1.3   系統(tǒng)的主要技術(shù)參數(shù):              1
第二章    方案論證
2.1   單片機(jī)的選擇
2.2   物位傳感器的選擇
2.3  存儲器擴(kuò)展電路的選擇              5
2.4  LED顯示電路選擇              7
2.5. 鍵盤輸入電路              8
第三章    自動加料機(jī)主電路
3.1  系統(tǒng)結(jié)構(gòu)原理圖
3.2  主機(jī)電路核心器件介紹              10
3.3  顯示電路
3.4   繼電器控制電路
3.5   鍵盤及顯示電路
3.6   外部存儲器擴(kuò)展電路
3.7   看門狗MAX813L電路
3.8   料位開關(guān)
第四章    系統(tǒng)的抗干擾及可靠性
第五章  軟件設(shè)計(jì)
第六章    結(jié)論語
參考文獻(xiàn):
附錄A:系統(tǒng)框圖
附錄B:系統(tǒng)硬件框圖
程序清單:

第一章  緒 論
1.1   題目來源及課題意義
在現(xiàn)代科學(xué)技術(shù)的許多領(lǐng)域中,自動控制技術(shù)起這愈來愈重要的作用,并且,隨著生產(chǎn)和科學(xué)技術(shù)的發(fā)展,自動化水平也越來越高。自動控制利用控制裝置使被控對象的某個(gè)參數(shù)自動的按照預(yù)定的規(guī)律運(yùn)行。本設(shè)計(jì)的自動加料機(jī)控制系統(tǒng)就是采用自動控制技術(shù)來實(shí)現(xiàn)功能的,這樣就大大提高了工作的效率,整個(gè)過程又快又穩(wěn)。
1.2   自動加料機(jī)控制系統(tǒng)的工作原理及技術(shù)要求
本設(shè)計(jì)的由單片機(jī)控制的自動加料系統(tǒng)是與料斗式干燥機(jī)配套的加料系統(tǒng)。根據(jù)加料工藝要求,其工作原理是:先將真空管關(guān)閉,啟動電機(jī),用低真空氣流將塑料樹脂粒子送入真空管,電機(jī)停轉(zhuǎn),再將粒子排入料斗,如此循環(huán)。
在設(shè)計(jì)的控制系統(tǒng)中,可用一個(gè)電機(jī)控制兩個(gè)加料生產(chǎn)線,由方向閥切換。兩個(gè)生產(chǎn)線既可單獨(dú)運(yùn)行,也可同時(shí)運(yùn)行。假如兩者同時(shí)運(yùn)行,當(dāng)一生產(chǎn)線輸送結(jié)束后,判斷到另一個(gè)生產(chǎn)線排料已經(jīng)結(jié)束,那么,電機(jī)不停轉(zhuǎn)而方向閥換向,從而為另一個(gè)生產(chǎn)線送料。這樣可以發(fā)揮控制系統(tǒng)和電機(jī)的效率,從而實(shí)現(xiàn)供料自動化。
控制系統(tǒng)的控制器有單片機(jī)89C51和擴(kuò)展電路組成,單片機(jī)控制繼電器,繼電器控制交流接觸器,又由接觸器控制電機(jī)等執(zhí)行機(jī)構(gòu)的運(yùn)動。本控制系統(tǒng)可以根據(jù)送料工藝的需要,設(shè)置兩條生產(chǎn)線的輸送、排料、滿料、空料等參數(shù)值,也可裝載系統(tǒng)前次工藝參數(shù)值。
1.3   系統(tǒng)的主要技術(shù)參數(shù):
  • 用一臺電機(jī)控制兩條生產(chǎn)線
  • 要能檢測到滿料狀態(tài),并顯示出輸送、排料、滿料時(shí)間
  • 時(shí)間誤差:0.1
  • 具有抗干擾能力

第二章    方案論證
2.1     單片機(jī)的選擇
20世紀(jì)80年代以來,單片機(jī)的發(fā)展非常迅速,就通用單片機(jī)而言,世界上一些著名的計(jì)算機(jī)廠家已投放市場的產(chǎn)品就有50多個(gè)系列,數(shù)百個(gè)品種。目前世界上較為著名的8位單片機(jī)的生產(chǎn)廠家和主要機(jī)型如下:
美國Intel公司:MCS—51系列及其增強(qiáng)型系列
美國Motorola公司:6801系列和6805系列
美國Atmel公司:89C51等單片機(jī)
美國Zilog公司:Z8系列及SUPER8
美國Fairchild公司:F8系列和3870系列
美國Rockwell公司:6500/1系列
美國TI(德克薩司儀器儀表)公司:TMS7000系列
NS(美國國家半導(dǎo)體)公司:NS8070系列   等等。
盡管單片機(jī)的品種很多,但是在我國使用最多的還是Intel公司的MCS—51系列單片機(jī)和美國Atmel公司的89C51單片機(jī)
MCS—51系列單片機(jī)包括三個(gè)基本型8031、8051、8751
8031內(nèi)部包括一個(gè)8位CPU、128個(gè)字節(jié)RAM,21個(gè)特殊功能寄存器(SFR)、4個(gè)8位并行I/O口、1個(gè)全雙工串行口、2個(gè)16位定時(shí)器/計(jì)數(shù)器,但片內(nèi)無程序存儲器,需外擴(kuò)EPROM芯片。比較麻煩,不予采用
8051是在8031的基礎(chǔ)上,片內(nèi)集成有4K ROM,作為程序存儲器,是一個(gè)程序不超過4K字節(jié)的小系統(tǒng)。ROM內(nèi)的程序是公司制作芯片時(shí),代為用戶燒制的,出廠的8051都是含有特殊用途的單片機(jī)。所以8051適合與應(yīng)用在程序已定,且批量大的單片機(jī)產(chǎn)品中。也不予采用。
8751是在8031基礎(chǔ)上,增加了4K字節(jié)的EPROM,它構(gòu)成了一個(gè)程序小于4KB的小系統(tǒng)。用戶可以將程序固化在EPROM中,可以反復(fù)修改程序。但其價(jià)格相對8031較貴。8031外擴(kuò)一片4KB EPROM的就相當(dāng)與8751,它的最大優(yōu)點(diǎn)是價(jià)格低。隨著大規(guī)模集成電路技術(shù)的不斷發(fā)展,能裝入片內(nèi)的外圍接口電路也可以是大規(guī)模的。也不予采用。
AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含4K bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和128bytes的隨機(jī)存取數(shù)據(jù)存儲器(ROM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元。功能強(qiáng)大AT89C51單片機(jī)可提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。此設(shè)計(jì)就采用AT89C51。

2.2     物位傳感器的選擇
物位是指貯存容器或工業(yè)生產(chǎn)設(shè)備里的液體、粉粒壯固體、氣體之間的分界面位置,也可以是互不相溶的兩種液體間由于密度不等而形成的界面位置。根據(jù)具體用途分為液位、料位、界位傳感器或變送器。物位不僅是物料耗量或產(chǎn)量計(jì)量的參數(shù),也是保證連續(xù)生產(chǎn)和設(shè)備安全的重要參數(shù)。特別是在現(xiàn)代工業(yè)中,生產(chǎn)規(guī)模大,速度高,且常有高溫、高壓、強(qiáng)腐蝕性或易燃易爆物料,對于物位的監(jiān)視和自動控制更是至關(guān)重要。
物位測量可用于計(jì)算物料儲量。對于粉粒體,必須考慮到顆粒間有空隙,應(yīng)區(qū)分密度和容重。密度是指不含空隙的物料每單位體積的質(zhì)量,即通常的質(zhì)量密度,如果乘以重力加速度g,就成為重力密度r,簡稱為重度。容重是包含空隙在內(nèi)的每單位體積的重量v,也就是視在重度或宏觀重度,它總要比顆粒物質(zhì)本身的重度小,其差額決定于空隙率。而空隙率又取決與許多因素。例如顆粒形狀、尺寸的一致程度、是否受外力壓實(shí)、是否經(jīng)受過振動、有無黏結(jié)性等,所以粉粒體物料的體積儲量和質(zhì)量儲量之間不易精確換算,這是需要注意的。






      • 電容式物位傳感器
利用物料介電常數(shù)恒定時(shí)極間電容正比與物位的原理,可構(gòu)成電容式物位傳感器。
根據(jù)電機(jī)的結(jié)構(gòu)可將容式物位傳感器分為三中:(1)適用與導(dǎo)電容器中的絕緣性物料,且容器為立式圓筒形,器壁為一極,沿軸線插入金屬棒為另一極,其間構(gòu)成的電容C與物位成比例。也可懸掛帶重錘的軟導(dǎo)線作為電機(jī)。(2)適用與非金屬容器,或雖為金屬容器但非立式圓筒形,物料為絕緣性的。這時(shí)在棒壯電極周圍用絕緣支架套裝金屬筒,筒上下開口,或整體上均勻分布多個(gè)孔,使內(nèi)外物位相同。中央圓棒和與之同軸的套筒構(gòu)成兩個(gè)電極,其間電容和容器形狀無關(guān),只取決于物位。所以這種電極只用于液位,粉粒體容易滯留在極間。(3)用于導(dǎo)電性物料,起外形和(1)一樣,但中央圓棒電極上包有絕緣材料,電容是由絕緣材料的介電常數(shù)和物位決定的,與物料的介電常數(shù)無關(guān),導(dǎo)電物料使筒壁與中央電極間的距離縮短為絕緣層的厚度,物位升降相當(dāng)于電極面積改變。
電容式物位傳感器無可動部件,與物料密度無關(guān),但應(yīng)注意物料中含水分時(shí)將對測量結(jié)果影響很大,并且要求物料的介電常數(shù)與空氣介電常數(shù)差別大,需用高頻電路。所以不予采用。






      • 阻力式料位傳感器
阻力式料位傳感器是指物料對機(jī)械運(yùn)動所呈現(xiàn)的阻擋力。粉末顆粒狀物料比液態(tài)物質(zhì)流動性差,對運(yùn)動物體有明顯的阻力,利用這一特點(diǎn)可構(gòu)成各種料位傳感器。
(1)重錘探索法:在容器頂部安裝由脈沖分配器控制的步進(jìn)電機(jī),此電機(jī)正轉(zhuǎn)時(shí)緩緩釋放懸有重錘的鋼索。重錘下降到與料面接觸后,鋼索受到的合力突然減小,促使力傳感器發(fā)出脈沖。此脈沖改變門電路的狀態(tài),使步進(jìn)電機(jī)改變轉(zhuǎn)向重錘提升,同時(shí)開始脈沖計(jì)數(shù)。待重錘升至頂部觸及行程開關(guān),步進(jìn)電機(jī)停止轉(zhuǎn)動,同時(shí)計(jì)數(shù)器也停止計(jì)數(shù)并顯示料位(料位值即容器全高減去重錘行程之差)。顯示值一直保持到下次探索后刷新為另一值。開始探索的觸發(fā)信號可由定時(shí)電路周期性地供給,也可以人為地啟動。不進(jìn)行探索時(shí),重錘保持在容器頂部,以免物料將重錘淹埋。萬一重錘被物位埋沒,排放物料時(shí)產(chǎn)生的強(qiáng)大拉力就可能拉斷鋼索報(bào)警措施及出料過濾柵。
但這種方法運(yùn)用了邏輯電路和數(shù)字技術(shù),可連續(xù)測量料位值并輸出數(shù)字量,是數(shù)字傳感器,但其采樣是周期性的,對時(shí)間而言不連續(xù),此設(shè)計(jì)不予采用。
(2)旋槳或推板法:這是一種位式傳感器,或稱料位開關(guān)。在容器壁的某一高度處裝小功率電動機(jī),其軸伸入容器內(nèi),末端帶有槳狀葉片。葉片不接觸物料時(shí),自由旋轉(zhuǎn)的空載狀態(tài)下電動機(jī)的電流很小,一旦料位上升到與葉片接觸,轉(zhuǎn)動阻力增加,甚至成堵轉(zhuǎn)狀態(tài),電流顯著加大。根據(jù)電流的大小使繼電器的接點(diǎn)動作,發(fā)出料位報(bào)警或位式控制信號。如電機(jī)軸經(jīng)過曲柄連桿機(jī)構(gòu)變?yōu)橥鶑?fù)運(yùn)動,則可帶動活塞或平板在容器中做推拉動作,即成推板法。旋槳法或推板法不一定都是靠電機(jī)電流的大小時(shí)繼電器接點(diǎn)動作,也可以利用離合器或連桿上的傳動機(jī)構(gòu),在葉片或推板負(fù)載增大時(shí)改變電接點(diǎn)的通斷狀態(tài)。所用電動機(jī)應(yīng)能在長時(shí)間堵轉(zhuǎn)狀態(tài)下,或離合器打滑狀態(tài)下,不致過熱而損壞。
這類原理構(gòu)成的料位開關(guān),只能安裝在容器壁上,安裝高度取決于動作所對應(yīng)的料位值。應(yīng)用不那么廣泛,所以次設(shè)計(jì)也不予采用。
(3)音叉法:根據(jù)物料對振動中的音叉有無阻力探知料位是否到達(dá)或超過某高度,并發(fā)出通斷信號,這種原理不需要大幅度的機(jī)械運(yùn)動,驅(qū)動功率小,機(jī)械結(jié)構(gòu)簡單、靈敏而可靠。
音叉由彈性良好的金屬制成,本身具有確定的固有頻率,如外加交變力的頻率與其固有頻率一致,則叉體處于共振狀態(tài)。由于周圍空氣對振動的阻尼微弱,金屬內(nèi)部的能量損耗又很少,所以只需微小的驅(qū)動功率就能維持較強(qiáng)的振動。當(dāng)粉粒體物料觸及叉體之后,能量消耗在物料顆粒間的摩擦上,迫使振幅急劇衰減,音叉停振。
為了給音叉提供交變的驅(qū)動力,利用放大電路對壓電元件施加交變電場,靠逆壓電效應(yīng)產(chǎn)生機(jī)械力作用在叉體上。用另外一組壓電元件的正壓電效應(yīng)檢測振動,它把振動力 為微弱的交變電信號。再由電子放大器和移相電路,把檢振元件的信號放大。經(jīng)過移相,施加到驅(qū)動元件上去,構(gòu)成閉環(huán)振蕩器。在這個(gè)閉環(huán)中,既有機(jī)械能也有電能,叉體是其中的一個(gè)環(huán)節(jié),倘若受到物料阻尼難以振動,正反饋的幅值和相位都將明顯的改變,破壞了振蕩條件,就會停振。只要在放大電路的輸出端接以適當(dāng)?shù)钠骷,不難得到開關(guān)信號。
為了保護(hù)壓電元件免受物料損壞和粉塵污染,將驅(qū)動和檢振元件裝在叉體內(nèi)部,經(jīng)過金屬膜片傳遞振動。如果在容器的上下方都裝叉體,可以實(shí)現(xiàn)自動進(jìn)料或自動出料的邏輯控制,或者把料位越限信號遠(yuǎn)傳到控制室。在控制室里的控制電路判斷料位是否越限,并按要求使被控的進(jìn)出料設(shè)備啟停。
并且叉體的制造和裝配良好時(shí),音叉也可用于液體測量和控制。在測量時(shí)不需要大幅度的機(jī)械運(yùn)動,驅(qū)動功率小,機(jī)械結(jié)構(gòu)簡單、靈敏而可靠。此設(shè)計(jì)選擇音叉法阻力式料位傳感器。

2.3  存儲器擴(kuò)展電路的選擇
2.3.1  24C01擴(kuò)展
串行總線上的各單片機(jī)或集成電路模塊,通過一條數(shù)據(jù)線(SDA)和一條時(shí)鐘線(SCL),按照通信規(guī)約進(jìn)行尋址和信息傳輸。每個(gè)集成電路模塊都有唯—偽地址,既可以是主控機(jī)(能控制總線,并能完成一次傳輸過程的初始化和產(chǎn)生時(shí)鐘信號及傳輸終止信號的器件)或被控機(jī)(被主控器尋址的器件),可以是發(fā)送器(在總線1:發(fā)送信息的器件)或接收器(從總線上接收治息的器件)  I2C總線上的器件,根據(jù)它的不同工作狀態(tài),可分為主控發(fā)送器、主控接收器、被控發(fā)送器、被控接收器。當(dāng)多個(gè)主控器同時(shí)企圖控制總線而不丟失信,這叫多主競爭。這時(shí)就要進(jìn)行仲裁,仲裁就是針對這種情況進(jìn)行裁決的過程。只允許其卞一個(gè)主控器繼續(xù)占用總線,其它退出豐攙器狀態(tài)。仲裁過程中還要保證總線的信息不丟失。多主競爭時(shí)必須對所有參與競爭的主控器的時(shí)鐘信號進(jìn)行同步處理。信息傳輸時(shí),SCL為高電平期間,SDA上的信息必須保持穩(wěn)定不變,只有SCL為低電平期間,SDA上的信息才允許變化。同時(shí)SDA上信息每一位部和SCL的時(shí)鐘脈沖相對應(yīng)。SCL沒有時(shí)鐘信號,SDA信息將停止傳輸處于等待狀態(tài)。這因?yàn)榫“與”邏輯,使SCL在低電平時(shí)鉗住總線。實(shí)現(xiàn)線“與”邏輯功能各I2C總線接口的輸出端必須是漏極開路或集電極開路結(jié)構(gòu)。SCL保持高電平期間,SDA由高電平向低電平變化這種狀態(tài)定義為起始信號。SCL保持高電平期間,SDA由低電平向高電平變化,這種狀態(tài)定義為終止信號。SDA傳輸?shù)拿總(gè)字節(jié)必須8位(最高有效位首先傳送),每個(gè)傳送字節(jié)必須跟隨一位應(yīng)答位。與應(yīng)答信號相應(yīng)的時(shí)鐘信號由主控器產(chǎn)生,發(fā)送器在這個(gè)時(shí)鐘信號釋放SDA,使它處于高電平狀態(tài),以便接收由接收器在這位發(fā)出的應(yīng)答信號。這時(shí)接收器還必須SCL在這位高電平期間,在SDA上輸出一個(gè)恒定低電平信氣以完成應(yīng)答信號的輸出。整個(gè)傳輸過程中,傳輸?shù)淖止?jié)數(shù)目是沒有限制的。數(shù)據(jù)傳輸一段時(shí)間后,接收器無法繼續(xù)接收更多的數(shù)據(jù),主控器同樣可以終止數(shù)據(jù)的傳送。
24C01是一種128字節(jié)串行CMOS  EEPROM,它具有如下特點(diǎn):1.存儲容量為128字節(jié)。2.串行接口可使用普通兩根I/O接口。3.具有頁寫模式:每頁4字節(jié)。4.同步周期小于10ms。它只使用一條數(shù)據(jù)線和一條時(shí)鐘線,采用ATMEL公司的24C01串口存儲器,應(yīng)用簡單方便,但是其編程較為復(fù)雜。
2.3.2    2864A芯片擴(kuò)展
2864A是一種并行EEPROM,它的特點(diǎn)同上,但每頁有16字節(jié),2864A與8051單片機(jī)的接口電路如下圖所示,2864A的片選端與高地址線P2.7連接,P2.7=0才能選中2864A,這種線選法決定了2864A對應(yīng)多組地址空間,即0000H~1FFFH,2000H~3FFFH,4000H~5FFFH,6000H~7FFFH,這8K字節(jié)存儲器可作為數(shù)據(jù)存儲器使用,但掉電后數(shù)據(jù)不丟失。
2864A的四種工作方式:
(1)維持方式:當(dāng)為高電平時(shí),2864A進(jìn)入低功耗維持狀態(tài)。此時(shí),輸出線呈高阻狀態(tài),芯片的電流從140mA下降至維持電流60mA。
(2)讀方式:當(dāng)均為低電平而為高電平時(shí),內(nèi)部的數(shù)據(jù)緩沖器被打開,數(shù)據(jù)送上總線,此時(shí),可進(jìn)行讀操作。
(3)寫方式:2864A提供了兩種數(shù)據(jù)寫入方式:頁寫入和字節(jié)寫入。
頁寫入:為了提高寫入速度,2864A片內(nèi)設(shè)置了16字節(jié)的“頁緩沖器”,并將整個(gè)存儲器陣列劃分成512頁,每頁16個(gè)字節(jié)。頁的區(qū)分可由地址的高9位(A4~A12)來確定,地址線的低四位(A0~A3)用以選擇頁緩沖器中的16個(gè)地址單元之一。對2864A的寫操作可分為兩步來實(shí)現(xiàn):第一步,在軟件控制下把數(shù)據(jù)寫入頁緩沖器,這部稱為頁裝載,與一般的靜態(tài)RAM寫操作是一樣的。第二步,在最后一個(gè)字節(jié)(即第16個(gè)字節(jié))寫入到頁緩沖器后20ns自動開始,把頁緩沖器的內(nèi)容寫到EEPROM陣列中對應(yīng)的地址單元中,這一步成為頁存儲。


寫方式時(shí),為低電平,在下降沿,地址碼A0~A12被片內(nèi)鎖存器鎖存,在上升沿時(shí)數(shù)據(jù)被鎖存片內(nèi)還有一個(gè)字節(jié)裝載限時(shí)定時(shí)器,只要時(shí)間未到,數(shù)據(jù)可以隨機(jī)地寫入頁緩沖器。在連續(xù)向頁緩沖器寫入數(shù)據(jù)的過程中,不用擔(dān)心限時(shí)定時(shí)器會溢出,因?yàn)槊慨?dāng)下降沿時(shí),限時(shí)定時(shí)器自動被復(fù)位并重新啟動計(jì)時(shí)。限時(shí)定時(shí)器要求寫入一個(gè)字節(jié)數(shù)據(jù)的操作時(shí)間須滿足;3μS<<20μS,這樣是正確完成對2864A頁面寫入操作的關(guān)鍵。當(dāng)一頁裝載完畢,不再有信號時(shí),限時(shí)定時(shí)器將溢出,于是頁存儲操作隨即自動開始。首先把選中頁的內(nèi)容擦除,然后寫入的數(shù)據(jù)由頁緩沖器傳遞到EEPROM陣列中。
字節(jié)寫入:字節(jié)寫入的過程與頁寫入的過程類似,不同之處在于僅寫入一個(gè)字節(jié),限時(shí)定時(shí)器就溢出。
(4)數(shù)據(jù)查詢方式:數(shù)據(jù)查詢是指用軟件來檢測寫操作中的頁存儲周期是否完成。
在頁存儲期間,如對2864A執(zhí)行讀操作,那么讀出的是最后寫入的字節(jié),若芯片的轉(zhuǎn)儲工作未完成,則讀出數(shù)據(jù)的最高位是原來寫入字節(jié)最高位的反碼。據(jù)此,CPU可判斷芯片的編程是否結(jié)束。如果讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相同,表示芯片已完成編程,CPU可繼續(xù)向2864A裝載下一頁數(shù)據(jù)。并且編程起來比較簡單,所以此設(shè)計(jì)采用此方案。

2.4  LED顯示電路選擇
LED顯示器是由N個(gè)LED顯示塊拼接成N位LED顯示器。N個(gè)LED顯示塊有N跟位選線,根據(jù)顯示方式的不同,位選線和段選線的連接方法也各不相同,段選線控制顯示字符的字型,而位選線為各個(gè)LED顯示塊的公共端,它控制該LED顯示位的亮、暗。LED顯示器有靜態(tài)顯示和動態(tài)顯示兩種顯示方式。






      • LED靜態(tài)顯示方式
LED顯示器工作于靜態(tài)顯示方式時(shí),各位的共陰極(或共陽極)連接在一起并接地(或+5V);每位的段選線(a~dp)分別與一個(gè)8位的鎖存器輸出相連。所以稱為靜態(tài)顯示。各個(gè)LED的顯示字符一經(jīng)確定,相應(yīng)鎖存器的輸出將維持不變,直到顯示另一個(gè)字符為止。也正因此如此,靜態(tài)顯示器的亮度都較高。這種顯示方式接口編程容易。付出的代價(jià)是占用口線較多,若用I/O接口,則要占用4個(gè)8位I/O口,若用鎖存器接口,則要用4片74LS373芯片。如果顯示器位數(shù)增多,則靜態(tài)顯示方式更是無法適應(yīng),因此在顯示位數(shù)較多的情況下,一般都采用動態(tài)顯示方式。






      • LED動態(tài)顯示方式
在多位LED顯示時(shí),為了簡化硬件電路,通常將所有位的段選線相應(yīng)的并聯(lián)在一起,有一個(gè)8位I/O口控制,形成段選線的多路復(fù)用。而各位的共陽極或共陰極分別由相應(yīng)的I/O線控制,實(shí)現(xiàn)各位的分時(shí)選通。其中段選線占用一個(gè)8位I/O口,而位選線占用一個(gè)4位I/O口。由于各位的段選線并聯(lián),段碼的輸出對各位來說都是相同的,因此,同一時(shí)刻,如果各位位選線都處于選通狀態(tài)的話,4位LED將顯示相同的字符。若要各位LED能夠顯示出與本位相應(yīng)的顯示字符,就必須采用掃描顯示方式,即在某一時(shí)刻,只讓某一位的位選線狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時(shí),段選線上輸出相應(yīng)位要顯示字節(jié)的段碼。在確定LED不同位顯示的時(shí)間間隔,不能太短,因?yàn)榘l(fā)光二極管從導(dǎo)通到發(fā)光有一定的延時(shí),導(dǎo)通時(shí)間太短,發(fā)光太弱人眼無法看清。但也不能太長,因?yàn)楫吘挂芟抻谂R界閃爍頻率,而且此時(shí)間越長,占用CPU時(shí)間也越多,另外,顯示位增多,也將占用大量的CPU時(shí)間,因此動態(tài)顯示實(shí)質(zhì)是一犧牲CPU時(shí)間來換取元件的減少。
所以,由于本系統(tǒng)只涉及到2位顯示輸出,就采用了和2片8位移位寄存器串級使用的LED靜態(tài)顯示方式。

2.5.   鍵盤輸入電路
2.5.1    矩陣式鍵盤接口
矩陣式鍵盤(也稱行列式鍵盤)適用于按鍵數(shù)目較多的場合,它由行線和列線組成,按鍵位于行列的交點(diǎn)上。一個(gè)3×3的行列結(jié)構(gòu)可以構(gòu)成一個(gè)有9個(gè)按鍵的鍵盤。同理,一個(gè)4×4的行列結(jié)構(gòu)可以構(gòu)成一個(gè)16鍵的鍵盤,很明顯,在按鍵數(shù)量較多的場合,矩陣式鍵盤與獨(dú)立式鍵盤相比,要節(jié)省很多的I/O口線。按鍵設(shè)置在行列線交點(diǎn)上,行列線分別接到按鍵開關(guān)兩端。行線通過上拉電阻接到+5V上。平時(shí)無按鍵按下時(shí),行線處于高電平狀態(tài),而當(dāng)有按鍵按下時(shí),行線電平狀態(tài)將由于此行線相連的列線電平?jīng)Q定。列線電平如果為低電平,則行線電平為低電平,列線電平如果為高電平,則行線電平為高電平。這是識別矩陣鍵盤按鍵是否按下的關(guān)鍵所在。由于矩陣鍵盤中行列線為多鍵公用,各按鍵均影響該鍵所在行列的電平。因此各按鍵彼此將相互發(fā)生影響,所以必須將行列信號配合起來比做適當(dāng)?shù)奶幚恚拍艽_定閉合鍵的位置。
2.5.2    獨(dú)立式按鍵接口
獨(dú)立式按鍵就是各按鍵相互獨(dú)立,每個(gè)按鍵各接入一根輸入線,一根輸入線上的按鍵工作狀態(tài)不會影響其他輸入線上的工作狀態(tài)。因此,通過檢測輸入線的電平狀態(tài)可以很容易判斷哪個(gè)按鍵按下了。獨(dú)立式按鍵電路配置靈活,軟件簡單。但每個(gè)按鍵需要占用一個(gè)輸入口線,在按鍵數(shù)量較多時(shí),需要較多的輸入口線且電路結(jié)構(gòu)復(fù)雜,故此種鍵盤適用于按鍵較少或操作速度較高的場合。
由于此系統(tǒng)中共有啟動兩條生產(chǎn)線的“啟動1”鍵和“啟動2”鍵、分秒選擇鍵、時(shí)間設(shè)置加、時(shí)間設(shè)置減、顯示生產(chǎn)線狀態(tài)的切換鍵,時(shí)間設(shè)置鍵、時(shí)間切換鍵。只有這8個(gè)鍵,比較簡單。所以就采用獨(dú)立式按鍵接口電路。

第三章  自動加料機(jī)主電路
   主電路采用AT89C51,由于AT89C51內(nèi)含4KB容量,因此在設(shè)計(jì)中不需要外擴(kuò)ROM。硬件電路主要有LED顯示電路、鍵盤接受電路、繼電器控制電路、EEPROM外部存儲器擴(kuò)展電路,以及看門狗MAX813L等組成。
3.1 系統(tǒng)結(jié)構(gòu)原理圖
主電路采用AT89C51,由于AT89C51內(nèi)含4KB容量,因此在設(shè)計(jì)中不需要外擴(kuò)ROM。硬件電路主要有LED顯示電路、鍵盤接受電路、繼電器控制電路、EEPROM外部存儲器擴(kuò)展電路,以及看門狗MAX813L等組成。電路原理框圖
如圖所示:

3.2  主機(jī)電路核心器件介紹
AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含4K bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和128bytes的隨機(jī)存取數(shù)據(jù)存儲器(ROM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元。功能強(qiáng)大AT89C51單片機(jī)可提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。






      • AT89C51主要性能參數(shù)
.與MCS-51產(chǎn)品指令系統(tǒng)完全兼容
.4K字節(jié)可重擦寫Flash閃速存儲器
.1000次擦寫周期
.全靜態(tài)操作:0Hz---24MHz
.三級加密程序存儲器
.128×8字節(jié)內(nèi)部RAM
.32個(gè)可編程I/O 口線
.2個(gè)16位定時(shí)/計(jì)數(shù)器
.6個(gè)中斷源
.可編程串行UART通道
.低功率空閑和掉電模式
3.2.2  AT89C51 功能特性概述
AT89C51提供以下標(biāo)準(zhǔn)功能:4K字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM,32個(gè)I/0 口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量兩級中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51可將至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式?臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其他所有部件工作直到下一個(gè)硬件復(fù)位。






      •   AT89C51 引腳功能說明

.Vcc:電源電壓
.GND:地
.P0口:P0口是一組8位漏極開路型雙向I/O,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動8個(gè)TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用
在訪問外部數(shù)據(jù)存儲器或程序存儲器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。
在Flash編程時(shí),P0接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。
.P1口:P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個(gè)TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉倒高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號拉低時(shí)會輸出一個(gè)電流(IIL)。
Flash編程和程序校驗(yàn)期間,P1接收低8位地址。
.P2口:P2口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個(gè)TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號拉低時(shí)會輸出一個(gè)電流(IIL)。
在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVE @DPTR指令)時(shí)。P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @RI指令)時(shí),P2口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)總R2寄存器的內(nèi)容),在整個(gè)訪問期間不改變。
Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和其他控制信號。
.P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口,P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4個(gè)TTL邏輯門電路。對P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端時(shí),被外部拉低的P3口將用上拉電阻輸出電流(IIL)。
P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下表所示:
端 口 引 腳
      第  二  功  能
P3.0
RXD  (串行輸入口)
P3.1
TXD  (串行輸出口)
P3.2
(外中斷0)
P3,3
(外中斷1)
P3.4
T0    (定時(shí)/計(jì)數(shù)器0)
P3.5
T1    (定時(shí)/計(jì)數(shù)器1)
P3.6
   (外部數(shù)據(jù)存儲器寫選通)
P3.7
    (外部數(shù)據(jù)存儲器讀選通)

P3口還接收一些用于Flash閃速存儲器編程和程序校驗(yàn)的控制信號。
.RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將單片機(jī)復(fù)位。
.ALE/當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器。ALE仍一時(shí)鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時(shí)鐘或用于定時(shí)目的。但要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時(shí)將跳過一個(gè)ALE脈沖。
對Flash存儲器編程期間,該引腳還用于輸入編程脈沖()。
如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令A(yù)LE才會被激活,此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無效。
.程序存儲允許()輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C51由外部程序存儲器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,這兩次有效的信號不出現(xiàn)。
.EA/VPP:外部訪問允許,欲使              CPU僅訪問外部程序存儲器(地址為0000H--FFFFH),EA端必須保持低電平(接地)。需要注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會鎖存EA端狀態(tài)。
如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部會鎖存EA端狀態(tài)。
Flash存儲器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。
.XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。
.XTAL2:振蕩器3放大器的輸出端。






      • 時(shí)鐘振蕩器
AT89C51中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器,振蕩電路如圖:

外接石英晶體(或陶瓷振蕩器)及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容C1、C2雖然沒有十分嚴(yán)格的要求,但電容容量的大小會輕微影響振蕩頻率的高低,振蕩器工作的穩(wěn)定性,起振的難易程序及溫度穩(wěn)定性,如果使用石英晶體,則推薦電容使用30pF10pF,而如使用陶瓷振蕩器建議選擇40pF10F。
用戶也可以采用外部時(shí)鐘,采用時(shí)鐘的電路如圖。在這種情況下,外部時(shí)鐘脈沖接到XTAL1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2則懸空。
由于外部時(shí)鐘信號是通過一個(gè)2分鐘觸發(fā)器后作為內(nèi)部時(shí)鐘信號的,所以對外部時(shí)鐘信號的占空比沒有特殊要求,但最小高電平持續(xù)時(shí)間和最大的低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。






      •   空閑節(jié)電模式
    AT89C51有兩種可用軟件編程的省電模式,它們是空閑模式和掉點(diǎn)工作模式。這兩種方式是控制專用寄存器PCON(即電源控制寄存器)中的PD(PCON.1)和IDL(PCON.0)位來實(shí)現(xiàn)的。PD是掉電模式,當(dāng)PD=1時(shí),激活掉電工作模式,單片機(jī)模式,即PD和IOL同時(shí)為1,則先激活掉電模式。
在空閑工作模式狀態(tài),CPU保持睡眠狀態(tài)而所有片內(nèi)的外設(shè)保持激活狀態(tài),這種方式由軟件產(chǎn)生。此時(shí),片內(nèi)RAM和所有特殊功能寄存器的內(nèi)容保持不變?臻e模式可由任何允許的中斷請求或硬件復(fù)位終止。
終止空閑工作模式的方法有兩種,其一是任何一條被允許中斷的事件被激活,IDL(PCON.0)被硬件清除,即刻終止空閑工作模式。程序會首先響應(yīng)中斷,進(jìn)入中斷服務(wù)程序,執(zhí)行完中斷服務(wù)程序并緊隨RETI(中斷返回)指令后,下一條要執(zhí)行的指令就是使單片機(jī)進(jìn)入空閑模式那條指令后面的一條指令。
其二是通過硬件復(fù)位也可將空閑工作模式終止。需要注意的是,當(dāng)有硬件復(fù)位來終止空閑工作模式時(shí),CPU通常是從激活空閑模式那條指令的下一條指令開始繼續(xù)執(zhí)行程序的,要完成內(nèi)部復(fù)位操作,硬件復(fù)位脈沖要保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘周期)有效,在這種情況下,內(nèi)部禁止CPU訪問片內(nèi)RAM,而允許訪問其它端口。為了避免可能對端口產(chǎn)生意外寫入,激活空閑模式的那條指令后一條指令不應(yīng)是一條對端口或外部存儲器的寫入指令。






      • 掉電模式
在掉點(diǎn)模式下,振蕩器停止工作,進(jìn)入掉電模式的指令是最后一條被執(zhí)行的指令,片內(nèi)RAM和特殊功能寄存器的內(nèi)容在終止掉電模式前被凍結(jié)。退出掉電模式的唯一方法是硬件復(fù)位,復(fù)位后將重新定義全部特殊功能寄存器但不改變RAM中的內(nèi)容,在VCC恢復(fù)到正常電平前,復(fù)位應(yīng)無效,且必須保持一定時(shí)間以使振蕩器重啟動并穩(wěn)定工作。
模式
程序存儲器
ALE
/PSEN
P0
P1
P2
P3
空閑模式
   內(nèi)部
  1
1
數(shù)據(jù)
數(shù)據(jù)
數(shù)據(jù)
數(shù)據(jù)
空閑模式
   外部
  1
1
浮空
數(shù)據(jù)
地址
數(shù)據(jù)
掉電模式
   內(nèi)部
0
0
數(shù)據(jù)
數(shù)據(jù)
數(shù)據(jù)
數(shù)據(jù)
掉電模式
   外部
  0
0
浮空
數(shù)據(jù)
數(shù)據(jù)
數(shù)據(jù)
  空閑和掉電模式外部引腳狀態(tài)

3.2.7    程序存儲器的加密
AT89C51可使用對芯片上的3個(gè)加密位LB1、LB2、LB3進(jìn)行編程(P)或不編程(U)來得到下表所示的功能:
加密位保護(hù)功能表
                        程序加密位
保護(hù)類型

LB1
LB2
LB3
1
U
U
U
沒有程序保護(hù)功能

2

P

U

U
禁止從外部程序存儲器中執(zhí)行MOVC指令讀取內(nèi)部程序存儲器的內(nèi)容
3
P
P
U
除上表功能外,還禁止程序校驗(yàn)
4
P
P
P
除以上功能外,同時(shí)禁止外部執(zhí)行
當(dāng)加密位LB1被編程時(shí),在復(fù)位期間,EA端的邏輯電平被采樣并鎖存,如果單片機(jī)上電后一直沒有復(fù)位,則鎖存起的初始值是一個(gè)隨機(jī)數(shù),且這個(gè)隨機(jī)數(shù)會一直保存到真正復(fù)位為止,為使單片機(jī)能正常工作,被鎖存的EA電平必須與該引腳當(dāng)前的邏輯電平一致。此外,加密位只能通過整片擦除的方法清除。
Flash閃速存儲器的編程
AT89C51單片機(jī)內(nèi)部有4K字節(jié)的Flash              PEROM,這個(gè)Flash存儲陣列出廠時(shí)已處于擦除狀態(tài)(即所有存儲單元的內(nèi)容均為FFH),用戶隨時(shí)可對其進(jìn)行編程。編程接口可接收高電壓(+12V)或低電壓(Vcc)的允許編程信號。低電壓編程模式適合于用戶在線編程系統(tǒng),而高電壓編程模式可與通用EPROM編程器兼容。
AT89C51單片機(jī)中,有些屬于低電壓編程方式,而有些則是高電壓編程方式。用戶可從芯片上的型號和讀取芯片內(nèi)的簽名字節(jié)獲得該信息。如圖

Vpp=12V
Vpp=5V

芯片頂面標(biāo)識
AT89C51
xxxx
yyww
AT89C51
xxxx—5
yyww

簽名字節(jié)
(030H)=1EH
(031H)=51H
(032H)=FFH
(030H)=1EH
(031H)=51H
(032H)=05H
AT89C51的程序存儲器列陣采用字節(jié)寫入方式編程的,每次寫入一個(gè)字節(jié),要對整個(gè)芯片內(nèi)的PEROM程序存儲器寫入一個(gè)非空字節(jié),必須使用擦除的方式將整個(gè)存儲器的內(nèi)容清楚。






      • 編程方法
編程前,先設(shè)置好地址,數(shù)據(jù)及控制信號,編程單元的地址加在P1口和P2口的P2.0—P2.3(11位地址范圍為0000H—0FFFH),數(shù)據(jù)從P0口輸入,引腳P2.6、P2.7和P3.6、P3.7的電平,PSEN為低電平,RST保持高電平,EA/Vpp引腳是編程電源的輸入端,按要求加上編程電壓,ALE/PROG引腳輸入編程脈沖(負(fù)脈沖)。編程時(shí),可采用4—20MHz的時(shí)鐘振蕩器,AT89C51編程方法如下:
  • 在地址線上加上要編程單元的地址信號。
  • 在數(shù)據(jù)線上加上要寫入的數(shù)據(jù)字節(jié)。
  • 激活相應(yīng)的控制信號。
  • 在高電壓編程方式時(shí),將/EA/Vpp端加上+12V編程電壓。
  • 每對Flash存儲陣列寫入一個(gè)字節(jié)或每寫入一個(gè)程序加密位,加上一個(gè)ALE/PROG編程脈沖。
改變編程單元的地址和寫入的數(shù)據(jù),重復(fù)1—5步驟,直到全部文件編程結(jié)束。
每個(gè)字節(jié)寫入周期是自身定時(shí)的,通常約為1.5ms







      •   數(shù)據(jù)查詢
AT89C51單片機(jī)用數(shù)據(jù)查詢方式來檢測一個(gè)寫周期是否結(jié)束,在一個(gè)寫周期中,如需讀取最后寫入的那個(gè)字節(jié),則讀出的數(shù)據(jù)的最高位(P0.7)是原來寫入字節(jié)最高的反碼,寫周期完成后,有效的數(shù)據(jù)就會出現(xiàn)在所有輸出端上,此時(shí),可進(jìn)入下一個(gè)字節(jié)的寫周期,寫周期開始后,可在任意時(shí)刻進(jìn)行數(shù)據(jù)查詢。
Ready/Busy:字節(jié)編程的進(jìn)度可通過RDY/BSY輸出信號監(jiān)測,編程期間,ALE變成高電平“H”后P3.4端電平被拉低,表示正在編程狀態(tài)。編程完成后。P3.4變?yōu)楦唠娖奖硎緶?zhǔn)備就緒狀態(tài)。
3.2.11     程序校驗(yàn)及芯片擦除
如果加密位LB1、LB2沒有進(jìn)行編程,則代碼數(shù)據(jù)可通過地址和數(shù)據(jù)線讀回原編寫的數(shù)據(jù)。采用下圖電路。程序存儲器的地址由P1和P2口的P2.0-P2.3輸入,數(shù)據(jù)有P0口讀出,P2.6、P2.7和P3.6、P3.7的控制信號保持低電平,ALE、和RST保持高電平。校驗(yàn)時(shí)P0口須接上10K左右的上拉電阻。
加密位不可直接校驗(yàn),加密位的校驗(yàn)可通過對存儲器的校驗(yàn)和寫入狀態(tài)來驗(yàn)證。
利用控制信號的正確組合并保持ALE/引腳10ms的低電平脈沖寬度即可將PEROM陣列(4k字節(jié))和三個(gè)加密位整片擦除,代碼陣列在片擦除操作中將任何非空單元寫入“1”,這步驟需再編程之前進(jìn)行。
3.2.12    讀片內(nèi)簽名字節(jié)及編程接口
AT89C51單片機(jī)內(nèi)有3個(gè)簽名字節(jié),地址為030H、031H和032H。用于聲明該器件的廠商、型號和編程電壓。讀簽名字節(jié)的過程和單元030H、031H和032H的正常校驗(yàn)相仿,只需將P3.6、P3.7保持低電平,返回值意義如下:
  (030H)=1EH 聲明產(chǎn)品由ATMEL公式制造。
  (031H)=51H 聲明為AT89C51單片機(jī)。
(032H)=FFH 聲明為12V編程電壓。
(032H)=05H 聲明為5V編程電壓。
編程接口:采用控制信號的正確組合可對Flash閃速存儲陣裂中的每一代碼字節(jié)進(jìn)行寫入和存儲器的整片擦除,寫操作周期是自身定時(shí)的,初始化后它將自動定時(shí)到操作完成。
3.2.13   AT89C51的極限參數(shù):
極限參數(shù):工作溫度………………-55℃to+125℃
          儲藏溫度………………-65℃to+150℃
          任一引腳對地電壓………-1.0Vto+7.0V
          最高工作電壓………………………6.6V
        直流輸出電流……………………15.0mA

3.3  顯示電路
在單片機(jī)應(yīng)用系統(tǒng)中,如果需要顯示的內(nèi)容只有數(shù)碼和某些字母,使用LED數(shù)碼管是一種較好的選擇。LED數(shù)碼管顯示清晰、成本低廉、配置靈活,與單片機(jī)接口簡單易行。LED數(shù)碼管是由發(fā)光二極管作為顯示字段的數(shù)碼型顯示器件,其中七只發(fā)光二極管分別對應(yīng)a~g筆端構(gòu)成“日”字形,另一只發(fā)光二極管Dp作為小數(shù)點(diǎn)。因此這種LED顯示器稱為七段數(shù)碼管或八段數(shù)碼管。如圖所示:

LED數(shù)碼管按電路中的連接方式可分為共陰型和共陽型兩大類,共陽型是將各段發(fā)光二極管的正極連在一起,作為公共端COM,公共端COM接高電平,a~g、Dp各筆段通過限流電阻接控制端。某筆段控制端低電平時(shí),該筆段發(fā)光,高電平時(shí)不發(fā)光?刂颇硯锥喂P端發(fā)光,就能顯示出某個(gè)數(shù)碼或字符。共陰型是將各段發(fā)光二極管的負(fù)極連在一起,作為公共端COM接地,某筆段通過限流電阻接高電平時(shí)發(fā)光。
在自動加料機(jī)控制系統(tǒng)中運(yùn)行是要顯示輸送、排料、滿料、空料時(shí)間,有時(shí)間切換鍵和標(biāo)志哪條生產(chǎn)線的發(fā)光二極管表示,顯示的位數(shù)少,所以就采用靜態(tài)顯示的方式。LED顯示器工作于靜態(tài)顯示方式時(shí),各位的共陰極(或共陽極)連接在一起并接地(或+5V);每位的段選線(a~dp)分別與一個(gè)8位的鎖存器輸出相連。所以稱為靜態(tài)顯示。各個(gè)LED的顯示字符一經(jīng)確定,相應(yīng)鎖存器的輸出將維持不變,直到顯示另一個(gè)字符為止。也正因此如此,靜態(tài)顯示器的亮度都較高。這種顯示方式接口編程容易。若用I/O接口,則要占用4個(gè)8位I/O口,若用鎖存器接口,則要用4片74LS373芯片。如果顯示器位數(shù)增多,則靜態(tài)顯示方式便無法適應(yīng)。
在設(shè)計(jì)中,LED顯示電路采用74LS377驅(qū)動器和MC14511B譯碼器控制LED數(shù)碼管。

3.3.1  74LS377芯片介紹


.D0~D7:8個(gè)信號輸入端。
.Q0~Q7:8個(gè)信號輸出端。
.CLK:時(shí)鐘信號輸入端。
.鎖存允許信號。當(dāng)=0時(shí),CLK端的上跳變將把8位D輸入端的數(shù)據(jù)打入8位鎖存器。
74LS377真值表
CLK
D
Q
1
X
X
Q0
0
1
1
0
0
0
X
0
X
Q0







      •   MC14511B芯片介紹


.A~D:四個(gè)信號輸入端。
.a~g:七個(gè)信號輸出端。
.LT、BI:接地。
.LE:接電源。






      • LED接口電路
   LED顯示電路采用74LS377驅(qū)動器和MC14511B譯碼器控制LED數(shù)碼管。兩個(gè)LED顯示一條生產(chǎn)線一個(gè)工作過程的秒數(shù)。兩片MC14511B把P0口的高四位和低四位譯碼成十進(jìn)制控制LED顯示。電路圖如下:

3.4   繼電器控制電路
在電氣控制領(lǐng)域或產(chǎn)品中,凡是需要邏輯控制的場合,幾乎都需要使用繼電器,從家用電器到工農(nóng)業(yè)應(yīng)用,甚至國民經(jīng)濟(jì)各個(gè)部門,可謂無所不見。繼電器是一種利用各種物理量的變化,將電量或非電量信號轉(zhuǎn)化為電磁力(有觸頭式)或使輸出狀態(tài)發(fā)生階躍變化(無觸頭式),從而通過其觸頭或突變量促使在同一電路或另一電路中的其它器件或裝置動作的一種控制元件。根據(jù)轉(zhuǎn)化的物理量的不同,可以構(gòu)成各種各樣的不同功能的繼電器,以用于各種控制電路中進(jìn)行信號傳遞、放大、轉(zhuǎn)換、聯(lián)鎖等,從而控制主電路和輔助電路中的器件或設(shè)備按預(yù)定的動作程序進(jìn)行工作,實(shí)現(xiàn)自動控制和保護(hù)的目的。被轉(zhuǎn)化或施加于繼電器的電量或非電量稱為繼電器的激勵(lì)量,當(dāng)繼電器被激勵(lì),從一個(gè)起始位置達(dá)到預(yù)定的工作位置,并完成電路的切換動作,稱為繼電器的工作特性,包括吸合。不吸合,保持與釋放狀態(tài)。當(dāng)輸入量變化到高于它的吸合值或低于它的釋放值時(shí),繼電器動作,對于有觸頭式繼電器其觸頭閉合或斷開,對于無觸頭式繼電器起輸出發(fā)生階躍變化,以此提供一定的邏輯變量。
自動加料機(jī)是把塑料粒子送到一個(gè)真空管,在輸送時(shí)真空管關(guān)閉合,排料時(shí)真空管需要打開,將粒子送到排料漏斗。本設(shè)計(jì)共需2個(gè)繼電器控制交流接觸器,一個(gè)接帶動生產(chǎn)的電動機(jī)。另一個(gè)為控制工作方向的方向閥。經(jīng)考慮采用4123無極12V直流控制24V的交流繼電器,并利用光耦合器件P521和MCU隔開。89C51的P1初始值為0FFH,所以加一個(gè)74LS04反相器使得繼電器初始不產(chǎn)生閉合,使用MC1413為無源驅(qū)動器,IN4007組成繼電器的續(xù)流二極管。
電路圖如下:

3.5   鍵盤及顯示電路
鍵盤在單片機(jī)應(yīng)用系統(tǒng)中能實(shí)現(xiàn)向單片機(jī)輸入數(shù)據(jù)、傳送命令等功能,是人工干擾單片機(jī)的主要手段。本設(shè)計(jì)采用8255A為I/O擴(kuò)展。
3.5.1   鍵盤接口
非編碼鍵盤與單片機(jī)的接口單片機(jī)系統(tǒng)所用的鍵盤有編碼鍵盤和非編碼鍵盤兩種。
編碼鍵盤本身除了按鍵之外,還包括產(chǎn)生鍵碼的硬件電路,只要按下某一個(gè)鍵,就能產(chǎn)生這個(gè)鍵的代碼,一般稱為鍵碼,同時(shí),還能產(chǎn)生一個(gè)脈沖信號,以通知CPU接收(輸入)鍵碼。這種鍵盤的使用比較方便,亦不需要編寫很多程序,但使用的硬件較復(fù)雜,在微型計(jì)算機(jī)控制系統(tǒng)中使用還不多。
非編碼鍵盤是由一些按鍵排列成的一個(gè)行列矩陣。按鍵的作用,只是簡單地實(shí)現(xiàn)接點(diǎn)的接通和斷開,但必須有一套相應(yīng)的程序與之配合,才能產(chǎn)生出相應(yīng)的鍵碼。非編碼鍵盤幾乎不需要附加什么硬件電路,目前,在微型計(jì)算機(jī)控制系統(tǒng)中使用比較普遍。
使用非編碼鍵需要用軟件來解決按鍵的識別,防止抖動以及鍵碼的產(chǎn)生等工作。
設(shè)有一個(gè)6行×5列的非編碼鍵盤,其中有16個(gè)為數(shù)字鍵0~F,其余的為控制鍵,用以發(fā)布各種控制命令。鍵盤的行線接8155C口的六條線PC5~PC0,鍵盤的列線則接8155B口的5條線。在沒有任何鍵按下時(shí),所有鍵盤列線上的信號都是高電平。當(dāng)有按鍵按下時(shí),就會出現(xiàn)鍵的識別、防止抖動以及確定鍵碼等一系列問題。
按鍵識別有各種方法,此系統(tǒng)只 “行掃描”法:
(1)確定是否有按鍵按下。CPU通過并行口輸出000000到鍵盤的行線,然后檢測鍵盤的列線信號。若沒有鍵按下,則為11111。若有任一個(gè)按鍵按下,則有某一條列線為0,也就是當(dāng)PB4~PB0不為11111時(shí),就表示有鍵按下。
(2)通過“行掃描”確定已按鍵的行、列位置。所謂行掃描就是依次給每條行線輸入0信號,而其余各行都輸入1,并檢測每次掃描時(shí)所對應(yīng)的列信號。在圖2中就是在C口先輸出111110(PC5~PC0),然后是111101,直到最后是011111,并檢測每次所對應(yīng)的B口輸入。
只有在某行上有鍵按下時(shí),在這一行上輸入0(其他行為1),在列輸出上才能檢測到0信號。若是輸入為0的這一行上沒有按鍵按下,則收到的列信號仍然全是1。因此,只要記下列信號不全為1時(shí)的C口輸出及B口輸入,就能確定以按鍵的位置。設(shè)圖2中處于第3行第1列的鍵已按下,則必須是行輸出信號為110111,檢測到的列信號為11101。對應(yīng)于其他的行信號,列信號都是11111。這樣,通過行掃描,就可以確定按鍵的行、列坐標(biāo)。
(3)確定是否有多鍵同時(shí)按下。有時(shí)一次按下的鍵不止一個(gè),這在一般情況下是由于誤操作引起的,是不應(yīng)該出現(xiàn)的通常稱為竄鍵。出現(xiàn)這種情況時(shí),就可能有不止一次會得到列信號不為全1,這時(shí)就不容易判斷哪個(gè)鍵是真正需要按下的。為了處理這種情況可采取兩種辦法:一是行掃描一定是掃到最后一行才結(jié)束,而不是檢測到列信號不為全1時(shí)就結(jié)束,以便發(fā)現(xiàn)竄鍵;二是如果出現(xiàn)了竄鍵,最簡單的處理辦法就是這次行掃描不算,再來一遍,即以最后放開的那個(gè)鍵為準(zhǔn)。實(shí)際上,由于掃描的速度很快,真正找到兩個(gè)鍵同時(shí)按下的情況是很少的。
(4)消除鍵抖動。一般按鍵在按下的時(shí)候有抖動的問題,即鍵的簧片在按下時(shí)會有輕微的彈跳,需經(jīng)過一個(gè)短暫的時(shí)間才會可靠地接觸。若在簧片抖動時(shí)進(jìn)行掃描就可能得出不正確的結(jié)果。因此,在程序中要考慮防抖動的問題。最簡單的辦法是在檢測到有鍵按下時(shí),等待(延遲)一段時(shí)間再進(jìn)行“行掃描”,延遲時(shí)間為10~20ms。這可通過調(diào)用子程序來解決,當(dāng)系統(tǒng)中有顯示子程序時(shí),調(diào)用幾次顯示子程序也能同時(shí)達(dá)到消除抖動的目的。
3.5.2  8255A芯片介紹
自動加料系統(tǒng)有8個(gè)按鍵:啟動兩條生產(chǎn)線的“啟動1”鍵和“啟動2”鍵、分秒選擇鍵、時(shí)間設(shè)置加/減鍵、顯示生產(chǎn)線狀態(tài)切換鍵,時(shí)間設(shè)置鍵,時(shí)間切換鍵,由于單片機(jī)的并行口有限。本系統(tǒng)采用8255A擴(kuò)展并行口。
(1).8255A的內(nèi)部結(jié)構(gòu)
8255A的內(nèi)部結(jié)構(gòu)有以下幾部分組成:
a.并行I/O端口A、B、C 8255A的內(nèi)部有3個(gè)8位并行I/O口:A口、B口、C口。3個(gè)I/O口都可以通過編程選擇為輸入口或輸出口,但在結(jié)構(gòu)和功能上有所不同。
A口:含有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位輸入鎖存器。
B口:含有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位輸入鎖存器(不鎖存)。
C口:含有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位輸入鎖存器(不鎖存)。
當(dāng)數(shù)據(jù)傳送不需要聯(lián)絡(luò)信號時(shí),這3個(gè)端口都可以用作輸入口或輸出口。當(dāng)A口B口需要有聯(lián)絡(luò)信號時(shí),C口可以作為A口和B口的聯(lián)絡(luò)信號線。
b.工作方式控制電路:8255A的三個(gè)端口在使用使可分為A、B兩組。A組包括A口8位和C口高4位:B組包括B口8位和C口低4位。兩組的控制電路中分別有控制寄存器,根據(jù)寫入的控制字決定兩組的工作方式,也可對C口每一位置“1” 或清“0”。
c.數(shù)據(jù)總線緩沖器:數(shù)據(jù)總線緩沖器是三態(tài)雙向的8位緩沖器,是8255A與單片機(jī)數(shù)據(jù)總線的接口,8255A的D0~D7可以和AT89C51單片機(jī)的P0.0~P0.7直接相連。數(shù)據(jù)的輸入輸出、控制字和狀態(tài)信息的傳遞,均可通過數(shù)據(jù)總線緩沖器進(jìn)行。
d.讀/寫控制邏輯:8255A讀/寫控制邏輯的作用是從CPU的地址和控制總線上接受有關(guān)信號,轉(zhuǎn)變成各種控制命令送到數(shù)據(jù)緩沖器及A組和B組的控制電路,控制A、B、C3個(gè)端口的操作。
3.5.3   8255A引腳功能

8255A共有40個(gè)引腳,一般為雙列直插DIP封裝,40個(gè)引腳可分為與CPU連接的數(shù)據(jù)線、地址和控制信號以及與外圍設(shè)備連接的三個(gè)端口線。
.D0~D7:雙向三態(tài)數(shù)據(jù)總線。
.RESET:復(fù)位信號,輸入,高電平有效。復(fù)位后,控制寄存器清0,A口、B口、C口被置為輸入方式。
.:片選信號,輸入,低電平有效。
.:讀信號,輸入,低電平有效。有效時(shí),允許CPU通過8255A D0~D7讀取數(shù)據(jù)或狀態(tài)信息。
.:寫信號,輸入,低電平有效。有效時(shí),允許
.A1A0:端口控制信號,輸入。2位可構(gòu)成四種狀態(tài),分別尋址A口、B口、C口和控制寄存器
.PA0~PA7:A口數(shù)據(jù)線,雙向。
.PB0~PB7:B口數(shù)據(jù)線,雙向。
.PC0~PC7:C口數(shù)據(jù)/信號線,雙向。當(dāng)8255A工作于方式0時(shí),PC0~PC7分為兩組(每組4位)并行I/O數(shù)據(jù)線;當(dāng)8255A工作于方式1或方式2時(shí),PC0~PC7為A口、B口提供聯(lián)絡(luò)信號。
   A1A0與 、、信號一起,可確定8255A的操作狀態(tài),如圖所示:
8255A功能操作
A1
A0
操    作
0
0
1
0
1
0
0
0
0
1
1
1
0
0
0
A口→數(shù)據(jù)總線
B口→數(shù)據(jù)總線
C口→數(shù)據(jù)總線

輸入操作
0
0
1
1
0
1
0
1
1
1
1
1
0
0
0
0
0
0
0
0
數(shù)據(jù)總線→A口
數(shù)據(jù)總線→B口
數(shù)據(jù)總線→C口
數(shù)據(jù)總線→控制口

輸出操作
x
1
x
x
1
x
X
0
1
x
1
1
1
0
0
數(shù)據(jù)總線為高阻態(tài)
非法狀態(tài)
數(shù)據(jù)總線為高阻態(tài)

禁止操作
   8255A與AT89C51接口電路。
在連接鍵盤電路采用8255A為擴(kuò)展I/O口時(shí),要在中間加入一個(gè)74LS373,74LS373是一個(gè)三態(tài)門的8D鎖存器,它可以作為AT89C51外部的一個(gè)擴(kuò)展輸入口,借口電路的工作原理是當(dāng)外設(shè)把數(shù)據(jù)準(zhǔn)備好后,發(fā)出一個(gè)控制信號加到373的G端,即鎖存端,使輸入數(shù)據(jù)在373中鎖存,同時(shí)信號加到AT89C51單片機(jī)的中斷請求端,單片機(jī)響應(yīng)中斷,在中斷服務(wù)程序中執(zhí)行下面程序:
   MOV  DPTR,#0BFFFH
   MOVX  A,@DPTR
在執(zhí)行上面的第二條指令時(shí),P2.6=0,有效,通過或門后加到373的端,即373的三態(tài)門控制端,使三態(tài)門暢通,鎖存的數(shù)據(jù)讀入到累加器A中。
電路如圖所示:


3.6   外部存儲器擴(kuò)展電路
自動加料機(jī)存在兩條生產(chǎn)線的輸送、排料、滿料、空料,共8個(gè)設(shè)置的重要數(shù)據(jù)需要讀/寫,并且能夠提供掉點(diǎn)保護(hù),所以就需要外闊程序存儲器。程序存儲器一般采用自讀存儲器,因?yàn)檫@種存儲器在電源關(guān)斷后,仍能保存程序,在系統(tǒng)上電后,CPU可取出這些指令予以重新執(zhí)行。只讀存儲器簡稱ROM。ROM中的信息一旦寫入之后,就不能隨意更改,特別是不能在程序運(yùn)行的過程中寫入新的內(nèi)容,故稱之為只讀存儲器。
向ROM中寫入信息叫做ROM編程。根據(jù)編程的方式不同,ROM分為以下幾種:
(1)掩膜ROM是在制造過程中編程。因編程是以掩膜工藝實(shí)現(xiàn)的,因此稱為掩膜ROM。這種芯片存儲結(jié)構(gòu)簡單,集成度高,但由于掩膜工藝由于成本較高,因此只適合于大批量生產(chǎn)。
(2)可編程ROM(PROM)
PROM芯片出廠是并沒有任何程序信息,是由用戶用獨(dú)立的編程器寫入的,但PROM只能寫入一次,寫入內(nèi)容后,就不能在進(jìn)行修改。
(3)EPROM
EPROM是用電信號編程,用紫外線擦除的只讀存儲器芯片。在芯片外殼上的中間位置有一個(gè)圓形窗口,通過這個(gè)窗口照射紫外線射就可擦除原有的信息。
(4)E2PROM
這是一種用電信號編程,也用電信號擦除的ROM芯片,對E2PROM的讀寫操作與RAM存儲器幾乎沒有什么差別,只是寫入的速度慢一些,但斷電后能夠保存信息。
此設(shè)計(jì)采用外擴(kuò)E2PROM的擴(kuò)展方式。E2PROM是電擦除可編程自讀存儲器,其突出優(yōu)點(diǎn)是能夠在線擦除和改寫,無須像ERPOM那樣必須用紫外線照射才能擦徹,較新的E2PROM產(chǎn)品在寫入時(shí)能自動完成擦除,且不再需要專用的編程電源,可以直接使用單片機(jī)系統(tǒng)的+5V電源。
常用的E2PROM芯片有2816/1816A,2817/2817A,2864A。本設(shè)計(jì)采用的是用2864A的擴(kuò)展方式。
2864A有四種工作方式:
  • 維持方式
當(dāng)為高電平時(shí),2864A進(jìn)入低耗維持方式。此時(shí),輸出線呈高阻態(tài),芯片的電流從140mA降至維持電流60mA。
  • 讀方式
當(dāng)均為低電平而為高電平時(shí),內(nèi)部的數(shù)據(jù)緩沖器被打開,數(shù)據(jù)送上總線,此時(shí),可進(jìn)行讀操作。
  • 寫方式
   2864A提供了兩種數(shù)據(jù) 方式:字節(jié)寫入和頁寫入
頁寫入:2864A片內(nèi)設(shè)置了16字節(jié)的“頁緩沖器”,并將整個(gè)存儲器陣列劃分成512頁,每頁16個(gè)字節(jié)。頁的區(qū)分可由地址的高9位來確定,地址線的低4位用以選擇頁緩沖器中的16個(gè)地址單元之一。寫方式時(shí),為低電平,在下降沿,地址碼A0~A12被片內(nèi)鎖存器鎖存,在上升時(shí)數(shù)據(jù)被鎖存。片內(nèi)還有一個(gè)字節(jié)裝載限時(shí)定時(shí)器,只要時(shí)間未到,數(shù)據(jù)可以隨機(jī)地寫入頁緩沖器。在連續(xù)向頁緩沖器寫入數(shù)據(jù)的過程中,不用擔(dān)心限時(shí)定時(shí)器會益處,因?yàn)槊慨?dāng)下降沿時(shí),限時(shí)定時(shí)器自動被復(fù)位并重新啟動計(jì)時(shí)。
字節(jié)寫入:字節(jié)寫入的過程與頁寫入的過程類似,不同之處是僅寫入一個(gè)字節(jié),限時(shí)定時(shí)器就溢出。
  • 數(shù)據(jù)查詢方式
數(shù)據(jù)查詢是指用軟件來檢測寫操作中的頁存儲周期是否完成。
在頁存儲期間,如對2864A執(zhí)行讀操作,那么讀出的是最后寫入的字節(jié),若芯片的轉(zhuǎn)儲工作未完成,則讀出數(shù)據(jù)的最高位是原來寫入字節(jié)最高位的反碼。據(jù)此,CPU可判斷 的編程是否結(jié)束。如果讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相同,表示芯片已完成編程,CPU可繼續(xù)向2864A裝載下一頁數(shù)據(jù)。
    2864A與單片機(jī)接口時(shí),2864A的片選端與高地址線P2.7連接,P2.7=0才能選中2864A,這種線選法決定了2864A對應(yīng)多組地址空間,即:0000H~1FFFFH,2000H~3FFFH,4000H~5FFFH,6000H~7FFFH。這8K字節(jié)存儲器可作為數(shù)據(jù)存儲器使用,但掉電后數(shù)據(jù)不丟失。2864A與AT89C51接口電路如圖:單片機(jī)由于受引腳數(shù)的限制,數(shù)據(jù)線和地址線是復(fù)用的,由P0口兼用。為了將它們分離出來,以便同單片機(jī)片外的擴(kuò)展芯片正確的連接,需要在單片機(jī)外部增加地址鎖存器。我們這本設(shè)計(jì)中使用74LS373。74LS373是一種帶有三態(tài)門的8D鎖存器,其引腳如圖所示

圖 3.6.1 鎖存器74LS373的引腳
其引腳的功能如下:
D7~D0:8位數(shù)據(jù)輸入線
Q7~Q0:8位數(shù)據(jù)輸出線
G:數(shù)據(jù)輸入鎖存選通信號,高電平有效。當(dāng)該信號為高電平的時(shí)候,外部數(shù)據(jù)選通到內(nèi)部鎖存器,負(fù)跳變時(shí),數(shù)據(jù)鎖存到鎖存器中。
:數(shù)據(jù)輸出允許信號,低電平有效。當(dāng)該信號為低電平的時(shí)候,三態(tài)門打開,鎖存器中數(shù)據(jù)輸出到數(shù)據(jù)輸出線。當(dāng)該信號為高電平的時(shí)候,輸出線為高阻態(tài)。
74LS373的功能表見表

G
D
Q
0
1
1
1
0
1
0
0
0
0
×
不變
1
×
×
高阻態(tài)

連接電路圖:


3.7   看門狗MAX813L電路
幾乎所有的單片機(jī)都需要復(fù)位電路,對復(fù)位電路的基本要求是:在單片機(jī)上電時(shí)能可靠復(fù)位,在下電時(shí)能防止程序亂飛導(dǎo)致EPROM中的數(shù)據(jù)被修改;另外,單片機(jī)系統(tǒng)在工作時(shí),由于干擾等各種因素的影響,有可能出現(xiàn)死機(jī)現(xiàn)象導(dǎo)致單片機(jī)系統(tǒng)無法正常工作,為了克服這一現(xiàn)象,除了充分利用單片機(jī)本身的看門狗定時(shí)器(有些單片機(jī)無看門狗定時(shí)器)外,還需外加看門狗電路;除此以外,有些單片機(jī)系統(tǒng)還要求在掉電瞬間單片機(jī)能將重要數(shù)據(jù)保存下來,因掉電的發(fā)生往往是根隨機(jī)的,因而此類單片機(jī)系統(tǒng)需要電源監(jiān)控電路,在掉電剛發(fā)生時(shí)能告知單片機(jī)。MAXIM公司推出的MAX813L剛好能滿足這些要求,下面具體介紹該芯片的性能特點(diǎn)及使用方法。   

MAX813L有雙列直插和貼片兩種封裝形式,其雙列直插如圖所示,引腳功能如下:   
第①腳為手動復(fù)位輸入,低電平有效;第②、②腳分別為電源和地;第④腳為電源故障輸入;第⑤腳為電源故障輸出;第⑥腳為看門狗輸入,第⑦腳為復(fù)位輸出,第⑧腳為看門狗輸出。   
MAX813L的性能特點(diǎn):

MAX813L的內(nèi)部結(jié)構(gòu)框圖如圖所示,具有以下主要性能特點(diǎn):由圖可知該芯片具有以下主要性能特點(diǎn):
(1)復(fù)位輸出。系統(tǒng)上電、掉電以及供電電壓降低時(shí),第⑦腳產(chǎn)生復(fù)位輸出,復(fù)位脈沖寬度的典型值為200ms,高電平有效,復(fù)位門限的典型值為4.65V。
(2)看門狗電路輸出。如果在1.6s內(nèi)沒有觸發(fā)該電路(即第⑥腳無脈沖輸入),則第⑧腳輸出一個(gè)低電平信號。   
(3)手動復(fù)位輸入,低電平有效,即第①腳輸入一個(gè)低電平,則第⑦腳產(chǎn)生復(fù)位輸出。   
(4)1.25V門限值檢測器,第④腳為輸入,第⑤腳為輸出。當(dāng)?shù)冖苣_電壓低于1.25V時(shí),第⑤腳輸出一個(gè)低電平信號。   

MAX813L的典型應(yīng)用電路:

MAX813L的典型應(yīng)用電路如圖所示。圖中單片機(jī)以AT89C51為例,MAX813L的第①腳與第⑧腳相連。第⑦腳接單片機(jī)的復(fù)位腳(AT89C51的第⑨腳);第⑥腳與單片機(jī)的P1.4相連。在軟件設(shè)計(jì)中,P1.4不斷輸出脈沖信號,如果因某種原因單片機(jī)進(jìn)入死循環(huán),則P 1.4無脈沖輸出。于是1.6s后在MAX813L的第⑧腳輸出低電平,該低電平加到第①腳,使MAX813L產(chǎn)生復(fù)位輸出,使單片機(jī)有效復(fù)位,擺脫死循環(huán)的困境。另外,當(dāng)電源電壓低于門限值4.65V時(shí),MAX813L也產(chǎn)生復(fù)位輸出,使單片機(jī)處于復(fù)位狀態(tài),不執(zhí)行任何指令,直至電源電壓恢復(fù)正常,可有效防止因電源電壓較低時(shí)單片機(jī)產(chǎn)生錯(cuò)誤的動作。   

電源故障輸入PFI通過一個(gè)電阻分壓器監(jiān)測未穩(wěn)壓的直流電源。當(dāng)PFI低于1.25V時(shí),電源故障輸出腳第⑤腳PF0變低,可引起AT89C51中斷,進(jìn)行電源故障處理,或?qū)⒅匾獢?shù)據(jù)保存下來。把分壓器接到未穩(wěn)壓的直流電源是為了更早地對電源故障告警。


MAX813L是一體積小、功耗低、性價(jià)比高的帶看門狗和電源監(jiān)控功能的復(fù)位芯片;它使用簡單、方便,它所提供的復(fù)位信號為高電平,因而是應(yīng)用于復(fù)位信號為高電平場合的單片機(jī)系統(tǒng)的理想芯片。
3.8   料位開關(guān)
在料體進(jìn)入料斗式干燥機(jī)后,要能檢測到什么時(shí)候到達(dá)滿料狀態(tài),所以就選用簡單的阻力式傳感器,阻力式料位傳感器是指物料對機(jī)械運(yùn)動所呈現(xiàn)的阻擋力。粉末顆粒狀物料比液態(tài)物質(zhì)流動性差,對運(yùn)動物體有明顯的阻力,利用這一特點(diǎn)可構(gòu)成各種料位傳感器。
采用音叉法,音叉法:根據(jù)物料對振動中的音叉有無阻力探知料位是否到達(dá)或超過某高度,并發(fā)出通斷信號,這種原理不需要大幅度的機(jī)械運(yùn)動,驅(qū)動功率小,機(jī)械結(jié)構(gòu)簡單、靈敏而可靠。
音叉由彈性良好的金屬制成,本身具有確定的固有頻率,如外加交變力的頻率與其固有頻率一致,則叉體處于共振狀態(tài)。由于周圍空氣對振動的阻尼微弱,金屬內(nèi)部的能量損耗又很少,所以只需微小的驅(qū)動功率就能維持較強(qiáng)的振動。當(dāng)粉粒體物料觸及叉體之后,能量消耗在物料顆粒間的摩擦上,迫使振幅急劇衰減,音叉停振。
為了給音叉提供交變的驅(qū)動力,利用放大電路對壓電元件施加交變電場,靠逆壓電效應(yīng)產(chǎn)生機(jī)械力作用在叉體上。用另外一組壓電元件的正壓電效應(yīng)檢測振動,它把振動力 為微弱的交變電信號。再由電子放大器和移相電路,把檢振元件的信號放大。經(jīng)過移相,施加到驅(qū)動元件上去,構(gòu)成閉環(huán)振蕩器。在這個(gè)閉環(huán)中,既有機(jī)械能也有電能,叉體是其中的一個(gè)環(huán)節(jié),倘若受到物料阻尼難以振動,正反饋的幅值和相位都將明顯的改變,破壞了振蕩條件,就會停振。只要在放大電路的輸出端接以適當(dāng)?shù)钠骷,不難得到開關(guān)信號。
為了保護(hù)壓電元件免受物料損壞和粉塵污染,將驅(qū)動和檢振元件裝在叉體內(nèi)部,經(jīng)過金屬膜片傳遞振動。如果在容器的上下方都裝叉體,可以實(shí)現(xiàn)自動進(jìn)料或自動出料的邏輯控制,或者把料位越限信號遠(yuǎn)傳到控制室。在控制室里的控制電路判斷料位是否越限,并按要求使被控的進(jìn)出料設(shè)備啟停。
并且叉體的制造和裝配良好時(shí),音叉也可用于液體測量和控制。在測量時(shí)不需要大幅度的機(jī)械運(yùn)動,驅(qū)動功率小,機(jī)械結(jié)構(gòu)簡單、靈敏而可靠。
系統(tǒng)采用LD-YC/YG 型 音叉式物位限位開關(guān)


LD-YC/YG型音叉式物位限位開關(guān)作為一種新型的物位傳感器,具有安裝簡單,不用標(biāo)定,攪動、氣泡對測量無影響等優(yōu)點(diǎn)。在未來工業(yè)過程中將全面取代如浮球液位開關(guān)等落后的檢測方式廣泛應(yīng)用于各行各業(yè)。
原理
傳感器安裝于倉的頂部或倉的側(cè)壁上。音叉由壓電晶體驅(qū)動產(chǎn)生振動,當(dāng)叉體被液體浸沒或被物料埋沒時(shí)振動頻率發(fā)生變化。這個(gè)變化由電子電路檢出并輸出一個(gè)開關(guān)量用于報(bào)警或控制。
適用范圍
中等粘度、腐蝕性液體。流動性好的粉狀物料和顆粒狀物料。
禁用范圍
高溫、高粘度液體。高溫、易結(jié)垢固體、塊狀物料。
主要技術(shù)指標(biāo)
[YC 部分]
供電電壓:直流 24V 或 10-55V (防爆型用 DC 24V)
交流 25-250V 50Hz
工作溫度:叉體 -40-80℃ 儀表 -20-45℃
輸出方式:
直流24V 供電時(shí)為繼電器輸出(AC 220V 1A)
直流10-55V 供電時(shí)為集電極開路輸出(350mA
防爆型產(chǎn)品≤50mA)
交流25-250V 供電時(shí)為兩線制輸出(220V
4.4W-77W)
功 耗:直流供電時(shí) 0.25W(DC 24V)
交流供電時(shí) 1.5W(AC 220V)
安裝方式:G1 管螺紋
防爆標(biāo)志:本安 iaⅡBT4 隔爆型 dⅡBT4
[YG 部分]
供電電壓:直流 24V 或 18-55V
交流50-250V 50Hz
工作溫度:叉體 -40-150℃ 儀表 -20-70℃
輸出方式:
直流24V 供電時(shí)為繼電器輸出(AC 220V 1A)
直流18-55V 供電時(shí)為集電極開路輸出
(350mA)
交流50-250V 供電時(shí)為兩線輸出(220V
350mA 防爆型產(chǎn)品≤50mA)
功 耗:直流供電時(shí) 0.25W(DC 24V)
交流供電時(shí) 1.5W(AC 220V)
安裝方式:G1.5 管螺紋

第四章  系統(tǒng)的抗干擾及可靠性
單片機(jī)系統(tǒng)供電線路是干擾的主要來源,電源采用隔離變壓器接入電網(wǎng),隔離變壓器在初級和次級之間加了一層屏蔽層。交流接觸器是繼電器控制的,在緊靠交流接觸器的輸入端口并上一個(gè)電阻和電容串聯(lián)的電路濾去高次諧波。每個(gè)集成電路芯片的電源和地之間要并上0.1F的陶瓷電容。在輸入輸出通道上要加光藕P521。除了在繼電器通道上外,兩個(gè)滿料信號也要經(jīng)過P521光藕才送至 INT0、INT1。另外,數(shù)字地和模擬地要分開,數(shù)字地線要粗而短。
軟件抗干擾方面,本系統(tǒng)采用指令冗余和軟件陷阱。當(dāng)CPU受到干擾后,會把一些操作數(shù)當(dāng)作指令碼來執(zhí)行,引起程序混亂。由于當(dāng)PC指針飛到單字節(jié)指令上時(shí),會自動步入正軌。因此我們在程序中人為地在 RET、RET1、LCALL、LJMP、AJMP、DJZE、JZ、CJNE等處插入一些單字節(jié)指令(NOP)。并在繼電器開閉指令 SET、CLR前插入兩條NOP指令。同時(shí),當(dāng)程序飛到ROM中未使用的非程序區(qū)時(shí),非程序區(qū)要能捕獲PC指針并強(qiáng)行拉到處理故障程序中。所以非程序區(qū)要每隔一段設(shè)置一個(gè)軟件陷阱。軟件陷阱
由三條指令構(gòu)成:
NOP
NOP
LJMP ERROR
ERROR 處理過程放在 0030H
開始處

第五章   軟件設(shè)計(jì)
   程序設(shè)計(jì)包括主程序、中斷程序、故障處理程序,系統(tǒng)中用到了兩個(gè)定時(shí)器中斷:定時(shí)器0每隔1.2s使P1.7產(chǎn)生脈沖信號;定時(shí)器1產(chǎn)生1s的定時(shí),使LED顯示遞減。故障處理程序使PC指針跳回到原來起動的相應(yīng)程序段;主程序完成內(nèi)部RAM數(shù)據(jù)區(qū)初始化、8255初始化,并根據(jù)按鍵信號跳轉(zhuǎn)到想應(yīng)程序段。


第六章  結(jié)論語
本設(shè)計(jì)是基于AT89C51的自動加料系統(tǒng)沒有外擴(kuò)ROM和RAM,程序直接放在AT89C51內(nèi)部閃存中。設(shè)定數(shù)據(jù)通過串行口存入2864A中,另外,系統(tǒng)從硬件和軟件方面采取了抗干擾措施。
但是在物體送到料斗式干燥機(jī)后沒有設(shè)計(jì)如何把物體從干燥機(jī)排除來,如果考慮到這一點(diǎn),那設(shè)計(jì)就更加完美了。
附錄A:系統(tǒng)框圖
     











附錄B:系統(tǒng)硬件框圖












單片機(jī)源程序如下:
  1. ORG
  2. LJMP IINT0
  3. ORG 0080H                 
  4. MAIN:MOV SP,#60H         
  5. MOV PSW,#00H
  6. MOV 71H,#14H
  7. MOV 72H,#           
  8. MOV 73H,#00H
  9. MOV 74H,#00H
  10. MOV 75H,#00H
  11. MOV 76H,#00H
  12. MOV TMOD,#01H     
  13. MOV TL0,#0B0H      
  14. MOV TH0,#3CH
  15. SETB TR0               ;,開中斷
  16. SETB EA
  17. SETB ET0
  18. JMCGS:JMB P1.2,KK           
  19. NOP
  20. NOP
  21. JB P1.2,KK
  22. NOP
  23. MOV 70H,#01H
  24. KK:LJMP JMCGS                ;等待中斷
  25.          ORG 0100H            ;中斷服務(wù)子程序
  26. IINT0:PUSH A                   ;入棧保護(hù)
  27. PUSH PSW
  28. CLR EA                   ;關(guān)中斷
  29. CLR TR0                 
  30. DJNZ 71H,ZDFH            ;不到2秒直接中斷返回
  31. MOV A,70H
  32. MOV B,72H               
  33. MVL AB
  34. MOV R6,B
  35. MOV R5,A
  36. MOV R2,#02H
  37. LCALL CHUFA            
  38. MOV 73H,R5               
  39. LCALL KZCX              
  40. MOV 74H,73H            
  41. ZDFH:SETB EA                   ;開中斷
  42. SETB ET0
  43. MOV TMOD,#01H           0重新賦初值
  44. MOV TL0,#0B0H
  45. MOV TH0,#3CH
  46. SETB TR0                 
  47. POP PSW                  ;出棧
  48. POP A
  49. RETI                       ;中斷返回
  50. CHUFA:MOV R7,#08H
  51. CHU1:CLR C
  52. MOV A,R5
  53. RLC A
  54. MOV R5,A
  55. MOV A,R6
  56. RLC A
  57. MOV 07H,C
  58. CLR C
  59. SUBB A,R2
  60. JB 07H,CHU2
  61. JNC CHU2
  62. ADD A,R2
  63. AJMP CHU3
  64. CHU2:INC R5
  65. CHU3:MOV R6,A
  66. JNE R7,CHU1
  67. RET
  68. KZCX:MAIN A,73H            ;控制子程序
  69. CJNE A,74H,KZ2      
  70. ZJFH:RET                     ;直接返回
  71. KZ2:JC PFKZ                 
  72. CFKZ:MOV B,#03H            
  73. DIV AB
  74. MOV 75H,A
  75. CJNE A,#04H,ZJFH
  76. JC ZJFH
  77. MOV A,75H
  78. CJNE A,#0AH,CFKZ1
  79. JNC CFKZ2
  80. CFKZ1:MOV TMOD,#10H         
  81. MOV TL0,#0B0H
  82. MOV TH0,#3CH
  83. SETB TR1
  84. SETB P1.0
  85. DELAY:JNB TF1,DELAY
  86. CLR TR1
  87. CLR TF1
  88. CLR P1.0
  89. LJMP ZJFH
  90. CFKZ2:MOV R4,#02H            
  91. CFKZ3:MOV TMOD,#10H
  92. MOV TH0,#3CH
  93. SETB TR1
  94. SETB P1.0
  95. DELAY:JNB TF1,DELAY1
  96. CLR TR1
  97. CLR TF1
  98. CLR P1.0
  99. DJNZ R4,CFKZ3
  100. LJMP ZJFH
  101. PFKZ:MOV B,#03H           
  102. DIV AB
  103. MOV 76H,A
  104. CJNE A,#08H,ZJFH
  105. JC ZJFH
  106. MOV A,76H
  107. CJNE A,#0AH,PFKZ1
  108. JNC PFKZ2
  109. PFKZ1:MOV TMOD,#10H        
  110. MOV TL0,#3CH
  111. SETB TR1
  112. SETB P1.1
  113. DELAY:JNB TF1,8
  114. CLR TR1
  115. CLR TF1
  116. CLR P1.1
  117. LJMP ZJFH
  118. PFKZ2:MOV R4,#02H            
  119. PFKZ3:MOV TMOD,#10H
  120. MOV TL0,#0B0H
  121. MOV TH0,#3CH
  122. SETB TR1
  123. SETB P1.1
  124. DELAY4:JNB TF1,DELAY4
  125.         CLR TR1
  126.         CLR TF1
  127.         CLR P1.1
  128.         DJNZ R4,PFKZ3
  129.         LJMP ZJFH



  130. 存儲器擴(kuò)展子程序
  131. STORE:  SETB VSDA;
  132. SETB VSCL;
  133. NOP;
  134. NOP;
  135. NOP;
  136. NOP;
  137. CLR  VSDA;
  138. NOP;
  139. CLR  VSDA;
  140. NOP;
  141. NOP;
  142. NOP;
  143. NOP;
  144. CLR VSCL;
  145. RET;
  146. STOP:CLR VSDA;
  147. SETB VSCL;
  148. NOP;
  149. NOP;
  150. NOP;
  151. NOP;
  152. SETB VSDA;
  153. NOP;
  154. NOP;
  155. NOP;
  156. NOP;
  157. CLR     VSDA;
  158. CLR     VSCL;
  159. RET;
  160. MACK: CLR VSDA;
  161. SETB    VSCL;
  162. NOP;
  163. NOP;
  164. NOP;
  165. NOP;
  166. CLR     VSCL;
  167. SETB    VSDA;
  168. RET;
  169. MNACK:SETB VSDA;
  170. SETB    VSCL;
  171. NOP;
  172. NOP;
  173. NOP;
  174. NOP;
  175. CLR VSCL;
  176. CLR VSDA;
  177. RET;
  178. CACK: SETB VSDA;
  179. SETB VSCL;
  180. CLR F0;
  181. MOV C,VSDA;
  182. JNC CEND;
  183. SETB F0;
  184. CEND:CLR VSCL;
  185. RET;
  186. WRBYT: MOV R0,#08H;
  187. WLP: RLC A;
  188. JC WR1;
  189. AJMP WR0;
  190. WLP1:DJNZ R0,WLP;
  191. RET;
  192. WR1:SETB VSDA;
  193. SETB VSCL;
  194. NOP;
  195. NOP;
  196. NOP;
  197. NOP;
  198. CLR VSCL;
  199. CLR VSDA;
  200. AJMP WLP1;
  201. WR0:CLR VSDA;
  202. SETB VSCL;
  203. NOP;
  204. NOP;
  205. NOP;
  206. NOP;
  207. CLR VSCL;
  208. AJMP WLP1;
  209. RDBYT:MOV R0,#08H;
  210. RLP: SETB VSDA;
  211. SETB VSCL;
  212. MOV C,VSDA;
  213. MOV A,R2;
  214. RLC A;
  215. MOV R2,A;
  216. CLR VSCL;
  217. DJNZ R0,RLP;
  218. RET;
  219. WRNBYT:MOV R3,NUMBYT;
  220. LCALL STA;
  221. MOV  A,SLA;
  222. LCALL  WRBYT;
  223. LCALL  CACK;
  224. JB  F0,WRNBYT;
  225. MOV  R1,#MTD;
  226. WRDA:MOV A,@R1;
  227. LCALL WRBYT;
  228. LCALL CACK;
  229. JB F0,WRNBYT;
  230. INC R1;
  231. DJNZ R3,WRDA;
  232. LCALL STOP;
  233. RET;
  234. RDNBYT:MOV R3,NUMBYT;
  235. LCALL STA;
  236. MOV A,SLA;
  237. LCALL WRBYT;
  238. LCALL CACK;
  239. JB F0,RDNBYT;
  240. RDN:MOV R1,#MRD;
  241. RDN1:LCALL RDBYT;
  242. MOV @R1,A;
  243. DJNZ R3,ACK;
  244. LCALL MNACK;
  245. LCALLSTOP;
  246. RET;
  247. ACK:LCALL MACK;
  248. INC R1;
  249. SJMP RDN1;

  250. 中斷服務(wù)子程序:
  251. X0S:    MOV DPTR,#2000H
  252.             MOVX @DPTR,A
  253.              SETB TR0
  254.              MOV 3AH,#20H
  255.              MOV 3BH,#00H
  256.              MOV R7,#00H
  257.            MOV R6,#04H
  258.              CLR 70H
  259. X0S0:   CLR01H
  260. X0S1:   JNB 01H,X0S1
  261.              CJNE R6,#00H,X0S0
  262.              CJNE R7,#00H,X0S0
  263.             CLR TR0
  264.              CLR EX0
  265.              SETB 00H
  266.              RETI


  267. 鍵盤程序:
  268. KEYI:ACALL   KS1                                          ;調(diào)用判有無鍵閉合子程序
  269. JNZ      LK1                                                        ;有鍵閉合,跳LK!
  270. NI:    ACALL  DIR                                          ;無鍵閉合,調(diào)用顯示子程序,延時(shí)
  271. AJMP   KEYI
  272. LK1:                 ACALL  DIR                            ;可能有鍵閉合,延時(shí)12MS軟件區(qū)
  273. ACALL  DIR
  274. ACALL  KS1                                                                      ;調(diào)用判有無子程序
  275. JNZ     LK2                                                                      ;經(jīng)去消抖,判斷確實(shí)有鍵按下跳
  276. ACALL  DIR                                                                      ;調(diào)用顯示子程序延時(shí)6MS
  277. AJMP    KEYI                                                                      ;抖動引起跳KEYI去處理
  278.           LK2:  MOV   R2,#0FEH                                                        ;列選碼—〉R2
  279.                 MOV    R4,#00H                                                        ;R4 為列號計(jì)數(shù)器
  280.           LK4:  MOV    DPTR,#7F01H                                          ;列選碼—〉8155H
  281. MOV    A,R2
  282. MOVX  @DPTR,A
  283. INC     DPTR                                                                      ;數(shù)據(jù)指針增2,指向PC口
  284. INC     DPTR
  285. MOVX   A,@DPTR                                          ;讀8155H的PC口
  286. JB      Acc.0,LONE                                          ;第0行線為高,無鍵閉合,跳LONE
  287. ;轉(zhuǎn)判第1行
  288. MOV    A,#00H                                                        ;第0行有鍵閉合,首鍵號—〉A(chǔ)
  289. AJMP   LKP                                                                      ;跳LKP,計(jì)算鍵號
  290. LONE: JB      Acc.1,LTOW                                          ;1行線為高,無鍵閉合,跳LTW0
  291. ;轉(zhuǎn)判斷第2行
  292.                 MOV  A,#08H                                                                      ;1行有鍵閉合,首鍵號8—〉A(chǔ)
  293.                 AJMP  LKP                                                                      ;跳LKP ,計(jì)算鍵號
  294. LTW0:  JB   Acc.2,LTHR                                                        ;2行線為高,無鍵閉合跳LTHR
  295. ;轉(zhuǎn)判;第3行
  296.                 MOV A,#10H                                                                      ;2行有鍵閉合,首鍵號10H—〉A(chǔ)
  297. AJMP LKP                                                                                    ;跳LKP,計(jì)算鍵號
  298. LTHR:  JB Acc.3,NEXT                                                                      ;3行線為高,無鍵閉合跳NEXT,
  299. ;準(zhǔn)備下一列的掃描
  300.                 MOV  A,#18H                                                                      ;3行有鍵按下,首鍵號18H—>A
  301. LKP:     ADD A,R4                                          ;計(jì)算鍵號
  302. PUSH A                                                                                                  ;鍵號進(jìn)棧保護(hù)
  303. LK3:  ACALL DIR                                                                      ;調(diào)用顯示子程序,延時(shí)6MS
  304. ACALL DIR                                                                      ;調(diào)用判有無鍵閉合子程序,延時(shí)6MS
  305. JNZ LK3                                                                                    ;判鍵釋放否,未釋放,則循環(huán)
  306. POP A                                                                                                  ;鍵已釋放,鍵號出棧->A
  307. RET
  308. NEXT: INC  R4                                                        ;列計(jì)數(shù)器加1,為下一列掃描做準(zhǔn)備
  309.               MOV A,R2                                                                                    ;判是否已掃到最后一列(最右一列)
  310.               NB  Acc.7,KND                                                        ;鍵掃描已到最后一列,跳KND重新
  311. ;進(jìn)行整個(gè)
  312. ;鍵盤的掃描
  313. RL     A                                                                                    ;鍵掃描未掃到最后一列,位選碼左
  314. ;移一位
  315. MOV  R2,A                                                                      ;位選碼->R2
  316. AJMP LK4
  317. KND: AJMP KEYI
  318. KS1:  MOV  DPTR ,#7F01H              ;判有無鍵閉合子程序,全0->掃描(PA口)
  319. MOV   A,#00H                                                        ;列線全為低電平
  320. MOVX  @DPTR,A              ;
  321. INC  DPTR                                                                      ;DPTR增2,指向PC 口
  322. INC  DPTR
  323. MOVX A,@DPTR                                                        ;從PC口讀行線的狀態(tài)
  324. CPL A                                                                                                  行線的狀態(tài)取反,如無鍵按下,則A
  325. ;中內(nèi)容為0
  326. ANL A,#0FH                                                                      ;屏蔽無用的高4位
  327. RET

  328. PID: MOV   R5,3 1H            ;取W
  329.                           MOV   R4,32H
  330.                           MOV   R3,#00H                                 :取Yi
  331.                           MOV   R2,2AH
  332.                           ACALL  CPL1                                    ;取Yi的補(bǔ)碼
  333.                           ACALL  DSUM                                   ;計(jì)算ei=W-Yi
  334.                           MOV   39H,R7                                  ;存ei
  335.                           MOV   3AH,R6
  336.                           MOV   R5,35H                                               ;取I
  337. MOV   R4,36H
  338. MOV   R0,#4 AH                                ;R0放乘積高位字節(jié)地址指針
  339. ACALL  MULT1                                  ;計(jì)算Pi=I*ei
  340. MOV   R5,39H                                  :取ei
  341. MOV   R4,3AH
  342. MOV   R3,3BH                                               ;取ei-1
  343. MOV   R2,3CH
  344. ACALL  CPL1                                    ;求ei-1:的補(bǔ)碼
  345. ACALL  DSUB                                                 ;求pp=△ei=ei-ei-1:
  346. MOV   A,R7
  347. MOV R5,A                                       :存△ei
  348. MOV    A,R6
  349. MOV    R4,A
  350. MOV    R3,4BH                                 ;取Pi
  351. MOV    R2,4AH
  352. ACALL  DSUM                                   ;求Pi+Pp
  353. MOV    4BH,R7
  354. MOV    4AH,R6                                 ;存和(Pi+即)
  355. MOV    R5,39H
  356. MOV    R4,3AH                                 ;取ei
  357. MOV    R3,3DH
  358. MOV    R2,3EH                                 ;取ei-2
  359. ACALL  DSUM                                   :計(jì)算ei=ei-2
  360. MOV    A,R7
  361. MOV    R5,A
  362. MOV    A,R6
  363. MOV    R4,A
  364. MOV    R3,  3BH
  365. MOV    R2,3CH                                 ;取ei-1
  366. ACALL  CPL1                                    :求ei-1,補(bǔ)碼
  367. ACALL  DSUM                                   ;計(jì)算ei=ei-2-ei-1
  368. MOV    A,R7
  369. MOV    R5,A                                   ;存和
  370. MOV    A,R6
  371. MOV    R4,A
  372. MOV    R3,3BH
  373. MOV    R3,3CH                                              ;取ei-l
  374. ACALL  CPL1                                    :求ej-1補(bǔ)碼
  375. ACALL  DSUM                                   ;計(jì)算ei=ei- 2-2e i-1、
  376. MOV    R5,37H                                 ;取D
  377. MOV    R4,38H
  378. MOV    R0,#46H
  379. ACALL  MULT1                                                ;求出Pd=D*(ei=ei-2-2ei-1)
  380. MOV    R5,47H
  381. MOV    R4,46H                                 :存Pd
  382. MOV    R3,4BH
  383. MOV    R2,4AH                                 ;取(pi+PP)
  384.                            ACALL  DSUM                                   ;計(jì)算pi+pp+pd
  385.                          MOV    R5,33H                                 ;取Kp
  386.                      MOV   R4,34H
  387.                          MOV   R0,#46H
  388.                          ACALL  MULTl                                   ;計(jì)算Kp*(Pi+Pp+Pd)
  389.                          MOV   R3,47H
  390.                          MOV    R2,46H
  391.                          MOV    R5,2FH                                 ;取ui-1
  392.                          MOV    R4,30H
  393.                          ACALL  DSUM                                    ;求出ui=ui-l+KP*(Pi+Pp +pd)
  394.                          MOV    2FH,R7                                  ;存ui~ui_,
  395.                          MOV    30H,R6
  396.                          MOV    3DH,3BH                                ;ei-l-ei-2
  397.                          MOV    3EH,3CH
  398.                          MOV    3BH,39H                                :ei-ei-1
  399.                          MOV    3CH,3AH
  400.                             RET
  401. DSUM: MOV   A,R4
  402.                                      ADD   A,R2
  403.                                      MOV   R6,A
  404.                                      MOV   A,R5
  405.                                      ADDC   A,R3
  406.                                      MOV    R7,A
  407.                                      RET
  408. CPLI: MOV    A,R2
  409.                                      CPL     A
  410.                                      ADD    A,#0lH
  411.                                      MOV    R2,A
  412.                                      MOV    A,R3
  413.                                      CPL     A
  414.                                     ADDC   A,#00H
  415.                                      MOV    R3,A
  416.                                      RET
  417. MULTI: MOV     A,R7
  418.                                     RLC     A
  419.                                      MOV     SIGN1,C                                ;存被乘數(shù)符號位
  420.                                      JNC      POS1                                    ;被乘數(shù)為正轉(zhuǎn)
  421.                                      MOV     A,R6                                  ;求補(bǔ)
  422.                                     CPL      A
  423.                                      ADD     A,#0lH
  424.                                      MOV     R6,A
  425.                                      MOV     A,R7
  426.                                     CPL      A
  427.                                      ADDC    A,#00H
  428.                                      MOV     R7,A
  429. POSI: MOV    A,R5
  430.                                     RLC     A
  431.                                      MOV    SIGN2,C                                :存乘數(shù)符號位
  432.                                      JNC     POS2                                     ;乘數(shù)為正轉(zhuǎn)
  433.                                      MOV    A,R4
  434.                                      CPL     A
  435.                                      ADD    A,#0lH
  436.                                      MOV    R4,A
  437.                                      MOV    A,R5
  438.                                      CPL     A
  439.                                      ADDC   A,#00H
  440.                                      MOV    R5,A
  441. POSZ: ACALL  MUL1,
  442.                                      MOV    C,SIGN1
  443.                                      ANL     C,SIGN2
  444.                                      JC      TPL                                       ;C=1是兩個(gè)負(fù)數(shù)相乘轉(zhuǎn)
  445.                                      MOV    C,SIGN1
  446.                                      ORL     C,SIGN2
  447.                                      JNC     TPL                                       ;C=0是兩個(gè)正數(shù)相乘轉(zhuǎn)
  448.                                     DEC    R0
  449.                                      DEC   R0
  450.                                      DEC   R0
  451.                                      MOV   A,@R0
  452.                                      CPL     A
  453.                                      ADD    A,#0lH
  454.                                     MOV    @R0,A
  455.                                      INC    R0
  456.                                      MOV     A,@RO
  457.                                      CPL      A
  458.                                      ADDC    A,#00H
  459. TPL: RET
  460. MULT: MOV    A,R6                                     ;取b
  461.                                     MOV    B,R4                                    ;取d
  462.                                     MUL    AB                                       ;求bd
  463.                                      MOV    @Ro,A                                  ;求bdL
  464.                                      MOV    R3, B                                   ;求bdL~R3
  465.                                      MOV    A, R4                                  ;取d
  466.                                      MOV    B,R7                                    ;取a
  467.                                      MUL    AB                                       ;求ad
  468.                                      ADD    A,R3                                   ;求adL+bdH
  469.                                      MOV    R3,A                                    ;暫存adL+bdH
  470.                                      MOV    A,B
  471.                                      ADDC   A,#00H                                  ;adH+進(jìn)位
  472. MOV    R2, A                                   ;暫存
  473. MOV   A,R6                                     ;取b
  474. MOV    B,R5                                    ;取c
  475. MUL    AB                                       ;求bc
  476. ADD    A, R3                                   ;求adL+bcL+bdH
  477. INC    R0                                        ;修改指針
  478. MOV   @R0,A                                   ;乘積第三字節(jié)存入
  479. CLR    55BH                                     ;清標(biāo)志
  480. MOV   A,R2
  481. ADDC  A,B                                     ;求adH+bcH
  482. MOV   R2,A
  483. JNC    LAST                                     ;無進(jìn)位數(shù)
  484. SETB   5BH                                      ;置進(jìn)位標(biāo)志
  485. MOV   A,R7                                    ;取a
  486. MOV   B,R5                                    ;取c
  487. MUL  AB                                        ;求ac
  488. ADD   A,R2                                    ;求acL+adH+bcH
  489. INC R0
  490. MOV   @R0,A                                  ;存積的第二個(gè)字節(jié)
  491. MOV    A,B
  492. ADDC   A,#00H
  493. MOV   C,5BH
  494. ADDC  A,#00H
  495. INC    R0                                                     :修改指針
  496. MOV  @R0,A                                   ;存積的最高字節(jié)
  497. RET

  498. 顯示子程序:
  499. ORG 055CH
  500. MOV  R0,#79H
  501. MOV  @R0,#01H
  502. INC  R0
  503. MOV  @R0,#01H
  504. INC  R0
  505. MOV  R0,#05H
  506. INC  R0
  507. MOV  @R0,#16H
  508. INC  R0
  509. MOV  @R0,#1BH
  510. INC  R0
  511. MOV  @R0,#1EH
  512. MOV  DPTR,#4F00H
  513. ……………………
  514. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
自動加料機(jī)控制系統(tǒng).doc (807 KB, 下載次數(shù): 34)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表