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

正文內(nèi)容

小區(qū)智能密碼鎖設(shè)計(jì)(論文)(參考版)

2024-12-11 09:15本頁(yè)面
  

【正文】 NOKIA5110 液晶的調(diào)試 首先將單片機(jī)最小系統(tǒng)與 NOKIA5110 液晶模塊相連,調(diào)試出顯示單個(gè)字符與漢字的程序。調(diào)試成功后,將鍵值獲取函數(shù)打包為庫(kù)文件( 與)。 矩陣鍵盤的調(diào)試 利用單片機(jī)最小系統(tǒng)電路連接一個(gè)矩陣鍵盤和單個(gè)數(shù)碼管電路。應(yīng)用時(shí)不必再考慮底層程序。然后經(jīng)過(guò)不斷改進(jìn),將程序編成庫(kù)文件(包括 與 )。我首先設(shè)定的調(diào)試目標(biāo)是用一個(gè)電路作為發(fā)射端,另外一個(gè)作為接收端,發(fā)射端發(fā)射數(shù)據(jù)點(diǎn)亮接收端的 LED 燈。 接下來(lái)是軟件調(diào)試。 為了驗(yàn)證最小電路的正確性,我編寫了一個(gè)最簡(jiǎn)單的 LED 閃爍程序。 做好一對(duì) 52 單片機(jī)最小系統(tǒng)與 NRF24L01 模塊組成的電路,各自再加上一個(gè) LED 燈與單片機(jī) I/O 口相連。 調(diào)試的第一步是要做硬件。載波頻率極高,一般示波器很難看到它的收發(fā)波形。對(duì)于這個(gè)系統(tǒng),我采用的是逐個(gè)模塊調(diào)試成功后將程序打包,最后將各個(gè)模塊聯(lián)調(diào)的方式。 對(duì)于該小區(qū)智能密碼鎖,模塊較多,程序龐大。 // 返回 讀出的一字節(jié) } /**************************************************/ 遙控部分程序設(shè)計(jì) 無(wú)線鍵盤的程序流程如圖 47: 28 否 是 圖 47 無(wú)線密碼鎖部分流程圖 無(wú)線鍵盤涉及到的程序有 NRF24L01 子程序以及矩陣鍵盤子程序,詳細(xì)程序見(jiàn)附錄。 // 讀 MISO 到 byte 最低位 SCK = 0。 // 低一位移位到最高位 SCK = 1。 0x80)。 i8。 // 返回狀態(tài)寄存器 } /**************************************************/ /************************************************** 函數(shù): SPI_RW() 描述:根據(jù) SPI 協(xié)議,寫一字節(jié)數(shù)據(jù)到 nRF24L01,同時(shí)從 nRF24L01 讀出一字節(jié) /**************************************************/ uchar SPI_RW(uchar byte) { uchar i。 // 然后寫數(shù)據(jù)到該寄存器 CSN = 1。 // CSN 置低,開始傳輸數(shù)據(jù) status = SPI_RW(reg)。 // 返回寄存器數(shù)據(jù) } /**************************************************/ /************************************************** 函數(shù): SPI_RW_Reg() 描述: 寫數(shù)據(jù) value 到 reg 寄存器 27 /**************************************************/ uchar SPI_RW_Reg(uchar reg, uchar value) { uchar status。 // 然后從該寄存器讀數(shù)據(jù) CSN = 1。 // CSN 置低,開始傳輸數(shù)據(jù) SPI_RW(reg)。 // 返回狀態(tài)寄存器 } /**************************************************/ /************************************************** 函數(shù): SPI_Read() 描述:從 reg 寄存器讀一字節(jié) /**************************************************/ uchar SPI_Read(uchar reg) { uchar reg_val。 // 逐個(gè)字節(jié)從 nRF24L01 讀出 CSN = 1。 ibytes。 // CSN 置低,開始傳輸數(shù)據(jù) status = SPI_RW(reg)。 // 返回狀態(tài)寄存器 開始 初始化 NRF24L01 設(shè)置成接收模式 接收數(shù)據(jù) 結(jié)束 26 } /**************************************************/ /************************************************** 函數(shù): SPI_Read_Buf() 描述:從 reg 寄存器讀出 bytes 個(gè)字節(jié),通常用來(lái)讀取接收通道 數(shù)據(jù)或接收 /發(fā)送地址 /**************************************************/ uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes) { uchar status, i。 // 逐個(gè)字節(jié)寫入 nRF24L01 CSN = 1。 ibytes。 // CSN 置低,開始傳輸數(shù)據(jù) status = SPI_RW(reg)。 /************************************************** 函數(shù): SPI_Write_Buf() 描述:把 pBuf 緩存中的數(shù)據(jù)寫入到 nRF24L01,通常用來(lái)寫入發(fā) 射通道數(shù)據(jù)或接收 /發(fā)送地址 /**************************************************/ uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes) { uchar status, i。所以我們只能在軟件中模擬 SPI 時(shí)序。 // 返回 AT24C02 應(yīng)答位 } NRF24L01 無(wú)線收發(fā)程序設(shè)計(jì) NRF24L01 屬于 SPI 時(shí)序芯片。 SCL = 0。 25 delayNOP()。 // 讀取應(yīng)答 delayNOP()。 write_data = 1。 delayNOP()。 _nop_()。 i++) // 循環(huán)移入 8 個(gè)位 { SDA = (bit)(write_data amp。 for(i = 0。 } /**********************************************************/ bit shout(uchar write_data) // 從 MCU移出數(shù)據(jù)到 AT24C02 { uchar i。 SCL = 0。 read_data = 1。 i 8。 } /**********************************************************/ uchar shin() // 從 AT24C02 移出數(shù)據(jù)到 MCU { uchar i,read_data。 delayNOP()。 delayNOP()。 SCL = 0。 SDA = 0。 SCL = 1。一下是以 I2C 總線時(shí)序?yàn)榛A(chǔ)對(duì) AT24C02 進(jìn)行操作的最底層函數(shù)。 在本系統(tǒng)中主要用來(lái)做掉電存儲(chǔ)器,能將輸入的數(shù)據(jù)存入 AT24C02,也能從 AT24C02 中讀出, 程序流程圖如圖 45 所示 : 23 圖 45 存 儲(chǔ) 和讀出 程序流程圖 AT24C02 的讀寫是應(yīng)用的 I2C 總線。i++) { LCD_write_byte(hanzi[c*32+i],1)。// 列,頁(yè) for(i=16。i++) { LCD_write_byte(hanzi[c*32+i],1)。// 列,頁(yè) for(i=0。 } } /* LCD_write_hanzi: 顯示 16(寬) *16(高)點(diǎn)陣列漢字等半角類 輸入?yún)?shù): c:顯示的字符; */ void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char c) //row:列 page:頁(yè) dd:字符 { unsigned char i。 i16。 22 } LCD_set_XY(row*8, page+1)。 i8。 LCD_set_XY(row*8, page)。k++) { LCD_write_byte(0x00,1)。t++) { for(k=0。 for(t=0。 unsigned char k。// column LCD_write_byte(0x80 | X, 0)。//使用基本指令 LCD_write_byte(0x0C,0)。//初始化 Lcd,功能設(shè)定使用擴(kuò)充指令 LCD_write_byte(0xd0,0)。 res=1。 /* LCD_init: 5110LCD 初始化 */ void LCD_init(void) { res=0。 } 液晶顯示程序設(shè)計(jì) 液晶顯示 程序的主要功能是對(duì)當(dāng)前 鎖的 狀態(tài)進(jìn)行 提 示, 在使用液晶時(shí),首先要對(duì)液晶進(jìn)行初始化,然后還要設(shè)置字符的顯示位置,只有將前期的準(zhǔn)備工作設(shè)置完后才能在相應(yīng)位置顯示相應(yīng)的提示信息,當(dāng)沒(méi)有人進(jìn)行操作時(shí),顯示一串提示字符,當(dāng)開鎖正確時(shí),在液晶上也會(huì)顯示相應(yīng)的正確信息提示,當(dāng)開鎖錯(cuò)誤時(shí),在液晶上也會(huì)顯示相應(yīng)的錯(cuò)誤信息提示。//返回鍵值 } } } } // else P1=0xff。j++) { if(keycode== key_code[j]) //查表得鍵值 { key=j。 //組合成鍵編碼 for(j=0。 scan2=P3。 if((scan1amp。0xf0)!=0xf0) //判鍵是否按下 { delayms1(80)。 scan1=P3。 開始 輸入密碼 正確否? 開鎖 判斷按鍵 開鎖模式 密碼修改模式 上鎖 結(jié)束 輸入密碼 正確否? 輸入新密碼 再次輸入 一致否? 修改、存儲(chǔ) Yes No No Yes No Yes 18 圖 43 密碼 處理 程序流程圖 矩陣鍵盤掃描程序 uchar keyscan() { uchar scan1,scan2,keycode,j。若是數(shù)字鍵,則 將 按 鍵值存入到密碼數(shù)組里,然后將輸入的密碼與本身的密碼做比較,若相同,則執(zhí)行開門 并在液晶上 顯示正確 的提示 信息 。主函數(shù)就是通過(guò)這種判斷、調(diào)用的方式來(lái) 完成子程序間各個(gè)功能模塊的協(xié)調(diào)。如果是數(shù)字鍵按下則認(rèn)為輸入的是密碼,此時(shí)調(diào)用密碼處理函數(shù)進(jìn)行處理。 圖 41 無(wú)線遙控密碼鎖的層次方框圖 主 程序主要任務(wù)是協(xié)調(diào)各個(gè)模塊之間的功能,使指定的模塊在特定的狀態(tài)下工作。 在本系統(tǒng)中,軟件的設(shè)計(jì)主要包括: 無(wú)線數(shù)據(jù)的發(fā)送和接收程序設(shè)計(jì) 、 數(shù)據(jù) 存儲(chǔ) 程序設(shè)計(jì) 、 液晶 顯示 程序設(shè)計(jì) 、鍵盤 輸入程序設(shè)計(jì) 、 密碼比較程序設(shè)計(jì)、開鎖程序設(shè) 計(jì)、 報(bào)警程序設(shè)計(jì)等 。 主機(jī)整體電路 15 主機(jī)的整體電路圖如下 315 所示: 12345678RST91011121314151617XTAL218XTAL1
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1