完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
//宏定义
#define uchar unsigned char #define uint unsigned int //头函数 #include #include ***it jiangwen=P3^0; ***it shengwen=P3^1; ***it choushi=P3^2; ***it jiashi=P3^3; #include "Lcd.h" //无线模块 #include "API .h" #include "nRF24L01.h" //LED 管脚定义 ***it TXLED_R=P1^3; ***it RXLED_Y=P1^5; //蜂鸣器 ***it Feng=P3^5; bit shan=0; #include "KEY.h" uint i; //主机询问命令 uchar CMD[]={0xaa,0xbb,0xcc,0xdd}; uchar Mode=0; uchar temp=0; uchar KK=0; //报警温度 uchar TNumber=30,RHNumber=50,TX=20,HX=40; //主函数 void main() { //LCD初始化显示 Init_LCD(); delay_ms(250); TXLED_R=0; //初始化 RXLED_Y=0; init_io(); //无线初始化IO RX_Mode(); //设置为接收模式 TXLED_R=1; RXLED_Y=1; ///////////////////////////////////////////// TXLED_R=0; //发送指示灯 //////////////////////////////////////////////////////////////////////////////// //循环显示 while(1) { TXLED_R=0; //发送指示灯 TX_ACK(); //发送询问信号 sta = SPI_Read(STATUS); //读状态寄存器 TXLED_R=1; //发送指示灯 if(RX_DR) //判断是否接受到数据 { SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH); // 从RX FIFO读出数据 flag = 1; } delay_ms(100); SPI_RW_Reg(WRITE_REG + STATUS, sta); // 清除RX_DS中断标志 if(flag==1) // 接受完成 { Mode=0; flag=0; } else //设备丢失 { Mode=1; } //显示 //数据显示 if(Mode==0) { RXLED_Y=0; if(temp!=1)//重新初始化 { display1(); temp=1; } display2(RX_BUF[1],RX_BUF[2]);//显示读数 display2(RX_BUF[1],RX_BUF[2]);//显示读数 if(RX_BUF[1]>TNumber) //温度超标降温 { jiangwen=0; } else { jiangwen=1; } if(RX_BUF[1] shengwen=0; } else { shengwen=1; } if(RX_BUF[2]>RHNumber) //湿度超标抽湿 { choushi=0; } else { choushi=1; } if(RX_BUF[2] jiashi=0; } else { jiashi=1; } /*if(RX_BUF[1]>TNumber||RX_BUF[2]>RHNumber) //报警*/ if(((RX_BUF[1]>TNumber||RX_BUF[2]>RHNumber||RX_BUF[1] { Feng=1; } else { Feng=0; } RXLED_Y=1; } //读取键值 KK=KEY_(); if(KK==3)//调整模式 { Mode=2; KK=0; } //数据显示不在线 if(Mode==1) { if(temp!=2) NoLine();//设备丢失 temp=2; } //键盘 else if(Mode==2) { temp=3; display3(); display4(TNumber,RHNumber,TX,HX); write_com(0x0f);//打开光标 write_com(0x80+5); //调温上限 while(KK!=3) { //读取键值 KK=KEY_(); if(KK==1)//++ { TNumber++; if(TNumber==51) TNumber=50; display4(TNumber,RHNumber,TX,HX); write_com(0x0f);//打开光标 write_com(0x80+5); } if(KK==2)//-- { TNumber--; if(TNumber==TX) TNumber++; display4(TNumber,RHNumber,TX,HX); write_com(0x0f);//打开光标 write_com(0x80+5); } } KK=0; write_com(0x0f);//打开光标 write_com(0x80+0x40+5); //调湿x下限 while(KK!=3) { //读取键值 KK=KEY_(); if(KK==1)//++ { TX++; if(TX==TNumber) TX--; display4(TNumber,RHNumber,TX,HX); write_com(0x0f);//打开光标 write_com(0x80+0x40+5); } if(KK==2)//-- { TX--; if(TX==0xff) TX=0; display4(TNumber,RHNumber,TX,HX); write_com(0x0f);//打开光标 write_com(0x80+0x40+5); } } KK=0; write_com(0x0f);//打开光标 write_com(0x80+14); //调湿 上 while(KK!=3) { //读取键值 KK=KEY_(); if(KK==1)//++ { RHNumber++; if(RHNumber==91) RHNumber=90; display4(TNumber,RHNumber,TX,HX); write_com(0x0f);//打开光标 write_com(0x80+14); } if(KK==2)//-- { RHNumber--; if(RHNumber==HX) RHNumber++; display4(TNumber,RHNumber,TX,HX); write_com(0x0f);//打开光标 write_com(0x80+14); } } KK=0; write_com(0x0f);//打开光标 write_com(0x80+0x40+14); //调湿 下 while(KK!=3) { //读取键值 KK=KEY_(); if(KK==1)//++ { HX++; if(HX==RHNumber) HX--; display4(TNumber,RHNumber,TX,HX); write_com(0x0f);//打开光标 write_com(0x80+0x40+14); } if(KK==2)//-- { HX--; if(HX==19) HX=20; display4(TNumber,RHNumber,TX,HX); write_com(0x0f);//打开光标 write_com(0x80+0x40+14); } } KK=0; } delay_ms(200); delay_ms(200); delay_ms(200); } } void time0() interrupt 1//定时器函数 { uchar m; TH0=0x4b; TL0=0xff;//重新赋初值 m++; if(m==4) { shan=~shan; m=0; } } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
3030个成员聚集在这个小组
加入小组2919 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3582 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2338 浏览 1 评论
4798 浏览 1 评论
2572 浏览 1 评论
1321浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3586浏览 2评论
2920浏览 1评论
1497浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 21:59 , Processed in 1.250242 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号