摘 要:在工業生產和日常生活中,有的時候迫切需要知道某種環境、某種物體的溫度,而且需要將它記錄下來。更高的要求是,需要每隔一段時間記錄時間與溫度,將溫度上傳到PC機進行分析計算……。本方案討論了使用凌陽科技公司的高性能SPCE061A單片機作為主控制器,采用一線制數字溫度傳感器DS18B20作為溫度傳感器,采用液晶1602作為顯示器件,采用凌陽科技公司的SPR1024作為數據存儲器的應用方案。該方案實現了目標溫度的測量、顯示、存儲與PC機傳輸數據的功能,體現了SPCE061A強大的功能。
關鍵詞:測溫;單片機;SPCE061A;SPR1024;DS18B20;液晶1602;DS18B20
1 引言
在工業生產和日常生活中,有的時候迫切需要知道某種環境、某種物體的溫度,而且需要將它記錄下來。更高的要求是,需要每隔一段時間記錄時間與溫度,將溫度上傳到PC機進行分析計算……。本方案討論了使用凌陽科技公司的高性能SPCE061A單片機作為主控制器,采用一線制數字溫度傳感器DS18B20作為溫度傳感器,采用液晶1602作為顯示器件,采用凌陽科技公司的SPR1024作為數據存儲器的應用方案。該方案實現了目標溫度的測量、顯示、存儲與PC機傳輸數據的功能,體現了SPCE061A強大的功能。
2 技術指標及方案可行性論證
2.1 系統的技術指標
本系統的技術指標要求如下:
1. 采集溫度,精度達到0.1℃;
2. 實時顯示溫度;
3. 具有溫度數據存儲功能,每隔10分鐘存儲一次,并且在存儲的過程中通過液晶提示,要求可以存儲30天的數據;
4. 具有UART通訊功能,可以將采集的溫度實時的上傳到PC機。
2.2 可行性論證
考慮到性價比,開發工具等等,選擇凌陽SPCE061A作為主控制器。根據系統的技術指標,選擇DS18B20作為溫度傳感器。該溫度傳感器具有多種精度測溫模式,其中11位精度的測溫模式可以達到0.0625的精度要求,滿足系統的精度要求。采用液晶1602來顯示溫度,該液晶具有很好的性價比,為16*2的字符型液晶,驅動簡單,可以進行實時顯示。為了可以存儲數據,外擴凌陽科技公司的SPR1024串行Flash作為存儲器。該存儲器為128K*8 bit的flash,系統要求每隔10分鐘存儲數據一次,30天共需存儲30(天)*24(小時)*6(每小時6次)為4320次數據,由于數據為11位分為高低字節存放,共需要4320(次)*2(字節)為8640(字節),所以SPR1024完全滿足要求,而且具有余量,可以進行擴展,例如將溫度的時間也保存到SPR1024中,或者提高存儲的頻率,每隔5分鐘存儲一次等等。UART功能為SPCE061A具有的功能,擴展一個電平轉換電路就可以實現與PC機通訊。綜上所述,系統方案可行。
3 系統所用模塊簡介
本系統采用SPCE061A單片機作為主控制器,DS18B20作為溫度傳感器,SPR1024作為存儲器件,液晶1602作為顯示器件,下面將依次介紹這些模塊。
3.1 SPCE061A芯片特性
3.1.1 SPCE061A簡介
SPCE061A是凌陽科技研發生產的性價比很高的一款十六位單片機,該芯片擁有8路10位精度的ADC,兩路10精度的DAC,只需要外接功放(SPY0030A)即可完成語音的播放。另外凌陽十六位單片機具有易學易用的效率較高的一套指令系統和集成開發環境。在此環境中,支持標準C語言,可以實現C語言與凌陽匯編語言的互相調用為軟件開發提供了方便的條件。
SPCE061A片內還集成了一個ICE(在線仿真電路)接口,使得對該芯片的編程、仿真都變得非常方便,而ICE接口不占用芯片上的硬件資源,結合凌陽科技提供的集成開發環境(unSP IDE)用戶可以利用它對芯片進行真實的仿真;而程序的下載(燒寫)也是通過該接口進行下載。
下圖為SPCE061A單片機的內部結構框圖:

圖 3.1 SPCE061A內部結構圖
3.1.2 芯片特性
· 16位μ'nSP微處理器;
· 工作電壓:內核工作電壓VDD為3.0~3.6V(CPU),IO口工作電壓VDDH為VDD~5.5V(I/O);
· CPU時鐘:0.32MHz~49.152MHz;
· 內置2K字SRAM;
· 內置32K閃存ROM;
· 可編程音頻處理;
· 晶體振蕩器;
· 系統處于備用狀態下(時鐘處于停止狀態),耗電小于2μA@3.6V;
· 2個16位可編程定時器/計數器(可自動預置初始計數值);
· 2個10位DAC(數-模轉換)輸出通道;
· 32位通用可編程輸入/輸出端口;
· 14個中斷源可來自定時器A / B,時基,2個外部時鐘源輸入,鍵喚醒;
· 具備觸鍵喚醒的功能;
· 使用凌陽音頻編碼SACM_S240方式(2.4K位/秒),能容納210秒的語音數據;
· 鎖相環PLL振蕩器提供系統時鐘信號;
· 32768Hz實時時鐘;
· 7通道10位電壓模-數轉換器(ADC)和單通道聲音模-數轉換器;
· 聲音模-數轉換器輸入通道內置麥克風放大器和自動增益控制(AGC)功能;
· 具備串行設備接口;
· 低電壓復位(LVR)功和低電壓監測(LVD)功能;
· 內置在線仿真(ICE,In- Circuit Emulator)接口。
3.2 SPCE061A精簡開發板
SPCE061A精簡開發板(簡稱61板),是以凌陽16位單片機SPCE061A為核心的精簡開發-仿真-實驗板,大小相當于一張撲克牌,是"凌陽科技大學計劃"專為大學生、電子愛好者等進行電子實習、課程設計、畢業設計、電子制作及電子競賽所設計的,也可作為單片機項目初期研發使用。61板除了具備單片機最小系統電路外,還包括有電源電路、音頻電路(含MIC輸入部分和DAC音頻輸出部分)、復位電路等,采用電池供電,方便學生隨身攜帶!!!使學生在掌握軟件的同時,熟悉單片機硬件的設計制作,鍛煉學生的動手能力,也為單片機學習者和開發者創造了一個良好的學習條件和開發新產品的機會! 61板上有調試器接口(Probe接口)以及下載線(EZ_Probe)接口,分別可接凌陽科技的在線調試器、簡易下載線,配合unSP IDE,可方便地在板上實現程序的下載、在線仿真調試。
61板上的主要功能模塊如下:
· SPCE061A單片機最小系統外圍電路模塊;
· 電源輸入模塊;
· 音頻電路(包含MIC輸入、DAC音頻功放輸出)模塊;
· 按鍵模塊;
· I/O端口接口模塊;
· 調試、下載接口模塊;
下圖為61板的實物圖:

圖 3.2 61板實物圖
3.3 DS18B20溫度傳感器簡介
3.3.1 簡介
DS18B20是DALLAS公司生產的一線式數字溫度傳感器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55℃~+125℃,可編程為9位~12位A/D轉換精度,測溫分辨率可達0.0625℃,被測溫度用符號擴展的16位數字量方式串行輸出;其工作電源既可在遠端引入,也可采用寄生電源方式產生;多個DS18B20可以并聯到3根或2根線上,CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節省大量的引線和邏輯電路。以上特點使DS18B20非常適用于遠距離多點溫度檢測系統。
3.3.2 DS18B20的內部結構
DS18B20內部結構圖 3.3所示,主要由4部分組成:64位ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。DS18B20的管腳排列如圖 3.4所示,DQ為數字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時接地,見圖 3.9)。

圖 3.3 DS18B20內部結構

圖 3.4 DS18B20封裝形式
ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個DS18B20的64位序列號均不相同。64位ROM排放循環冗余校驗碼(CRC=X8+X5+X4+1)。ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。
DS18B20中的溫度傳感器完成對溫度的測量,用16位符號擴展的二進制補碼讀數形式提供,以0.0625℃/LSB形式表達,其中S為符號位。例如+125℃的數字輸出為07D0H,+25.0625℃的數字輸出為0191H,-25.0625℃的數字輸出為FF6FH,-55℃的數字輸出為FC90H。
3.3.3 DS18B20的工作時序
DS18B20的一線工作協議流程是:初始化→ROM操作指令→存儲器操作指令→數據傳輸。其工作時序包括初始化時序、寫時序和讀時序,如圖 3.5、圖 3.6和圖 3.7所示。
圖 3.5 初始化時序
圖 3.6 寫時序
圖 3.7 讀時序
3.3.4 DS18B20與單片機的典型接口設計
可以采用外接電源與寄生電源供電(就是供電電源從數據線上得到):
圖 3.8 外接電源供電
圖 3.9 寄生電源供電
3.4 SPR1024 Flash簡介
3.4.1 芯片簡介
SPR1024是128K*8bit的高性能Flash,內嵌有并行總線接口(BMI Bus Memory Interface)和串行總線接口(SIF Serial Interface)。工作電壓在2.7V-3.6V,工作頻率達到5MHz,最大讀操作電流1mA,最大寫操作/擦除電流4mA。在串行模式下,可以與SPCE061A單片機通過SIO方便連接。
3.4.2 芯片內部結構
圖 3.10 SPR1024內部結構
更詳細資料參考SPR1024 DataSheet。
3.5 液晶1602簡介
3.5.1 技術參數
顯示容量:32個字符,每個字符為5*7點陣,分2行,每行16列
芯片工作電壓:4.5-5.5V
工作電流:2mA(5.0V)
模塊最佳工作電壓:5.0V
字符尺寸:2.95*4.35(W*H)mm
3.5.2 接口信號說明
接口 | 編號 | 引腳說明 | 接口 | 編號 | 引腳說明 |
1 | VSS | 電源地 | 9 | D2 | DATA I/O |
2 | VDD | 電源正極 | 10 | D3 | DATA I/O |
3 | VL | 液晶顯示偏壓信號 | 11 | D4 | DATA I/O |
4 | RS | 數據/命令選擇端(H/L) | 12 | D5 | DATA I/O |
5 | R/W | 讀/寫選擇端(H/L) | 13 | D6 | DATA I/O |
6 | EP | 使能信號 | 14 | D7 | DATA I/O |
7 | D0 | DATA I/O | 15 | BLA | 背光源正極 |
8 | D1 | DATA I/O | 16 | BLK | 背光源負極 |
3.5.3 讀寫時序
讀操作時序
圖 3.11讀操作時序
圖 3.12 寫操作時序
時序參數:

3.5.4 典型應用
圖 3.13 1602與單片機典型接口
4 系統總體方案介紹
本系統由一塊SPCE061A精簡開發板(61板)、一線制數字溫度傳感器DS18B20、128K*8bit Flash SPR1024、液晶1602和外擴UART串口電平轉換電路組成,可以實現溫度的測量、顯示、存儲與PC機通訊等功能。此系統以SPCE061A為核心,由測溫模塊、顯示模塊、存儲模塊等構成。
硬件結構框圖如圖 4.1所示。
圖 4.1 硬件結構圖
SPCE061A與其它器件連接圖:

圖 4.2系統連線圖
5 系統硬件設計
5.1 SPCE061A周邊模塊
5.1.1 SPCE061A最小系統
SPCE061A最小系統當中,包括SPCE061A芯片外圍的基本模塊,有:晶振輸入模塊(OSC)、鎖相環外圍電路(PLL)、復位電路(RESET)、指示燈(LED)等,如下圖所示。
圖 5.1 SPCE061A最小系統
本系統,有關SPCE061A單片機的最小系統的各個模塊都做在61板當中,讀者可以查閱61板的電路原理圖。
5.1.2 電源模塊
SPCE061A的內核供電為3.3V,而I/O端口可接3.3V也可以接5V,所以在電源模塊(61板上)中有一個端口電平選擇跳線,如圖中的J5,下圖為61板上的電源模塊圖。
圖 5.2 電源模塊
5.2 DS18B20電路連接
由于DS18B20是一線制數字溫度傳感器,在與SPCE061A連接的時候非常的方便。
圖 5.3DS18B20的電路
5.3 液晶1602電路連接
由于液晶1602已經是一個模塊,在這里只介紹與61板的連線圖:
圖 5.4液晶1602與61板連線
5.4 SPR1024電路連接
參考下面的電路圖:
圖 5.5 SPR1024電路圖
6 系統軟件設計
6.1 主程序設計
主程序流程如圖 6.1所示。
圖 6.1 主程序流程圖
主函數比較簡單,在程序開始后將系統時鐘調到24.576M,程序中操作液晶1602與DS18B20需要嚴格的讀寫控制時許,其中軟件延時就是按照這個時鐘計算的。然后初始化IO端口,打開2Hz中斷,為了定時10分鐘做準備。調用開機顯示界面,在液晶1602上顯示www.unsp.com.cn/TEL62981668-2965字樣,持續一段時間,重新初始化液晶1602,初始化SIO與UART,為使用SIO,UART做準備。然后進入循環,調用測溫函數測溫,調用顯示函數顯示,調用發送數據函數發送數據,判斷是否是設定的時間(10分鐘),如果是調用存儲函數存儲數據,如果不是直接執行下一步清看門狗操作,然后繼續循環。
6.2 子程序的設計
6.2.1 測溫子程序
圖 6.2 測溫子程序子程序
在測溫時首先設置DS18B20的DQ為高電平,然后初始化DS18B20,在成功后DS18B20接收單片機的命令,為了簡單起見這里跳過ROM命令設置匹配過程,然后再次初始化DS18B20在成功后啟動測溫,然后將溫度保存起來,返回。其中讀寫DS18B20的驅動程序在DS18B20.c文件中,可以參考DS18B20的讀寫時序圖來理解程序。
6.2.2 顯示子程序
在測得溫度后,將溫度數據轉換為十進制數的溫度表示,然后再通過查表(在c語言中是一個數組,參考程序中在Display函數中,Data[10]數組)調用液晶1602顯示在液晶上,這里面比較簡單,數據處理類似于由二進制轉換為十進制,再由十進制轉換為ASCII碼,讀者可以參考相關的說明。液晶顯示驅動程序在LCD1602_Driver .asm 文件中。
6.2.3 存儲子程序
調用SPR1024的用戶函數,完成存儲功能,存儲的數據沒有經過轉換,只是將溫度數據分為高低字節分兩次存儲。SPR1024的驅動程序在SPR1024_Driver.asm文件中。
6.2.4 UART通訊子程序
通訊子程序采用查詢的方法,數據格式為先發數據0xAA,然后是溫度數據的高字節,溫度數據的低字節,最后是0x55結束。UART操作的函數在UART.c文件中。
6.2.5 中斷的處理
在程序中打開2Hz的中斷作為計時使用,設置全局變量g_Min10為計數器,每進入中斷一次計數加一。在主函數中判斷是否到預定值(10分鐘),如果到了,將變量清0,重新開始計數。
7 結語
本系統以SPCE061A單片機為控制核心,利用其強大的處理能力,以及豐富的外圍接口,再配合DS18B20溫度傳感器、液晶1602、SPR1024,很好的完成了溫度的測量、顯示、存儲與PC機通訊的功能,為溫度系統的實現提供了一種解決方案。
SPCE061A的IOA口低8位還沒有使用,IOB口的許多IO口也沒有使用,可以擴展1*8或4*4鍵盤增加人機交互功能,實現溫度的查詢。在外擴時間芯片可以記錄溫度的時間,這樣整個系統具有更加實用的意義。