freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于以太網(wǎng)的防火報警系統(tǒng)測控楊龍畢業(yè)設(shè)計-預覽頁

2025-07-13 12:44 上一頁面

下一頁面
 

【正文】 ,錯誤很少,可容易地在高級語言的水平上迅速地被排掉。根據(jù)程序中的上下限判斷是否報警。檢測主函數(shù)程序如下:ifdef fasonguchar last=0。 while(1) { tmstart()。 if(tem_mq_data[1]) beeping()。 if(itcount==0) { last=tmrtemp()。 } }endif 溫度傳感器驅(qū)動子程序 DS18B20特性介紹DS18B20是dallas公司的最新單線數(shù)字溫度傳感器,它的體積更小、適用電壓更寬、更經(jīng)濟,ds18b20是世界上第一片支持“一線總線”接口的溫度傳感器,一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念,它的測量溫度范圍為-55~+125℃,在-10~+85℃范圍內(nèi),精度為177。 DS18B20內(nèi)部結(jié)構(gòu)DS18B20內(nèi)部結(jié)構(gòu)主要由4部分組成:64位光刻ROM,溫度傳感器,非揮發(fā)的溫度報警觸發(fā)器TH和TL,配制寄存器。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當符號位S=0時,表示測得的溫度值為正值,可以直接將二進制位轉(zhuǎn)換為十進制;當符號位S=1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數(shù)值。因此,可用多只DS18B20同時測量溫度并進行報警搜索。時序就是高低電平隨時間的變化,和我們見到的波形隨時間變化差不多。左半個圖是往DS18B20中寫0的時序圖,右半個圖是往DS18B20中寫1的時序圖。delay_us(5)。//確保發(fā)送一位的時間大于61us寫0的操作步驟:(1)把總線從高電平拉為低電平;(2)延時60us;(3)延時10us左右,確保寫一位的時間大于61us;(4)把總線拉高,等待下一次寫操作。 //延時約60usdelay_us(5)。讀數(shù)據(jù)的操作步驟(0和1相同):;;,準備讀取數(shù)據(jù);;,確保一次讀取的完成;對應(yīng)的代碼:ds=1。//釋放總線temp1=ds。//確保讀取一位的時間大于61usC. 芯片復位: 圖34 DS18B20復位時序圖黑色粗線表示單片機將總線拉低,灰色表示DS18B20將總線拉低,細黑線表示上拉電阻將總線拉高,斜線部分表示無效時間即沒有任何操作起作用。 //延時約700usdelay_us(160)。單片機通過以太網(wǎng)控制芯片傳到總線。TMDAT=0。i=4。while(~TMDAT)。bit dat。i=8。}寫DS18B20一個字節(jié)數(shù)據(jù):void tmwbyte(uchar dat){uint i。j=8。 if(testb) …… else …… } }}啟動測溫函數(shù):void tmstart(void){tmreset()。tmwbyte(0x44)。dmsec(1)。} //負溫度求補碼y1=tem[0]4。} MQ2特性介紹半導體煙霧傳感器包括用氧化物半導體陶瓷材料作為敏感體制作的煙霧傳感器以及用單晶半導體器件制作的煙霧傳感器。本設(shè)計中采用的MQ2型煙霧傳感器屬于二氧化錫半導體氣敏材料,屬于表面離子式N型半導體。利用這一點就可以獲得這種煙霧存在的信息。當與煙霧接觸時,如果晶粒間界處的勢壘受 到該煙霧的調(diào)制而變化,就會引起表而電導率的變化。這就是MQ2型燃性煙霧傳感器檢測可燃煙霧的基本特性及其原理。沒有煙霧時輸出0。}bit MQ_TEST(){ bit temp=0。} 蜂鳴器工作原理報警裝置如圖附錄1采用有源壓電式蜂鳴器。}void beeping(){ char i=10。 beep=1。正是以太網(wǎng)絡(luò)的極大普及,也就為通過網(wǎng)絡(luò)傳輸防火報警系統(tǒng)的數(shù)據(jù)提供了網(wǎng)絡(luò)基礎(chǔ)。以太網(wǎng)的物理傳輸幀見表33表33 以太網(wǎng)的物理傳輸幀PR SD DA SA TYPE DATA PAD FCS 56 8 48 48 16 不超過 可 32位 位 位 位 位 1500字 選 位 PR:同步位,用于收發(fā)雙方的時鐘同步,同時也指明了傳輸?shù)乃俾剩?0M 和100M的時鐘頻率不一樣,所以100M 網(wǎng)卡可以兼容10M 網(wǎng)卡),是56 位的二進制數(shù)101010101010.....SD: 分隔位,表示下面跟著的是真正的數(shù)據(jù),而不是同步時鐘,為8 位的10101011,跟同步位不同的是最后2 位是11 而不是10. DA:目的地址,以太網(wǎng)的地址為48 位(6 個字節(jié))二進制地址,則是廣播地址,廣播地址的數(shù)據(jù)可以被任何網(wǎng)卡接收到.SA:源地址,48 位,表明該幀的數(shù)據(jù)是哪個網(wǎng)卡發(fā)的,即發(fā)送端的網(wǎng)卡地址,同樣是6 個字節(jié).TYPE:類型字段,表明該幀的數(shù)據(jù)是什么類型的數(shù)據(jù),不同的協(xié)議的類型字段不同。(14 字節(jié)為DA,SA,TYPE)PAD:填充位。內(nèi)部結(jié)構(gòu)如圖 39所示。MAC(介質(zhì)訪問控制)邏輯完成以下功能:當單片機向網(wǎng)上發(fā)送數(shù)據(jù)時,先將一幀數(shù)據(jù)通過遠程DMA 通道送RTL8019AS 中的發(fā)送緩存區(qū),然后發(fā)出傳送命令;當RTL8019AS 完成了上幀的發(fā)送后,再開始此幀的發(fā)送。一塊16K 字節(jié),地址為0x4000~0x7fff;一塊32 字節(jié),地址為0x0000~0x001f。要接收和發(fā)送數(shù)據(jù)包就必須通過DMA 讀寫RTL8019AS 內(nèi)部的16KB RAM。接收緩沖區(qū)構(gòu)成一個循環(huán)FIFO隊列,PSTART、PSTOP兩個寄存器限定了循環(huán)隊列的開始和結(jié)束頁,CURR為寫入指針,受芯片控制,BNRY為讀出指針,由主機程序控制。此處,設(shè)計2個8bit寄存器和一個2輸入比較器,當收到數(shù)據(jù)包時,接收狀態(tài)機根據(jù)當前狀態(tài)和比較器結(jié)果決定下一個狀態(tài),如果CURR=BNRY,進入停收狀態(tài);反之,CURR按模增1。RTL8019AS以太網(wǎng)控制器以存儲器(16K雙口RAM)為核心,本地和遠端控制器并發(fā)操作。程序從main()開始執(zhí)行:include /* 為作者所用的頭文件,包含所有AT89S52寄存器的大寫和小寫的定義,和一些常用的子函數(shù),一些宏的定義*/ main(){delaymsecond(10)。define uint unsigned int //uint 代表unsigned int ,一般使用縮寫uintdefine uchar unsigned char //uchar 代表unsigned char sbit reset=p3^4。 //使太網(wǎng)控制器的RSTDRV引腳變成高電平,太網(wǎng)控制器是高電平復位的。//延時程序,至少需要reset=0。temp=reg1f。i++)。讀寫是隨意的,寫入任意的數(shù)都將復位網(wǎng)卡。l 向命令寄存器CR(OOH)寫入21H(選擇寄存器頁0),首先對第0頁的寄存器初始化,網(wǎng)卡停止運行。定義4000H一4BFFH段為發(fā)送緩沖區(qū),共12頁,剛好可以存儲2個最大的以太網(wǎng)數(shù)據(jù)包,4C00H.7 FFH段為接收緩沖區(qū),共52頁。l 設(shè)置CR為61H(選擇頁面1),對第1頁的寄存器初始化。 檢測節(jié)點RTL8019as以太網(wǎng)控制器驅(qū)動程序設(shè)計RTL8019as工作流程比較簡單,驅(qū)動程序?qū)⒁l(fā)送的數(shù)據(jù)包按指定格式寫入芯片并啟動發(fā)送命令,RTL8019as會自動把數(shù)據(jù)包轉(zhuǎn)換成物理幀格式在物理信道上傳輸。驅(qū)動程序有3種功能:芯片初始化、收包、發(fā)包。部分程序:****定義緩沖區(qū)****union addr_u mynodeid[3]={0x0f00,0xf0f0,0xf001}。 uchar temp。 { //delay i= { //delay i= //讀入命令寄存器的值 tempamp。 //寫入高兩位 reg00=temp。//RSAR1 DMA read highaddress= 0reg08=0。 mynodeid[i/2].word=。 {//目的地址0xf0。f0。0f。//PAR0 … … } {//類型 整個數(shù)據(jù)包長度60 buffer[12]=0x00。i++) { buffer[i]=usr_data[i14]。 for(i=0。ii++) //檢查txp為是否為低 if((reg00amp。 //表示發(fā)送成功 reg00=0x3E。 //txd packet start。 //to sendpacket。主控節(jié)點主程序流程圖如圖311所示。 beep_init()。 while(1) { if(recv_packet(get_data)) { disp(get_data[0])。位數(shù)有半位,1,2,3,4,5,6,8,10位等等....,LED數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數(shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。選用時要注意產(chǎn)品尺寸顏色,功耗,亮度,波長等。下圖例舉的是共陽極的LED數(shù)碼管,共陽就是7段的顯示字碼共用一個電源的正。共陽極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理如圖314所示。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機的I/O埠進行驅(qū)動,或者使用如BCD碼二十進位*器*進行驅(qū)動。透過分時輪流控制各個LED數(shù)碼管的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。部分程序如下:uchar table[]={0xc0,… …0x8e}。x00=unm/100。//取余即取個位n=0。 }void disp(uchar date){ uchar i=5。主控節(jié)點以太網(wǎng)控制器的程序設(shè)計: 主控節(jié)點以太網(wǎng)控制器主要是接收數(shù)據(jù)包。通過判斷CURR指針和BNRY指針的距離確定是否有新的數(shù)據(jù)包到達。在收到的數(shù)據(jù)包中,前面有4個字節(jié)的附加信息,尾部還有4個字節(jié)的CRC校驗碼。PHY:發(fā)送的數(shù)據(jù)包具有多播或廣播的目的地址時置位。PRX:接收無誤標志。最后根據(jù)下一包的數(shù)據(jù)指針的值更新BNRY寄存器,以進行下一個包的接收。//start read address 0x4000… …reg00=0x0a。//讀取一個字節(jié)//0xdf00 DMA 端口 if(i%2==0) { =temp。//讀取重復的字節(jié) 網(wǎng)卡的地址存儲是重復存儲的因此有6個字節(jié)的數(shù)據(jù)}}****讀網(wǎng)卡DMA****void read_dma(uint address,uint count,uchar *buffer){ uint i。icount。 reg00=0x22。//讀過程出錯 bnry++。 read_dma(address,0x0018,recv_data)。 if(((recv_data[0]amp。 //切換回page(0) bnry=curr1。 }else { address=(bnry8)+4。 } return 1。系統(tǒng)的調(diào)試包括靜態(tài)調(diào)試和動態(tài)調(diào)試。靜態(tài)調(diào)試完成后,接著進行軟件的動態(tài)調(diào)試。采用自下而上的調(diào)試方法,先調(diào)試功能電路,再調(diào)試整個系統(tǒng)。同時查閱了大量相關(guān)資料,包括查閱相關(guān)書籍和網(wǎng)上的資料,獲得了一些相關(guān)信息。通過這次的設(shè)計與制作,讓我了解設(shè)計電路的程序與設(shè)計理念。在這里首先感謝我的導師宋玉琴,她平日里工作繁多,但在我做畢業(yè)設(shè)計的每個階段,從查閱資料到設(shè)計方案的修改和確定,整個過程中都給予了我悉心的指導。時間如白駒過隙,轉(zhuǎn)瞬間在西安工程大學的求學就要結(jié)束了。同時還要感謝同組的搭檔王爽同學,還有一些熱心的同學的幫助與支持,在此向他們表示感謝。 for(m=0。n++)。 EA=1。 tmstart()。 time_intrrupt_init()。 disp_init()。 tem_mq_data[0]=last。 } endif////////////////////////////////////////////////////////// ifdef jieshou //接收網(wǎng)絡(luò)數(shù)據(jù)顯示 uchar xdata get_data[10]。 } } }endif}ifdef fasongvoid time0() interrupt 1 { TL0=0XB0。 dmsec(1)。//讀取溫度暫存uchar flag=0。i++){} }}void tmreset(void){uint i。TMDAT=1。while(TMDAT)。}bit tmrbit(void){uint i。TMDAT=1。i=8。dat=0。 dat=(j7)|(dat1)。bit testb。 0x01。 i++。 } else { TMDAT=0。 i++。dmsec(1)。tmreset()。tmwbyte(0xbe)。tem[0]=(255tem[0])。y3=y1|y2。 temp=
點擊復制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1