C51溫度采集控制報告_第1頁
C51溫度采集控制報告_第2頁
C51溫度采集控制報告_第3頁
C51溫度采集控制報告_第4頁
C51溫度采集控制報告_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電子科技大學(xué) 英才實驗 學(xué)院實 驗 報 告實驗名稱 現(xiàn)代電子技術(shù)綜合實驗姓名:汪曉華學(xué)號:2702108015評分:教師簽字電子科技大學(xué)教務(wù)處制電 子 科 技 大 學(xué)實 驗 報 告學(xué)生姓名:汪曉華 學(xué)號:2702108015 指導(dǎo)教師:王軍實驗地點: 331 實驗時間:(雙周)周二9、10、11節(jié)一、 實驗室名稱: 電子技術(shù)綜合實驗室二、 實驗項目名稱:溫度采集控制的設(shè)計與實現(xiàn)三、 實驗學(xué)時: 32四、 實驗?zāi)康呐c任務(wù):1、 熟悉系統(tǒng)設(shè)計與實現(xiàn)原理2、 掌握KEIL C51的基本使用方法3、 熟悉SMART SOPC實驗箱的應(yīng)用4、 連接電路,編程調(diào)試,實現(xiàn)各部分的功能5、 完成系統(tǒng)軟件的編寫

2、與調(diào)試五、 實驗器材1、 PC機一臺2、 示波器、SMART SOPC實驗箱一套六、 實驗原理、步驟及內(nèi)容1、 數(shù)碼管動態(tài)掃描原理七段式LED數(shù)碼管是常見的電子設(shè)備顯示器件,能夠顯示數(shù)字09以及字母a f,外加一個小數(shù)點,作為第八段。數(shù)碼管有靜態(tài)和動態(tài)之分,每一類又有共陽和共陰之分。靜態(tài)數(shù)碼管驅(qū)動方法簡單、亮度高,但是連線比較多,而動態(tài)數(shù)碼管常常以多位聯(lián)體的形式提供,連線較少,但是要用動態(tài)掃描的方法驅(qū)動,為了獲得足夠的亮度,限流電阻取值常常比較小。 動態(tài)數(shù)碼管掃描的具體過程如下,先把第1個數(shù)碼管的顯示數(shù)據(jù)送到abcdefg和dp,同時選通com1,而其它數(shù)碼管的com信號禁止;延時一段時間(通

3、常不超過10ms),再把第2個數(shù)碼管的顯示數(shù)據(jù)送到abcdefg和dp,同時選通com2,而其它數(shù)碼管的comd信號禁止;延時一段時間,再顯示下一個。當(dāng)掃描整個數(shù)碼管的頻率應(yīng)當(dāng)保證在50Hz以上時,就不會看到明顯的閃爍,肉眼 觀察,看上去是一起亮的。原理圖如下:圖 1 數(shù)碼管的動態(tài)掃描原理圖2、 蜂鳴器工作原理蜂鳴器發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的,因此需要一定的電流才能驅(qū)動它,單片機IO引腳輸出的電流較小,單片機輸出的TTL電平基本上驅(qū)動不了蜂鳴器,因此需要增加一個電流放大的電路。原理圖見圖:圖 2 蜂鳴器的原理圖如圖2所示,蜂鳴器的負(fù)極經(jīng)電阻R3接地,蜂鳴器

4、的正極接到三極管的集電極C,三極管的基級B經(jīng)過限流電阻R2后由單片機的P1.3引腳控制,當(dāng)P1.3輸出高電平時,三極管Q1截止,沒有電流流過線圈,蜂鳴器不發(fā)聲;當(dāng)P1.3輸出低電平時,三極管導(dǎo)通,這樣蜂鳴器的電流形成回路,發(fā)出聲音。因此,我們可以通過程序控制P1.3腳的電平來使蜂鳴器發(fā)出聲音和關(guān)閉。程序中改變單片機P1.3引腳輸出波形的頻率,就可以調(diào)整控制蜂鳴器音調(diào),產(chǎn)生各種不同音色、音調(diào)的聲音。另外,改變P1.3輸出電平的高低電平占空比,則可以控制蜂鳴器的聲音大小。3、 I2C工作原理1)I2C總線概述I2C總線是PHLIPS公司推出的一種串行總線,是具備多主機系統(tǒng)所需的包括總線裁決和高低速

5、器件同步功能的高性能串行總線。 2)I2C信號線I2C總線只有兩根雙向信號線。一根是數(shù)據(jù)線SDA,另一根是時鐘線SCL。I2C總線通過上拉電阻接正電源。當(dāng)總線空閑時,兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號變低,即各器件的SDA及SCL都是線“與”關(guān)系。圖 3 I2C總線框圖3)I2C總線的數(shù)據(jù)傳送 a)數(shù)據(jù)位的有效性規(guī)定 I2C總線進行數(shù)據(jù)傳送時,時鐘信號為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時鐘線上的信號為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。圖 4 SDA與SCL的工作時序圖b) 起始和終止信號SCL線為高電平期間,SDA線由高電平向低

6、電平的變化表示起始信號SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號。起始和終止信號都是由主機發(fā)出的,在起始信號產(chǎn)生后,總線就處于被占用的狀態(tài);在終止信號產(chǎn)生后,總線就處于空閑狀態(tài)。c) I2C總線的數(shù)據(jù)傳送速率 I2C總線的通信速率受主機控制,能快能慢,最高速率限制為100Kb/s d) I2C總線的數(shù)據(jù)傳送格式 主機向從機發(fā)送數(shù)據(jù) 從機向主機發(fā)送數(shù)據(jù)圖 5 I2C總線的數(shù)據(jù)傳送格式S:起始位 SA: 從機地址,7位W/:寫標(biāo)志位,1位 R:讀標(biāo)志位,1位A:應(yīng)答位,1位 A/:非應(yīng)答位,1位D:數(shù)據(jù),8位 P:停止位陰影:主機產(chǎn)生的信號 無陰影:從機產(chǎn)生的信號4)總線的尋

7、址 I2C總線協(xié)議有明確的規(guī)定:采用7位的尋址字節(jié)(尋址字節(jié)是起始信號后的第一個字節(jié))。尋址字節(jié)的位定義 D7D1位組成從機的地址。D0位是數(shù)據(jù)傳送方向位,為“0”時表示主機向從機寫數(shù)據(jù),為“1”時表示主機由從機讀數(shù)據(jù)。主機發(fā)送地址時,總線上的每個從機都將這7位地址碼與自己的地址進行比較,如果相同,則認(rèn)為自己正被主機尋址,根據(jù)R/位將自己確定為發(fā)送器或接收器。從機的地址由固定部分和可編程部分組成。在一個系統(tǒng)中可能希望接入多個相同的從機,從機地址中可編程部分決定了可接入總線該類器件的最大數(shù)目。如一個從機的7位尋址位有4位是固定位,3位是可編程位,這時僅能尋址8個同樣的器件,即可以有8個同樣的器件

8、接入到該I2C總線系統(tǒng)中。4、 LM75特征及應(yīng)用LM75A是一個使用了內(nèi)置帶隙溫度傳感器和模數(shù)轉(zhuǎn)換技術(shù)的溫度-數(shù)字轉(zhuǎn)換器I2C 總線接口。工作溫度范圍-55oC+125 oC,精度可達0.125 oC。 LM75A可設(shè)置成工作在兩種模式:正常工作模式或關(guān)斷模式。在正常工作模式中,每隔100ms執(zhí)行一次溫度-數(shù)字的轉(zhuǎn)換,Temp寄存器保存著最后一次更新的結(jié)果;但是,在該模式下,器件的I2C接口仍然有效,寄存器讀/寫操作糾結(jié)執(zhí)行。器件的工作模式通過配置寄存器可編程位B0業(yè)設(shè)定。當(dāng)器件上電或從關(guān)斷模式進入正常工作模式時啟動溫度轉(zhuǎn)換。LM75A可配置成不同的工作條件。它可設(shè)置成在正常工作模式下周期性

9、地對環(huán)境溫度進行監(jiān)控或進入關(guān)斷模式來將器件功耗降至最低。OS輸出有2種可選的工作模式:OS比較器模式和OS中斷模式。OS輸出可選擇高電平或低電平有效。圖表 6 LM75A工作原理圖溫度寄存器(Temp)Temp寄存器存放著每次A/D轉(zhuǎn)換的或監(jiān)控到的數(shù)字結(jié)果。包含2 個8位的數(shù)據(jù)字節(jié),由一個高數(shù)據(jù)字節(jié)(MS)和一個低數(shù)據(jù)字節(jié)(LS)組成。其中,只有11位用來存放分辨率為0.125 oC的Temp數(shù)據(jù)(以二進制補碼數(shù)據(jù)的形式) 對于正的溫度值,D100 T=Temp *0.125oC對于負(fù)的溫度值,D101 T=-Temp的補碼*0.125oCLM75A主要應(yīng)用于系統(tǒng)溫度管理、個人計算機、電子設(shè)備

10、和工業(yè)控制器等地方,典型應(yīng)用實例為:圖 7 LM75A典型應(yīng)用5、 步進電機驅(qū)動原理步進電機是一種將電脈沖轉(zhuǎn)化為角位位移的執(zhí)行機構(gòu)。通俗一點講:當(dāng)步進驅(qū)動器接收到一個脈沖從頭到尾,它就驅(qū)動步進電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度(即步進角)。所以,我們可以通過控制脈沖個數(shù)來控制角位移量,從而達到準(zhǔn)確定位的目的,同時也可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)整的目的。本實驗中驅(qū)動電機的信號仍由PWM脈沖方波控制。原理圖如圖8所示。圖 8 步進電機驅(qū)動原理圖6、 程序框圖主程序初始化SysInit() 開啟16位定時器T0DispInit() 數(shù)據(jù)管顯示初始化 開啟中斷T1I2C

11、_Init() I2C總線協(xié)議初始化設(shè)定PWM,溫度初值讀取溫度顯示溫度掃描鍵盤判斷是否有鍵按下+,溫度cnt+更新DispBuf設(shè)置延時標(biāo)志flag的值中斷時間到蜂鳴器響0.5s-, 溫度cnt-判斷k更新溫度值判斷是否有鍵抬起掃描鍵盤有無無每1ms進入一次中斷(T1)中斷服務(wù)程序開始有更新掃描數(shù)據(jù)判斷延時標(biāo)志 flag為0 ,BUZZER取反比較cnt與temp,設(shè)置PwmValue值為差的絕對值若大則致熱燈亮若小則致冷燈亮相等則送風(fēng)燈亮中斷服務(wù)程序結(jié)束PwmValue的值控制脈沖寬度tPwmValuePWM = 0tPWM_MAXt = 0思考題: 設(shè)定溫度的按鍵改用外部中斷模式,電路如

12、何修改(畫示意圖)?程序如何修改,寫出中斷服務(wù)程序。答:將KEY1與KEY2鍵通過跳線分別接到INT0與INT1接口上。開啟中斷:SysInit() EA=0; /禁止總中斷 EX1=1; /使能/INT1中斷EX0=1; /使能/INT0中斷EA1; /使能總中斷中斷服務(wù)程序:void INT0SVC () interrupt 0if(cnt=17) cnt-; 示意圖七、 總結(jié)及心得體會 通過本實驗課程,我對中斷和定時有了較深入的了解,對單片機的認(rèn)識也進一步的提高。在編程的過程中,遇到了一些問題,本質(zhì)原因是因為對單片機的認(rèn)識不足,對工作機理不清楚,望文生義,從而導(dǎo)致一些程序行不通,不過最終

13、還是在老師和同學(xué)的幫助下,順利的完成了實驗。我想,對于語言來說,要想機器懂你,就必須遵守規(guī)則,所以,先弄懂是怎么運行的,再著手編程,會更順理成章一點。八、 對本實驗過程及方法、手段的改進建議無九、 附錄1、 學(xué)號+秒表+按鍵+電機的程序2、 溫度采集控制(數(shù)碼管+直流電機)程序附錄1:學(xué)號+秒表+按鍵+電機的程序/*main.c加減計數(shù)器*/#include #include #include /定義按鍵sbit KEY1 = P20;/按鍵1sbit KEY2 = P21;/按鍵2sbit BUZZER = P32;sbit PWM =P33;/定義PWM最大級數(shù)#define PWM_MA

14、X50/定義PWM級數(shù),分為0PWM_MAX-1級unsigned char cnt = 18;/定義計數(shù)器變量int flag=1;unsigned char PwmValue;unsigned char sec = 0;unsigned int count = 998;code unsigned char Tab =/定義0123456789AbCdEF的數(shù)碼管字型數(shù)據(jù)0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;unsigned char DispBuf8;/*函數(shù):KeyScan()功能:鍵盤掃描返回:掃描到的鍵值*/unsigne

15、d char KeyScan()unsigned char k = 0;if ( KEY1 = 0 ) k = +;if ( KEY2 = 0 ) k = -;return k;/*函數(shù):T1INTSVC()功能:定時器T1的中斷服務(wù)函數(shù)*/void T1INTSVC() interrupt 3code unsigned char com = 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;static unsigned char n = 0;static unsigned char t = 0;TR1 = 0;TH1 = 0xFC;TL1 = 0x66;TR1

16、 = 1;P1 = 0xFF;/暫停顯示XBYTE0xE800 = DispBufn;/更新掃描數(shù)據(jù)P1 = comn;/重新顯示n+; t+;n &= 0x07;if(flag=0)BUZZER=!BUZZER; if (n =8)n = 0;count +;/統(tǒng)計毫秒 /pwmcnt + ; if (count = 999)/一秒時間到sec +; count = 0;DispBuf4 = Tabsec / 10;/分離十位DispBuf3 = Tabsec % 10;/分離個位if (sec = 30)sec = 0; if(cntsec) PwmValue=cnt-sec;elsePw

17、mValue=sec-cnt;if ( t = PWM_MAX ) t = 0;if ( t = PwmValue)PWM = 1; elsePWM = 0; /*函數(shù):DispClear()功能:清除數(shù)碼管的所有顯示*/void DispClear()unsigned char i;for ( i=0; i0時,延時(t*0.01)st=0時,延時2.56s說明:晶振用11.0592MHz*/void Delay(unsigned char t)doTH0 = 0xDC;TL0 = 0x00;TR0 = 1;while ( !TF0 );TR0 = 0;TF0 = 0; while ( -t

18、 != 0 ); /*函數(shù):SysInit()功能:系統(tǒng)初始化*/void SysInit()TMOD &= 0xF0;TMOD |= 0x01;/設(shè)置定時器T0為16位定時器DispInit();/數(shù)碼管掃描顯示初始化PwmValue = PWM_MAX / 2;/設(shè)置PWM初值PWM = 1; /PWM管腳為高void main()unsigned char k;/定義鍵值變量SysInit();/系統(tǒng)初始化DispBuf7=Tab1;DispBuf6=Tab5;DispBuf1=Tabcnt/10;DispBuf0=Tabcnt%10;for (;)for (;)Delay(5);/延時

19、50msk = KeyScan();/鍵盤掃描if ( k != 0 )flag=0;Delay(50);flag=1; break; switch ( k )/判斷鍵值,執(zhí)行具體功能case +:if ( cnt 16 ) cnt-;break;default:break;DispBuf1=Tabcnt/10;DispBuf0=Tabcnt%10;for (;)Delay(5);/延時50msif ( KeyScan() = 0 ) break;/如果按鍵抬起,退出循環(huán)附錄2:溫度采集控制(數(shù)碼管+直流電機)程序/*main.cLM75A數(shù)字溫度計*/#include I2C.h#inclu

20、de #include #include #include /定義按鍵sbit KEY1 = P20;/按鍵1sbit KEY2 = P21;/按鍵2sbit BUZZER = P32;sbit PWM =P33;sbit LED0 = P22;sbit LED1 = P23;/定義LED由P0.0控制 /定義LED由P0.0控制 sbit LED2 = P24;/定義LED由P0.0控制 #define PWM_MAX50/定義PWM級數(shù),分為0PWM_MAX-1級unsigned char PwmValue;unsigned char cnt = 25;/定義計數(shù)器變量int flag=1

21、;unsigned int temp;code unsigned char Tab =/定義0123456789AbCdEF的數(shù)碼管字型數(shù)據(jù)0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;unsigned char DispBuf8;/*函數(shù):KeyScan()功能:鍵盤掃描返回:掃描到的鍵值*/unsigned char KeyScan()unsigned char k = 0;if ( KEY1 = 0 ) k = +;if ( KEY2 = 0 ) k = -;return k;/*函數(shù):T1INTSVC()功能:定時器T1的中斷服務(wù)函

22、數(shù)*/void T1INTSVC() interrupt 3code unsigned char com = 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;static unsigned char n = 0;static unsigned char t = 0;TR1 = 0;TH1 = 0xFC;TL1 = 0x66;TR1 = 1;P1 = 0xFF;/暫停顯示XBYTE0xE800 = DispBufn;/更新掃描數(shù)據(jù)P1 = comn;/重新顯示n+; t+;n &= 0x07;if(flag=0) BUZZER=!BUZZER; if (cnt=t

23、emp/8) LED2=0; LED1=1; LED0=1;if(cnttemp/8) PwmValue=cnt-temp/8;if(PwmValue1)LED0=0;LED1=1;LED2=1;if(cnt1)LED1=0;LED2=1;LED0=1;if ( t = PWM_MAX ) t = 0;if ( t = PwmValue)PWM = 1; elsePWM = 0; /*函數(shù):DispClear()功能:清除數(shù)碼管的所有顯示*/void DispClear()unsigned char i;for ( i=0; i0時,延時(t*0.01)st=0時,延時2.56s說明:晶振用1

24、1.0592MHz*/void Delay(unsigned char t)doTH0 = 0xDC;TL0 = 0x00;TR0 = 1;while ( !TF0 );TR0 = 0;TF0 = 0; while ( -t != 0 );/*函數(shù):SysInit()功能:系統(tǒng)初始化*/void SysInit()TMOD &= 0xF0;TMOD |= 0x01;/設(shè)置定時器T0為16位定時器DispInit();I2C_Init();/數(shù)碼管掃描顯示初始化PwmValue = PWM_MAX / 2;/設(shè)置PWM初值PWM = 1;/PWM管腳為高/*函數(shù):LM75A_GetTemp功能:讀出LM75A的溫度值返回:LM75A溫度寄存器的數(shù)值(乘以0.125可得到攝氏度值)*/in

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論