版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p><b> 目錄1</b></p><p><b> 摘要2</b></p><p><b> 關(guān)鍵詞:3</b></p><p><b> 第一章 引言3</b&g
2、t;</p><p> 第二章 硬件系統(tǒng)設(shè)置5</p><p> 2.1系統(tǒng)原理圖5</p><p> 2.2模塊硬件電路圖5</p><p> 2.2.1電源模塊5</p><p> 2.2.2DS18B20模塊6</p><p> 2.2.3排針模塊6</p&g
3、t;<p> 2.2.4 LED顯示模塊7</p><p> 2.2.5 ISD1420語(yǔ)音模塊7</p><p> 2.3芯片資料介紹8</p><p> 2.3.1 89C52單片機(jī)8</p><p> 2.3.2 DS18B20芯片10</p><p> 2.3.3 ISD14
4、20芯片13</p><p> 2.3.4 LED數(shù)碼管15</p><p> 2.3.5 74HC273芯片17</p><p> 2.3.6 74HC32芯片17</p><p> 第三章 軟件系統(tǒng)設(shè)置18</p><p><b> 程序流程圖18</b></p&
5、gt;<p><b> 主程序流程圖18</b></p><p> 詳細(xì)的整體程圖19</p><p> DS18B20溫度采集模塊19</p><p> ISD1420語(yǔ)音模塊流程圖20</p><p> LED顯示模塊流程圖20</p><p> java程
6、序繪圖流程圖21</p><p><b> 參數(shù)信息21</b></p><p> 第四章 課程設(shè)計(jì)總結(jié)22</p><p><b> 人員分工22</b></p><p><b> 總結(jié)22</b></p><p> 軟件延時(shí)與定時(shí)
7、器計(jì)時(shí)22</p><p> 模塊化及團(tuán)隊(duì)合作22</p><p> 關(guān)于本次課程設(shè)計(jì)23</p><p> 調(diào)試記錄及結(jié)果分析23</p><p> 遇到的問(wèn)題和解決:23</p><p><b> 心得體會(huì)23</b></p><p><b&
8、gt; 源程序清單24</b></p><p><b> 參考資料34</b></p><p><b> 摘要</b></p><p> 此文主要介紹以STC89C52單片機(jī)開(kāi)發(fā)板為核心的溫度控制器的設(shè)計(jì)。分為引言、硬件系統(tǒng)設(shè)置、軟件系統(tǒng)設(shè)置和課程設(shè)計(jì)總結(jié)四個(gè)主體部分。引言部分簡(jiǎn)述了本次課程設(shè)計(jì)的主
9、要內(nèi)容。硬件系統(tǒng)設(shè)置主要詳述了五個(gè)模塊的總體框架圖和硬件電路圖,即8051數(shù)據(jù)處理模塊、DS18B20溫度采集模塊、基于LED溫度顯示模塊、ISD1420語(yǔ)音芯片模塊、鍵盤(pán)輸入模塊,以及所用到的芯片的介紹。軟件系統(tǒng)設(shè)置方面主要介紹了主程序和整體流程圖及DS18B20溫度采集模塊、ISD1420語(yǔ)音模塊、LED顯示模塊、JAVA程序繪圖模塊的流程圖。課程設(shè)計(jì)總結(jié)部分主要包括人員分工,總結(jié),心得體會(huì),源程序清單和參考資料等內(nèi)容。此次課程設(shè)計(jì)
10、中借助了Protell99SE軟件繪制電路圖、keil軟件編程、eclipse軟件編寫(xiě)上位機(jī)程序、Visio繪制流程圖。溫度控制器實(shí)現(xiàn)了在數(shù)碼管上顯示當(dāng)前溫度,并且報(bào)當(dāng)前溫度,當(dāng)溫度超過(guò)警戒值時(shí)發(fā)出警告,java程序?qū)崿F(xiàn)對(duì)串口發(fā)送的溫度繪制溫度變化曲線圖的功能。研究結(jié)果表明,由于溫度控制器的應(yīng)用相當(dāng)普遍,所以其設(shè)計(jì)的核心在于硬件成本的節(jié)約軟件算法的優(yōu)化,力求做到物美價(jià)廉,才能擁有更廣闊的市場(chǎng)前景</p><p>
11、<b> 關(guān)鍵詞:</b></p><p> STC89C52;DS18B20;ISD1420;74HC273;74HC32AP;LED;JAVA</p><p><b> Abstract</b></p><p> This article mainly introduces to STC89C52 SCM de
12、velopment board as the core temperature controller design. Divided into the introduction, the hardware system Settings, software system Settings and course design summarize four main body part. Introduction of the course
13、 design paper the main content. Hardware system on the set up of the overall KuangJiaTu five module circuit diagram, namely 8051 hardware and data processing module, DS18B20 temperature gathering module, based on LED tem
14、perature di</p><p> Key Words:</p><p> STC89C52;DS18B20;ISD1420;74HC273;74HC32AP;LED;JAVA</p><p><b> 第一章 引言</b></p><p> 單片機(jī)的產(chǎn)品在我們?nèi)粘I钪须S處可見(jiàn)。所謂單片機(jī)就是利用大規(guī)模集
15、成電路技術(shù)把中央處理單元CPU和數(shù)據(jù)存儲(chǔ)器RAM、程序存儲(chǔ)器ROM及其他I/O通信口集成在一塊芯片上,構(gòu)成一個(gè)最小的計(jì)算機(jī)系統(tǒng),而現(xiàn)代的單片機(jī)則加上了中斷單元,定時(shí)單元及A/D轉(zhuǎn)換等更復(fù)雜、更完善的電路,使得單片機(jī)的功能越來(lái)越強(qiáng)大,應(yīng)用更廣泛。世界上各大芯片制造公司都推出了自己的單片機(jī)??v觀單片機(jī)的發(fā)展過(guò)程,單片機(jī)的發(fā)展趨勢(shì)大致有:①低功耗CMOS化②微型單片化③主流與多品種共存?,F(xiàn)在雖然單片機(jī)的品種繁多,各具特色,但仍以80C51為核
16、心的單片機(jī)占主流,兼容其結(jié)構(gòu)和指令系統(tǒng)的有PHILIPS公司的產(chǎn)品,ATMEL公司的產(chǎn)品和中國(guó)臺(tái)灣的Winbond系列單片機(jī)。本次課程設(shè)計(jì)我們就是用的基于STC89C52單片機(jī)開(kāi)發(fā)板的溫度控制器。溫度控制器在現(xiàn)代大多工業(yè)控制系統(tǒng)中</p><p> 使用很普遍,本次課程設(shè)計(jì)中用到了語(yǔ)言報(bào)溫、語(yǔ)音報(bào)警,就可以發(fā)揮聽(tīng)覺(jué)的優(yōu)勢(shì),彌補(bǔ)完全用視覺(jué)信號(hào)傳遞信息的不足。實(shí)現(xiàn)了工業(yè)儀表中人機(jī)聯(lián)系的一個(gè)友好界面。如把非常熟練的操
17、作者的經(jīng)驗(yàn)、或者是領(lǐng)域?qū)<覍?duì)此問(wèn)題的評(píng)判及處理措施,用語(yǔ)音對(duì)現(xiàn)行操作者以提示、指導(dǎo),使該系統(tǒng)具有一定的智能,具備這種功能的溫度控制器將會(huì)在現(xiàn)代工業(yè)測(cè)控系統(tǒng)中應(yīng)用愈來(lái)愈廣泛。</p><p> 本次課程設(shè)計(jì),我們小組主要以STC89C52單片機(jī)開(kāi)發(fā)板,結(jié)合ISD1420語(yǔ)音芯片進(jìn)行溫度控制器的設(shè)計(jì),下面將從硬件系統(tǒng)設(shè)置、軟件系統(tǒng)設(shè)置、課設(shè)總結(jié)(包括匯編源代碼、硬件系統(tǒng)設(shè)置原理圖,參考文獻(xiàn))幾方面介紹本次課設(shè)的主要
18、成果。此次主要是利用STC89C52單片機(jī)開(kāi)發(fā)板作為課程設(shè)計(jì)的平臺(tái)進(jìn)行數(shù)據(jù)處理。硬件方面主要利用DS18B20進(jìn)行溫度采集,利用LED進(jìn)行溫度顯示,使用ISD1420語(yǔ)音芯片實(shí)現(xiàn)錄音,報(bào)溫和報(bào)警功能。軟件方面借助了Protell99繪制電路圖,在keil開(kāi)發(fā)環(huán)境下編程,同時(shí)通過(guò)在eclipse環(huán)境下編寫(xiě)java程序?qū)崿F(xiàn)對(duì)串口發(fā)來(lái)的溫度繪制溫度變化曲線等功能。</p><p> 第一章為引言,粗略地介紹此次課設(shè)的
19、主要內(nèi)容。</p><p> 第二章為硬件系統(tǒng)設(shè)置,在此章中主要從各個(gè)模塊的硬件電路圖以及基本芯片入手,介紹STC89C52單片機(jī)、DS18B20語(yǔ)言芯片、ISD1420溫度控制芯片、LED數(shù)碼管以及74HC273和74HC32A等的內(nèi)部結(jié)構(gòu)功能、工作方式以及編程工作環(huán)境等幾個(gè)方面進(jìn)行了簡(jiǎn)要的介紹,以便讀者更容易了解此次課設(shè)的基本思路及整理概覽,對(duì)硬件原理有逐步深入的了解。</p><p&g
20、t; 第三章為軟件系統(tǒng)設(shè)置,在此章中主要包括主程序流程圖和詳細(xì)的整體流程圖,DS18B20溫度采集模塊流程圖、ISD1420模塊流程圖、LED顯示模塊流程圖以及java程序繪圖流程圖。</p><p> 第四章為課程設(shè)計(jì)總結(jié)。此部分主要包括人員分工、總結(jié)、心得體會(huì)、源程序清單和參考資料等方面。</p><p> 在此次課程設(shè)計(jì)中,在課程設(shè)計(jì)剛開(kāi)始的硬件檢測(cè),還有程序調(diào)試過(guò)程中出現(xiàn)的問(wèn)
21、題特別是語(yǔ)音芯片ISD1420的使用方法中遇到問(wèn)題,都得到了指導(dǎo)老師精心的指點(diǎn),使我們受益匪淺,在此表示感謝!</p><p> 第二章 硬件系統(tǒng)設(shè)置</p><p><b> 2.1系統(tǒng)原理圖</b></p><p> 2.2模塊硬件電路圖</p><p> 主要接線:P1口接74HC273,然后連接到語(yǔ)音芯片
22、ISD1420上面,P0口接的數(shù)碼管,用于顯示接收到的溫度,DS18B20接的P2.2口,錄音鍵REC接的P2.3,放音鍵PLAYE接的P2.4,WR接的P2.5.</p><p><b> 2.2.1電源模塊</b></p><p> 2.2.2DS18B20模塊</p><p><b> 2.2.3排針模塊</b>
23、;</p><p> 2.2.4 LED顯示模塊</p><p> 2.2.5 ISD1420語(yǔ)音模塊</p><p><b> 2.3芯片資料介紹</b></p><p> 2.3.189C52單片機(jī)</p><p> 2.3.1.1課程設(shè)計(jì)中主要用途</p><p
24、> 本次課程設(shè)計(jì)我們小組使用的是STC89C52開(kāi)發(fā)板,主要用到了開(kāi)發(fā)板上的單片機(jī)部分,LED數(shù)碼管顯示部分,DS18B20部分及鍵盤(pán)部分。我們用P1口接74HC273,然后連接到語(yǔ)音芯片ISD1420上面,P0口接的數(shù)碼管,用于顯示接收到的溫度,DS18B20接的P2.2口,錄音鍵REC接的P2.3,放音鍵PLAYE接的P2.4,WR接的P2.5.</p><p> 2.3.1.2內(nèi)部結(jié)構(gòu)和引腳圖&l
25、t;/p><p> 89C52是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-
26、51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C52是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。</p><p> 2.3.1.3管腳說(shuō)明:</p><p> VCC:供電電壓。 </p><p><b> GND:
27、接地。 </b></p><p> P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。 </p><p> P1口:P1口是一個(gè)內(nèi)部提供
28、上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 </p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作
29、為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 </p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸
30、出4個(gè)TTL門電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 </p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 </p><p> ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引
31、腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。 </p><p> 2
32、.3.1.4串口通訊 </p><p> SBUF 數(shù)據(jù)緩沖寄存器是一個(gè)可以直接尋址的串行口專用寄存器。實(shí)際上SBUF 包含了兩個(gè)獨(dú)立的寄存器,一個(gè)是發(fā)送寄存,另一個(gè)是接收寄存器,但它們都共同使用同一個(gè)尋址地址-99H。CPU 在讀SBUF 時(shí)會(huì)指到接收寄存器,在寫(xiě)時(shí)會(huì)指到發(fā)送寄存器,而且接收寄存器是雙緩沖寄存器,這樣可以避免接收中斷沒(méi)有及時(shí)的被響應(yīng),數(shù)據(jù)沒(méi)有被取走,下一幀數(shù)據(jù)已到來(lái),而造成的數(shù)據(jù)重疊問(wèn)題。發(fā)送
33、器則不需要用到雙緩沖,一般情況下我們?cè)趯?xiě)發(fā)送程序時(shí)也不必用到發(fā)送中斷去外理發(fā)送數(shù)據(jù)。操作SBUF寄存器的方法則很簡(jiǎn)單,只要把這個(gè)99H 地址用關(guān)鍵字sfr定義為一個(gè)變量就可以對(duì)其進(jìn)行讀寫(xiě)操作了。SCON 串行口控制寄存器通常在芯片或設(shè)備中為了監(jiān)視或控制接口狀態(tài),都會(huì)引用到接口控制寄存器。SCON 就是51 芯片的串行口控制寄存器。它的尋址地址是98H,是一個(gè)可以位尋址的寄存器,作用就是監(jiān)視和控制51 芯片串行口的工作狀態(tài)。51 芯片的串
34、口可以工作在幾個(gè)不同的工作模式下,其工作模式的設(shè)置就是使用SCON 寄存器。它的各個(gè)位的具體定義如下:SM0 SM1 SM2 REN TB8 RB8 TI RI 。 </p><p> SM0、SM1 為串行口工作模式設(shè)置位,這樣兩位可以對(duì)應(yīng)進(jìn)行四種模式的設(shè)置。串行口工作模式設(shè)置如下: </p><p> SM2 在模式2、模式3 中為多處理機(jī)通信使能位。在模式0 中要求該位為0。 &
35、lt;/p><p> 波特率在使用串口做通訊時(shí),一個(gè)很重要的參數(shù)就是波特率,只有上下位機(jī)的波特率一樣時(shí)才可以進(jìn)行正常通訊。波特率是指串行端口每秒內(nèi)可以傳輸?shù)牟ㄌ匚粩?shù)。51 芯片的串口工作模式0的波特率是固定的,為fosc/12,以一個(gè)12M 的晶振來(lái)計(jì)算,那么它的波特率可以達(dá)到1M。模式2 的波特率是固定在fosc/64 或fosc/32,具體用那一種就取決于PCON 寄存器中的SMOD位,如SMOD 為0,波特率
36、為focs/64,SMOD 為1,波特率為focs/32。模式1 和模式3 的波特率是可變的,取決于定時(shí)器1 或2(52 芯片)的溢出速率。</p><p> 2.3.2DS18B20芯片</p><p> 2.3.2.1課程設(shè)計(jì)中主要用途</p><p> 在本次課程設(shè)計(jì)中的作用是采集溫度為溫度控制器提供溫度的數(shù)據(jù)。通過(guò)DS18B20采集溫度,然后在LED數(shù)
37、碼管上顯示當(dāng)前溫度,同時(shí)將采集到的溫度信息通過(guò)串口發(fā)送給上位機(jī)從而輸出溫度曲線。ISD1420芯片也是根據(jù)DS18B20提供的溫度報(bào)溫和發(fā)出警報(bào)。它是數(shù)字式溫度傳感器,具有測(cè)量精度高,電路連接簡(jiǎn)單特點(diǎn)。此類傳感器僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,使用P2.2口與DS18B20的I/O口連接加一個(gè)上拉電阻,Vcc接電源,GND接地。獨(dú)特的一線接口,只需要一條口線通信多點(diǎn)能力,簡(jiǎn)化了分布式溫度傳感應(yīng)用無(wú)需外部元件可用數(shù)據(jù)總線供電,電壓范圍為3.
38、0V至5.5V無(wú)需備用電源 測(cè)量溫度范圍為-55度至+125度。</p><p> 2.3.2.2內(nèi)部結(jié)構(gòu)和引腳圖</p><p><b> 引腳圖</b></p><p><b> 內(nèi)部結(jié)構(gòu)圖</b></p><p> 2.3.2.3 DS18B20暫存寄存器分布 </p>
39、<p> 高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如表5所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在 高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式如表1所示。對(duì)應(yīng)的溫度計(jì)算: 當(dāng)符號(hào)位S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。表 2是對(duì)應(yīng)的一部分溫度值。第九個(gè)字節(jié)是 冗余檢驗(yàn)字節(jié)。 </p>
40、<p> 2.3.2.4 ROM及RAM指令表 </p><p> 本次課程設(shè)計(jì)中根據(jù)DS18B20的通訊協(xié)議,主機(jī)(單片機(jī))控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:每一次讀寫(xiě)之前都要對(duì)DS18B20進(jìn)行 復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后 釋放,當(dāng)DS18B20收到信號(hào)后等待16~
41、60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號(hào)表示復(fù)位成功。ROM及RAM指令表如下: </p><p> 2.3.2.5 DS18B20的應(yīng)用電路</p><p> DS18B20測(cè)溫系統(tǒng)具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn)。本次課程設(shè)計(jì)中DS18B20和單片機(jī)的P2.2口連接,直接通過(guò)P2.2口對(duì)其進(jìn)行控制,還有2個(gè)腳一個(gè)接GND,一
42、個(gè)接VCC.連接圖如下:</p><p> 2.3.2.6時(shí)序圖</p><p> 本次課程設(shè)計(jì)通過(guò)按照數(shù)據(jù)手冊(cè)上的時(shí)序,然后經(jīng)過(guò)修改,使程序得到了實(shí)現(xiàn),具體方法見(jiàn)代碼清單。</p><p><b> ①初始化時(shí)序</b></p><p><b> ?、谧x/寫(xiě)時(shí)序</b></p>
43、<p> 2.3.3 ISD1420芯片</p><p> 2.3.3.1課程設(shè)計(jì)中主要用途</p><p> 本次課程設(shè)計(jì)中使用ISD1420芯片,其通過(guò)P1口接74HC273,然后連接到語(yǔ)音芯片ISD1420,錄音鍵REC接的P2.3,放音鍵PLAYE接的P2.4,WR接的P2.5。我們小組先通過(guò)ISD1420錄音1,2,3,4,5,6,7,8,9,10,點(diǎn),度,當(dāng)前
44、溫度,溫度過(guò)高。然后后面通過(guò)組合播放對(duì)應(yīng)的信息。當(dāng)按鍵顯示溫度時(shí),ISD1420開(kāi)始播放當(dāng)前溫度,當(dāng)溫度超過(guò)警戒值,發(fā)出警報(bào)。</p><p> 2.3.3.2內(nèi)部結(jié)構(gòu)和引腳圖</p><p> 本設(shè)計(jì)使用DIP28封裝的芯片,其封裝與實(shí)物圖 如下圖所示</p><p> 2.3.3.3時(shí)序圖</p><p> RECORD時(shí)序圖:&
45、lt;/p><p><b> PLAY時(shí)序圖:</b></p><p> 2.3.3.4單片機(jī)對(duì)1420的分段放音控制:</p><p> 用微處理器對(duì)ISD芯片的分段錄放音控制時(shí),才算是發(fā)揮了芯片的優(yōu)勢(shì)。ISD1420地址輸入端具有雙重功能,根據(jù)地址中的A6、A7的電平狀態(tài)決定A0~A7的功能。如果A6、A7有一個(gè)低電平,A0~A7輸入全解
46、釋為地址位,作為起始地址用,此時(shí)地址線僅作為輸入端,在操作過(guò)程中不能輸出內(nèi)部地址信息。根據(jù)PLAYE、PLAYL或REC的下降沿信號(hào),地址輸入被鎖定。如果A6、7同為高電平時(shí),它們即為模式位。</p><p> 在這里我們只用到地址功能來(lái)分段控制,所以我們需要保證A6、A7不可同時(shí)為1,這里我們可以用軟件進(jìn)行保護(hù)。地址輸入端A0~A7有效值范圍為00000000~10011111,這表明最多可被劃分為160個(gè)存
47、貯單元,可錄放多達(dá)160段語(yǔ)音信息。由A0~A7決定每段語(yǔ)音的起始地址,而起始地址又直接反映了錄放的起始時(shí)間。其關(guān)系見(jiàn)公式:TQ=0.125s×(128A7+64A6+32A5+16A4+8A3+4A2+2A1+0)</p><p> 我們小組是將要播放的內(nèi)容事先錄入芯片內(nèi),語(yǔ)音芯片的地址端與單片機(jī)的P2口對(duì)應(yīng)連接起來(lái),REC和單片機(jī)的P2.3腳相連,PLAYE與單片機(jī)的P2.4腳相連(具體連接方式見(jiàn)
48、原理圖)。就可以控制1420在什么時(shí)間播放什么地址的內(nèi)容:播放地址由P3口提出,播放起始時(shí)間及終止時(shí)間出P2.3腳控制。</p><p> 本次課程設(shè)計(jì)各語(yǔ)音所對(duì)應(yīng)的地址及持續(xù)時(shí)間</p><p> 2.3.4 LED數(shù)碼管</p><p> 2.3.4.1課程設(shè)計(jì)中的作用</p><p> 本次課程設(shè)計(jì)中LED的作用主要是用來(lái)顯示D
49、S18B20芯片采集到的溫度,我們用的是通過(guò)中斷來(lái)對(duì)LED進(jìn)行動(dòng)態(tài)掃描,同時(shí)這一操作是在中斷中完成的,剛開(kāi)始數(shù)碼管雖然能夠顯示溫度,但是抖動(dòng)也很厲害,后來(lái)通過(guò)調(diào)試,修改掃描的時(shí)間解決了這個(gè)問(wèn)題。</p><p> 2.3.4.2內(nèi)部結(jié)構(gòu)及引腳圖</p><p> led數(shù)碼管是由多個(gè)發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個(gè)筆劃,公共電極。led
50、數(shù)碼管常用段數(shù)一般為7段有的另加一個(gè)小數(shù)點(diǎn),還有一種是類似于3位“+1”型。位數(shù)有半位,1,2,3,4,5,6,8,10位等等,led數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽(yáng)兩類,了解LED的這些特性,對(duì)編程是很重要的,因?yàn)椴煌愋偷臄?shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。共陰和共陽(yáng)極數(shù)碼管的內(nèi)部電路不同,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。顏色有紅,綠,藍(lán),黃等幾種。led數(shù)碼管廣泛用于儀表,時(shí)鐘,車站
51、,家電等場(chǎng)合。下面介紹常用LED數(shù)碼管內(nèi)部引腳圖:</p><p> 每一筆劃都是對(duì)應(yīng)一個(gè)字母表示 DP是小數(shù)點(diǎn). LED數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)位,因此根據(jù)LED數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。 </p><p> 2.3.4.3顯示方式</p><p> A、靜態(tài)顯示驅(qū)動(dòng): </
52、p><p> 靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O埠進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)位*器*進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O埠多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O埠來(lái)驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O口才32個(gè)呢。故實(shí)際應(yīng)用時(shí)必須增加*驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬體電路的復(fù)雜性。 </p>
53、<p> B、動(dòng)態(tài)顯示驅(qū)動(dòng): </p><p> 數(shù)碼管動(dòng)態(tài)顯示介面是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp "的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位元選通控制電路,位元選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單
54、片機(jī)對(duì)位元選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi),該位元就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。 </p><p> 透過(guò)分時(shí)輪流控制各個(gè)LED數(shù)碼管的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過(guò)程中,每位元數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極體的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定
55、的顯示資料,不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O口,而且功耗更低。</p><p> 2.3.5 74HC273芯片</p><p> 2.3.5.1課程設(shè)計(jì)中的作用</p><p> 本次課程設(shè)計(jì)中74HC273是和74HC32P芯片結(jié)合配合語(yǔ)音芯片ISD1420使用的,起到鎖存作用。74HC273是一款高速CMOS器件,74
56、HC273引腳兼容低功耗肖特基TTL(LSTTL)系列。74HC273具有八路邊沿觸發(fā),D 型觸發(fā)器,帶獨(dú)立的D輸入和Q輸出。74HC273的公共時(shí)鐘(CP)和主復(fù)位(MR)端可同時(shí)讀取和復(fù)位(清零)所有觸發(fā)器。每個(gè)D輸入的狀態(tài)將在時(shí)鐘脈沖上升沿之前的一段就緒時(shí)間內(nèi)被傳輸?shù)接|發(fā)器對(duì)應(yīng)的輸出(Qn)上。一旦MR輸入電平為低,則所有輸出將被強(qiáng)制置為低,而不依賴于時(shí)鐘或者數(shù)據(jù)輸入。74HC273適用于要求原碼輸出或者所有存儲(chǔ)元件共用時(shí)鐘和主復(fù)
57、位的應(yīng)用。此芯片在課程設(shè)計(jì)中用來(lái)鎖存。</p><p> 2.3.5.2內(nèi)部結(jié)構(gòu)和引腳圖</p><p><b> 引腳圖</b></p><p> 2.3.5.3功能說(shuō)明</p><p> 74HC273的主要功能說(shuō)明如下:</p><p> 2.3.6 74HC32芯片</p&
58、gt;<p> 2.3.6.1課程設(shè)計(jì)中的作用</p><p> 本次課程設(shè)計(jì)中74HC32P是和74HC273芯片結(jié)合配合語(yǔ)音芯片ISD1420使用的,起到鎖存作用。</p><p> 2.3.6.2內(nèi)部結(jié)構(gòu)和引腳圖</p><p> 2.3.6.3功能說(shuō)明</p><p> 74HC32的主要功能說(shuō)明如下:<
59、/p><p> 第三章 軟件系統(tǒng)設(shè)置</p><p><b> 程序流程圖</b></p><p> 此部分包括主程序流程圖和詳細(xì)的整體流程圖,DS18B20溫度采集模塊流程圖,ISD1420語(yǔ)音模塊流程圖,LED顯示模塊流程圖及java程序繪圖流程圖。</p><p><b> 主程序流程圖</b
60、></p><p><b> 詳細(xì)的整體程圖</b></p><p> DS18B20溫度采集模塊</p><p> ISD1420語(yǔ)音模塊流程圖</p><p> LED顯示模塊流程圖</p><p> java程序繪圖流程圖</p><p><b&
61、gt; 參數(shù)信息</b></p><p> sbit ds18b20_io=P2^2; 定義ds18b20_io口</p><p> sbit wela=P2^7; 定義位選口</p><p>
62、sbit dula=P2^6; 定義段選口</p><p> sbit lu=P2^4; 定義語(yǔ)言芯片錄音</p><p> sbit play=P2^3;
63、 定義語(yǔ)言芯片播放</p><p> sbit wr=P2^5; 定義讀寫(xiě)口</p><p> sbit key1=P3^7; 定義鍵盤(pán)口</p><p> uchar tempe
64、rature_low,temperature_high; 定義最高最低溫度</p><p> uchar num=500; 定義delay溫度常數(shù)</p><p> uint temperature;
65、 定義溫度參數(shù)</p><p> bit flagtemper=0; 定義標(biāo)志位</p><p> bit flag_500=0; 定義500S標(biāo)志位</p><p> bit flag_1500
66、=0; 定義1500S標(biāo)志位</p><p> uint danyuan[]={0,8,16,24,32,40,48,56,64,72,80,88,96,104,120}; 定義錄音放音地址</p><p> unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x
67、66,0x6d, 定義0-9</p><p> 0x7d, 0x07,0x7f,0x6f};</p><p> unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed, 定義數(shù)字加’.’的0-9</p><p> 0xfd, 0x87,0xff,0xef};</p><
68、p> 第四章 課程設(shè)計(jì)總結(jié)</p><p><b> 人員分工</b></p><p> ISD1420語(yǔ)言模塊:蔡俊鈺</p><p> DS18B20溫度模塊:鐘鵬</p><p> 上位機(jī)java繪圖模塊:陳忠崗</p><p><b> 硬件電路圖:沈霞<
69、/b></p><p><b> 系統(tǒng)總體設(shè)計(jì):吳邊</b></p><p><b> 總結(jié)</b></p><p> 軟件延時(shí)與定時(shí)器計(jì)時(shí)</p><p> 課程開(kāi)始時(shí),我們嘗試過(guò)用軟件延時(shí),發(fā)現(xiàn)軟件延時(shí)雖然設(shè)計(jì)簡(jiǎn)單,使用方便,但是無(wú)法進(jìn)行精確計(jì)時(shí),會(huì)出現(xiàn)延遲時(shí)間不確定,數(shù)碼管顯示出
70、現(xiàn)抖動(dòng)和錄音時(shí)序出現(xiàn)錯(cuò)誤等諸多問(wèn)題。所以我們?cè)谡n程設(shè)計(jì)中利用定時(shí)器0進(jìn)行計(jì)時(shí),利用標(biāo)志位來(lái)判斷時(shí)間是否到了我們所需的時(shí)間,這樣就使得連線看起來(lái)更清晰,同樣的可以精確的達(dá)到要求,使課程設(shè)計(jì)更加完美。</p><p><b> 模塊化及團(tuán)隊(duì)合作</b></p><p> 在項(xiàng)目開(kāi)發(fā)中,團(tuán)隊(duì)合作是非常重要的,在對(duì)設(shè)計(jì)進(jìn)行模塊劃分、統(tǒng)一變量之后,分別設(shè)計(jì)不同設(shè)計(jì)然后進(jìn)行整
71、合,這樣進(jìn)行開(kāi)發(fā)是非??焖俸?jiǎn)單的。同時(shí)將程序模塊化也是非常重要的,通過(guò)將程序模塊化使思路更清晰,我們就是先做了溫度采集DS18B20模塊,之后做數(shù)碼管顯示模塊,接著是ISD1420語(yǔ)音模塊,然后又用JAVA程序?qū)崿F(xiàn)了溫度曲線繪制的模塊,最后又加入了鍵盤(pán)模塊;以便控制,這樣感覺(jué)輕松多了。</p><p><b> 關(guān)于本次課程設(shè)計(jì)</b></p><p> 在本次設(shè)
72、計(jì)中實(shí)現(xiàn)了利用DS18B20采集溫度,在數(shù)碼管上顯示當(dāng)前溫度,并且通過(guò)ISD1420報(bào)當(dāng)前溫度,通過(guò)java程序中設(shè)置的警戒溫度,當(dāng)溫度超過(guò)警戒值時(shí)發(fā)出警告聲。程序中將采集到的溫度發(fā)到上位機(jī),通過(guò)java程序?qū)崿F(xiàn)對(duì)采集到的溫度繪制溫度變化曲線的功能。在老師的指導(dǎo)下,我們做到了自主設(shè)計(jì),自主編寫(xiě)代碼在設(shè)計(jì)中掌握的單片機(jī)設(shè)計(jì)的基本方法、鍛煉了團(tuán)隊(duì)合作的能力!</p><p><b> 調(diào)試記錄及結(jié)果分析&
73、lt;/b></p><p><b> 遇到的問(wèn)題和解決:</b></p><p> 1通過(guò)串口發(fā)送溫度給上位機(jī),剛開(kāi)始只能一位一位發(fā),不能將一個(gè)溫度3位連續(xù)的發(fā)出去。通過(guò)調(diào)試解決了這個(gè)問(wèn)題。</p><p> 2.采集的溫度是三位一位一位發(fā)給上位機(jī),JAVA程序中設(shè)置的是3位一起接收然后顯示,兩者沖突,后來(lái)通過(guò)用調(diào)試程序在串口窗口
74、printf一串三位溫度,通過(guò)調(diào)試解決了這個(gè)問(wèn)題。</p><p> 3.在主函數(shù)之前加一個(gè)delay(1000),防止程序還沒(méi)有完全下載到單片機(jī)中,其中的串口中斷程序就開(kāi)始執(zhí)行,造成程序錯(cuò)誤。</p><p> 4.在做錄音模塊時(shí)發(fā)現(xiàn)錄音地址問(wèn)題,無(wú)論錄幾個(gè)音,放音總是放最后一個(gè)錄的音,地址變化同樣也不起作用。后來(lái)發(fā)現(xiàn)和ISD1420相連的74HC273和74HC32沒(méi)有考慮到,所以
75、地址一直是最后一個(gè)地址。后來(lái)通過(guò)WR進(jìn)行地址鎖存解決了這個(gè)問(wèn)題。</p><p> 5數(shù)碼管顯示時(shí)一直存在著一個(gè)問(wèn)題,就是3位數(shù),最后一位一直比前面2位亮度大,沒(méi)有得到解決,后來(lái)在詢問(wèn)韓老師得到了解決,通過(guò)沒(méi)執(zhí)行完一次將數(shù)碼管關(guān)掉解決這個(gè)亮度不一樣的問(wèn)題。</p><p> 6.在進(jìn)行DS18B20程序編寫(xiě)時(shí),按照時(shí)序?qū)?,但但發(fā)現(xiàn)有許多延遲有問(wèn)題,后來(lái)通過(guò)逐步修改,使程序得到了實(shí)現(xiàn)。&
76、lt;/p><p><b> 心得體會(huì)</b></p><p> 本次微機(jī)接口課程設(shè)計(jì)所作的課題是溫度控制器,從總體上是對(duì)89C52單片機(jī)、以及對(duì)DS18B20、ISD1420、LED、74HC273、74HC32A等的應(yīng)用。此次課程設(shè)計(jì)主要有DS18B20溫度采集模塊,語(yǔ)言芯片ISD1420的錄音,報(bào)溫模塊,LED顯示模塊以及java程序繪圖模塊等。 溫度
77、控制器主要實(shí)現(xiàn)了利用DS18B20芯片采集當(dāng)前溫度,然后利用單片機(jī)數(shù)碼管顯示當(dāng)前溫度,并且通過(guò)用鍵盤(pán)控制并利用語(yǔ)音芯片ISD1420報(bào)溫,通過(guò)在java程序上設(shè)置的警戒溫度,當(dāng)溫度超過(guò)警戒值時(shí)發(fā)出警告“溫度太高了”,最終將溫度值通過(guò)串口傳給上位機(jī)java程序?qū)崿F(xiàn)對(duì)采集到的溫度繪制溫度變化曲線。</p><p> 課程設(shè)計(jì)中我主要負(fù)責(zé)DS18B20芯片模塊程序的編寫(xiě)。由于本設(shè)計(jì)課程設(shè)計(jì)采用了集成溫度傳感器,這樣不
78、僅減少了硬件電路的設(shè)計(jì)與調(diào)試,并且此溫度傳感元件的集成性能比傳統(tǒng)的元件要優(yōu)越得多,這樣簡(jiǎn)化了電路的設(shè)計(jì)難度還降低了產(chǎn)品的價(jià)格。DS18B20程序的主要思路是:先啟動(dòng)DS18B20溫度采集的轉(zhuǎn)換函數(shù)(包括初始化,等待響應(yīng)脈沖,發(fā)跳過(guò)ROM命令,發(fā)啟動(dòng)DS18B20溫度轉(zhuǎn)換功能命令),然后讀DS18B20溫度值(包括初始化,等待響應(yīng)脈沖,延遲,發(fā)跳過(guò)ROM命令,發(fā)讀DS18B20溫度值功能命令),最后利用串行口擴(kuò)展的LED顯示溫度值。同時(shí)語(yǔ)
79、言芯片的使用使溫度控制器更加實(shí)用性,普遍性。</p><p> 通過(guò)此次課程設(shè)計(jì)發(fā)現(xiàn)了自己的許多不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固。比如對(duì)串口調(diào)試過(guò)程中波特率設(shè)置的問(wèn)題出現(xiàn)了一些問(wèn)題,導(dǎo)致出現(xiàn)了一連串的問(wèn)題。以及對(duì)于單片機(jī)將溫度信息發(fā)到上位機(jī)中java程序中,兩種程序中的發(fā)送和就收到數(shù)據(jù)的格式轉(zhuǎn)化也出現(xiàn)了一些問(wèn)題。這次課程設(shè)計(jì)中最突出的問(wèn)題,就是在錄音進(jìn)行存儲(chǔ)時(shí),沒(méi)有考慮到74HC273
80、以及74HC32A芯片在其中所起到的作用,導(dǎo)致地址一直沒(méi)有鎖存進(jìn)去,一直報(bào)最后一次錄得音,這個(gè)問(wèn)題糾結(jié)了我們2天時(shí)間。最后通過(guò)查閱資料和詢問(wèn)老師得到了解答。在課程設(shè)計(jì)過(guò)程中通過(guò)小組中互相討論,交流經(jīng)驗(yàn),使自己學(xué)到了不少知識(shí),收獲了很多,不久在編寫(xiě)代碼方面,在連線方面也得到了不少的提升。最重要的一個(gè)方面是韓老師在程序模塊化方面對(duì)我們這組的指導(dǎo),使我們受益匪淺。在課程設(shè)計(jì)過(guò)程中雖然有時(shí)候感覺(jué)理論上行得通應(yīng)該正確的程序,但在運(yùn)用到實(shí)踐的過(guò)程中
81、仍有意想不到的困惑,往往出現(xiàn)一連串的問(wèn)題,使我們困惑不已,還要一步一步調(diào)試經(jīng)過(guò)一番努力才得以解決。這也激發(fā)了我今后努力學(xué)習(xí)的興趣,了解到了實(shí)踐的重要性。我想這將對(duì)我以后的學(xué)習(xí)產(chǎn)生積極的影響。通過(guò)這次設(shè)計(jì),我懂得</p><p><b> 源程序清單</b></p><p> 單片機(jī)實(shí)驗(yàn)(已模塊化)</p><p> //Include.h
82、</p><p> #include<reg52.h></p><p> #include<intrins.h></p><p> #define uchar unsigned char </p><p> #define uint unsigned int</p><p> void
83、 delay_1ms(uint x);</p><p> //ds18b20.h</p><p> #include<Include.h></p><p> sbit ds18b20_io=P2^2;</p><p> extern uchar temperature_low,temperature_high;</p
84、><p> extern uint temperature;</p><p> void reset_ds18b20();</p><p> void ack_ds18b20();</p><p> void write_ds18b20(uchar date);</p><p> uchar read_ds18b
85、20(void);</p><p> void convert_ds18b20();</p><p> void read_temperature();</p><p> uint readdata();</p><p> //rsd1420.h</p><p> # include <Include.
86、h></p><p> sbit lu=P2^4;</p><p> sbit play=P2^3;</p><p> sbit wr=P2^5;</p><p> extern uint address[20];</p><p> void play_word(uchar);</p>&
87、lt;p> void play_sentence(uchar);</p><p> void play_temp(uint temp);</p><p> //serial.h</p><p> #include<Include.h></p><p> extern uchar num;</p>&l
88、t;p> void init();</p><p> void sendtempertoserial(uint zhi);</p><p> //include.c</p><p> # include<include.h></p><p> void delay_1ms(uint x)</p>&l
89、t;p><b> {</b></p><p><b> uint y,z;</b></p><p> for(y=x;y>0;y--)</p><p> for(z=110;z>0;z--);</p><p><b> }</b></p&g
90、t;<p> //ds18b20.c</p><p> #include<ds18b20.h></p><p> void reset_ds18b20() //初始化命令</p><p><b> {</b></p><p> uchar dela
91、y=250;</p><p> ds18b20_io=1;</p><p> ds18b20_io=0;</p><p> while(--delay); //延遲500us</p><p> ds18b20_io=1;</p><p><b> delay=15;</b
92、></p><p> while(--delay); / /延遲30us;</p><p><b> }</b></p><p> //////////////////////////////////////////////////////////////////</p><p> vo
93、id ack_ds18b20() //等待響應(yīng)脈沖</p><p><b> {</b></p><p> uchar delay=15;</p><p> while(ds18b20_io);</p><p> while(!ds18b20_io);</p><
94、p> while(--delay);</p><p><b> }</b></p><p> //////////////////////////////////////////////////////////////////////////////// </p><p> void write_ds18b20(uchar da
95、te) //寫(xiě)數(shù)據(jù)</p><p><b> {</b></p><p> uchar i=0,delay;</p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p><b> delay=
96、30;</b></p><p> ds18b20_io=0;</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p> if(date&0x01)</p><p><b>
97、 {</b></p><p> ds18b20_io=1;</p><p> while(--delay);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>&l
98、t;/p><p> ds18b20_io=0;</p><p> while(--delay);</p><p> ds18b20_io=1;</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p>
99、<p><b> }</b></p><p><b> date>>=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> uchar read_ds18b20(void
100、) //讀數(shù)據(jù)</p><p><b> {</b></p><p> uchar date=0,delay=8;</p><p> uchar i=0;</p><p> for(i=0;i<8;i++)</p><p><b> {</b>&
101、lt;/p><p><b> date>>=1;</b></p><p> ds18b20_io=0;</p><p><b> _nop_();</b></p><p> ds18b20_io=1;</p><p> while(--delay);<
102、/p><p> if(ds18b20_io)</p><p> date|=0x80;</p><p><b> delay=8;</b></p><p><b> }</b></p><p> return(date);</p><p>&l
103、t;b> }</b></p><p> void convert_ds18b20()</p><p><b> {</b></p><p> reset_ds18b20();</p><p> ack_ds18b20();</p><p> write_ds18
104、b20(0xcc);</p><p> write_ds18b20(0x44);</p><p><b> }</b></p><p> void read_temperature() //讀溫度</p><p><b> {</b></p><p>
105、uchar delay1=250;</p><p> reset_ds18b20(); //發(fā)初始化命令</p><p> ack_ds18b20(); //等待響應(yīng)脈沖</p><p> write_ds18b20(0xcc); //發(fā)跳過(guò)ROM指令</p><p> write_ds18b
106、20(0xbe); //發(fā)啟動(dòng)DS18B20溫度轉(zhuǎn)換功能命令</p><p> temperature_low=read_ds18b20(); //讀溫度低位字節(jié)</p><p> temperature_high=read_ds18b20(); //讀溫度高位字節(jié)</p><p><b> }</b></p>
107、<p> uint readdata() //讀數(shù)據(jù)</p><p><b> {</b></p><p><b> float tt;</b></p><p> uint temp;</p><p> read_temperature();</p
108、><p> temp=temperature_high;</p><p> temp<<=8; </p><p> temp=temp|temperature_low;</p><p> tt=temp*0.0625;</p><p> temp=tt*10; </
109、p><p> return(temp);</p><p><b> }</b></p><p> //rsd1420.c</p><p> # include<rsd1420.h></p><p> void play_sentence(uchar c)</p>&
110、lt;p><b> {</b></p><p><b> P1=c;</b></p><p><b> wr=0;</b></p><p> delay_1ms(1);</p><p><b> wr=1;</b></p>&
111、lt;p><b> play=0;</b></p><p> delay_1ms(1000);</p><p><b> play=1;</b></p><p><b> }</b></p><p> void play_word(uchar c )<
112、/p><p><b> { P1=c;</b></p><p><b> wr=0;</b></p><p> delay_1ms(1);</p><p><b> wr=1;</b></p><p><b> play=0;<
113、/b></p><p> delay_1ms(500);</p><p><b> play=1;</b></p><p><b> }</b></p><p> void play_temp(uint temp)</p><p><b>
114、{</b></p><p> uchar A1,A2,A2t,A3;</p><p> A1=temp/100;</p><p> A2t=temp%100;</p><p> A2=A2t/10;</p><p> A3=A2t%10;</p><p> delay_1
115、ms(1000);</p><p> play_sentence(address[13]);</p><p> play_word(address[A1]);</p><p> play_word(address[10]);</p><p><b> if(A2!=0)</b></p><p&
116、gt; play_word(address[A2]);</p><p> play_word(address[11]);</p><p> play_word(address[A3]);</p><p> play_word(address[12]);</p><p><b> }</b></p>
117、<p> //serial.c</p><p> #include<serial.h></p><p> void init()</p><p><b> {</b></p><p> TMOD=0x21;</p><p><b> TH1=0xfd;
118、</b></p><p><b> TL1=0xfd;</b></p><p> TH0=(65536-25000)/256;</p><p> TL0=(65536-25000)%256;</p><p><b> TR0=1;</b></p><p>
119、<b> ET0=1;</b></p><p><b> TR1=1;</b></p><p><b> REN=1;</b></p><p><b> SM0=0;</b></p><p><b> SM1=1;</b>&
120、lt;/p><p> EA=1; </p><p> ES=1; </p><p><b> }</b></p><p> void sendtempertoserial(uint zhi)</p><p><b> {</b></p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)實(shí)現(xiàn)的溫度控制器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)----空調(diào)溫度控制器的設(shè)計(jì)
- 單片機(jī)數(shù)字傳感器課程設(shè)計(jì)-- 溫度控制器
- 單片機(jī)課程設(shè)計(jì)-時(shí)間控制器
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)節(jié)日彩燈控制器
- 單片機(jī)課程設(shè)計(jì):彩燈控制器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的定時(shí)控制器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-- 彩燈控制器的設(shè)計(jì)
- 彩燈控制器的設(shè)計(jì) 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)控制的時(shí)鐘控制器
- 單片機(jī)課程設(shè)計(jì)——基于單片機(jī)的步進(jìn)電機(jī)控制器設(shè)計(jì)
- 單片機(jī)溫度控制課程設(shè)計(jì)
- 彩燈控制器的設(shè)計(jì) 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--步進(jìn)電機(jī)控制器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——基于單片機(jī)的步進(jìn)電機(jī)控制器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---水溫控制器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--水溫控制器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--步進(jìn)電機(jī)控制器
- 單片機(jī)課程設(shè)計(jì)--基于單片計(jì)算機(jī)的溫度控制器
- 單片機(jī)課程設(shè)計(jì)--節(jié)日彩燈控制器設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論