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

正文內(nèi)容

智能小區(qū)信息公告提示系統(tǒng)設(shè)計(jì)-資料下載頁(yè)

2025-07-28 23:36本頁(yè)面
  

【正文】 P89LPC931內(nèi)置一個(gè)獨(dú)立的波特率發(fā)生器,與用定時(shí)器方式相比,它簡(jiǎn)單易用,可以在程序運(yùn)行時(shí)更改波特率,同時(shí)也釋放了定時(shí)器T1作為其他用途,因此設(shè)計(jì)使用波特率發(fā)生器來(lái)產(chǎn)生UART波特率。此時(shí)的UART的波特率取決于寄存器BRGRI和BRGRO的值,利用內(nèi)部波特率發(fā)生器時(shí),波特率的計(jì)算公式為波特率=CCLK/((BRGRI,BRGRO)+16)其中CCLK為單片機(jī)時(shí)鐘,它是晶振時(shí)鐘頻率(OSCCLK)的1/2N,N為分頻寄存器DIVM的值,N為O時(shí)CCLK=OSCCLK。BRGRI/O是波特率發(fā)生器速率設(shè)置的高/低字節(jié)根據(jù)公式(1)得到在單片機(jī)時(shí)鐘CCLK=OSCCLK=12MHz下,9600bit/s計(jì)算得OxO4D2,19200計(jì)算得0x0261,38400計(jì)算得0x0128。例如,使用9600波特率,則BRGRI=0x04,BRGRO=0xD2。SCON為串口(UART)控制寄存器,其控制位如下:其中:SMO/FE如果SMODO=0,該位作為SMO,和SMI一起定義串口模式。如果SMODO=l,該位作為FE(幀錯(cuò)誤)。當(dāng)檢測(cè)到一個(gè)無(wú)效的停止位時(shí),FE被接收器置位。SMI和SMO定義串行口操作模式。SMZ使能模式2和3中的多機(jī)通信功能。REN使能串行接收。由軟件置位以使能接收,軟件清零則禁止接收。TBS模式2和3中將要發(fā)送的第9位數(shù)據(jù)。RBS模式2和3中接收的第9位數(shù)據(jù),在模式1中,RBS是接收到的停止位。TI發(fā)送中斷標(biāo)志。RI接收中斷標(biāo)志。本系統(tǒng)為一臺(tái)上位PC機(jī)對(duì)應(yīng)一臺(tái)無(wú)線發(fā)射模塊,不使用多機(jī)通信功能。上位PC機(jī)串口常用數(shù)據(jù)發(fā)送格式為1位起始位、8位數(shù)據(jù)(LSB先)和1位停止位,無(wú)奇偶校驗(yàn)位,一共l0位數(shù)據(jù),因此選用和卜位機(jī)格式匹配的模式l進(jìn)行通信。根據(jù)寄存器各控制位定義,對(duì)串口配置如下:SCON=0x50。 //串口方式lBRGCON=0x00。 //刀寫(xiě)入計(jì)數(shù)值前先關(guān)閉波特率發(fā)生器SSTAT=oxEO。 //選擇獨(dú)立的Tx/Rx中斷BRGRI=0x04。 //波特率為960Okbit/s,高字節(jié)BRGRO=OxD2。 //低字節(jié)BRGCON=0x03。 //打開(kāi)波特率發(fā)生器ESR=1。 //開(kāi)串口接收中斷(IENO39。4)EST=l。 //開(kāi)串口發(fā)送中斷(IENI`6)EA=l。 刀開(kāi)總中斷2. QN8027無(wú)線收發(fā)程序設(shè)計(jì)發(fā)射模塊通過(guò)串口接收到的數(shù)據(jù)后,通過(guò)SPI接口發(fā)送給QN8027進(jìn)行無(wú)線轉(zhuǎn)發(fā)。QN8027一共有四種工作模式,其中有兩種活動(dòng)RX/TX模式和兩種節(jié)電模式.活動(dòng)模式:ShoekBurst RX。ShoekBurst TX節(jié)能模式:掉電和SPI編程。standby和SPI編程QN8027工作模式由TRX_eE、TX_EN、PWR_UP的設(shè)置來(lái)設(shè)定。ShockBurstTM活動(dòng)模式用于進(jìn)行數(shù)據(jù)無(wú)線收發(fā)。在發(fā)送數(shù)據(jù)時(shí),QN8027自動(dòng)加上字頭和CRC校驗(yàn)碼,這里加上的字頭和CRC校驗(yàn)碼與前面幀格式中的不是同一個(gè)。前面包括CRC校驗(yàn)碼等信息的一幀共32個(gè)字節(jié),在這里被作為數(shù)據(jù)轉(zhuǎn)發(fā)出去。當(dāng)發(fā)送過(guò)程完成后,通過(guò)DR引腳通知LPC931單片機(jī)數(shù)據(jù)發(fā)射完畢。在接收數(shù)據(jù)時(shí),QN8027自動(dòng)把字頭和CRC校驗(yàn)碼移去。QN8027有硬件CRC校驗(yàn)功能, 當(dāng)開(kāi)始收到數(shù)據(jù)中的地址與自己的匹配時(shí),QN8027會(huì)將AM腳置高(AM:QN8027的引腳,地址匹配信號(hào)),然后是接收數(shù)據(jù)部分,當(dāng)接收完數(shù)據(jù)且CRC校驗(yàn)正確時(shí)將DR腳置高(DR:數(shù)據(jù)有效信號(hào))。如果接收到的數(shù)據(jù)校驗(yàn)出錯(cuò),則AM會(huì)變低,這樣單片機(jī)就能知道有數(shù)據(jù)出錯(cuò),然后進(jìn)行出錯(cuò)處理了。在程序中主要對(duì)射頻配置寄存器進(jìn)行配置。射頻配置寄存器共10個(gè)字節(jié),各字節(jié)控制位說(shuō)明如下:字節(jié)0:[7:0] CH_NO[7:0]: CH_NO有9位,字節(jié)0連同字節(jié)1的CH_NO[8]和HFREQ_PLL控制nRF905的載波頻段。載波頻率的計(jì)算公式:字節(jié)1:[0] CH_NO[8] :參見(jiàn)字節(jié)0[1] HFREQ_PLL:0器件工作在433MHZ頻段l器件工作在868/915MHZ頻段確定發(fā)射頻率,再根據(jù)上面公式計(jì)算得到CH_NO數(shù)值。:發(fā)射頻率CH_NO[8:0]〔001001100]〔001101011〕〔001101100]〔001111011][3:2] PA_PwR: 輸出功率0010dBm(默認(rèn))012dBm10+6dBm11+10dBm[4]RX_RED_PWR: ,但接收靈敏度降低。O正常模式(默認(rèn)) 1低功耗模式〔5]AUTO_RETRAN: 自動(dòng)重發(fā)TX寄存器中的數(shù)據(jù)包,如果TRX_CE和TX_EN被設(shè)置為高。0 不重發(fā)數(shù)據(jù)包(默認(rèn))1 自動(dòng)重發(fā)數(shù)據(jù)包[7:6] 保留字節(jié)2:[2:0] RXWF〔2:0] :RX地址寬度0011字節(jié)RX地址寬度(默認(rèn))1004字節(jié)Rx地址寬度[3]保留[6:4]TX_WF[2:0]:TX地址寬度0011字節(jié)TX地址寬度1004字節(jié)TX地址寬度[7] 保留字節(jié)3:[5:0] RX_PW〔5:0〕:RX接收有效數(shù)據(jù)寬度000001l字節(jié)Rx有效數(shù)據(jù)寬度0000102字節(jié)Rx有效數(shù)據(jù)寬度……10000032字節(jié)RX有效數(shù)據(jù)寬度[7:6]保留字節(jié)4:[5:0]TxPW[5:0]:TX發(fā)送有效數(shù)據(jù)寬度000001l字節(jié)Tx有效數(shù)據(jù)寬度0000102字節(jié)Tx有效數(shù)據(jù)寬度……10000032字節(jié)TX有效數(shù)據(jù)寬度[7:6]保留字節(jié)5:RX地址O字節(jié)字節(jié)6:RX地址l字節(jié)字節(jié)7:Rx地址2字節(jié)字節(jié)8:RX地址3字節(jié)字節(jié)9:[1:0] UP_CLK_FREQ[1:0]:輸出時(shí)鐘頻率004MHZ012MHZ101MHZ11500KHZ[2]UP_CLK_EN:輸出時(shí)鐘使能O沒(méi)有外部時(shí)鐘1外部時(shí)鐘信號(hào)使能(默認(rèn))[5:3] x0F [2:0]:晶體振蕩器頻率,必須依據(jù)外部晶體的標(biāo)稱頻率設(shè)置(無(wú)線模塊上905芯片外接晶振的頻率)0004MHZ0018MHZ01012MHZ01116MHZ10020MHZ(默認(rèn))[6] CRC_EN:CRC校驗(yàn)允許0不允許1允許(默認(rèn))[7] CRC一MODE:CRC模式08位CRC校驗(yàn)位116位CRC校驗(yàn)位(默認(rèn)),輸出功率為+l0dBm,不自動(dòng)重發(fā)數(shù)據(jù)包方式,4字節(jié)RX/TX地址寬度,使用12MHZ外接晶體振蕩器,不輸出時(shí)鐘,允許CRC校驗(yàn)(16位CRC校驗(yàn)位)。 無(wú)線接收模塊程序設(shè)計(jì)無(wú)線接收模塊的核心控制單元為P89LPC931,需要實(shí)現(xiàn)的功能有:通過(guò)QN8027接收數(shù)據(jù),進(jìn)行CRC數(shù)據(jù)校驗(yàn),正確則將數(shù)據(jù)通過(guò)I2C總線儲(chǔ)存到CAT24C256串行存儲(chǔ)芯片中,并發(fā)送正確接收應(yīng)答,否則發(fā)送錯(cuò)誤代碼。當(dāng)要顯示的數(shù)據(jù)都接收完成后,再根據(jù)要顯示的方式從存儲(chǔ)芯片中取出數(shù)據(jù)通過(guò)I2C總線發(fā)送到各個(gè)顯示屏模塊(從存儲(chǔ)芯片中取出數(shù)據(jù)的算法將在后面結(jié)合顯示模塊程序設(shè)計(jì)一起進(jìn)行)。QN8027數(shù)據(jù)收發(fā)流程與無(wú)線發(fā)送模塊相同,可以參見(jiàn)前面說(shuō)明。由于對(duì)串行存儲(chǔ)芯片操作和與顯示模塊通信都需要通過(guò)I2C總線進(jìn)行,下面先介紹I2C總線通信。1. I2C總線通信LPC92LPC931內(nèi)部都自帶硬件I2C總線控制器,只要對(duì)I2CON、I2DAT、I2STAT以及I2ADR寄存器進(jìn)行讀寫(xiě)操作就可以完成I2C總線的各種操作。硬件I2C有各種標(biāo)志位,可以通過(guò)讀取標(biāo)志位對(duì)總線的狀態(tài)進(jìn)行判定,從而做出相應(yīng)的處理,這是軟件模擬I39。C總線所不具備的。I2C總線的通信速率受主機(jī)控制,能快能慢,但是最高速率是有限制的, I2C總線上數(shù)據(jù)的傳輸速率在標(biāo)準(zhǔn)模式下為100kbps,在快速模式下為400kbPs。I2C總線位速率可通過(guò)I2SCLL及I2SCLH兩個(gè)寄存器進(jìn)行設(shè)置,其位速率計(jì)算公式如下在調(diào)用之前需要做總線初始化工作,主發(fā)送模式下主器件的初始化包括: (l) I2C總線位速率設(shè)置。 (2)完成以上設(shè)置后,可將I2CON寄存器中的STA位置1,啟動(dòng)主發(fā)送器模式。(3)對(duì)I2CON寄存器,使能I2EN位,即使能I2C總線。清零STA、STO、51。從器件的初始化包括:(l)設(shè)置從機(jī)地址,地址的設(shè)定遵照7位I2C地址標(biāo)準(zhǔn),僅設(shè)定高7位,最低位保留。設(shè)置的地址不要與系統(tǒng)內(nèi)的其他I2C器件沖突。(2)對(duì)I2CON寄存器,使能I2EN位。清零STA、STO、51。AA=l,即使能從模式。I2C協(xié)議中定義了起始和停止條件時(shí)序,時(shí)序圖見(jiàn)圖48。在SCL線是高電平時(shí),SDA線從高電平向低電平切換表示起始條件。當(dāng)SCL線是高電平時(shí),SDA線由低電平向高電平切換表示停止條件。起始條件和停止條件之間為數(shù)據(jù)傳輸操作。圖38 I2C起始和停止條件時(shí)序I2C總線是以字節(jié)為單位收發(fā)數(shù)據(jù),每次傳輸?shù)淖止?jié)數(shù)量沒(méi)有嚴(yán)格限制。首先傳輸?shù)氖菙?shù)據(jù)的最高位(MSB,第7位),最后傳輸?shù)氖亲畹臀?LSB,第0位)。另外,每個(gè)字節(jié)之后還要跟一個(gè)響應(yīng)位,稱為應(yīng)答。其步驟為:(1) 起始條件后,開(kāi)始進(jìn)行數(shù)據(jù)傳輸。(2) 一個(gè)字節(jié)需要8個(gè)SCLK就可以傳輸完成,首先傳輸MSB。(3) 第9個(gè)SCLK將接收應(yīng)答信號(hào)。上面的步驟就完成了一個(gè)字節(jié)的傳輸, I2C總線的字節(jié)傳輸時(shí)序如圖49所示。圖39 I2C總線字節(jié)傳輸時(shí)序在字節(jié)傳輸后的第9個(gè)SCLK高平時(shí),檢測(cè)SDA的狀態(tài),如果是低電平,說(shuō)明接收器已經(jīng)接收到數(shù)據(jù),并返回了ACK信號(hào)。如果是高電平,則說(shuō)明器件返回了NOACK信號(hào),或者是通信不正常。如果作為發(fā)送器的主機(jī)在發(fā)送一個(gè)字節(jié)后,沒(méi)有收到應(yīng)答位,或作為接收器的主機(jī)沒(méi)有發(fā)送應(yīng)答位,那么主機(jī)必須產(chǎn)生一個(gè)停止總線信號(hào)或重新啟動(dòng)總線信號(hào)來(lái)結(jié)束本次傳輸。若從機(jī)不能接收更多的數(shù)據(jù)字節(jié),將不產(chǎn)生這個(gè)應(yīng)答位,主機(jī)在接收完最后個(gè)字節(jié)后不產(chǎn)生應(yīng)答,就是通知從機(jī)數(shù)據(jù)傳輸結(jié)束。在I2C總線的應(yīng)用場(chǎng)合,一般是先進(jìn)行器件尋址,將從機(jī)選中后,再與其進(jìn)行數(shù)據(jù)傳輸。所以一次完整的數(shù)據(jù)傳輸流程為:啟動(dòng)總線發(fā)送從機(jī)地址和方向位進(jìn)行字節(jié)數(shù)據(jù)傳輸結(jié)束總線。2. 接收模塊,顯示模塊與單片機(jī)之間I2C通信程序設(shè)計(jì)單片機(jī)之間I2C通信程序也通過(guò)調(diào)用I2C軟件中函數(shù)包實(shí)現(xiàn)。對(duì)于發(fā)送數(shù)據(jù)端,首先進(jìn)行主器件初始化(見(jiàn)I2C總線通信一節(jié)),然后通過(guò)置位STA啟動(dòng)總線,進(jìn)入主模式,等待SI置位,SI置位后就可以進(jìn)行從機(jī)尋址操作,即發(fā)送七位地址和一位讀/寫(xiě)標(biāo)志,接著發(fā)送一到多個(gè)字節(jié)數(shù)據(jù),數(shù)據(jù)傳輸完后,發(fā)送器件通過(guò)置位STO來(lái)釋放總線。設(shè)計(jì)各顯示模塊地址為從Ox00開(kāi)始,由于LSB為讀/寫(xiě)標(biāo)志,高七位才為地址,所以地址加1相當(dāng)于整個(gè)字節(jié)數(shù)據(jù)加2。調(diào)用I^C軟件包向連續(xù)地址從器件分別發(fā)送多個(gè)字節(jié)數(shù)據(jù)的主要程序如下:Unsigned char EEdata[129]。 //一次發(fā)送最大128字節(jié),即4個(gè)漢字字符點(diǎn)陣數(shù)據(jù),其中第l個(gè)字節(jié)為數(shù)據(jù)/命令標(biāo)志。Slave=0x00。 //第一個(gè)顯示模塊地址。for(i=0。iPnum。i++) //Pnum為顯示模塊數(shù)。{ ReadData(amp。EEdata)。 //從串行存儲(chǔ)器中根據(jù)顯示方式讀入要顯示的數(shù)據(jù)到EBdata數(shù)組。ISendstrExt(Slave,EEdata,n)。 //調(diào)用I2C軟件包發(fā)送數(shù)據(jù), n為數(shù)據(jù)個(gè)數(shù)Slave=Slave+2。 //從地址數(shù)據(jù)加2。} 顯示模塊程序設(shè)計(jì)顯示模塊通過(guò)I2C接口接收顯示方式命令和點(diǎn)陣顯示數(shù)據(jù),并進(jìn)行顯示。根據(jù)所接收數(shù)據(jù)的第一個(gè)字節(jié)判斷是命令(Ox00)還是數(shù)據(jù)(oxff),如果是命令, 則后面字節(jié)為命令代碼,否則為數(shù)據(jù)。下面為命令代碼定義:30位:顯示方式 0000固定顯示一屏(只有接收新數(shù)據(jù)后才更換顯示內(nèi)容) 0001閃爍顯示0010從右到左0011從下到上74位:顯示速度0000—1111,16級(jí)速度由于需要實(shí)現(xiàn)不同方式的顯示,因此無(wú)線接收模塊從串行存儲(chǔ)器中取出數(shù)據(jù)的順序也不一樣。要顯示的內(nèi)容存儲(chǔ)在無(wú)線接收模塊存儲(chǔ)芯片CAT24C256中,在存儲(chǔ)芯片中的存儲(chǔ)順序是:從芯片0地址開(kāi)始,根據(jù)顯示內(nèi)容的順序來(lái)存儲(chǔ)。每個(gè)16xl6點(diǎn)陣漢字32字節(jié)數(shù)據(jù)是按點(diǎn)陣從左到右,從上到下方式依次得到,在芯片中也按這個(gè)順序存儲(chǔ)。顯示時(shí),無(wú)線接收模塊根據(jù)顯示方式以及顯示模塊行、列排列數(shù)計(jì)算當(dāng)前需要取哪個(gè)地址的數(shù)據(jù),然后發(fā)送給顯示模塊。下面分別進(jìn)行各顯示方式下無(wú)線接收模塊讀取數(shù)據(jù)以及顯示模塊顯示的設(shè)計(jì)。(l)固定顯示一屏在這種方式下,一屏數(shù)據(jù)顯示一段時(shí)間后,就全部更新,顯示后面的內(nèi)容。因此,從存儲(chǔ)芯片讀取數(shù)據(jù)的順序和存儲(chǔ)的順序相同,只需對(duì)每個(gè)模塊順序取4x32=128字節(jié)數(shù)據(jù)發(fā)送即可。定義m:顯示模塊行數(shù),n:顯示模塊列數(shù)。則該方式下,每次更新顯示時(shí)發(fā)送m*n*l28字節(jié)的數(shù)據(jù),直到全部?jī)?nèi)容發(fā)送完畢。各顯示模塊接收到數(shù)據(jù)后,按固定顯示一屏方式進(jìn)行顯示。圖314為數(shù)據(jù)在顯示屏上的顯示位置,圖中為4塊顯示模塊組合成的2行2列顯示屏,顯示數(shù)據(jù)在存儲(chǔ)芯片中為順序存放,假設(shè)圖中第一個(gè)點(diǎn)陣數(shù)據(jù)從2O00H開(kāi)始存放,則其在顯示屏上的顯示順序?yàn)槊總€(gè)漢字點(diǎn)陣從左到右,從上到下,漢字之間為從左到右方式顯示。圖314 數(shù)據(jù)在顯示屏上顯示位置程序?qū)崿F(xiàn)時(shí),按位置將128字節(jié)顯示數(shù)據(jù)放入16*8的二維數(shù)組來(lái)顯示。顯示模塊是以動(dòng)態(tài)刷新方式顯示,也就是不斷地循環(huán)執(zhí)行行掃描顯示程序。(2)從下向上移動(dòng)在這種方式下,每次更新只需要向各顯示模塊發(fā)送要移入的最后一行數(shù)據(jù)。但由于數(shù)據(jù)不連續(xù),因此要通過(guò)計(jì)算得到當(dāng)前所取數(shù)據(jù)地址。定義addr:顯示數(shù)據(jù)地址,則計(jì)算式為:addr=addr+0x20,即每?jī)蓚€(gè)漢字點(diǎn)陣
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1