購買設計請充值后下載,,資源目錄下的文件所見即所得,都可以點開預覽,,資料完整,充值下載可得到資源目錄里的所有文件。。?!咀ⅰ浚篸wg后綴為CAD圖紙,doc,docx為WORD文檔,原稿無水印,可編輯。。。具體請見文件預覽,有不明白之處,可咨詢QQ:12401814
數控機床的選擇
V.V.Epifanov and V.V.Efimov
該機床與數控(NC)的最佳滿足相應的技術工藝要求選擇是非常重要的大規(guī)模生產。他們的選擇必須考慮到這兩個機器最高和最低技術功能和組件數量指定工具最有效的??刹扇煞N辦法在這里:現有數控機床或新設計的選擇。
在俄羅斯,沒有俄羅斯的數控機床種類繁多,其技術能力的不同,選擇數控機床最有效的給定條件下從可用的選項,參數和對現有機床或技術規(guī)范的現代化發(fā)展新設計必須確定。因此,重要的是發(fā)展的最有效的機床上的信息之間的零件,其制造過程,以及機床的技術能力的參數關系的基礎上篩選程序。
初步資料庫的機床部件(藍光)必須用于識別和推廣,大部分大規(guī)模生產機械建筑設施組成部分的功能??等特點。在制訂這樣一個BD在UI'yanovsk地區(qū)。該ESKD的分類用來描述部分,對部分區(qū)域屋宇署包含120000零件類型的信息[1]。
我們現在考慮的革命加工固體方法的數據,其蘇的臉形狀,材料和尺寸的空白,精度等參數。
為此類零件的加工空白的基本方法是機械切削(94%),盡管浪費大量的材料。
結果發(fā)現,10%的固體革命齒輪鏈組件(GCC),而52%的齒輪類型,其長/直徑比L / D_<0.5。與內外圓柱面部位最常見(90%):這個典型的平穩(wěn)(58.4%)或步驟(37.1%)氣瓶。沒有與圓錐,曲線,或聯合外部和內部表面相當少的部分。
為圓柱形零件的毛坯棒線材(72%)和表(13%),與海灣地區(qū),相應的空格棒(72%),鍛件(11%)和沖壓件(8%)。對弱光合金結構鋼毛坯(48%),耐腐蝕鋼(14%),鋁及其合金(15%),和(15%),主要用于有色金屬。該數據庫包含的信息對法蘭,盤類零件,并蓋型(L / D _<0.5),袖子,貝殼和心軸(0.5
2)。 (L/D>20)不超過總額的3%以上非剛性部分.
各部分的尺寸分布的分析表明,78%有D <40毫米,而75%的L<50毫米; 90%的零部件有D <100毫米和L <160毫米。
下面的結果,得到了直徑的精度:
圖 1;在大規(guī)模生產的數控機床的選擇算法:1)統(tǒng)計分析和零件的加工特點概括為2)的平底鍋一組技術和結構的制定; 3)為盤技術工藝合理開發(fā)每個組; 4)數控機床,其功能和技術結構設計,工作區(qū)尺寸計算技術能力的建立; 5)選擇從現有的選項機床; 6)技術規(guī)范發(fā)展現代化的機器工具或新設計創(chuàng)作,7)對現有機床的現代化; 8)新機床配置的發(fā)展; 9)設計和制造的機床。
質量 5;6 7 8;9 10;11 12;13 14;15
零件,比例% 8 7 18 12 26 29
與海灣合作委員會的部分內容更準確:
質量 6 7 8;9
零件,比例% 20 45 17
泛表面粗糙度值是最常見的如下:
直徑,um 1.6-2.5 3.2-5.0 6.3-10
零件,比例% 19 27 32
在這些成果的基礎上,對革命固體最典型的特征可以鑒定,并建議可能作出關于數控機床,其性能(技術能力,尺寸,可靠性,成本等)的選擇是大規(guī)模合適生產。
考慮選擇的圓柱和圓錐磨的Khar'kov和Vil'nyus機床廠生產的機器的基本參數的例子一數控機床(圖1)算法[3]。該數據庫包括約10,000種受磨零件;約30%是革命的固體。
該部分是按他們的工藝設計參數的基礎上,這改變了數塑造的機床坐標至少有一個。因此,所有的器官被分為12組;六
表1
集團的零部件
型的零件
部分特征
種類數目
II,10
對機床的需求,tool-hr/part
1
法蘭,套筒,貝殼L/D<2
圓柱形外部的階梯和雙面表面中央圓柱內表面
3438
524
0.32
2
軸,軸,主軸L/D<2;
階梯圓柱外表面
2424
0.26
3
軸,軸,主軸 l/d<2
階梯圓柱外表面加強中央圓柱內表面
0.44
4
法蘭,套筒,貝殼,軸,軸,襯套
階梯圓柱,圓錐,曲線,或聯合外部和內部表面
1032
195.9
0.42
表2
基本功能
輔助功能
沿X軸運動塑造
磨削主軸箱和/或表的一部分軸垂直位
沿Z軸運動塑造
磨削主軸箱和/或表的一部分沿軸線位移
沿著U軸運動塑造
內部研磨頭和/或表的一部分軸垂直位移
沿W軸塑造議案
內部研磨頭和/或表的一部分沿軸線位移
安裝位移(坐標D)
旋轉頭
關于運動協(xié)調?
磨-啟閉旋轉主軸
就運動進行協(xié)調A
部分旋轉主軸
關于運動協(xié)調C語言
頭部旋轉主軸
表3
機床 機成型磨削的模塊數 坐標(單位)工作區(qū) 操作工具數 結構尺寸號
外部和內部的圓柱表面和法蘭,套筒,貝殼等磨完
5
50 x*100
125*160
320*160
9
平行系列
對于外部的圓柱表面和軸,軸,主軸,磨等完
2
50*100
50*500
125*500
6
系列
外部和內部的圓柱表面磨,襯套,等
3
50*100
50*500
125*500
8
系列
外部和內部的外圓磨床,圓錐形,或曲線表面和法蘭,套筒,軸,襯套等
8
320*500
14
平行系列
其中m是組中的部分類型的數量; IIi是第一期的年產量;Ti是制造部分i有困難;φ是年度經營的設備儲備; K為系數的相容性表征經營結構的研磨技術的過渡。
>
對零件和其幾何結構特征研磨技術調查表明,平行系列加工(金= 0.6-0.65),同時允許幾個表面研磨,是最適合的機器考慮工具的權宜之計。上式的基礎。 (1),一些群體可能被合并,形成四個部分組(表1),復雜(CP)的代表的部分可能得到發(fā)展。
然后,之間的CP的表面加工(以研磨技術的帳戶)的特點和坐標機床頭位移對應成立。在確定了最低允許數量塑造坐標(基本功能)要求各組機器的零件,兩者的基本功能和特征的機床頭位移關系建立的輔助功能。對第1組的零件加工機床的功能描述如表2總結。
塑造數坐標可能2-8(該工具和空白??無視旋轉)。在描述機床,相應的職能都涉及到相關模塊(單位),功能,技術結構的機床(FTS的)是發(fā)達國家。
生成機床配置上的費托合成的基礎上進行的結構,配方方法手段,[4]和機床采用模塊化設計原理[5],最可能的配置合理,可能被選中,組成在標準化模塊(幀,研磨主軸箱,主軸箱部分等)四,建立機床建設。計算工作區(qū)域的尺寸,同時考慮到對具體規(guī)模,年產坯帳戶,但表明,隨著不同的工作區(qū)尺寸相同的技術能力,必須建立機床(見表3)。
通過切換帶參數對應于生產鍋,圓柱體的廣義特征和錐研磨機,其生產效益可能會增加,減少需要的材料,并采用模塊化設計原則。消息靈通的機床,用戶的選擇將允許作為一個理性分配結果減少制造對減少能源消耗和成本的考慮機床的零件成本,以及更大的機械加工業(yè)務。
1. V. V. Epifanov, V. V. Efimov, R. I. Nenyaeva, and A. A. Fedotov, "Organizing interdepartmental production on the basis of a regional part databank," Standarty Kach., no. 4, pp. 25-29, 1989.
2. S. M. Shraibman, "Technological characteristics of machine parts," Stanki Instrum., no. 4, pp. 20-22, 1986.
3. V. V. Efimov and V. V. Epifanov, Technological Principles of the Design of Standard Flexible Grinding Modules [in Russian], U1GTU, Ul'yanov'sk, 1997.
4. Yu. D. Vragov, Analysis of the Configuration of Metal-Cutting Machines: Fundamental Principles [in Russian], Mashinostroenie, Moscow, 1978.
5. O. I. Aver'yanov, Modular Design Principle for Machine Tools with Numerical Control [in Russian], Mashinostroenie, Moscow, 1987.
目 錄
一.課題要求………………………………………………………………………2
二.課程設計目的……………………………………………………………2
三.課程設計內容……………………………………………………………2
四.參考文獻…………………………………………………………………18
17
一 課題要求:
1.采用單片機來實現均勻控制系統(tǒng)的功能。
2.能克服積分飽和(能克服工程設計和實施中的一些問題)。
3.易于現場整定和投運。
4.要有詳細說明(如程序的功能)。
二 課程設計目的:
本課程設計提供了一個既動手又動腦,自學,查資料,獨立實踐的機會。將本學期課本上的理論知識和實際有機的結合起來,鍛煉實際分析問題和解決問題的能力,提高自己適應實際、實踐編程的能力,使自己對均勻控制系統(tǒng)更進一步了解。給自己一個鍛煉和提高的機會。
三 課程設計內容:
均勻控制系統(tǒng)具有使控制量與被控量均勻緩慢地在一定范圍內變化的特殊功能。在均勻控制系統(tǒng)中,控制量與被控量常常是同樣重要,控制的目的,是 使兩者在擾動作用下,都有一個緩慢而均勻的變化。
在一些工業(yè)生產過程中,生產的連續(xù)性是其特點之一。每一個裝置或設備都與前后的裝置或設備緊密的聯系著,前一個裝置或設備的出料亮量一般就是后一個裝置或設備的進料量,而后一裝置或設備是互相聯系而又互相影響的。例如石油裂解氣分離過程,有許多精餾他串聯在一起工作,前一塔的出料就是后一塔的進料。圖a為兩個連續(xù)操作的精餾塔,前一塔的出料是后一塔的進料。為了保證分餾過程正常運行,要求將一號塔釜液位穩(wěn)定在一定的范圍內,故設有液位的控制系統(tǒng)。而后一精餾塔又希望進料穩(wěn)定 設有流量控制系統(tǒng)。顯然,這兩套系統(tǒng)是不能協(xié)調工作的。假如1號塔在擾動作用下使其塔釜液位上升時,液位調節(jié)器發(fā)出控制信號去開大調節(jié)閥1的開度,從而使出料流量增大;由于1號塔的出料量就是2號塔的進料量,因而引起2號塔進料量的增加,于是,流量調節(jié)器發(fā)出控制信號去關小調節(jié)閥2的開度。這樣,按液位信號,調節(jié)閥1的開度要開大,流量要增大;安流量信號,調節(jié)閥2的開度要關小,流量要減小。而調節(jié)閥1,2裝在同一條管道上,結果,兩套控制系統(tǒng)互相矛盾,在物料供求上互不兼顧,不能滿足工藝生產要求。
為了解決前后兩個塔之間在物料供求上的矛盾,可在前后兩個串聯的塔中間增設一個緩沖設備。但是,增加緩沖設備不僅要增加投資,而且要增加流體輸送過程中的能量消耗。尤其是有些生產過程的中間物料或產品不允許中間停留存在,否則,會使這些中間的物料或產品或重新聚合。所以,必須從自動控制方案設計上去找出路,以滿足前后裝置或設備在物料供求上互相均勻協(xié)調,統(tǒng)籌兼顧的要求。通常把能實現這樣控制目的的控制系統(tǒng)稱為均勻控制系統(tǒng)。
其特點如下:
1 液位(或壓力)和流量兩個變量都是變化的,不是固定不變的。
2 兩個變量的調節(jié)過程在工藝容許的范圍內是緩慢地變化的。
下面是一種用單片機來實現溫度均勻控制的系統(tǒng)
一種基于Smith預估器的溫度均勻控制的系統(tǒng)
環(huán)境溫度對儀器儀表性能指標有很大的影響。為了更準確地模擬儀表的實際工作環(huán)境,度量溫度對儀表參數的影響,有必要研制一個溫控系統(tǒng)。一般的溫控系統(tǒng)為一大滯后系統(tǒng),純滯后可引起系統(tǒng)不穩(wěn)定或降低系統(tǒng)的反饋性能??紤]到Smith預估器從理論上解決了純滯后系統(tǒng)的控制問題,本文介紹一個帶Smith預估器的溫控系統(tǒng),該系統(tǒng)能有效抑制純滯后的影響,而且魯棒性強。實驗結果表明,溫控精度可達±0.2℃。
1 帶Smith預估器的控制器設計
根據溫控箱的結構及一般熱力學原理,可得到以下溫控箱為被控對象的傳遞函數,其近似表達為
(1)
式中:Gp(S)為被控對象中不含純滯后的部分。可以看出,它是一個帶純滯后的一階慣性環(huán)節(jié)。根據所設計的溫控箱和實際參數辨識,可得式(1)中的T=16s,K0=1.5,τ=1.4s。
一般的溫控系統(tǒng)如圖1所示。圖中,Gc(S)表示設計的控制器,F為控制器直流分量等干擾。其閉環(huán)傳遞函數為
(2)
由于特征方程里含有e-τs項,這對控制系統(tǒng)穩(wěn)定性極其不利,若τ足夠大,系統(tǒng)就很難穩(wěn)定。而且由于系統(tǒng)中含有純滯后環(huán)節(jié),使控制器設計變得復雜。
圖1 一般溫控系統(tǒng)方框圖
Smith預估器[1]是克服純滯后影響的有效方法之一,因此本文在常規(guī)校正環(huán)節(jié)基礎上引入了Smith預估器補償,其控制結構如圖2所示,圖中虛線框內為Smith預估控制的原理框圖。Smith預估控制的實質就是與實際對象并聯一個模型Gp(S)(1-e-τs),因此,控制器Gc(S)的等效控制對象變?yōu)镚p(S),也就是說,設計控制器Gc(S)時不必考慮純滯后環(huán)節(jié)的影響。此時系統(tǒng)的閉環(huán)傳遞函數為
(3)
從式(3)可見,e-τs已不包含在系統(tǒng)的特征方程里,因此系統(tǒng)性能完全不受純滯后的影響。Smith預估控制從理論上提供了將含有純滯后的對象簡化為不含純滯后的對象進行控制的方法。
圖2 帶Smith預估器的溫控系統(tǒng)
2 溫控系統(tǒng)的硬件設計
溫控系統(tǒng)的構成如圖3所示,由溫度控制箱、溫度測量變換、測量放大、大功率運放、A/D與D/A轉換器、輸入光電隔離、輸入光電隔離、驅動電路、8098單片機[2]、鍵盤顯示、存儲器組成。其中8098單片機是核心,由它統(tǒng)一管理完成。在該系統(tǒng)中,溫度和時間的設置、溫度值及誤差顯示、控制參數的設置、運行、暫停及復位等功能由鍵盤及顯示電路完成,溫度設定范圍為0~100℃,給定分辨率設置為0.01℃,測溫范圍為20~80℃。
圖3 溫控系統(tǒng)硬件組成框圖
溫度控制箱的執(zhí)行部件為加熱片,它可以使溫控箱內溫度分布較為均勻;選擇適當功率的加熱片,可以提高系統(tǒng)的升溫速度,縮短到達熱平衡的時間。為了保證精度,溫度測量變換器采用鉑電阻及專門電路,該電路利用橋式電路結構及正反饋原理改善了溫度傳感器的檢測線性度,因此其測量精度、線性度和抗干擾性能都較好;同時采用數字反饋,還可以利用計算機補償技術,進一步提高溫度檢測的精度和線性度;為抵消鉑電阻引線帶來的干擾,采用了四線制接法。相應于溫度傳感器的精度,A/D與D/A轉換都選用12位轉換器,分辨率為2-12>0.1%,能滿足精密儀表精度要求。加入光電隔離器的目的是防止線路干擾的引入。
該溫控系統(tǒng)的工作原理為:溫度測量變換器所測量的溫度信號經放大電路放大、A/D轉換,送到單片機中,單片機把它同由鍵盤實現的給定溫度進行比較,再由單片機給出控制量,然后將控制量送驅動電路、D/A轉換后去驅動大功率運放對溫度控制箱進行控制,從而構成了實時閉環(huán)系統(tǒng)。
3 溫控系統(tǒng)軟件設計
溫控系統(tǒng)的軟件設計是在8098單片機上,由單片機來控制。主控程序包括初始化、鍵盤顯示管理及各子程序調用。溫度信號的采集、數字濾波、鉑電阻的非線性補償、溫度的顯示、遺傳算法優(yōu)化控制等功能的實現由各子程序完成。數字濾波可采用均值法、中間值法和一階慣性法等方法,目的是濾除干擾信號的影響。由于鉑電阻的電阻值與其所受的溫度并不完全是線性的,因而設計了分段線性插值線性化程序來對鉑電阻進行非線性補償,得到了較為滿意的效果,其誤差低于0.1%。軟件還包括對系統(tǒng)的保護和快速加溫的切換等。由于儀器儀表的工作環(huán)境存在強電磁場干擾,為了提高溫控系統(tǒng)的可靠性,在硬件上可采用光電隔離器;在軟件上除了設計數字濾波程序外,還可設計軟件監(jiān)視器等。
通過地址鎖存器74LS373擴展一片8K字節(jié)的2764作為程序存儲器:存放程序、控制表及加溫曲線;擴展一片8K字節(jié)的6264作為外部數據存儲器:存放上次輸入的曲線參數及有關的數據,同時設計可靠的保護電路,實現掉電保護功能。為使系統(tǒng)在運行中能準確記錄保護動作和控制投入的時間,配置了實時日歷時鐘芯片MSM5832,該芯片具有秒、分、時、日、星期、月和年等計時功能。8155作為打印機的接口,同時也用作聲光報警的接口。8279作為鍵盤、顯示器的接口。可采用按鍵、定時和故障備忘三種打印方式,可打印爐溫、曲線和故障等;當系統(tǒng)出現溫度越限、斷偶及其它故障時,可進行聲光報警及相應提示符顯示。12位雙積分A/D轉換器ICL7109和12位D/A轉換器DAC1208用于溫度的測量與控制。A/D轉換輸出的12位數據按兩個8位數分次讀取,以配合CPU的要求。12位D/A轉換器的工作采用雙緩沖方式,數據按兩個字節(jié)分別打入鎖存器 (先送高8位數據,再送低4位數據),然后將該12位數據一次送入DAC寄存器進行轉換。
控制器是控制系統(tǒng)的核心,控制器是一種利用專家知識和操作者經驗設計的專家控制系統(tǒng),設計時不用數學解析模型來描述受控系統(tǒng)的特性。在本溫度控制系統(tǒng)設計中,采用二維模糊控制器,即以偏差e和偏差變化率Δe作為控制器的輸入變量,把加熱操作量作為輸出變量。在控制過程中,同時把偏差和偏差的變化率作為輸入量,這種方法不僅能保證系統(tǒng)控制的穩(wěn)定性,而且還可減少超調量和振蕩現象。根據受控系統(tǒng)的實際情況,確定輸入變量的測量范圍和輸出變量的控制作用范圍,以確定每個變量的論域,Ke、Kec和Ku分別為輸入和輸出變量的量化因子和比例因子。先經限幅處理,再經量化處理就得到了E和EC。根據當前已求得的E和EC,直接查詢控制表就獲得控制量的變化值ΔU,將該變化值ΔU乘以比例因子Ku,即可得到當前的實際控制量增量Δu。再將該增量和前一采樣時刻的實際控制量相加,就得到目前應實施的控制動作,即 uk=uk-1+Ku·ΔU。
在單片機中對輸入的量進行推理,須將所有描述控制過程的控制規(guī)則存儲在單片機的EPROM中。把專家知識和現場經驗轉換為用語言表達的控制規(guī)則,即設計控制規(guī)則庫。本系統(tǒng)中,偏差E、偏差變化率EC和控制量的變化的子集定義為
E={NB,NM,NS,NO,P0,PS,PM,PB}
EC={NB,NM,NS,0,PS,PM,PB}
ΔU={NB,NM,NS,0,PS,PM,PB}
P、N分別表示正、負,B、M、S分別表示大、中、小。
建立控制規(guī)則表的基本思想,以偏差為負的情況說明。當偏差為負大時,若偏差變化為負,表明此時偏差有增大的趨勢,為盡快消除已有的負大偏差并抑制偏差進一步增大,所以控制量的變化取正大。當偏差為負而偏差變化為正時,系統(tǒng)本身已有減少偏差的趨勢,所以為盡快消除偏差且又不超調,應取較小的控制量。故當偏差為負大且偏差變化為正小時,控制量的變化取為正中。若偏差變化為正大或正中時,控制量不宜增加,否則將會造成較大的超調,出現正偏差,因此這時的控制量變化取為0級。當偏差為負中時,控制量的變化應該使偏差盡快消除,基于這種原則,控制量的變化選擇同偏差為負大時相同。當偏差為負小時,系統(tǒng)接近穩(wěn)態(tài)。若偏差變化為負時,選取控制量變化為正中,以抑制偏差往負方向變化;若偏差變化為正,系統(tǒng)本身有消除負小偏差的趨勢,選取控制量變化為正小即可??梢娺x取控制量變化的原則是:當偏差大或較大時,選擇控制量的大小以盡快消除偏差為主;而當偏差較小時,選擇控制量要注意防止超調,以使系統(tǒng)穩(wěn)定為主要出發(fā)點。
為節(jié)省內存,提高單片機應用系統(tǒng)的工作速度,實現有效的實時控制,根據隸屬函數和控制規(guī)則表離線計算對應的控制表(即查詢表),并將該表內置在應用軟件的EPROM表中,供實時控制過程使用。在實際控制時,控制器首先把輸入量量化到輸入量的語言變量論域中,再根據量化的結果去查表求出控制量,這樣可大大提高控制的實時效果,節(jié)省內存空間。
圖4 溫控系統(tǒng)軟件流程圖
4 結果分析與討論
采用體積為φ0.46m×0.34m的溫度控制箱,對LH-1型撓性陀螺儀進行了實驗。結果為:溫控系統(tǒng)的控制精度可達±0.2℃,可見溫控精度較高;用100W的加熱片對溫控系統(tǒng)加熱,圖5給出了溫控系統(tǒng)溫度的變化曲線,溫度的設定值為55℃,大約20min就達到了55℃,系統(tǒng)的平均升溫速率為2.5℃/min左右。這樣的溫升速率很理想,因為升溫太快,在達到設定溫度時會產生較大的“過沖”;若升溫太慢,則要經過較長的時間才能達到設定溫度,影響工作效率。
圖5 溫控系統(tǒng)溫度變化曲線
為了得到更好的控制效果和升溫速度,可以采用這樣的方法:在不同階段,用不同功率的加熱片進行加熱,即在開始的過渡階段使用較大功率的加熱片加熱,過一段時間后用較小功率的加熱片加熱,這就提高了過渡階段的升溫速度。 總結
①基于Smith預估器的溫控系統(tǒng)能有效克服純滯后對控制系統(tǒng)穩(wěn)定性的影響
具有較好的魯棒性能達到溫度均勻控制。
②由單片機實現的均勻控制系統(tǒng)具有調試方便、可靠性好等優(yōu)點。
③采用體積為φ0.46m×0.34m的溫度控制箱,對LH-1型撓性陀螺儀進行了實驗。結果為:溫控系統(tǒng)的控制精度為±0.2℃。
四 相關程序:
#include
#include
Sbit RST =p2^0;
Sbit CLK =p2^1;
Sbit DQ =p2^2;
Sbit TSOR =p2^3;
Sbit ALERT =p2^7;
Sbi RW =2^6;
Sbit EN =p2^5;
Static unsigned char templ,tenmp2; //溫度值的整數部分、小數部分
Static unsigned char pls plsset; //數字電位器的電位值、設定值
Static unsigned char min,sec; //分鐘、秒
Static unsigned char count; //Timer0中斷計數
Static unsigned char minset; //設定的分鐘數
Static unsigned char statusl,status2; //狀態(tài)標志
bit stop,timeover; //定時停止、結束
static char line0[]=“ 00:00;” //
static char line1[]=“ .C W;”
void initinterupt();
void keyboarddelay();
void delayl();
void delays();
void writecommand(unsigned char c);
void writedata(unsigned char c);
void showchar(unsigned char pls,unsigned char c);
void showstring(unsigned char line.char*ptr);
void initlcd();
unsigned char getkey();
void changepos(bit sel,unsigned char plsl,unsigned char pls2);
void delay15();
void delay60();
void delay100ms();
void write0ts();
void write1ts();
bit readts();
void resets();
void writebts(unsigned char byte);
unsigned char readbts();
void initts();
void initts();
void gettempts();
void main (void){
char code str1[]=“Hello world”;
char code str2[]=“2006-1-10”;
unsigned char I;
SP=0x50;
Alert=0; //報警燈滅
Tsor=1; //1-wire總線釋放
Delayl()l
Initlcd(); //初始化LCD
Delayl();
Showstring(0,str1); //啟動畫面
Showstring(1,str2);
For(i=0;i<15;i++);
Delay100ms();
Initinterupy(); //初始化中斷設置
Minset=10; //缺省定時10分鐘
Posset=0; //缺省電位器值0
Min=minset; //初始化數據
Pos=posset;
Sec=0;
Count=0;
P1=0xf0;
Statusl=0;
Status2=0;
Stop=1;
Timeover=0;
Changepos(0,255-pos,255-pos); //設置電位器
Initts(); //初始化溫度計
While(1) //循環(huán)顯示溫度值
{
Gettempts();
Line1[0]=0x20;
I=templ;
If(i>39) //超過40攝氏度,告警燈亮
Alert=1;
If(i>99) //超過100攝氏度,顯示溫度的百位
{
Line1[0]=0x31;
i-=100;
}
Line1[1]=i/10+0x30; //顯示溫度的十位
Line1[2]=i%/10+0x30; //顯示個位
Line1[4]=temp2+0x30; //顯示小數位
If(timeover) //若定時結束,則電位器緩慢復0
}
For(;pls>0;pls--);
{
Changepls(0,255-pos,255-pos);
_nop_();
_nop_();
}
Timeover=0;
Posset=0;
}
If(pos>posset) //若按鍵修改電位器位置
{
For(;pos>posset;pos--) //則緩變到設定值
{
Changepos (0,255-pos,255-pos);
_nop_();
_nop_();
}
Changepos(0,255-pos,255-pos);
}
Else if(pos99)
{
Line1[9]=i/100+0x30;
I=i%100;
}
Line1[10]=i/10+0x30;
Line2[11]=i%10+0x30;
Showstring(1,line1);
Line0[5]=min/10+0/30; //顯示時間
Line0[6]=min%10+0x30;
Line0[8]=sec/10+0x30;
Line0[9]=sec%10+0x30;
Showstrjing(0,line0);
Delay100ms();
}
}
Int0_process()interrupt0using0
{
Unsigned char key;
Unsigned char keycode[]=“TP”; //計時調節(jié)/功率調節(jié)狀態(tài)編碼
Unsigned char step[3]={1,2,5}; //計時和功率調節(jié)步長
EA=0;
Key=getkey(); //獲得按鍵值
Switch(key) //按鍵分支處理
{
Case0: //按鍵0,切換計時開始/停止
Stop=!stop;
Min=minset; //計數復位
Sec=0;
Break;
Case1: //按鍵1,2,3計時按照步長增加
Case2:
Case3:
If(stop)
{
Minset+=step[key-1];
If(minset>60)
Minset=0;
Min=minset;
}
Break;
Case5: //按鍵5,6,7,功率等級按照步長增加
Case6:
Case7:
If(stop)
{
Minset-=step[key-5]
If(minset>60)
Minset=0;
Min=minset;
}
Break;
Case9:
Case10:
Case11:
Posset+=step[key-9];
Break;
Case13; //按鍵13,14,15,功率等級按照步長減少
Case14:
Case15:
Posset-=step[key-13];
Break;
Default:
Break;
}
Tro=!stop; //按照狀態(tài)標志設置定時器0啟動與否
Keyboarddelay(); //延時
P1=0xf0; //重置p1口高4位為高電平
EA=1; //開中斷
}
Timer0_process()interrupt1using0
{
EA=0; //關中斷
TR0=0; //關定時器0
TL0=0x00; //重置定時常數
TH0=0x4c;
Count++; //軟件計數自加
if(count==20) //如果到累計定時到達1s
{
If(sec==0) //定時處理
{
If(min==0) //總定時到,則置結束標志
Timeover=1;
Else //否則,則時間計數遞減
{
Min--;
Sec=59;
}
}
Else
Sec--;
Count=0;
}
TR0=1;
EA=1;
}
Void delay100ms() //延時100ms
{
Unsigned char I,j,k;
For(i=0;i<8;i++)
For(j=0;j<25;j++)
For(k=0;k<250;k++);
}
void delay15() //延時15us
{
unsigned char I:
for(i=0;i<8;I++);
}
void delay60() //延時60us
{
unsigned char I;
for (I=0;I<30;I++);
}
void write0ts() //寫bit 0
{
tsor=1;
tsor=0;l
delay15(); //延時
delay15();
delay15();
delay15();
tsor=1;
_nop_();
_nop_();
}
void writets() //寫bit 1
{
tsor=1;
tsor=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
tsor=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
delay15();
delay15();
delay15();
}
bit readts() //讀取數據位
{
bit b;
tsor=1;
tsor=0;
_nop_();
_nop_();
_nop_();
_nop_();
tsor=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
b=tsor;
delay15();
delay15();
delay15();
_nop_();
_nop_();
return b;
}
void resets() //復位
{unsigned char I;
tsor=1;
tsor=0;
for(I=0;I<8;I++)
delay60();
}
void writebts(unsigned char byte) //寫一字節(jié)(byte)
{unsigned char I;
for(I=0;I<8;I++)
{
if (byte&0x01) //最低bit為1否?
Write1ts();
Else
Write0ts();
Byte=byte>>1; //字節(jié)右移1位
}
}
unsigned char readbts() //讀一字節(jié)(byte)
{
unsigned char I,j;
bit b;
j=0;
for(I=0;I<8;I++)
{
b=readts();
{
if(b)
j+=1;
j=_cror_(j,1); //循環(huán)右移1位
}
returnj;
}
void initts() //初始化溫度計
{
reset(); //復位總線
writebts(0xcc); //忽略rom匹配操作
writebts(0x4e); //設置寫模式
writebts(0x64); //寫溫度上限th為100℃
writebts(0x8a); //寫溫度下限為-10℃
writebts(0x1f); //寫溫度計配置寄存器
}
Void gettempts() //獲得溫度,2字節(jié)數據分別放在temp1、temp2中
{
Rest(); //復位總線
Writebts(0xcc); //忽略rom匹配操作
Writebts(0x44); //溫度轉換命令
Delay100ms(); //延時100ms
Reset(); //復位
Writebts(0xcc); //忽略rom匹配操作
Writebts(0xbe); //讀取寄存器
Temp2=readbts(); //讀取第1字節(jié)
Temp1=readbts(); //讀取第2字節(jié)
Readbts(); //讀取第3字節(jié)
Readbts(); //讀取第4字節(jié)
Readbts(); //讀取第5字節(jié)
Readbts(); //讀取第6字節(jié)
Readbts(); //讀取第7字節(jié)
Readbts(); //讀取第8字節(jié)
Readbts(); //讀取第9字節(jié)
Temp1=temp1<<4;
Temp1+=(temp2&0xf0)>>4; //獲得溫度值整數部分
Temp2=(temp2&0x0f)?5:0; //獲得溫度值小數部分
四 參考文獻
趙亮、侯國銳 編著 單片機C語言編程與實例 北京:人民郵電出版社 2004年1月
王子才 編著 控制系統(tǒng)設計手冊 北京:國防工業(yè)出版社 1993年3月
徐春山 主編 過程控制儀表 北京:冶金工業(yè)出版社 1993年
龐國仲 編著 自動控制原理 安徽合肥:中國科學技術大學出版社 1993年
邵裕森 巴筱云 過程控制系統(tǒng)及儀表 機械工業(yè)出版社 1993年