欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14606|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機火焰檢測報警器-課程設(shè)計報告 含源程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:416863 發(fā)表于 2018-10-28 20:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
目錄

摘  要
第一章  緒論
第二章 總體內(nèi)容及設(shè)計
2.1 總體內(nèi)容設(shè)計及目標
2.2 組員及任務(wù)
第三章 電路設(shè)計及元器件選型
3.1 AT89C52單片機控制模塊電路原理圖設(shè)計
3.2晶振起振模塊電路與功能
3.3 1602液晶屏顯示模塊電路原理圖設(shè)計
3.4聲音報警模塊電路原理圖設(shè)計
3.5紅外火焰?zhèn)鞲衅鞴δ芗半娐?br /> 第四章 程序設(shè)計
4.1輸入部分程序
4.2輸出部分程序
4.3定時應(yīng)用與功能
第五章 電路設(shè)計及結(jié)果
第六章 總結(jié)
參考文獻
摘  要
本論文以紅外火焰檢測傳感器和單片機技術(shù)為核心并與其它電子技術(shù)相結(jié)合,設(shè)計出一種技術(shù)水平較好的紅外火焰檢測報警器, 用于火焰檢測, 可檢測 760 納米~1100 納米范圍內(nèi)的熱源,火焰探測角度為 60°范圍。以STC89C52單片機和Realplay火焰檢測傳感器為核心設(shè)計的火焰檢測報警器可實現(xiàn)聲光報警、1602液晶屏顯示報警等功能。是一種結(jié)構(gòu)簡單、性能穩(wěn)定、使用方便、價格低廉、智能化的火焰檢測報警器。其中選用紅外火焰檢測傳感器實現(xiàn)各種火焰的檢測,具有靈敏度高、響應(yīng)快、抗干擾能力強等優(yōu)點,而且價格低廉,使用壽命長。選用的STC89C52單片機,具有高速、低功耗、超強抗干擾等優(yōu)點,是目前同類技術(shù)中性價比較高的產(chǎn)品。本報警裝置具有一定的實用價值。
第一章  緒論
隨著經(jīng)濟的發(fā)展,高層建筑、地下建筑以及大型綜合性建筑日益增多火災(zāi)隱患也隨之增加,火災(zāi)發(fā)生的數(shù)量及其造成的損失都呈逐年上升趨勢,因此,火災(zāi)報警系統(tǒng)成為保障人生命財產(chǎn)安全的重要因素。
火災(zāi)報警系統(tǒng)在國內(nèi)的發(fā)展情況是我國火災(zāi)報警系統(tǒng)起步較發(fā)達國家晚幾十年,從上世紀70年代我國才開始研制生產(chǎn)火災(zāi)報警系統(tǒng)產(chǎn)品。進入80年代后,國內(nèi)廠家也多是模仿國外產(chǎn)品,或是引進國外技術(shù)進行生產(chǎn),沒有真正意義上的核心技術(shù),并且市場也剛剛開始發(fā)育。火災(zāi)報警產(chǎn)品真正開始發(fā)展是在90年代以后,隨著政府逐漸開放國門,國外企業(yè)開始大量進入中國消防市場,帶來先進技術(shù)的同時也促進了市場的成熟。這時期,我國生產(chǎn)火災(zāi)報警產(chǎn)品的企業(yè)也得到了快速發(fā)展,部分企業(yè)進行了合資生產(chǎn)、技術(shù)合作,取得了不菲的成績,也造就現(xiàn)今市場上許多有實力的商家,部分技術(shù)已接近趕上了國際水平。
本設(shè)計采用紅外火焰檢測傳感器、AT89C52單片機以及1062LED液晶屏顯示模塊設(shè)計的一種智能火災(zāi)報警器,可以實現(xiàn)聲光報警、液晶屏顯示有無火源等功能。是一種結(jié)構(gòu)簡單、性能穩(wěn)定、使用方便、價格低廉、智能化的火災(zāi)報警器,具有一定的實用價值。
第二章 總體內(nèi)容及設(shè)計2.1 總體內(nèi)容設(shè)計及目標
報警系統(tǒng)主要由數(shù)據(jù)采集模塊、單片機控制模塊、晶振起振模塊、聲光報警模塊、液晶屏顯示模塊、電源模塊組成。圖2-1為火焰檢測報警器的系統(tǒng)結(jié)構(gòu)框圖。
圖2-1 系統(tǒng)結(jié)構(gòu)框圖
AT89C52單片機控制模塊用于實時監(jiān)測外部中斷的電平變化,當(dāng)紅外火焰?zhèn)鞲衅鳈z測到有火焰時,火焰?zhèn)鞲衅鲿敵龅碗娖綌?shù)字信號,單片機將數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的數(shù)字顯示在液晶屏上或聲光報警;晶振起振模塊為系統(tǒng)提供基本的時鐘信號; USB下載/電源模塊為單片機的電源接口,為單片機提供電源及程序燒錄。
2.2 組員及任務(wù)
組員:徐杰龍、利齊帥、林輝、梁慶堂
任務(wù)分配:
徐杰龍:負責(zé)總體電路的原理圖完善,程序流程圖設(shè)計和編寫程序。
利齊帥:負責(zé)AT89C52單片機控制模塊、電源模塊原理圖繪制,AT89C52原理圖元件。
林輝:查找集成電路數(shù)據(jù)手冊、查找資料。
梁慶堂:負責(zé)晶振起振模塊、1602液晶屏顯示模塊原理圖繪制

第三章 電路設(shè)計及元器件選型3.1 AT89C52單片機控制模塊電路原理圖設(shè)計
單片機控制模塊采用AT89C51芯片作為主控芯片,所謂的單片機是將計算機的基本部件微型化并集成到一塊芯片上,具備獨特功能的微型計算機,通常片內(nèi)都含有CPU、ROM、RAM、并行I/O、串行I/O、定時器/計數(shù)器、中斷控制、系統(tǒng)時鐘及系統(tǒng)總線等。單片機全稱為單片微型計算機,又稱微控制器或嵌入式控制器,是一種可通過編程控制的處理器。
如圖3-1所示,單片機的VCC引腳需要接入+5V電源電壓正極,GND引腳需要接入電源電壓的負極。
圖3-1 AT89C52單片機芯片
EA引腳(外部程序存儲器訪問控制端)是單片機的外部程序存儲器訪問控制端,如果它接高電平VCC,則單片機執(zhí)行片內(nèi)部程序存儲器中的程序,從000H開始終止于0FFFH,并在讀取完單片機內(nèi)部程序存儲器的0FFFH后自動轉(zhuǎn)向讀取外部的程序存儲器,一般只用單片機的內(nèi)部程序存儲器,故接高電平;如果接低電平,則單片機訪問的全部是外部程序存儲器,從0000H開始終止于0000FH。
AT89C51單片機共有P0、P1、P2、P3這4組I/O口,每組有8個I/O口,單片機復(fù)位時,這4組I/O口都默認作為輸出端口使用。51單片機上電后,如果沒有人為地控制其I/O口的狀態(tài),它所有未控制的I/O口都默認為高電平。
① P0口是一個開漏型雙向I/O口,其內(nèi)部沒有上拉電阻,為高阻狀態(tài),所以不能正常地輸出高/低電平,使用該I/O口要接100Ω的上拉電阻。P0口具有除一般I/O口外的第二重功能—作為低8位地址線。
② P1口是一組準雙向8位I/O口,每個口可獨立控制,內(nèi)帶上拉電阻,這種接口輸出沒有高阻狀態(tài),輸入也不能鎖存,故不是真正的雙向I/O口,之所以稱它為“準雙向”是因為該口在作為輸入使用前,要先向該口進行寫1操作,然后單片機內(nèi)部才能正確讀出外部信號。也就是要使其有個“準備過程”,故稱其為準雙向口。
③ P2口是一組準雙向8位I/O口,每個口可獨立控制,內(nèi)帶上拉電阻,與P1口相似。P2口具有除一般I/O口外的第二重功能—作為高8位地址線。
3.2晶振起振模塊電路與功能
晶振的作用是為系統(tǒng)提供基本的時鐘信號。通常一個系統(tǒng)共用一個晶振,便于各部分保持同步。如圖3-2所示,XTAL1、XTAL2為時鐘信號端,XTAL1為片內(nèi)振蕩電路的輸入端,XTAL2為片內(nèi)振蕩電路的輸出端。8051有兩種工作方式,一是片內(nèi)時鐘振蕩方式,另一種是外部時鐘方式。片內(nèi)時鐘振蕩電路需在XTAL1、XTAL2這兩個引腳外接石英晶體和振蕩電容,典型的晶振取11.0592MHz(因為可以準確地得到9600波特率和19200波特率,用于有串口通訊的場合)/12MHz(產(chǎn)生精確的us級時間,方便定時操作),振蕩電容的值一般取10pF~30pF的瓷片電容。
圖3-2 晶振起振模塊電路原理圖
3.3 1602液晶屏顯示模塊電路原理圖設(shè)計
液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示的分類方法有很多種,通常可按其顯示方式分為段式、字符式、點陣式等。本設(shè)計字符式顯示。用LCD顯示一個字符時比較復(fù)雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標,在此送上該字符對應(yīng)的代碼即可。其電路原理圖如圖3-3。
圖3-3 1602液晶屏顯示模塊電路原理圖
1602采用標準的16腳接口,其中:
第1腳:VSS為地電源
第2腳:VDD接5V正電源
第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度
第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。
第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和RW共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時可以讀忙信號,當(dāng)RS為高電平RW為低電平時可以寫入數(shù)據(jù)。
第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
第15~16腳:空腳

1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3-1所示:
表3-1 控制命令表
1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)
指令1:清顯示,指令碼01H,光標復(fù)位到地址00H位置。
指令2:光標復(fù)位,光標返回到地址00H。
指令3:光標和顯示模式設(shè)置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。
指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標的開與關(guān),高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。
指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。
指令6:功能設(shè)置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。
指令7:字符發(fā)生器RAM地址設(shè)置。
指令8:DDRAM地址設(shè)置。
指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。
指令10:寫數(shù)據(jù)。
指令11:讀數(shù)據(jù)。

3.4聲音報警模塊電路原理圖設(shè)計
該設(shè)計使用的是無源蜂鳴器,如圖3-4所示。由于蜂鳴器的工作電流一般比較大,以致于單片機的I/O 口是無法直接驅(qū)動的,所以要利用放大電路來驅(qū)動,一般使用三極管來放大電流就可以了。聲報警電路由單片機的P3.4引腳進行控制,當(dāng)P3.4輸出的電平為高電平時,三極管導(dǎo)通,蜂鳴器的電流形成回路,發(fā)出聲音報警;否則,三極管截止,蜂鳴器不發(fā)出聲音。
圖3-4 聲音報警電路
3.5紅外火焰傳感器功能及電路
火焰?zhèn)鞲衅魇菣C器人專門用來搜尋火源的傳感器,當(dāng)然火焰?zhèn)鞲衅饕部梢杂脕頇z測光線的亮度,只是本傳感器對火焰特別靈敏。火焰?zhèn)鞲衅骼眉t外線對對火焰非常敏感的特點,使用特制的紅外線接受管來檢測火焰,然后把火焰的亮度轉(zhuǎn)化為高低變化的電平信號,輸入到中央處理器中,中央處理器根據(jù)信號的變化做出相應(yīng)的程序處理。如圖3-5所示。
圖3-5 火焰?zhèn)鞲衅麟娐吩韴D
用途:  各種火焰,火源探測
模塊特色:
1、 可以檢測火焰或者波長在760納米~1100納米范圍內(nèi)的光源,打火機測試火焰距離為80cm,對火焰越大,測試距離越遠
2、 探測角度60度左右,對火焰光譜特別靈敏
3 、靈敏度可調(diào)(圖中藍色數(shù)字電位器調(diào)節(jié))
4、比較器輸出,信號干凈,波形好,驅(qū)動能力強,超過15mA
5、配可調(diào)精密電位器調(diào)節(jié)靈敏度
6、工作電壓3.3V-5V
7、輸出形式 :DO數(shù)字開關(guān)量輸出(0和1)和AO模擬電壓輸出
8、設(shè)有固定螺栓孔,方便安裝
9、小板PCB尺寸:3.2cm x 1.4cm 10、使用寬電壓LM393比較器
模塊使用說明:
1 、火焰?zhèn)鞲衅鲗鹧孀蠲舾校瑢ζ胀ü庖彩怯蟹磻?yīng)的,一般用做火焰報警等用途。
2、 小板輸出接口可以與單片機IO口直接相連
3、傳感器與火焰要保持一定距離,以免高溫損壞傳感器,對打火機測試火焰距離為80cm,對火焰越大,測試距離越遠
4、小板模擬量輸出方式和AD轉(zhuǎn)換處理,可以獲得更高的精度

第四章 程序設(shè)計4.1輸入部分程序
程序流程圖如圖4-1所示,通電時寄存器初始化、單片機I/O口初始化,液晶屏初始化完成后停留在一個設(shè)定狀態(tài),等待信號驅(qū)動。

                                                       N

                                    Y

圖4-1 輸入程序流程圖
以下為系統(tǒng)初始化過程后顯示子程序。
void lcd_pos(BYTE pos)
{                               //設(shè)定顯示位置
lcd_wcmd(pos | 0x80);
}
void lcd_wdat(BYTE dat)
{                               //寫入字符顯示數(shù)據(jù)到 LCD
while(lcd_bz());
LCD_RS = 1;
LCD_RW = 0;
LCD_EP = 0;
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EP = 1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EP = 0;
}
void lcd_init()
{                      //LCD 初始化設(shè)定
lcd_wcmd(0x38);        //16*2 顯示,5*7 點陣,8 位數(shù)據(jù)
delay(1);
lcd_wcmd(0x0c);        //顯示開,關(guān)光標
delay(1);
lcd_wcmd(0x06);        //移動光標
delay(1);
lcd_wcmd(0x01);        //清除 LCD 的顯示內(nèi)容
delay(1);
}

4.2輸出部分程序
程序流程圖如圖4-2所示,程序開始運行時,定義液晶屏顯示的數(shù)組,程序進入主函數(shù),執(zhí)行顯示指令,當(dāng)有火焰時,火焰?zhèn)鞲衅鬏敵龅碗娖叫盘?,單片機根據(jù)數(shù)據(jù)信號傳送到液晶屏的相應(yīng)I/O口,顯示相應(yīng)的數(shù)組。




                  Y                                         N

圖4-2 輸出程序流程圖
以下為液晶屏顯示函數(shù)內(nèi)容。
if(warning == 0) //有光照時傳感器輸出低電平
            {
              //delay(300);
              if(warning == 0)
              {
                 i=0;
                 while(Fire[ i ] != '\0')
                 {
                   lcd_pos(0x43+i);
                   lcd_wdat(Fire);
                   i++;
                   delay(30);
                 }
                 for(i=0;i<3;i++)
                 {
                   beep = 0;
                   delay(200);
                   beep = 1;
                   delay(200);
                 }
               }
             }
//////////////////////////////////////////
                if(warning == 1)
                {
                  // delay(300);
                  if(warning == 1)
                  {
                     i=0;
                     while(Safe[ i ] != '\0')
                     {
                       lcd_pos(0x43+i);
                       lcd_wdat(Safe);
                                                                         i++;
                                                                         delay(30);
                                                                      }
                     beep = 1;
                     // delay(300);
                   }
                 }
         }
         break;
4.3應(yīng)用與功能
此次設(shè)計主要使用了_nop_延時來實現(xiàn)定時功能,它的作用為:對于延時很短的,要求在us級的,采用“_nop_”函數(shù),這個函數(shù)相當(dāng)匯編NOP指令,延時幾微秒。NOP指令為單周期指令,可由晶振頻率算出延時時間,對于12M晶振,延時1uS。對于延時比較長的,要求在大于10us,采用C51中的循環(huán)語句來實現(xiàn)。


第五章 電路設(shè)計及結(jié)果
如圖5-1為本設(shè)計的總體電路原理圖,該圖是采用Altium Designer電子線路繪圖軟件完成的,圖中的各種元器件都是根據(jù)設(shè)計電路嚴格選定的,并且其參數(shù)大小跟設(shè)計電路完全一致。圖5-2為無火焰時的實物顯示,圖5-3為有火焰時的實物顯示。
圖5-1 總體電路原理圖
圖5-2 無火焰時的實物顯示
圖5-3 有火焰時的實物顯示
現(xiàn)象:當(dāng)給板子供板子的時候,蜂鳴器不響,液晶顯示“TEST……..Safe”,LED燈不亮。當(dāng)出現(xiàn)火焰時蜂鳴器響進行報警,液晶顯示“TEST……..Fire”,LED紅燈亮。

第六章 總結(jié)
本次課程設(shè)計對于我們有很大的幫助,大學(xué)已經(jīng)度過了三年,但是我們還只是停留在理論的學(xué)習(xí)上。但通過本次課程設(shè)計,使我對《模擬電子技術(shù)》這門課程有了更深入的理解。《模擬電子技術(shù)》是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強軟件實踐。一個人的力量是有限的,要想把課程設(shè)計做的更好,就要學(xué)會參考一定的資料,小組共同努力,讓思想有機的結(jié)合起來,得出實驗結(jié)果。
在這個過程中,我們也曾經(jīng)因為仿真失敗而糾結(jié)。但結(jié)果還是很給力的,雖然這只是一次的極簡單的課程制作,可是平心而論,也耗費了我不少的心血,這就讓我不得不佩服開發(fā)技術(shù)的前輩,才意識到老一輩對我們社會的付出,為了人們的生活更美好,他們?yōu)槲覀兩鐣冻龆嗌傩难。?
知識上的收獲重要,精神上的豐收更加可喜。讓我知道了學(xué)無止境的道理。我們每一個人永遠不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財富,經(jīng)歷是一份擁有。這次課程設(shè)計必將成為我人生旅途上一個非常美好的回憶!
通過這次的課程設(shè)計我們對于專業(yè)課的學(xué)習(xí)有了更加深刻的認識,以為現(xiàn)在學(xué)的知識用不上就加以怠慢,等到想用的時候卻發(fā)現(xiàn)自己的學(xué)習(xí)原來是那么的不扎實。以后努力學(xué)好每門專業(yè)課,讓自己擁有更多的知識,才能解決更多的問題!

單片機源程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>

  3. typedef unsigned char BYTE;
  4. typedef bit BOOL;

  5. int i,j,display=0,t02s;
  6. sbit LCD_RS = P2^5;
  7. sbit LCD_RW = P2^6;
  8. sbit LCD_EP = P2^7;
  9. sbit warning = P3^2;
  10. sbit beep = P3^4;
  11. //////////////顯示數(shù)組
  12. BYTE code dis1[] = {" WELCOME TO "};
  13. BYTE code dis2[] = {"3W.auto-ctrl.COM"};
  14. BYTE code dis3[] = {" TEST...... "};
  15. BYTE code dis5[] = {"WWW.auto-ctrl.COM"};
  16. BYTE code Fire[] = {"Fire "};
  17. BYTE code Safe[] = {"Safe "};

  18. void flash();
  19. void delay(int ms)
  20. {                            // 延時子程序
  21.               while(ms--)
  22.               {
  23.                 for(i = 0; i< 250; i++)
  24.       {
  25.                  _nop_();
  26.                 }
  27.               }
  28. }

  29. BOOL lcd_bz()
  30. {                             // 測試 LCD 忙碌狀態(tài)
  31. BOOL result;
  32. LCD_RS = 0;
  33. LCD_RW = 1;
  34. LCD_EP = 1;
  35. _nop_();
  36. result = (BOOL)(P0 & 0x80);
  37. LCD_EP = 0;
  38. return result;
  39. }

  40. void lcd_wcmd(BYTE cmd)
  41. {                            // 寫入指令數(shù)據(jù)到 LCD
  42. while(lcd_bz());
  43. LCD_RS = 0;
  44. LCD_RW = 0;
  45. LCD_EP = 0;
  46. _nop_();
  47. P0 = cmd;
  48. _nop_();
  49. LCD_EP = 1;
  50. _nop_();
  51. LCD_EP = 0;
  52. }

  53. void lcd_pos(BYTE pos)
  54. {                               //設(shè)定顯示位置
  55. lcd_wcmd(pos | 0x80);
  56. }

  57. void lcd_wdat(BYTE dat)
  58. {                               //寫入字符顯示數(shù)據(jù)到 LCD
  59. while(lcd_bz());
  60. LCD_RS = 1;
  61. LCD_RW = 0;
  62. LCD_EP = 0;
  63. P0 = dat;
  64. _nop_();
  65. _nop_();
  66. LCD_EP = 1;
  67. _nop_();
  68. _nop_();
  69. LCD_EP = 0;
  70. }

  71. void lcd_init()
  72. {                      //LCD 初始化設(shè)定
  73. lcd_wcmd(0x38);        //16*2 顯示,5*7 點陣,8 位數(shù)據(jù)
  74. delay(1);
  75. lcd_wcmd(0x0c);        //顯示開,關(guān)光標
  76. delay(1);
  77. lcd_wcmd(0x06);        //移動光標
  78. delay(1);
  79. lcd_wcmd(0x01);        //清除 LCD 的顯示內(nèi)容
  80. delay(1);
  81. }


  82. main()
  83. {
  84.               BYTE i;
  85.               int j=0;
  86.               lcd_init();            // 初始化 LCD
  87.               delay(10);
  88.               lcd_wcmd(0x06);        //向右移動光標
  89.               while(1)
  90.               {
  91.                 switch(display)
  92.       {
  93.                             case 0:
  94.                             {
  95.                                           i=0;
  96.                                           while(dis2[ i ] != '\0')
  97.                                           {
  98.                                                         lcd_pos(0x80+i);
  99.                                                         lcd_wdat(dis2[ i]);
  100.                                                         i++;
  101.                                                         delay(300);
  102.                                           }
  103.                                           flash();
  104.                                           lcd_wcmd(0x01); //清除 LCD 的顯示內(nèi)容
  105.                                           delay(20); //控制兩屏轉(zhuǎn)換時間
  106.                                           display = 1;
  107.                                           lcd_wcmd(0x06); //向右移動光標
  108.                             }
  109.                             break;
  110.                             case 1:
  111.                             {
  112.                               delay(300);
  113.           i = 0;
  114.           while(dis1[ i] != '\0')
  115.           {            //顯示字符" "
  116.             lcd_pos(0x8A+i); //設(shè)置顯示位置為第一行第 17 列
  117.             lcd_wdat(dis1[i]);
  118.             i++;
  119.           }
  120.           delay(300);
  121.           i = 0;
  122.                               while(dis5[i] != '\0')
  123.                               {
  124.             lcd_pos(0x4f+i); //設(shè)置顯示位置為第一行第 17 列
  125.          //顯示字符" "
  126.             lcd_wdat(dis5[i]);
  127.             i++;
  128.           }
  129.           delay(300);
  130.           for(j=0;j<16;j++) //向左移動 16 格
  131.           {
  132.             lcd_wcmd(0x18); //字符同時左移一格
  133.             delay(800); //控制移動時間
  134.           }
  135.                display=2;
  136.         }
  137.         break;
  138.          case 2:
  139.          {
  140.            flash();
  141.            delay(1000);
  142.            lcd_wcmd(0x01); //清除 LCD 的顯示內(nèi)容
  143.            delay(20); //控制兩屏轉(zhuǎn)換時間
  144.            display = 3;
  145.            lcd_wcmd(0x06); //向右移動光標
  146.           }
  147.         break;
  148.          case 3:
  149.          {
  150.                                           i=0;
  151.                                           while(dis3[ i ] != '\0')
  152.                                           {
  153.                                             lcd_pos(0x80+i);
  154.                                             lcd_wdat(dis3[ i]);
  155.                                             i++;
  156.                                             delay(30);
  157.             }
  158.                                                         display=4;
  159.                             }
  160.         break;
  161.          case 4:
  162.          {
  163.             if(warning == 0) //有光照時傳感器輸出低電平
  164.             {
  165.               //delay(300);
  166.               if(warning == 0)
  167.               {
  168.                  i=0;
  169.                  while(Fire[ i ] != '\0')
  170.                  {
  171.                    lcd_pos(0x43+i);
  172.                    lcd_wdat(Fire[ i]);
  173.                    i++;
  174.                    delay(30);
  175.                  }
  176.                  for(i=0;i<3;i++)
  177.                  {
  178.                    beep = 0;
  179.                    delay(200);
  180.                    beep = 1;
  181.                    delay(200);
  182.                  }
  183.                }
  184.              }
  185. //////////////////////////////////////////
  186.                 if(warning == 1)
  187.                 {
  188.                   // delay(300);
  189.                   if(warning == 1)
  190.                   {
  191.                      i=0;
  192.                      while(Safe[ i ] != '\0')
  193.                      {
  194.                        lcd_pos(0x43+i);
  195.                        lcd_wdat(Safe[ i]);
  196.                                                                          i++;
  197.                                                                          delay(30);
  198.                                                                       }
  199.                      beep = 1;
  200.                      // delay(300);
  201.                    }
  202.                  }
  203.          }
  204.          break;
  205.          default:
  206.          break;
  207.         }
  208.      }
  209. ……………………
  210. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
火焰檢測報警器-課程設(shè)計.doc (7.15 MB, 下載次數(shù): 112)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:682260 發(fā)表于 2020-1-6 16:10 | 只看該作者
贊 想下載
回復(fù)

使用道具 舉報

板凳
ID:766661 發(fā)表于 2020-6-3 11:26 | 只看該作者
想要仿真文件
回復(fù)

使用道具 舉報

地板
ID:755250 發(fā)表于 2020-6-12 21:08 | 只看該作者
支持一下.
回復(fù)

使用道具 舉報

5#
無效樓層,該帖已經(jīng)被刪除
6#
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表