1. 單片機設計時間順序控制器
ORG 0000H LJMP MAIN ORG 0003H;外中斷入口地址 LJMP MDH ORG 000BH;定時器中斷入口地址 LJMP LDH ORG 1000H MAIN:MOV TMOD,#01H;設置工作模式為模式1 MOV TL0,#0B0H;設置初值 MOV TH0,#3CH SETB TR0;定時器啟動定時 SETB EA;中斷總允許 SETB ET0;定時器中斷允許 SETB EX0;外中斷1允許 CLR IT0;設為低電平有效 CLR P3.2;報警處理 CLR F0;1s未到,則(F0)=0 SETB P0;繼電器低電平有效 MOV R7,#10;定時器計數10次 MOV R2,#01H;工作段1 MOV 31H,#11H MOV 40H,#98;每段倒計時的初值 MOV 41H,#46 MOV 42H,#56 MOV 43H,#68 MOV P2,#00H;准備點亮 MOV P1,#0F3H;顯示字形「P」 LP: JB P3.0,LP1;P3.0=1則轉LP1 LJMP LP;P3.0=0則返回LP繼續判斷 LP1:MOV R5,40H;將40H單元里的數暫存在R5中 MOV P0,#0FEH;啟動一段工作 LP2:LCALL DISPLAY;調用倒計時顯示1s DJNZ R5,LP2;98s未到則返回LP2 LP3:INC R2;工作段數自加1 MOV R5,41H MOV P0,#0FDH;啟動二段工作 LP4:LCALL DISPLAY DJNZ R5,LP4;46s未到則返回LP4 LP5:INC R2 MOV R5,42H MOV P0,#0FBH;啟動第三段工作 LP6:LCALL DISPLAY DJNZ R5,LP6 LP7: INC R2 MOV R5,43H MOV P0,#0F7H;啟動第四段工作 LP8: LCALL DISPLAY DJNZ R5,LP8 LJMP LP1 LDH:PUSH PSW;保護現場 PUSH ACC MOV TL0,#0B0H;重置初值 MOV TH0,#3CH DJNZ R7,LDH;1s未到則轉REN SETB F0;1s到則將F0置1 CLR TR0;停止定時 MOV R7,#10 POP PSW;恢復現場 POP ACC RETI ;中斷返回 MDH: PUSH PSW PUSH ACC CLR TR0;停止定時 SETB P3.2;報警 JB P3.2,MDH;P3.2=1,則轉MDH SETB TR0;啟動定時 CLR P3.2;報警清除 POP PSW;保護現場 POP ACC;恢復現場 RETI DISPLAY:MOV 30H,R2;將工作段拆字送顯緩 MOV A,R5;送數 MOV B,A ANL A,#0FH;屏蔽高四位 MOV 33H,A MOV A,B SWAP A;高低四位交換 ANL A,#0FH;屏蔽高四位 MOV 32H,A MOV R7,#10 DEL:LCALL WD;調用顯示子程序 JNB F0,DEL;1s未到則返回DEL CLR C;CY清零 MOV A,#9AH SUBB A,#01H;作二進制減法求其補碼 ADD A,R5;相加 DA A;BCD碼調整 MOV R5,A WD:M0V R1,#30H;顯示緩沖區首址 MOV R6,#0F7H;准備點亮左邊第一位 MOV R4,#0FFH;延時常數 WD1:MOV A,@R1;取數據 MOV DPTR,#SGTR;指向七段碼 MOVC A,@A+DPTR;查七段碼 MOV P1,A;取數位代碼 MOV A,R6; MOV P2,A;輸出數位代碼 WD2:DJNZ R4,WD2;延時 INC R1;指向下一緩存 MOV A,R6 RR A;數位碼左移,准備顯示下一位 MOV R6,A JB ACC.4,WD1;四位未顯示完轉WD1 RET SGTR: DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,00H,40H,0F3H
2. 一個工業順序控制的單片機程序,簡單的就行了,用C語言寫
比如單片機控制物體X從A運動到B,碰到行程開關,之後返回A,碰到A的行程開關,再次從A到B如此反復。
#include<reg51.h>
sbit start=P1^0;
sbit stop=P1^1;
sbit limita=P1^4;
sbit limitb=P1^5;
sbit run_z=P1^7;
sbit run_f=P1^6;
main()
{
whilt(1)
{
while(start==1); //等待按啟動鍵
run_z=0;
while(stop==0){ //如果停止鍵沒有按下就一直循環
while(limitb==1); //一直等到運動到B
run_z=1;
run_f=0;
while(limita==1); //一直等到運動到A
run_f=1;
run_z=0;
}
}
3. 單片機實驗箱的實驗項目
(一)軟體實驗
(1)清零程序;
(2)拆字程序;
(3)拼字程序;
(4)數據區傳送子程序;
(5)數據排序實驗;
(6)查找相同數據個數;
(7)無符號雙位元組快速乘法子程序;
(8)多分支程序;
(9)脈沖計數實驗;
(10)電腦時鍾實驗。
(二)硬體實驗
(1)P1口亮燈實驗;
(2)P1口轉彎燈實驗;
(3)P3.3口輸入,P1口輸出實驗;
(4)工業順序控制實驗;
(5)8255 A、B、C口輸出方波實驗;
(6)8255 PA口控制PB口;
(7)8255控制交通燈;
(8)簡單I/O擴展實驗;
(9)A/D0809轉換實驗;
(10)D/A0832轉換實驗;
(11)8279鍵盤顯示實驗;
(12)通用列印機實驗;(列印機選配)
(13)微型列印機列印字元、曲線、漢字實驗;(列印機選配)
(14)I2C儲存卡讀寫實驗;
(15)繼電器控制實驗;
(16)步進電機控制;
(17)8253方波實驗;
(18)小直流電機調速實驗;
(19)16*16 LED點陣顯示實驗;
(20)128*64 LCD液晶顯示實驗;
(21)8250可編程非同步通訊介面實驗(自發自收);
(22)8251可編程通訊介面實驗(與PC機);
(23)單片機RS232/485串列發送實驗(雙機通訊);
(24)單片機RS232/485串列接收實驗(雙機通訊);
(25)溫度實驗;
(26)壓力實驗;
(27)DS18B20單匯流排數字溫度感測器實驗;
(28)紅外線遙控通信實驗;
(29)PWM脈沖寬度調制實驗;
(30)射極跟隨器實驗;
(31)電子音樂演奏實驗。
(三)擴展卡實驗(選配)☆
1、KZ-1擴展卡完成以下實驗:
(32)MAX813看門狗實驗
(33)74LS165並轉串實驗
(34)74LS164串轉並實驗
(35)查詢式鍵盤實驗
(36)74LS138解碼實驗
2、KZ-2擴展卡完成以下實驗:
(37)LM331 V/F轉換實驗
(38)LM331 F/V轉換實驗
(39)光耦隔離模塊實驗
3、KZ -3擴展卡完成以下實驗:
(40)串列EEPROM 93C46讀寫實驗
(41)I2C AT24C02讀寫實驗
(42)TLC549串列A/D轉換實驗
(43)TLC5615 10位D/A串列轉換實驗
(44)PCF8563 I2C日歷時鍾實驗
4、KZ -4擴展卡完成以下實驗:
(45)ISD1730語音錄放實驗
5、CAN匯流排擴展卡:
(46)CAN匯流排通訊介面實驗
6、TCP/IP乙太網擴展卡
(47)乙太網TCP/IP協議介面實驗
7、USB2.0卡
(48)USB2.0通訊介面實驗。
8、1032擴展卡:
Lattice公司:Lattice1032E晶元實驗開發。
9、1K30擴展卡:
Atera公司:EP1K30TC144晶元實驗開發。
10、C8051F020擴展卡+DICE-EC5模擬器:
C8051F020是完全集成的混合信號系統級MCU晶元。下面列舉了一些主要晶元資源:
(1)高速流水線結構的8051兼容的CIP-51內核(最大25MIPS);
(2)全速非侵入式的系統調試介面(片內);
(3)真正12位100ksps的8通道ADC,帶PGA和模擬多路開關;8位500ksps的8通道ADC;
(4)兩個12位DAC,可編程更新時序;
(5)64K位元組可在系統編程的FLASH存儲器;
(6)4352(4096+256)位元組的片內RAM;
(7)可定址64K位元組地址空間的外部數據存儲器介面;
(8)硬體實現的SPI,SMBus/IIC和兩個UART串列介面;
(9)5個通用的16位定時器;
(10)具有5個捕捉/比較模塊的可編程計數器/定時器陣列;
(11)片內看門狗定時器,2個比較器,VDD監視器和溫度感測器;
(12)64個I/O埠;
(13)-40~85度工業級溫度范圍;
(14)2.7V~3.6V工作電壓,100腳TQFP封裝;
11、DICE-DAQ數控式創新實驗平台擴展卡(實驗對象通過軟體模擬)
閉環控制
(1)機器人掃地雷實驗;
(2)刀庫捷徑選擇實驗;
(3)四層電梯實驗;
(4)四級傳送帶實驗;
(5)郵件分揀實驗;
(6)水塔水位控制實驗;
(7)交流電機Y/△起動實驗;
開環控制:
(8)交通信號燈實驗;
(9)步進電機實驗;
(10)舞台燈實驗;
(11)LED顯示實驗;
(12)液體混合裝置實驗;
(13)八通道邏輯分析實驗;
(14)溫度壓力實驗;
(15)連線自檢實驗;。
4. 單片機實現的順序控制,跪求程序
#include<reg51.h>
sbitP3_4=P3^4;
voidDelay(unsignedintt)
{
while(t--);
}
voidmain()
{
EX1=1;//外部中斷1允許
IT1=0;//電平觸發中斷
EA=1;//總中斷允許
while(1)
{
P1&=0xfe;//工序1,完成後進入工序2
Delay(2000);
P1&=0xfd;//工序2,完成後進入工序3
Delay(2000);
P1&=0xfb;
Delay(2000);
P1&=0xf7;
Delay(2000);
P1&=0xef;
Delay(2000);
P1&=0xdf;
Delay(2000);
P1&=0x8f;
Delay(2000);//7道工序完成,重新開始循環
}
}
voidint1_isp()interrupt2//外部中斷1中斷服務函數
{
SPK=~P3_4;//報警
}
5. 工業順序控制——工業自動加熱反應爐的控制(單片機編程)
(一)溫度控制系統的組成 溫度是工業對象中主要的被控參數之一,象冶金、機械、食品、化工各類工業中,廣泛使用的各種加熱爐、熱處理爐、反應爐等,對工件的處理溫度要求嚴格控制,計算機溫度控制系統使溫度控制指標得到了大幅度提高。 電阻爐爐溫控制系統的控制過程是:單片機定時對爐溫進行檢測,經A/D轉換晶元得到相應的數字量,經過計算機進行數據轉換,得到應有的控制量,去控制加熱功率,從而實現對溫度的控制。 進行系統設計時應考慮如下問題: 爐溫變化規律的控制,即爐溫按預定的溫度——時間關系變化,這主要在控製程序設計中考慮。 溫度控制范圍:如400~1000℃,這就涉及到測溫元件、電爐功率的選擇等。 控制精度、超調量等指標,這涉及到A/D轉換精度、控制規律選擇等。 (二)硬體電路設計 1.溫度檢測元件及變送器、ADC的選擇 溫度檢測元件及變送器的選擇要考慮溫度控制范圍及精度要求。對於0~1000℃ 的測量范圍,採用熱電偶,如鎳鉻熱電偶,分度號為EU,其輸出信號為0~41.32mV,經毫伏變送器,輸出0~10mA,然後再經過電流——電壓變換電路轉換為0~5V電壓信號。為了提高測量精度,可將變送器進行零點遷移,例如溫度測量范圍改為400~1000℃,熱電偶給出16.4~41.32mV 時,使變送器輸出0~10mV,這樣使用8位A/D轉換器,能使量化誤差達到±2.34℃。 2.介面晶元的擴展 由於本系統既要顯示、報警、鍵盤輸入,又要進行控制,所以系統在8031系統中擴展了一片8155,它有三個8位I/O口,256位元組的RAM,可以作為外部數據存儲器供系統使用,8031的P2.1接8155的CE,P2.0接8155的IO/M,當P2.1=0,P2.0=1時,選中8155片內的三個I/O埠,其口地址如下: 0100H 〖〗命令狀態寄存器0101H〖〗A口0102H〖〗B口0103H〖〗C口或控制口寄存器0104H〖〗計數值低八位0105H〖〗計數值高八位和方式寄存器當P2.2=0時,選中ADC0809(允許啟動各通道轉換與讀取相應的轉換結果)。轉換結束信號EOC經倒相後接至單片機的外部中斷INT1 (P3.3),當P3.3=0時,說明轉換結束。我們選用0通道作為輸入,把0809視為一個地址為03F8H的外部數據存儲單元,對其寫數據時, 8031的WR信號使ALE和START有效,將74LS373鎖存的地址低三位存入0809,並啟動ADC0809,D 9EOC為低電平時,A/D轉換正在進行,當EOC為高電平時,表示轉換結束,8031可以讀如轉換好的數據。 3.溫度控制電路 溫度控制電路採用晶閘管調功方式。雙向晶閘管串在50Hz交流電源和加熱絲電路中,只要在給定周期里改變晶閘管開關的接通時間的脈沖信號即可。這可以用一條I/O線,通過程序輸出控制脈沖。 為了達到過零觸發的目的,需要交流電過零檢測電路。此電路輸出對應於50Hz交流電壓過零時刻的脈沖,作為觸發雙向晶閘管的同步脈沖,使晶閘管,在交流電壓過零時刻導通。 電壓比較器LM311 將50HZ正弦交流電壓變成方波。方波上升沿和下降沿分別作為單穩態觸發器的觸發信號,單穩觸發器輸出的窄脈沖經二極體或門混合,就得到對應於220V市電過零時刻的同步脈沖。此脈沖一路作為觸發同步脈沖加到溫控電路,一路作為計數脈沖加到單片機8031的P3.4和P3.5輸入端。 (三)控制規律的選擇和程序設計 電阻爐爐溫控制是這樣一個反饋調節過程,比較實際爐溫和需要爐溫得到偏差,通過對偏差的處理獲得控制信號,去調節電阻爐的熱功率,從而實現對爐溫的控制。 按照偏差的比例、積分和微分產生控製作用(PID控制),是過程式控制制中應用最廣泛的一種控制形式。 計算機PID是用差分方程近似實現的。 PID調節規律的微分方程(略)。 系統控製程序採用兩重中斷嵌套方式設計。首先使T0 計數器產生定時中斷,作為本系統的采樣周期。在中斷服務程序中啟動A/D,讀入采樣數據,進行數字濾波、上下限報警處理,PID計算,然後輸出控制脈沖信號。脈沖寬度由T1計數器溢出中斷決定。在等待T1中斷時,將本次采樣值轉換成對應的溫度值放入顯示緩沖區,然後調用顯示子程序。從T1中斷返回後,再從 T0中斷返回主程序並且、繼續顯示本次采樣溫度,等待下次T0中斷。