版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 基于(jy)51單片機溫度自保護的直流電機控制系統(tǒng)一、實驗(shyn)目的1了解直流電機控制的基本(jbn)方法。2通過本實驗課程,進一步掌握單片機的基本原理、以及擴展微機系統(tǒng)多種接口的基本方法,具有基于微機和單片機系統(tǒng)進行軟硬件綜合設(shè)計和實現(xiàn)的能力。 3了解微機系統(tǒng)的基本軟硬件結(jié)構(gòu),熟悉和掌握單片機系統(tǒng)串行口、并行口、定時器/計數(shù)器、中斷和LCD液晶顯示接口等一些基本芯片的使用方法,掌握基于89C51系列單片機指令系統(tǒng)的匯編語言程序設(shè)計或C語言程序設(shè)計和調(diào)試方法。 二、實驗原理和內(nèi)容本系統(tǒng)使用到的硬件模塊有:LCD12864M液晶、簡單I/O、DS18B20溫度測控、蜂鳴器、直流電機、PW
2、M電壓功放器、LED指示燈等。8051單片機是標準的40引腳雙列直插式集成電路芯片,P0.0P0.7 P0口8位雙向口線(在引腳的3932號端子)。 P1.0P1.7 P1口8位雙向口線(在引腳的18號端子)。P2.0P2.7 P2口8位雙向口線(在引腳的2128號端子)。P3.0P3.7 P3口8位雙向口線(在引腳的1017號端子)。 本實驗通過利用定時器T0,控制IO口輸出高電平和低電平的時間,產(chǎn)生PWM方波來控制直流電機轉(zhuǎn)速。通過DS18B20溫度測控讀取當前溫度,如果在電機運轉(zhuǎn)過程中,溫度超過警報溫度,則電機停止旋轉(zhuǎn)。下面簡要的介紹下本系統(tǒng)的各個模塊:DS18B20是DALLAS生產(chǎn)的
3、一線制串行接口數(shù)字式溫度計。它的溫度測量范圍是-55C125C,-10C85C內(nèi)誤差為正負0.5C;912位轉(zhuǎn)換精度,轉(zhuǎn)換時間100ms750ms,通常為500ms。本系統(tǒng)利用DS18B20對電機溫度進行實時的模擬檢測采集。LCD12864M是將液晶顯示器件、連接件、集成電路、背光源結(jié)構(gòu)裝配在一起的組件。它的分辨率為12864,可顯示圖形或4行共32個1616點陣的漢字,并且內(nèi)置8192個1616點陣的漢字庫、128個字符、64256點陣的顯示RAM。12864M與單片機之間使用串行接口方式(PSB=0),RS(CS)為串行的片選信號,R/W(SID)為串行數(shù)據(jù)口,E(CLK)為串行同步時鐘。
4、串行數(shù)據(jù)傳送一幀分三個字節(jié):串行控制指令、數(shù)據(jù)的高4位和數(shù)據(jù)的低4位。PWM是通過定時器T0,控制IO口輸出(shch)高電平的時間TH和低電平的時間TL,其占空比為TH/(TH+TL)。LED指示燈鏈接P2口,當P2位口輸出低電平時,指示燈電亮,用以指示速度檔。當溫度超過警報溫度時,P2反復(fnf)輸出高電平和低電平,指示燈閃爍報警。蜂鳴器接P17口,當溫度超過警報(jngbo)溫度時,P17輸出低電平,蜂鳴器警報。三、實驗設(shè)備和軟件平臺硬件:實驗箱(一臺)、示波器(一臺)、單片機仿真器(一臺)、連接線(若干)軟件:星研集成環(huán)境軟件四、實驗各模塊連接結(jié)構(gòu)1、系統(tǒng)的總體框架圖:80C51LC
5、D顯示溫度DS18B20簡單I/O撥碼開關(guān)LED燈蜂鳴器PWM功放器直流電機2、實驗(shyn)連線:LCD液晶(yjng): CSP10 SIDP11 SCLKP12 PSBP13撥碼開關(guān)(kigun):P0LED燈: P2蜂鳴器: P17PWM: P16溫度DS18B20: P35五、實驗注意事項及總結(jié)在本系統(tǒng)的調(diào)試完善過程中,發(fā)現(xiàn)了不少的問題,主要有:1、在調(diào)試時,要把P2調(diào)為I/O模式。2、晶振要設(shè)置為12MHZ。3、不要帶電操作實驗箱。4、不能存太多全局變量,會使51單片機內(nèi)部RAM不夠,導致地址溢出,程序出錯。5、各種芯片初始化要十分注意,特別是溫度DS18B20的初始化過程中不能
6、有中斷出現(xiàn),而步進電機是需要定時中斷來定時驅(qū)動的,很難讓它們不互相影響,這也是在實驗中為什么有時會出現(xiàn)溫度很大或為零的原因。最好的解決方法就是不使用中斷。六、附錄實驗程序/ 頭文件#include#include#include#include /*接線說明*/* 液 晶: CSP10 SIDP11 SCLKP12 PSBP13 調(diào)速檔撥碼開關(guān): P0 指示燈: P2 蜂鳴器: P17*/ 宏定義#define uchar unsigned char#define uint unsigned int/ 函數(shù)(hnsh)聲明void LCDString(unsigned char *pStr);
7、void W_1byte(unsigned char RW, unsigned char RS, unsigned char W_data) ;void Alarm(void);/ 警報(jngbo)溫度大小定義#define TEMPERATURE_ALARM 21.0/ 液晶(yjng)接口 sbit CS = P10;sbit SID = P11;sbit SCLK = P12; sbit PSB = P13;/ 溫度/TOUT接T1,T1口即為P3.5sbit DQ=P35;unsigned int T; /溫度測量 float radio; /占空比unsigned char tim
8、eH=0 x3c,timeL=0 xb0;unsigned int flag0; /PWM標志位unsigned int flag1; /溫度警報標志,1for超過/ 蜂鳴器sbit Beeper = P17;/ 直流電機CTRL接功放E2的OUT(OUT1),功放E2的IN(IN1)接P1.6sbit Dianji = P16;/ 液晶顯示器顯示的內(nèi)容code unsigned char lcd_data80= Motor Control;code unsigned char lcd_data88=ALM 溫度: 21.0;/ 存儲測量溫度值unsigned char Temp_Value=
9、0 x00,0 x00; / 延時 void delay(unsigned char i)while(i-); / 溫度測量模塊/ 初始化unsigned char Init_DS18B20() unsigned char status;DQ = 1; delay(8); DQ = 0; delay(90); DQ = 1;delay(8); status = DQ;delay(100);DQ = 1; return status;/ 讀字節(jié)(z ji)unsigned char ReadOneByte() unsigned char i,dat = 0;DQ = 1;_nop_();for(
10、i = 0;i = 1; DQ = 1;_nop_();_nop_();if(DQ) dat |= 0 x80;delay(30);DQ = 1; return dat; / 寫字節(jié)(z ji)void WriteOneByte(unsigned char dat) unsigned char i;for(i = 0;i = 1; / 讀取溫度(wnd)值void Read_Temperature() if(Init_DS18B20() != 1); WriteOneByte(0 xcc);WriteOneByte(0 x44); Init_DS18B20(); delay(100);Writ
11、eOneByte(0 xcc);WriteOneByte(0 xbe);Temp_Value0 = ReadOneByte();Temp_Value1 = ReadOneByte(); / 溫度值顯示及警報操作void Display_Temperature() bit flag;uchar DisplayBuf20;uchar NotAlarmBuf20;uchar lsb,msb;uint temp,t1;float t2;msb = Temp_Value1; / Sign byte + lsbitlsb = Temp_Value0; / Temp data plus lsbif(msb
12、& 0 xF0) 0) /判斷(pndun)是否為負溫度flag = 1;elseflag = 0;if(flag) /如果(rgu)為負溫度取反加1temp = (uint)msb 8) | lsb;temp = temp + 1;msb = temp / 256;lsb = temp % 256;t1 = msb 4); / t1為溫度值的整數(shù)(zhngsh)部分t2 = (lsb & 0 x0F) * 0.0625 + t1;T=t1;/ 液晶顯示當前溫度值sprintf(DisplayBuf, 電機溫度: %2.1f0, t2);W_1byte(0,0,0 x88); LCDStrin
13、g(DisplayBuf);/ 判斷溫度是否超過警報值if(t2 = TEMPERATURE_ALARM)Alarm(); / 警報函數(shù)flag1=1;else flag1=0;/ 溫度正常情況操作,液晶顯示,電機轉(zhuǎn)動,蜂鳴器關(guān)閉sprintf(NotAlarmBuf,設(shè)定占空比:%2.0f%,radio);W_1byte(0,0,0 x98);LCDString(NotAlarmBuf);Beeper=1;/ LCD液晶顯示/函數(shù)作用:負責向SID串行寫入8個bit位 void Write_8bits(unsigned int W_bits) unsigned int i; unsigned
14、 int Temp_data;for(i = 0; i 8; i+) Temp_data = W_bits;Temp_data = i;if(Temp_data & 0 x80) = 0) /bit7 is zero SID = 0;_nop_(); SCLK = 1;_nop_();_nop_();SCLK = 0;_nop_();SID = 0; else /bit7 is one SID = 1; _nop_(); SCLK = 1; _nop_(); _nop_(); SCLK = 0; _nop_(); SID = 0; /函數(shù)作用(zuyng):寫一個字節(jié)的數(shù)據(jù)到12864液晶(y
15、jng),包括指令和數(shù)據(jù) /說 明:RW=1,從液晶(yjng)讀數(shù)據(jù)到MCU;RW=0,寫一個數(shù)據(jù)到液晶; / (一般RW都設(shè)為0,即只向液晶寫數(shù)據(jù),不讀數(shù)據(jù)) / RS=1,寫入的是數(shù)據(jù);RS=0,寫入的是指令; / 一般模式:RW=0,RS=1;寫數(shù)據(jù) / RW=0,RS=0;寫指令void W_1byte(unsigned char RW, unsigned char RS, unsigned char W_data) unsigned int H_data,L_data,S_ID = 0 xf8; /11111RWRS0 if(RW = 0) S_ID &= 0 x04; else
16、/if(RW=1) S_ID |= 0X04; if(RS = 0) S_ID &= 0 x02;else /if(RS=1) S_ID |= 0X02; H_data = W_data; H_data &= 0 xf0; /屏蔽低4位的數(shù)據(jù) L_data = W_data; /xxxx0000格式(g shi)L_data &= 0 x0f; /屏蔽(pngb)高4位的數(shù)據(jù)(shj) L_data = 4; /xxxx0000格式 CS = 1; Write_8bits(S_ID); /發(fā)送S_ID Write_8bits(H_data); /發(fā)送H_data Write_8bits(L_d
17、ata); /發(fā)送L_data CS = 0; / 向液晶屏寫入字符串void LCDString(unsigned char *pStr)for(; *pStr != 0; pStr+)W_1byte(0,1, *pStr); / LCD初始化void LCD_init(void) unsigned char cmd; cmd=0 x30; /功能設(shè)置 8位數(shù)據(jù),基本指令 W_1byte(0,0,cmd); delay(2); cmd=0 x0C; /顯示狀態(tài) ON,游標OFF,反白OFF W_1byte(0,0,cmd); /寫指令 delay(2); cmd=0 x01; /清除顯示 W
18、_1byte(0,0,cmd); /寫指令 delay(2); cmd=0 x02; /地址歸位W_1byte(0,0,cmd); /寫指令 delay(2); cmd=0 x80; /設(shè)置DDRAM地址 W_1byte(0,0,cmd); /寫指令 delay(2); /延時 / LCD初始化void init_LCD() /SP = 0X60;/* 指針地址 CS = 0; SCLK = 0; SID = 0; PSB=0; LCD_init(); / 將一、二行字符串寫入LCDvoid LCD_mess_display() unsigned char i; W_1byte(0,0,0 x
19、80); _nop_();for(i=0;lcd_data80i!=0;i+) W_1byte(0,1,lcd_data80i); W_1byte(0,0,0 x90); for(i=0;lcd_data88i!=0;i+) W_1byte(0,1,lcd_data88i); / LCD顯示(xinsh)void DisplayLcd()LCD_mess_display(); delay(100); / LCD顯示(xinsh)溫度 void ShowTemperature() Read_Temperature(); Display_Temperature(); / 溫度(wnd)警報void
20、 Alarm(void)/uchar i;uchar AlarmBuf20;/LED_GREEN = 1; /LED_RED = 0;sprintf(AlarmBuf,智能調(diào)速:%2.0f%,radio); W_1byte(0,0,0 x98); LCDString(AlarmBuf);Beeper=0;/*T0定時,T1計數(shù)*void Time_Init()TMOD=0 x51; /工作方式2EA=1; /使能ET0=1; /開發(fā)中斷,可到中斷程序執(zhí)行/ET1=1;TL0=timeH;TH0=timeL; /時間=(216-TH*28-TL)*1usTR0=1; /開TO定時flag0=1;
21、 /TH1=0 xff;TL1=0 xff; /1ms中斷/TR1=1;/ 主函數(shù)main() unsigned int i;/LED_GREEN = 0; Time_Init(); /定時器計數(shù)器初始化init_LCD(); /*輸出(shch)作品信息*/*sprintf(biaoti1,廈門大學(sh mn d xu)自動化系); W_1byte(0,0,0 x80); LCDString(biaoti1);sprintf(biaoti2,陳福feng); W_1byte(0,0,0 x90); LCDString(biaoti2);sprintf(biaoti3,23220131153
22、339); W_1byte(0,0,0 x88); LCDString(biaoti3);sprintf(biaoti4,2013-12-30); W_1byte(0,0,0 x98); LCDString(biaoti4);delay(0 xef);delay(0 xef);*/*DisplayLcd(); /顯示(xinsh)前兩行while(1) if(flag1=0) /沒有警報 switch(P0) case 0 x01:timeH=0 xe0;timeL=0 xe0;radio=12.5;break; case 0 x03:timeH=0 xc0;timeL=0 xc0;radio
23、=25.0;break; case 0 x07:timeH=0 xa0;timeL=0 xa0;radio=37.5;break; case 0 x0f:timeH=0 x80;timeL=0 x80;radio=50.0;break; case 0 x1f:timeH=0 x60;timeL=0 x60;radio=62.5;break; case 0 x3f:timeH=0 x40;timeL=0 x40;radio=75.0;break; case 0 x7f:timeH=0 x20;timeL=0 x20;radio=87.5;break; case 0 xff:timeH=0 x00;timeL=0 x00;radio=100;break; default: timeH=0 xff;timeL=0 xff;radio=00;break; P2=P0; /P2指示燈,表示檔數(shù) else i=T-TEMPERATURE_ALARM; /智能降速 switch(i) case 1:timeH=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025合伙經(jīng)營公司合同書
- 生態(tài)修復區(qū)草坪鋪設(shè)工程合同
- 學校網(wǎng)絡(luò)布線基礎(chǔ)設(shè)施施工合同
- 2025建筑購銷合同書范文
- 建筑供四甲苯氣泥工施工合同
- 中小學心理健康教育的師資建設(shè)與培訓
- 2025二手車買賣合同書2
- 低空經(jīng)濟產(chǎn)業(yè)園低空飛行器及相關(guān)技術(shù)配套設(shè)施
- 2023年注冊工程師之公共基礎(chǔ)題庫與答案
- 如何保護兒童免受網(wǎng)絡(luò)詐騙
- 江西省-三新-協(xié)同教研共同體2023-2024學年高二上學期12月聯(lián)考英語試卷
- 《SolidWorks建模實例教程》第4章 綜合應用實例
- 2024上海高校大學《輔導員》招聘考試題庫及答案
- 大班-科學語言-塑料瓶到哪里去了?-課件
- 三層電梯PLC控制系統(tǒng)設(shè)計(S7-200)含程序
- 幼兒園玩具教具投標方案(技術(shù)標)
- 文印服務投標方案(技術(shù)方案)
- 消防控制室值班服務投標方案
- 語文部編版九年級語文上冊練習題-口語交際與綜合性學習含答案50
- 直播合法授權(quán)書范本
- 初三語文總復習全程計劃表
評論
0/150
提交評論