【正文】
em=65536tem。 // 跳過 ROM 命令 WriteOneChar(0xbe)。 //右移一位數(shù)據(jù) } } void tmpchange(void) // DS18B20 begin change // 發(fā)送溫度轉(zhuǎn)換命令 24 { Init_DS18B20()。 for (i=8。i0。 //單片機(jī)將 DQ 拉低 delay_MS(80)。y0。 //手動 報警 sbit LED1=P3^3。 //讀出溫度暫放 uchar data Dis_play[6]={0x00,0x00,0x00,0x00,0x0a,0x0c}。 18 致謝 能取得這次成功的突破,要感謝我 的指導(dǎo)老師潘云霞對我的困難的幫助,給我設(shè)計(jì)思路的引導(dǎo),辛勤地給予畢業(yè)論文的修改,通過老師介紹的一些資料書及相關(guān)文件,讓我的畢業(yè)設(shè)計(jì)更加成功地完成。在理論學(xué)習(xí)的過程中,我只是簡單地學(xué)到了一些理論知識,但是在實(shí)際的設(shè)計(jì)過程中才發(fā)現(xiàn)理論與實(shí)際的巨大差別。 else LED1=1。 discan=0x00。k++) //4位 LED掃描控制 { if(table[Dis_play[k]] != 0) { Disdata=table[Dis_play[k]]。 // 取個位數(shù)據(jù)暫存 if(!Dis_play[0]) // 最高位為 0都不顯示 { Dis_play[0]=0x0a。 // 取中間八位 ,即整數(shù)部分的值 Dis_play[0]=Dis_ram[0]/100。 return temp1。 WriteOneChar(0xcc)。 程序啟動后,首先清理系統(tǒng)內(nèi)存,然后對溫度進(jìn)行采集,通過溫度采集芯片內(nèi)部轉(zhuǎn)換后,傳輸?shù)絾纹瑱C(jī),由單片 機(jī)控制顯示設(shè)備,顯示現(xiàn)在的溫度,然后系統(tǒng)進(jìn)入待機(jī)狀態(tài),等待鍵盤輸入設(shè)定溫度,系統(tǒng)將設(shè)定溫度與現(xiàn)在溫度進(jìn)行比較,得出結(jié)果,啟動制冷系統(tǒng)或者加熱系統(tǒng)。串行下載器是一個軟件程序,它允許通過標(biāo)準(zhǔn) PC 機(jī)上的串口串行下載匯編程序到片內(nèi) 8kB的閃速程序存儲器中。通常 OSC 的輸出時鐘頻率 fosc為 ~ 16 MHz,典型值為 12 MHz或者 MHz。 在引腳 XTAL1和 XTAL2外接晶體振蕩器,就構(gòu)成了內(nèi)部震蕩方式,內(nèi)部震蕩方式所得的時鐘信號比較穩(wěn)定,實(shí)用電路中使用較多。 電源電路 :將 220V,50HZ的交流電壓轉(zhuǎn)換成 5V直流電壓。 根據(jù)此式算出的掃描頻率 f實(shí)際是 LED驅(qū)動掃描的最小頻率,若低于此頻率,則有可能導(dǎo)致 LED的閃爍; f也不可能越高越好,掃描的頻率太高,每組 LED的點(diǎn)亮?xí)r間就越短,因此有可能導(dǎo)致 LED的亮度不夠或顯示效果不理想等一些問題。由于每一個 LED 均由獨(dú)立的 I/O 口控制,因此優(yōu)點(diǎn)是軟件 編程簡單,顯示亮度高,缺點(diǎn)是占用 I/O端口多,如驅(qū)動 5個數(shù)碼管靜態(tài)顯示則需要 58= 40根 I/O端口來驅(qū)動,要知道一個 AT89C51單片機(jī)可用的 I/O端口才 32個,實(shí)際應(yīng)用時必須增加譯碼驅(qū)動器進(jìn)行驅(qū)動, 增加了硬件電路的復(fù)雜性。 P2 口的 , P2 口的 ,在 10ms定時中斷服務(wù)程序中分別對顯示的各位進(jìn)行動態(tài)掃描顯示。為保證在有效的 DS18B20時鐘周期內(nèi)提供足夠的電流,我們用一個 電阻 R30和 89C51的一個 I/O口( )來完成對 DS18B20總線的上拉。由于電流環(huán)電路是低阻抗電路,對噪音的敏感度低,因此提高通訊系統(tǒng)的抗干擾能力,常用于有噪音干擾的環(huán)境里傳輸信號。 這種晶閘管與二極管不同的是,當(dāng)其兩端加上正向電壓而控制極不加電壓時,晶閘管并不導(dǎo)通,其正向電流很小,處于正向阻斷狀態(tài);當(dāng)其兩端加上正向電壓、且控制極上(與陰極間)也加上一正向電壓時,晶閘管便進(jìn)入導(dǎo)通狀態(tài),這時管壓降很?。?1V左右)。由于各位的段選線并聯(lián),段碼的輸出對各位來說都是相同的,因此,同一時刻,如果各位選線都處于選通狀態(tài)的話,那 LED顯示器將顯示相同的字符。共陰極LED顯示器的發(fā)光二極管的陰極連接在一起,通常此公共陰極接地,當(dāng)某個發(fā)光二極管的陽極為高電平時,發(fā)光二極管點(diǎn)亮,相應(yīng)的段被顯示。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建 傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。可滿足 40℃~ 90℃測量 范圍,具有靈敏度高,電阻值高,體積小,結(jié)構(gòu)簡單,價格低廉,化學(xué)穩(wěn)定性好,使用壽命長等優(yōu)點(diǎn);但其互換性較差,而且線性度也很差,不能直接用于 A/D轉(zhuǎn)換,應(yīng)該用硬件或軟件對其進(jìn)行線性化補(bǔ)償。 ~: P0 口 I/O 引腳,或數(shù)據(jù)線 /低 8 位地址總線復(fù)用引腳。 具體的實(shí)現(xiàn)方案 實(shí)現(xiàn)方案的技術(shù)線路為:用按鈕輸入標(biāo)準(zhǔn)溫度值,用 LED實(shí)時顯示環(huán)境空氣溫度,用驅(qū)動電路控制壓縮機(jī)完成加熱和制冷調(diào)節(jié),用 ISIS軟件對設(shè)計(jì)進(jìn)行仿真,用 C語言完成軟件編程。其中單片機(jī)的控制程序是起到各個電路之間的相互協(xié)調(diào),控制各個電路正常工作的至關(guān)重要的作用。這種控制方法,一方面操作不方便;另一方面溫度波動范圍大,不但影響人的舒適感,而且會造成一定的能量損耗。而傳統(tǒng)的中央空調(diào)靠設(shè)置機(jī)械溫控開關(guān)來實(shí)現(xiàn)房間的恒溫控制。在整個設(shè)計(jì)中,涉及到溫度檢測電路、驅(qū)動控制電路、顯示電路、鍵盤電路以及電源的設(shè)計(jì)等電路???制簡單,思路清晰,各單元模塊的相互連接較簡單,同時成本低廉,用到的各種器件都是常用器件,更具有使用性 。空氣顯示部分 :4/PSEN:片外程序存儲器讀允許控制器。負(fù)溫度系數(shù)熱敏電阻器的特點(diǎn)是:在工作溫度范圍內(nèi)電阻阻值隨溫度的升高而降低。單線數(shù)字溫度傳感器 DS18B20簡介:新的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟(jì)、數(shù)字化。這種顯示器有共陽極和共陰極兩種。其中段選線占用一個 8位 I/O 口,而位選線占用 N個 I/O 口( N為 LED顯示器的個數(shù))。利用它可以用較小的功率控制較大功率,在交、直流電動機(jī)調(diào)速系統(tǒng)、調(diào)功系統(tǒng)、隨動系統(tǒng)和無觸點(diǎn)開關(guān)等方面均獲得了廣泛的應(yīng)用。一方面光耦合器 可以起到隔離兩個系統(tǒng)地線的作用,使兩個系統(tǒng)的電源相互獨(dú)立,消除地電位不同所產(chǎn)生的影響;另一方面,光電耦合器的發(fā)光二極管是電流驅(qū)動器件,可以形成電流環(huán)路的傳送形式。 圖 21 溫度采集電路 溫度檢測系統(tǒng)原理圖 如圖 21所示 ,采用 外接 電源供電方式。顯示方式有動態(tài)掃描和靜態(tài)掃描,兩種都可 以實(shí)現(xiàn)顯示功能,但由于靜態(tài)掃描要用到多片串入并出芯片,考慮到電路板成本計(jì)算,本人采用節(jié)約硬件資源的動態(tài)掃描顯示方式。此種設(shè)計(jì)一般應(yīng)用在單個 LED的驅(qū)動或LED 數(shù)量較少,且所選的 MCUI/O 口比較充裕的情況下。式中, f為掃描的頻率,對應(yīng)為定時器的時間( T=1/ f); 32則是由 32ms換算而來, 32ms對應(yīng)的頻率剛好為 32Hz; N則時總的 LED的組 數(shù)(此例中 N=4)。如:有一個單元存儲了 45這樣一位數(shù),則需轉(zhuǎn)換成四位 BCD碼 (0100) (1001)然后放入A中, A中 BCD碼,高四位代表 4,低 四位代表 5,同時送給兩個譯 碼器中,譯碼后 45 字就在兩個 LED 中顯示出來。本電路選用的電容為 33pF,晶振頻率為 12MHz。石英晶振起振后要能在 X2 線上輸出一個 3V 左右的正弦波,以便使 MCS51 片內(nèi)的 10 OSC電路按石英晶振相同頻率自激振蕩。 Keil 在 Windows操作系統(tǒng)下直接使用,編譯匯編源程序,并生成 16 進(jìn)制文件和列表文件。 主程序流程圖 本設(shè)計(jì)主程序流程如圖 31所示。 // 初始化 ds18b2子函數(shù) delay_MS(1)。 // 兩字節(jié)合成一個整型變量。 // 存入小數(shù)部分顯示值 Dis_ram[0]=tem4。 // 取十位數(shù)據(jù)暫存 Dis_play[2]=Dis_play[2]%10。k4。 //顯示 C delay_MS(90)。 if(Dis_play[4]==1) shengwen()。每天的努力,喚來了我對課程設(shè)計(jì)的重新的認(rèn)識,對 51 單片機(jī)和控制系統(tǒng)的深刻理解,實(shí)現(xiàn)了真正實(shí)踐的目的。我有如此的收獲于我的帶領(lǐng)老師潘云霞辛勤教導(dǎo)緊密相連,多謝臧老師諄諄教誨。 // 定義一個標(biāo)志 ,溫度是負(fù)或正 ,1 為負(fù) ,0 為正 uchar data temp_data[2]={0x00,0x00}。 //定義增加鍵 //sbit KO = P3^3。 for( 。 //稍做延時 DQ = 0。 for (i=8。 } void WriteOneChar(unsigned char dat) // 寫字節(jié)子函數(shù) { uchar i = 0。 dat=1。 WriteOneChar(0xcc)。 return temp1。 // 取中間八位 ,即整數(shù)部分的值 Dis_play[0]=Dis_ram[0]/100。 // 取個位數(shù)據(jù)暫存 if(!Dis_play[0]) // 最高位 為 0 都不顯示 { Dis_play[0]=0x0a。k++) //4 位 LED 掃描控制 { if(table[Dis_play[k]] != 0) { Disdata=table[Dis_play[k]]。 discan=0x00。 else LED1=1。 shi=SX/10。 P0=table[ge]。 } } } if(DEC==0) { delay1(120)。 discan=scan_con[4]。 //位選 P0=0xc6。s antiracism taskforce, is in London for the Football Association39。 May be back in the past, to oneself the paranoid weird belief disillusionment, these days, my mind has 31 been very messy, in my mind constantly. Always feel oneself should go to do something, or write something. Twenty years of life trajectory deeply shallow, suddenly feel something, do it. 一字開頭的年齡已經(jīng)到了尾聲。t want to give vent to out your inner voice can be in the high school children of the feelings in a period, but was eventually infarction when graduation party in the throat, later again stood on the pitch he has sweat profusely, looked at his thrown a basketball hoops, suddenly found himself has already can39。那些曾經(jīng)所謂的非做不可,只是青蔥年華里自己給自己注射的一支強(qiáng)心劑,或者說,是自以為是的精神寄托罷了。ll be traveling fast, so despite the distance, it will not 33 be like diving into the deep end of a pool. It will be like he is diving into the shallow end. Skydiver preps for the big jump When he jumps, he is expected to reach the speed of sound 690 mph (1,110 kph) in less than 40 seconds. Like hitting the top of the water, he will