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

正文內(nèi)容

基于單片機(jī)的門禁系統(tǒng)設(shè)計(jì)54536-閱讀頁

2025-07-09 15:56本頁面
  

【正文】 i rfid_rcount。 }}無線通信子程序主要負(fù)責(zé)將單片機(jī)的數(shù)據(jù)通過串口傳輸給無線傳輸模塊,再由無線傳輸模塊發(fā)射給PC機(jī)[17]。T0初始化開全局中斷和T0中斷T0V0=1向串口寫RFID數(shù)據(jù)命令讀串口RFID數(shù)據(jù)將接收數(shù)據(jù)發(fā)送到PC機(jī)等待接收PC端數(shù)據(jù)開鎖蜂鳴器報(bào)警NYYN鎖復(fù)位數(shù)據(jù)合法?Rfidrcount=8?圖44 無線通信流程圖無線通信子程序如下:/*******************************************************///FUNC:T0_init()///外部中斷初始化,T0掃描RFID模塊*******************************************************/void T0_init(void){ TCCR0 |= 0x05。 /// enable timer0 TCNT0 = 111。 if(rfid_rcount==8) //檢測到卡數(shù)據(jù),將數(shù)據(jù)發(fā)送給PC { RF12_SEND(rfid_rdata[4])。 RF12_SEND(rfid_rdata[6])。 while(PORTBamp。//收到PC返回的正確用戶命令,開鎖 if(lock_number==0xFF) { PORTD amp。 }} LCD顯示子程序LCD顯示子程序負(fù)責(zé)顯示當(dāng)前時間,根據(jù)不同的刷卡結(jié)果顯示對應(yīng)的字型。入口LCD初始化功能設(shè)置清顯示RAM區(qū)獲得要顯示RAM地址延時1ms寫入相應(yīng)數(shù)據(jù)返回主程序NY數(shù)據(jù)顯示完畢?圖45 LCD顯示子程序流程圖LCD顯示子程序如下:/******************************************************** * 函數(shù)名稱:delay_nms * * 入口參數(shù):ms * * 返回參數(shù):N/A * * 函數(shù)說明:產(chǎn)生1ms演示 * *******************************************************/ void delay_nms(unsigned int ms) { while(ms) { _delay_ms(1)。 delay_nms(1)。 Lcd_Wcmd(0x30)。 Lcd_Wcmd(0x30)。 //display status setup: display enbale Lcd_Wcmd(0x01)。 RS_INSTRUCTION()。 EN_H()。 0x80)。} /******************************************************** * 函數(shù)名稱:Lcd_Wcmd * * 入口參數(shù):cmd * * 返回參數(shù):N/A * * 函數(shù)說明:write cmd to lcd * * RS=1 RW=0 CS=片選 E=下降沿 * /*******************************************************/ void Lcd_Wcmd(uc cmd) { Lcd_Ready()。 PORTD = cmd。 RW_WRITE()。 EN_L()。 LCD_DIR = 0xFF。 //set data RS_DATA()。 EN_H()。 }/******************************************************** * 函數(shù)名稱:Char_Display * * 入口參數(shù):N/A * * 返回參數(shù):N/A * * 函數(shù)說明:display characters * *******************************************************/ void Char_Display(void) { Lcd_Wcmd(0x90)。 //歡 Lcd_Wdat(0xB6)。 //迎 Lcd_Wdat(0xAD)。 //光 Lcd_Wdat(0xE2)。 //臨 Lcd_Wdat(0xD9)。 //set ddram address counter Lcd_Wdat(0XB)。 Lcd_Wdat(0Xf8)。 //set ddram address counter Lcd_Wdat(0XD4)。 Lcd_Wdat(0XBB)。 Lcd_Wdat(0XF0)。 //STOP TCNT1H = 0xE3。 TCCR1A = 0x00。 //START TIMER TIMSK |= 0x04。 } else { numeral_second_counter = 0。 } else {numeral_minute_counter = 0。 } else { numeral_hour_counter =0。 BCD_code[1] = (numeral_second_counter/10) % 10。 BCD_code[3] = (numeral_minute_counter/10) % 10。 BCD_code[5] = (numeral_hour_counter/10) % 10。 Decode_numeral(BCD_code[5])。 Lcd_Wdat(0xCA)。 Decode_numeral(BCD_code[3])。 Lcd_Wdat(0xB7)。 Decode_numeral(BCD_code[1])。 Lcd_Wdat(0xC3)。 TCCR1B = 0x00。 //SETUP TCNT1L = 0xE0。 TCCR1B = 0x05。} /******************************************************** * 函數(shù)名稱:Decode_numeral * * 入口參數(shù):figure,colon * * 返回參數(shù):N/A * * 函數(shù)說明:將所需顯示的字符顯示到lcd * *******************************************************/ void Decode_numeral(uc figure) {switch(figure) { case 0: Lcd_Wdat(0x30)。 case 1: Lcd_Wdat(0x31)。 case 2: Lcd_Wdat(0x32)。 case 3: Lcd_Wdat(0x33)。 case 4: Lcd_Wdat(0x34)。 case 5: Lcd_Wdat(0x35)。 case 6: Lcd_Wdat(0x36)。 case 7: Lcd_Wdat(0x37)。 case 8: Lcd_Wdat(0x38)。 case 9: Lcd_Wdat(0x39)。 default: break。由于無線傳輸過程中存在的不確定性以及外部干擾,因此無線通信系統(tǒng)在軟件設(shè)計(jì)時,需要注意通信協(xié)議較強(qiáng)的抗干擾性以及處理突發(fā)情況的能力。ATmega16 SPI 的特點(diǎn)如下:? 全雙工3 線同步數(shù)據(jù)傳輸? 主機(jī)或從機(jī)操作? LSB 首先發(fā)送或MSB 首先發(fā)送? 7 種可編程的比特率? 傳輸結(jié)束中斷標(biāo)志? 寫碰撞標(biāo)志檢測? 可以從閑置模式喚醒? 作為主機(jī)時具有倍速模式(CK/2)本系統(tǒng)選取的無線通信模塊支持SPI傳輸所以直接利用ATmega16單片機(jī)的SPI口就可以直接連接無線傳輸模塊,無需進(jìn)行其他電路擴(kuò)展[20]。發(fā)射流程圖如圖42所示。sbit SCK=P21。sbit SDO=P23。 unsigned int RFXX_WRT_CMD(unsigned int aCmd){ unsigned char i。 SCK=0。 for(i=0。i++){ temp=1。 } SCK=0。 0x8000){ SDI=1。 } SCK=1。 } SCK=0。 return(temp)。 SDI=1。 SEL=1。 SDI=0。 RFXX_WRT_CMD(0x80c7)。 RFXX_WRT_CMD(0xA640)。 RFXX_WRT_CMD(0x94A0)。 RFXX_WRT_CMD(0xCA81)。 RFXX_WRT_CMD(0x9850)。 RFXX_WRT_CMD(0xC800)。 } void RF12_SEND(unsigned char aByte){ while(IRQ)。 } void delay_ms(unsigned int x){ unsigned char i。i256。 } } void main(){ unsigned char key。 TMOD=0x01。 ZLG7289_Test()。 ZLG7289_Reset()。 RFXX_WRT_CMD(0x0000)。 checksum=0。 RF12_SEND(0xAA)。 RF12_SEND(0x2D)。 switch(key){ case 02: RF12_SEND(0x00)。 ZLG7289_Download(1,0,0,0)。 case 03: RF12_SEND(0x01)。 ZLG7289_Download(1,0,0,1)。 case 04: RF12_SEND(0x02)。 ZLG7289_Download(1,0,0,2)。 case 07: RF12_SEND(0x03)。 ZLG7289_Download(1,0,0,3)。 default: RF12_SEND(0x05)。 ZLG7289_Download(1,0,0,5)。 }// RF12_SEND(checksum)。 RF12_SEND(0xAA)。 RF12_SEND(0x8201)。 } delay_ms(50)。接收到數(shù)據(jù)之后會將 nIRQ 拉低通知MCU 讀取數(shù)據(jù)。接受過程流程圖如圖43所示。 sbit SCK=P21。 sbit SDO=P23。 /*unsigned int RFXX_WRT_CMD(unsigned int aCmd){ unsigned char i。 SCK=0。 for(i=0。i++){ if(aCmdamp。 else SDI=0。 temp=1。 SCK=0。 } SEL=1。 } unsigned int RFXX_WRT_CMD(unsigned int aCmd){ unsigned char i。 SCK=0。 for(i=0。i++){if(aCmdamp。 }else{SDI=0。 temp=1。 } SCK=0。 } SEL=1。 } void RF12_INT(void){ SEL=0。 SDO=0。 SEL=1。 SDO=1。 RFXX_WRT_CMD(0x80C7)。 RFXX_WRT_CMD(0xA640)。 RFXX_WRT_CMD(0x94A0)。 RFXX_WRT_CMD(0xCA81)。 RFXX_WRT_CMD(0x9850)。 RFXX_WRT_CMD(0xC800)。 } unsigned char RF12_RECV(void){ unsigned int FIFO_data。 RFXX_WRT_CMD(0x0000)。 return(FIFO_dataamp。 } void delay_ms(unsigned int x){ unsigned char i。i125。 } }void write(unsigned char a){ SBUF = a。 TI = 0。 unsigned int temp。 unsigned char a。//計(jì)數(shù)器1工作于方式2TH1 = 0x0FD。 TR1 = 1。= 0x7f。//串行口工作于方式1 ZLG7289_Init(20)。 RF12_INT()。 RFXX_WRT_CMD(0xCA81)。 dat=RF12_RECV()。 ZLG7289_Download(1,0,0,
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1