• 實驗目的•了解 DS1820數(shù)字溫度傳感器特性 •掌握單片機基本功能的運用、簡單接口電路如鍵盤、 LED顯示電路或LCD顯示電路設計及其相應驅動軟件的編制軟、硬件系統(tǒng)的調試
• 實驗任務設計一個具有基于DS1820數(shù)字溫度傳感器的溫度檢測及顯示的系統(tǒng)。要求系統(tǒng)具有以下功能: • 兩路溫度檢測; • 具有顯示功能; • 具有用戶輸入功能; • 可通過輸入補償溫度設定校準; • 實驗原理 原理簡述:數(shù)字溫度傳感器DS1820把溫度信息轉換為數(shù)字格式;通過“1-線協(xié)議”,單片機獲取指定傳感器的數(shù)字溫度信息,并顯示到顯示設備上。通過鍵盤,單片機可根據(jù)程序指令實現(xiàn)更靈活的功能,如單點檢測、輪轉檢測、越限檢測等;贒S1820數(shù)字溫度傳感器的溫度檢測及顯示的系統(tǒng)原理圖如圖1 | 圖 1 基于DS1820的溫度檢測系統(tǒng)框圖 |
• 硬件設計電路設計--單片機基本系統(tǒng)電路: | 圖 2 單片機基本系統(tǒng)電路原理圖 |
電路說明: 綜合考慮系統(tǒng)使用到的單片機內部存儲資源、系統(tǒng)處理信號的種類、處理數(shù)據(jù)的速度、系統(tǒng)的 I/O口開銷,以及系統(tǒng)的可擴展性能,本系統(tǒng)選用了ATMEL公司的8位低功耗,高性能CMOS單片機,芯片內集成有通用8位中央處理器(兼容標準MCS -51指令系統(tǒng)及80C51引腳結構)和4K/8K Bytes ISP Flash存儲單元(可實現(xiàn)在系統(tǒng)編程)。復位電路采用上電復位加按鍵復位的方式。采用無源晶體提供正弦振蕩信號為系統(tǒng)提供時鐘,其硬件原理圖如圖 2所示。 溫度檢測電路: 由于采用數(shù)字傳感器,電路不用考慮A/D轉換,只需設計指定某個I/O口作為與數(shù)字傳感器相連,電路原理圖如圖示。“1-線協(xié)議” 電路說明: DS18B20的數(shù)字溫度輸出通過 “ 一線 ” 總線( 1-Wire是被MAXIM公司收購的DALLAS公司新?lián)碛械囊环N獨特的數(shù)字信號總線協(xié)議,它將獨特的 電源線和信號線復合在一起,僅使用一條口線;每個芯片唯一編碼,支持聯(lián)網尋址、零功耗等待等,是所需硬件連線最少的一種總線)這種獨特的方式,使多個 DS18B20方便地組建成傳感器網絡,為整個測量系統(tǒng)的建立和組合提供了更大可能性。 DS18B20可以設置成兩種供電方式,即數(shù)據(jù)總線供電方式和外部供電方式。采取數(shù)據(jù)總線供電方式可以節(jié)省一根導線,但由此帶來的缺點是完成溫度測量的時間較長;而采取外部供電方式則多用一根導線,但測量速度較快。本設計采用一總線2路溫度測量使用外部供電,如圖3所示。 鍵盤控制電路: 電路說明: 為了節(jié)約系統(tǒng)硬件開銷,設計方案中鍵盤模塊沒有采用ZLG7289或者ZLG7290等專用的鍵盤控制芯片。使用普通的行列掃描鍵盤的優(yōu)點是沒有更多的外圍電路,缺點是如果軟件調試不當可能引起按鍵連擊,為系統(tǒng)的運行帶來不穩(wěn)定。系統(tǒng)使用鍵盤電路為四行四列16個按鍵的行列掃描式鍵盤,其電路原理圖如圖4所示。 從圖中的硬件連接看來,鍵盤接口并沒有增加任何其他的附加驅動電路,而是直接和單片機的引腳相連。操作時直接用程序設置單片機相應的端口驅動按鍵。 顯示電路: 電路說明: 采用四位共陰極動態(tài)LED顯示單元。LED動態(tài)顯示的基本做法在于分時輪流選通數(shù)碼管的公共端,使得各數(shù)碼管輪流導通,在選通相應LED后,即在顯示字段上得到顯示的字型碼。這種方式不但能夠提高數(shù)碼管的發(fā)光效率,而且由于各個數(shù)碼管的字段線是并聯(lián)使用的,從而大大簡化了硬件線路。 動態(tài)掃描顯示接口是單片機系統(tǒng)中應用最為廣泛的一種顯示方式。其接口電路是把所有顯示器的 8個筆畫段a~dp同名端并聯(lián)在一起,而每一個顯示器的公共極COM是各自獨立地受I/O控制的。MPU向字段輸出口送出字型碼時,所有顯示器由于同名端并聯(lián)連接收到相同的字型碼,但究竟是哪個顯示器亮,則取決于COM端,而這一端是通過MPU對I/O編程控制的,所以就可以自行決定何時那一位顯示器被點亮了。這兒所說的動態(tài)就是在基于COM端選擇,可編程的基礎上,采用分時的方法輪流控制各個顯示器的COM端,使各個顯示器輪流點亮。 在輪流點亮掃描過程中,每位顯示器的點亮時間是極為短暫的 (約1ms),由于人眼的視覺暫留現(xiàn)象及發(fā)光二極管的速度足夠快,給人的視覺誤差就是一組穩(wěn)定的顯示數(shù)據(jù),如果做的足夠好是不會有閃爍感。 與液晶顯示器相比,動態(tài) LED顯示單元具有軟件編寫簡單的優(yōu)點。但是其功耗比LCD顯示大,為了達到最佳的顯示效果,硬件連接必須考慮段和位驅動的電路的設計;其次LED在顯示刷新率,顯示穩(wěn)定性方面也不及LCD顯示。 在如圖 5的本設計方案中,使用的是四位共陰極LED顯示器。典型的硬件設計是使用74HC245提供段a~dp(圖中為PB1~PB8)的驅動,74LS139提供位COM1~COM4(圖中為LED1~LED4)的驅動。 使用雙向總線驅動器 74HC245作為段驅動,由于HC電路輸出電阻較大,外部可直接驅動而不需要限流電阻。位驅動使用2~4譯碼器,具有四個OC門輸出,輸出低電平有效,直接用來驅動四位公共陰極COM1~COM4。 • 軟件設計 1).軟件設計工具及調試環(huán)境 系統(tǒng)軟件采用 C語言開發(fā),與匯編相比,使用C語言開發(fā)單片機軟件系統(tǒng),具有程序的可讀性、易維護性和可移植性好,對硬件的控制能力強等特點,F(xiàn)代單片機集成大容量的程序存儲器一定程度上解決了部分C編譯器機器語言生成代碼效率低的缺點,解決代碼效率問題最重要的還是得靠編譯器性能得不斷提高。 KeilC51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng)。 KeilC51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調試工具,全Windows界面。另外重要的一點,通過查看編譯后生成的匯編代碼,我們就能體會到KeilC51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。C51中使用C語言編程與匯編語言編程相比,具有以下的優(yōu)勢。匯編語言雖然有執(zhí)行效率高的優(yōu)點,但其可移植性和可讀性差,以及本身就是一種編程效率低下的低級語言,這些都使它的編程和維護極不方便,從而導致整個系統(tǒng)的可靠性也較差。而使用C語言進行單片機應用系統(tǒng)的開發(fā),有著匯編語言不可比擬的優(yōu)勢。 當前較好的C語言編譯系統(tǒng)的編譯效率已經基本達到中高級程序開發(fā)人員的水平,尤其是用于開發(fā)較為復雜的單片機應用系統(tǒng)時更具優(yōu)勢。 2).主程序控制流程 在軟件的設計過程中,為了進一步提高軟件的透明度,作者將系統(tǒng)的一些功能菜單寫成子程序的形式供主程序(操作系統(tǒng))調用。此程序中主要包括系統(tǒng)開始狀態(tài)等待,系統(tǒng)工作模式選擇,多通道工作模式操作,單通道工作模式操作,通過鍵盤輸入 -9.99~+9.99之間的誤差數(shù)據(jù),通過鍵盤查詢和重置各通道的誤差量。 本文中詳細給出了操作子程序中部分功能模塊的流程圖,這樣有利于對系統(tǒng)工作的了解。 圖6給出了系統(tǒng)開始等待程序的流程圖,圖7中給出了系統(tǒng)工作模式選擇流程圖,圖8中給出了系統(tǒng)的主函數(shù)流程圖。 3).溫度檢測流程 DS18B20子程序是結合它的用戶使用資料編寫,主要完成的是初始化DS18B20,從DS18B20中讀出一個字節(jié)的數(shù)據(jù),向DS18B20中寫入一個字節(jié)的數(shù)據(jù),配置DS18B20包括警報溫度的上限和下限、溫度轉換的精度,讀出Scrachpad存儲器中的九個字節(jié)的數(shù)據(jù),讀出Rom中的64位Code值,對讀出的Scrachpad數(shù)據(jù)進行CRC校驗,然后根據(jù)讀出的數(shù)據(jù)得到測量出的十進制溫度值。從DS18B20中讀出九個字節(jié)數(shù)據(jù)的流程圖如圖9所示。 | 圖 9 從DS18B20中讀數(shù)據(jù)的流程圖 |
DS18B20數(shù)據(jù)的CRC校驗。為了解決單總線串行傳輸數(shù)據(jù)可能引起的錯誤,DS18B20內部具有產生CRC校驗碼電路,這樣程序員可以通過對讀出的數(shù)據(jù)進行CRC校驗碼,并用這個校驗碼和獲得的數(shù)據(jù)的最后一個字節(jié)比較,若兩者相同則證明數(shù)據(jù)傳送沒有錯誤,從而驗證通信過程中數(shù)據(jù)傳輸?shù)恼_性,使采集溫度信號的可靠性得到保證。 本系統(tǒng)中 CRC校驗在程序中是通過查表來實現(xiàn)。CRC校驗數(shù)據(jù)表保存在程序代碼中的一個一維數(shù)組中。 CRC檢驗的求法。M為一個k位長的信息幀。P為n+1位預先確定的用來生成校驗碼的二進制序列其最高位和最低位必須為1,DS18B20中使用的序列為:P = 1 0011 0001。F為n位FCS,即校驗碼序列。T為k+n位被傳輸?shù)膸R驗镕是接在M信息幀之后的,因此T=M · 2 n (2 n 為2的n次方)中,M · 2 n 相當于M左移n位,后面添n個零。設M · 2 n 除以P的商和余數(shù)分別是Q和R,則有M · 2 n =P · Q+R即M · 2 n /P=Q+R/P若設T=M · 2 n +R,則T定能被整除。因為按模2的加減運算相當于異或運算,故有T/P=(M · 2 n +R)/P=(M · 2 n )/P+R/P =Q+R/P+R/P=Q這樣一來,校驗碼序列F就是M · 2 n 除以P的余數(shù)R。通過計算可以得到 256個用于CRC檢驗的數(shù)據(jù)。 4).鍵盤控制 鍵盤處理子程序主要完成的是通過特定的設置按鍵端口的狀態(tài),并對端口狀態(tài)進行檢測,然后為按鍵設置特定的值,為主程序提供執(zhí)行判決。需考慮多鍵按下和去抖動的問題。圖 10給出了鍵盤掃描的程序流程圖。 5).顯示控制: 系統(tǒng)硬件選擇的是四段共陰極 LED動態(tài)顯示,LED顯示子程序主要是完成對設定的LED段,并通過查七段碼表,使它顯示制定的圖樣。圖11中描述的是通過選定一段數(shù)碼管,顯示數(shù)據(jù)的程序流程圖。 6).數(shù)據(jù)處理 完成數(shù)據(jù)格式的轉換、保存;設置誤差值的補償?shù)葦?shù)據(jù)操作。根據(jù)不同的應用要求定制,在此不作強制定義。 • 思考題 1、LED動態(tài)顯示時顯示的亮度與什么物理量有關? 2、顯示刷新率(單位時間內顯示數(shù)據(jù)改變的次數(shù))和顯示穩(wěn)定性(閃爍感越。┲g的關系? 3、通過怎樣的方法解決顯示刷新率和顯示穩(wěn)定性之間的關系? 4、你有什么好的硬件方案解決LED顯示的驅動(增加流過LED段的電流)問題,請給出電路圖? 5、LCD顯示和動態(tài)LED顯示的區(qū)別? 6、在單片機的RAM中,30H單元存放著一個無符號類型數(shù)據(jù),請你通過編程得到這個數(shù)各位上的數(shù)字?如果是一個有符號數(shù)呢?如果是一個壓縮BCD編碼的數(shù)呢?
7、如果你使用的單片機系統(tǒng)沒有在線編程調試器(有程序燒寫器),你有什么樣的辦法在軟硬件聯(lián)調時,以最快的速度找出問題出在那個地方?
8、如果單片機的GPIO口線在硬件連接時已經連接到高電平或者低電平,在進行軟件編程時,你可以把這個口線用軟件進行置低或者置高嗎?
9、請你說說單片機和PC機的相似和差別,并就工業(yè)運用中單片機和PC機相比存在那些優(yōu)勢和不足,并就這個談談單片機的生命力在哪兒?
10、請結合DS18B20的用戶資料,和相關的設計報告,說說單總線的通信協(xié)議?
|