基于单片机的酒店标准房设计的C程序.docx
- 文档编号:2203881
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:24
- 大小:20.67KB
基于单片机的酒店标准房设计的C程序.docx
《基于单片机的酒店标准房设计的C程序.docx》由会员分享,可在线阅读,更多相关《基于单片机的酒店标准房设计的C程序.docx(24页珍藏版)》请在冰豆网上搜索。
基于单片机的酒店标准房设计的C程序
程序:
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
typedefunsignedcharBYTE;
#defineTX_ADR_WIDTH5//5bytesTX(RX)addresswidth
#defineTX_PLOAD_WIDTH20//20bytesTXpayload
#defineRX_PLOAD_WIDTH20
//SPI(nRF24L01)commands
#defineREAD_REG0x00//Definereadcommandtoregister
#defineWRITE_REG0x20//Definewritecommandtoregister
#defineWR_TX_PLOAD0xA0//DefineTXpayloadregisteraddress
#defineFLUSH_TX0xE1//DefineflushTXregistercommand
#defineREUSE_TX_PL0xE3//DefinereuseTXpayloadregistercommand
//***************************************************//
//SPI(nRF24L01)registers(addresses)
#defineCONFIG0x00//'Config'registeraddress
#defineEN_AA0x01//'EnableAutoAcknowledgment'registeraddress
#defineEN_RXADDR0x02//'EnabledRXaddresses'registeraddress
#defineSETUP_AW0x03//'Setupaddresswidth'registeraddress
#defineSETUP_RETR0x04//'SetupAuto.Retrans'registeraddress
#defineRF_CH0x05//'RFchannel'registeraddress
#defineRF_SETUP0x06//'RFsetup'registeraddress
#defineSTATUS0x07//'Status'registeraddress
#defineOBSERVE_TX0x08//'ObserveTX'registeraddress
#defineRX_ADDR_P00x0A//'RXaddresspipe0'registeraddress
#defineTX_ADDR0x10//'TXaddress'registeraddress
#defineRX_PW_P00x11//'RXpayloadwidth,pipe0'registeraddress
ucharconstTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};//静态发送地址
sbitMISO=P1^4;
sbitMOSI=P3^4;
sbitSCK=P3^5;
sbitCE=P1^7;
sbitCSN=P3^6;
sbitIRQ=P3^3;
sbitbeef=P1^5;//蜂鸣器
sbitDOUT=P1^6;//气体检测
sbitLED1=P2^1;
sbitLED2=P2^2;
sbitLED3=P2^3;
sbitLED4=P2^4;
sbitLED5=P2^5;
sbitLED6=P2^6;
sbitLED7=P2^7;
sbitstratflag=P3^2;
ucharirtime;
ucharbitnum;
ucharircode[4];
ucharirprosok;
uchardisp[8];
voidT0init(void)
{
TMOD=0x02;
TH0=0x00;
TL0=0x00;
ET0=1;
EA=1;
TR0=1;
}
voidint0init(void)
{
EA=1;
EX0=1;
IT0=1;
}
voidirwork(void)
{
disp[0]=ircode[0]/16;
disp[1]=ircode[0]%16;
disp[2]=ircode[1]/16;
disp[3]=ircode[1]%16;
disp[4]=ircode[2]/16;
disp[5]=ircode[2]%16;
disp[6]=ircode[3]/16;
disp[7]=ircode[3]%16;
}
voiddelay2ms(unsignedintms)//延时1毫秒(不够精确的)
{
unsignedinti,j;
for(i=0;i for(j=0;j<200;j++); } voiddisplay(void) { if(ircode[2]==24) { LED2=~LED2; delay2ms(500); } elseif(ircode[2]==94) { LED3=~LED3; delay2ms(500); } elseif(ircode[2]==8) { LED4=~LED4; delay2ms(500); } elseif(ircode[2]==28) { LED5=~LED5; delay2ms(500); } elseif(ircode[2]==90) { LED6=~LED6; delay2ms(500); } elseif(ircode[2]==74) { LED1=1; LED2=1; LED3=1; LED4=1; LED5=1; LED6=1; } ircode[2]=0; } /***************************************************/ voiddelay10us() { uchari; i++; i++; i++; i++; } //写一个字节到24L01,同时读出一个字节 ucharSPI_RW(ucharbyte) { ucharbit_ctr; for(bit_ctr=0;bit_ctr<8;bit_ctr++)//output8-bit { MOSI=(byte&0x80);//output'byte',MSBtoMOSI byte=(byte<<1);//shiftnextbitintoMSB.. SCK=1;//SetSCKhigh.. byte|=MISO;//capturecurrentMISObit SCK=0;//..thensetSCKlowagain } return(byte);//returnreadbyte } //向寄存器reg写一个字节,同时返回状态字节 ucharSPI_RW_Reg(BYTEreg,BYTEvalue) { ucharstatus; CSN=0;//CSNlow,initSPItransa status=SPI_RW(reg);//selectregister SPI_RW(value);//..andwritevaluetoit.. CSN=1;//CSNhighagain return(status);//returnnRF24L01statusbyte } //写入bytes字节的数据 ucharSPI_Write_Buf(BYTEreg,BYTE*pBuf,BYTEbytes) { ucharstatus,byte_ctr; CSN=0; status=SPI_RW(reg); for(byte_ctr=0;byte_ctr SPI_RW(*pBuf++); CSN=1;//SetCSNhighagain return(status);// } //发送函数 voidnRF24L01_TxPacket(unsignedchar*tx_buf) { CE=0; SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);//WritesdatatoTXpayload SPI_RW_Reg(WRITE_REG+CONFIG,0x0e);//SetPWR_UPbit,enableCRC(2bytes)&Prim: TX.MAX_RT&TX_DSenabled.. CE=1; delay10us(); CE=0; } BYTESPI_Read(BYTEreg) { BYTEreg_val; CSN=0;//CSNlow,initializeSPIcommunication... SPI_RW(reg);//Selectregistertoreadfrom.. reg_val=SPI_RW(0);//..thenreadregistervalue CSN=1;//CSNhigh,terminateSPIcommunication return(reg_val);//returnregistervalue } //配置函数 voidnRF24L01_Config(void) { //initialio CE=0;//chipenable CSN=1;//Spidisable SCK=0;//Spiclocklineinithigh CE=0; SPI_RW_Reg(WRITE_REG+CONFIG,0x0f);//SetPWR_UPbit,enableCRC(2bytes)&Prim: RX.RX_DRenabled.. SPI_RW_Reg(WRITE_REG+EN_AA,0x01);//EnableAuto.Ack: Pipe0 SPI_RW_Reg(WRITE_REG+EN_RXADDR,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 酒店 标准 设计 程序