基于8255的溫度顯示_第1頁
基于8255的溫度顯示_第2頁
基于8255的溫度顯示_第3頁
基于8255的溫度顯示_第4頁
基于8255的溫度顯示_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗報告(2011/2012學年第二學期)題目:基于8255的8E顯示溫度控制器設計專業學生姓名班級學號授課教師林建中授課單位南京郵電大學日期 2012年5月目錄第一部分實驗目的及要求:31實驗目的32.實驗要求3第二部分實驗工具及實驗器件41.Proteus7.4以及Keil 2軟件的使用42.51單片機AT89c51。63.數字溫度傳感器DS18B2064.DS18B20的操作方式75.可編程并行I/O接口芯片8255 A86.74HC373 鎖存器97.8LED液晶顯示器件7SEG-MPX8-CC-BLUE10第三部分實驗原理及程序代碼:101.硬件部分電路設計圖102.軟件部分設計11

2、第四部分實驗測試結果18第五部分實驗小結和體會20第一部分實驗目的及要求:1實驗目的本課程設計在理論課程的基礎上,重點培養學生的動手能力,通過理論計算、實際編程、調試、測試、分析查找故障,解決在實際設計中的問題,使設計好的電路能正常工作,為下一步結合實際的硬件系統設計準備條件2. 實驗要求基本要求:用熱敏電阻或溫度傳感器作溫度探頭,通過AD轉換器變換,把溫度數據在LED上顯示。 1、顯示精度±0。5 2、能記錄和回放溫度參數,記錄間隔可任意設定(1S到1h,步長1s) 3、回放數據速度可設定 4、畫出溫度變化曲線。發揮部分:1、顯示精度提高到±0。1 2、顯示精度提高到&#

3、177;0。013、與實際溫度計溫度比較,找出溫度顯示誤差曲線,在報告中描出,并分析誤差來源4、實現溫度自動補賞動態顯示格式:8LED動態顯示第二部分實驗工具及實驗器件1. Proteus7.4以及Keil 2軟件的使用Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風標電子技術有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發應用的科技工作者的青睞。Proteus是世界上著名

4、的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,一鍵切換到PCB設計,真正實現了從概念到產品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。在PROTEUS繪制好原理圖后,調入已編譯好的目標代碼文件:*.HEX,可以在PROTEUS的原理圖中看到模

5、擬的實物運行狀態和過程。而*.HEX文件則由Keil軟件編譯后生成。Keil uVision2是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,使用接近于傳統c語言的語法來開發,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用,而且大大的提高了工作效率和項目開發周期,他還能嵌入匯編,您可以在關鍵的位置嵌入,使程序達到接近于匯編的工作效率。KEILC51標準C編譯器為8051微控制器的軟件開發提供了C語言環境,同時保留了匯編代碼高效,快速的特點。C51編譯器的功能不斷增強,使你可以更加貼近CPU本身,及其它的衍生產品。C51已被完全集

6、成到uVision2的集成開發環境中,這個集成開發環境包含:編譯器,匯編器,實時操作系統,項目管理器,調試器。uVision2 IDE可為它們提供單一而靈活的開發環境。Keil C51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面,使您能在很短的時間內就能學會使用keil c51來開發您的單片機應用程序。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。有了proteus和keil 我們就需要在這兩個軟件中建立我們所需要的工程進行實驗,具體

7、步驟如下:第一步:在Keil2中建立一個新的工程,并命名,第二步:選擇使用的單片機芯片,我們選擇80c31,第三步:將新創建的.c文件添加到Target中。這樣我們就可以在keil2的環境下對單片機的程序進行編譯和運行了。2. 51單片機AT89c51AT89C51是一種帶4K字節FLASH存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL

8、高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。AT89C51 提供以下標準功能:4k 字節Flash 閃速存儲器,128字節內部RAM,32 個I/O 口線,兩個16位定時/計數器,一個5向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時,AT89C51可降至0Hz的靜態邏輯操作,并支持兩種軟件可選的節電工作模式??臻e方式停止CPU的工作,但允

9、許RAM,定時/計數器,串行通信口及中斷系統繼續工作。掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。主要特性:·與MCS-51 兼容 ·4K字節可編程FLASH存儲器 ·壽命:1000寫/擦循環 ·數據保留時間:10年 ·全靜態工作:0Hz-24MHz ·三級程序存儲器鎖定 ·128×8位內部RAM ·32可編程I/O線 ·兩個16位定時器/計數器 ·5個中斷源 ·可編程串行通道 ·低功耗的閑置和掉電模式 ·片內振蕩

10、器和時鐘電路管腳說明:VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須接上拉電阻。 P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為低八

11、位地址接收。 P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫

12、入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為AT89C51的一些特殊功能口,如下表所示: 口管腳 備選功能 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0) P3.3 /INT1(外部中斷1) P3.4 T0(記時器0外部輸入) P3.5 T1(記時器1外部輸入) P3.6 /WR(外部數據存儲器寫選通) P3.7 /RD(外部數據存儲器讀選通) P3口同時為閃爍編程和編程校驗接收一些控制信號。 RST:復位輸入。當振蕩器復位器件時,要保持RST腳

13、兩個機器周期的高電平時間。 ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機

14、器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。 /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。3. 數字溫度傳感器芯片DS18B20DS18B20是Dallas公司生產的單總線數字溫度傳感器芯片,具有3腳TO-92小體積封裝形式;溫度測

15、量范圍為-55+125;可編程為912位A/D轉換精度;用戶可自設定非易失性的報警上下限值;被測溫度用16位補碼方式串行輸出;測溫分辨率可達0.0625;其工作電壓既可在遠端引入,也可采用寄生電源方式產生;多個DS18B20可以并聯到3根或兩根線上,CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少??蓮V泛應用于工業、民用、軍事等領域的溫度測量及控制儀器、測控系統和大型設備中。4. DS18B20的操作方式DS18B20詳細引腳功能描述1 GND地信號;2 DQ數據輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源;3 VDD可選擇的VDD引腳

16、。當工作于寄生電源時,此引腳必須接地。DS18B20的使用方法。由于DS18B20采用的是1Wire總線協議方式,即在一根數據線實現數據的雙向傳輸,而對AT89S51單片機來說,我們必須采用軟件的方法來模擬單總線的協議時序來完成對DS18B20芯片的訪問。由于DS18B20是在一根I/O線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。DS18B20有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。該協議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從設備。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數據,在

17、進行寫命令后,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。5. 可編程并行I/O接口芯片8255 A8255是Intel公司生產的可編程并行I/O接口芯片,有3個8位并行I/O口。具有3個通道3種工作方式的可編程并行接口芯片(40引腳)。其各口功能可由軟件選擇,使用靈活,通用性強。8255可作為單片機與多種外設連接時的中間接口電路。8255作為主機與外設的連接芯片,必須提供與主機相連的3個總線接口,即數據線、地址線、控制線接口。同時必須具有與外設連接的接口A、B、C口。由于8255可編程,所以必須具有邏輯控制部分,因而8255內部結構分為3個部分:與CPU連接部分、與外設連接部

18、分、控制部分。引腳功能:RESET:復位輸入線,當該輸入端處于高電平時,所有內部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。CS:芯片選擇信號線,當這個輸入引腳為低電平時,即/CS=0時,表示芯片被選中,允許8255與CPU進行通訊;/CS=1時,8255無法與CPU做數據傳輸. RD:讀信號線,當這個輸入引腳為低電平時,即/RD=0且/CS=0時,允許8255通過數據總線向CPU發送數據或狀態信息,即CPU從8255讀取信息或數據。WR:寫入信號,當這個輸入引腳為低電平時,即/WR=0且/CS=0時,允許CPU將數據或控制字寫入8255。D0D7:三態雙向數據總線,825

19、5與CPU數據傳送的通道,當CPU 執行輸入輸出指令時,通過它實現8位數據的讀/寫操作,控制字和狀態信息也通過數據總線傳送。8255具有3個相互獨立的輸入/輸出通道端口,用+5V單電源供電,能在一下三種方式下工作。方式0基本輸入輸出方式;方式1選通輸入/出方式;方式三雙向選通輸入/輸出方式;PA0PA7:端口A輸入輸出線,一個8位的數據輸出鎖存器/緩沖器,一個8位的數據輸入鎖存器。工作于三種方式中的任何一種;PB0PB7:端口B輸入輸出線,一個8位的I/O鎖存器,一個8位的輸入輸出緩沖器。不能工作于方式二;PC0PC7:端口C輸入輸出線,一個8位的數據輸出鎖存器/緩沖器,一個8位的數據輸入緩沖

20、器。端口C可以通過工作方式設定而分成2個4位的端口,每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態信號輸入端口。'不能工作于方式一或二。A1,A0:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器. 當A1=0,A0=0時,PA口被選擇; 當A1=0,A0=1時,PB口被選擇; 當A1=1,A0=0時,PC口被選擇; 當A1=1.A0=1時,控制寄存器被選擇.6. 74HC373 鎖存器當三態允許控制端 OE 為低電平時,O0O7 為正常邏輯狀態,可用來驅動負載或總線。當 OE 為高電平時,O0O7 呈高阻態,即不驅動總線,也

21、不為總線的負載,但鎖存器內部的邏輯操作不受影響。當鎖存允許端 LE 為高電平時,O 隨數據 D 而變。當 LE 為低電平時,O 被鎖存在已建立的數據電平。當 LE 端施密特觸發器的輸入滯后作用,使交流和直流噪聲抗擾度被改善 400mV。引出端符號:D0D7 數據輸入端OE 三態允許控制端(低電平有效)LE 鎖存允許端O0O7 輸出端真值表:DnLEOEOnHHLHLHLLXLLQ0XXH高阻態7. 8LED液晶顯示器件7SEG-MPX8-CC-BLUE此為8位共陰極數碼管。第三部分實驗原理及程序代碼:1. 硬件部分電路設計圖電路圖如圖:2. 軟件部分設計#include "reg51

22、.h"#include "intrins.h"#include "absacc.h"#define COM8255 XBYTE0x7fff /8255端口地址#define PA8255 XBYTE0x7ffc#define PB8255 XBYTE0x7ffd#define PC8255 XBYTE0x7ffeconst unsigned char code SEG_CODE=0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,;const unsigned char code DECIMAL_

23、TEMPERATURE=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9; / 從DS19B20 得小數部分對應表 sbit DQ = P10; /數據通信線sbit key1=P15; sbit key2=P16;unsigned int temperature;/測量溫度bit fg=0; /溫度正負標志unsigned int data tabl10;/溫度數據庫unsigned char data tab210;unsigned int clock=0,num=0;/ 步長控制unsigned char rolling=0;bit back=0;void delay(un

24、signed int n); /延遲 n 毫秒void TxReset(void); /產生復位脈沖初始化DS18B20void RxWait(void); /等待應答脈沖bit RdBit (void); /讀取數據的一位,滿足讀時隙要求unsigned char RdByte(void); /讀取數據的一個字節void WrByte(unsigned char b); /寫數據的一個字節,滿足寫1和寫0的時隙要求void convert(void); /啟動溫度轉換void RdTemp(void); /讀取溫度void Display(void);void Initialization(

25、void); /初始化子程序void Record(void);void Backdisplay(void); void main()unsigned char i; COM8255=0x80;Initialization();while(1)while(back)TR0=1;convert();for(i=1;i<10;i+)Display();RdTemp();Record();if(key1=0)delay(10);if(key1=0)back=back; while(!key1);while(back)TR0=0;Backdisplay();if(key1=0)delay(10)

26、;if(key1=0)back=back; while(!key1);if(key2=0)delay(10);if(key2=0)rolling+;rolling=rolling%10; while(!key2); void delay(unsigned int n) /延遲 n 毫秒unsigned char i;while(n-) for(i=0;i<110;i+); void TxReset(void) /產生復位脈沖初始化DS18B20unsigned int i;DQ = 0; /拉低約900usi = 100;while (i>0) i-;DQ = 1; /產生上升沿i

27、 = 4;while (i>0) i-;void RxWait(void)/等待應答脈沖unsigned int i;while (DQ);while (DQ);/檢測到應答脈沖i = 4;while (i>0) i-;bit RdBit (void) /讀取數據的一位,滿足讀時隙要求unsigned int i;bit b;DQ = 0;i+;DQ = 1;i+;i+;b = DQ;i=8;while (i>0) i-;return(b);unsigned char RdByte(void) /讀取數據的一個字節unsigned char i,j,b;b=0;for (i=

28、1;i<=8;i+)j =RdBit();b = (j<<7)|(b>>1); return(b);void WrByte(unsigned char b) /寫數據的一個字節,滿足寫1和寫0的時隙要求unsigned int i;unsigned char j;bit btmp;for (j=1;j<=8;j+)btmp = b&0x01;b = b>>1;if(btmp) /寫1DQ = 0;i+;i+;DQ = 1;i = 8;while(i>0) i-;else/寫0DQ = 0;i = 8;while (i>0)i-

29、;DQ = 1;i+;i+;void convert(void) /啟動溫度轉換TxReset();RxWait();delay(1);WrByte(0xcc); /skip ROM命令 WrByte(0x44); /convert T命令void RdTemp(void)/讀取溫度unsigned char a,b; TxReset();RxWait();delay(1);WrByte(0xcc); WrByte(0xbe);a = RdByte();/溫度值低位字節b = RdByte();/溫度值高位字節temperature = b;temperature<<=8;temp

30、erature = temperature|a;if(temperature<0x0fff)/判斷溫度正負,若為正,直接顯示,否則取補碼fg=0; elsetemperature = temperature+1;fg=1;void Display(void) if(fg=0) /溫度為正時顯示的數據 PB8255=0xfe; /第一個數碼管 PA8255=0x00; /不顯示 delay(2); PB8255=0xfd; /第二個 PA8255=SEG_CODE(temperature>>4)/10; /輸出十位數 delay(2);PB8255=0xfb; /第三個 PA8

31、255=SEG_CODE(temperature>>4)%10|0x80; /輸出個位和小數點 delay(2); PB8255=0xf7; /第四個 PA8255=SEG_CODEDECIMAL_TEMPERATUREtemperature&0xf; delay(2); if(fg=1) /溫度為負時顯示的數據 PB8255=0xfe; /第一個數碼管 PA8255=0x40; /負號 delay(2);PB8255=0xfd; /第二個數碼管 PA8255=SEG_CODE(temperature>>4)/10; /輸出十位數 delay(2);PB8255

32、=0xfb; /第三個 PA8255=SEG_CODE(temperature>>4)%10|0x80; /輸出個位和小數點 delay(2); PB8255=0xf7; /第四個 PA8255=SEG_CODEDECIMAL_TEMPERATUREtemperature&0xf; delay(2); void Initialization()COM8255=0x80;TMOD=0X02;/定時器方式2,初值重裝,8位 28=256;TH0=6;/初值,12MHz晶振,250us.TL0=6;EA=1;/開總中斷ET0=1;/開定時中斷TR0=1;/啟動定時器0 void T0_time() interrupt 1 /定時中斷clock+;void Record(void)if(clock>=12000)clock=0; /計數滿足1s,歸零num=num%10; /記錄數據tablnum=temperature<<1;if(fg)tablnum=tablnum+1;num+;void Backd

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論