本设计:
基于51单片机无线恒温箱恒温控制系统(全套资料+原理图+源代码+PCB+参考论文)
原理图:Altium Designer
程序编译器:keil 4
编程语言:C语言
编号C0020
下载链接:
【腾讯文档】C0020 网盘链接
https://docs.qq.com/doc/DS2lJaXBiREhycWJr
设计介绍:
1.本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机主控制器;
2.采用DS18B20温度传感器测温;
3.可按键设置刷新温度的时间间隔和温度的上下限;
4.通过NRF24L01无线模块传输数据;
5.当温度超过设定的上或下限时,相应的指示灯亮,同时相应的继电器吸合;
6.继电器可以驱动负载(风扇、制冷片、加热管等);
7.本设计包括主机(显示和控制)和从机(温度检测)两块板子。
原理图(提供源文件):
PCB(没有源文件!):
部分源程序展示(提供完整程序):
//主函数
void main()
{
TXLED_R=0; //点亮LED
RXLED_Y=0;
init_io(); //无线模块初始化IO
RX_Mode(); //设置为接收模式
TXLED_R=1;
RXLED_Y=1; //熄灭led
//进入循环(括号内一直是1,所以一直执行while里的内容)
while(1)
{
sta = SPI_Read(STATUS); //读状态寄存器
if(RX_DR) //判断是否接受到数据
{
SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH); //从RX FIFO读出数据
flag = 1; //接收数据完成标志位置一
RXLED_Y=0; //打开接收指示灯
}
SPI_RW_Reg(WRITE_REG + STATUS, sta); //清除RX_DS中断标志,等待下次接收数据
if(flag) //判断flag是否为1,接收完成
{
flag = 0; //清除标志位
//命令为主机询问
if(RX_BUF[0]==CMD[0]&&RX_BUF[1]==CMD[1]&&RX_BUF[2]==CMD[2]&&RX_BUF[3]==CMD[3]) //判断是否是主机指令
{
//打开接收成功指示
//无线答应信号温度
tmpchange(); //启动温度转换
T_=tmp(); //读取温度
TX_BUF[0]=0xAA;
TX_BUF[1]=T_&0x00ff; //T温度
TX_BUF[2]=(T_>>8)&0x00ff;
TX_BUF[3]=0xdd;
delay_ms(100);
RXLED_Y=1; //关闭接受射指示灯
TXLED_R=0; //打开发射指示灯
TX_Mode(TX_BUF); // 把nRF24L01设置为发送模式并发送数据
Check_ACK(1); // 等待发送完毕,清除TX FIFO
delay_ms(100); //延时
TXLED_R=1; //发送成功指示,关闭发射指示灯
RX_Mode(); // 设置为接收模式
}
}
}
}
资料清单如下:
温馨提示:
1、拿到压缩包文件之后先解压,再运行!!压缩名称带有特殊符号的,要把特殊符号删除再解压,例如⭐;
2、单片机芯片是通用的,无论51还是52、无论stc还是at都一样,引脚功能都是一样的,程序也是一样的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片;
3、仿真原理图和硬件原理图会有着些许区别,如果要做硬件请参照硬件原理图,硬件原理图中的. Sch .pcb等格式要用altium designer 打开;
4、如果没有装KEIL软件:.c .h结尾的文件即为程序,可以选择记事本、Notepad++、Source Insight 4.0、或其他C语言软件打开,打开的就是程序了。其他后缀的文件是写程序编译时自动生成的,没什么用的,不用管;
5、仿真时请打开“.pdsprj”工程文件或“.DSN”工程文件,“.pdsprj”是proteus8版本画的,“.DSN”是proteus7版本画的,版本是向上兼容的,理论上proteus8可以打开“.DSN”工程文件,proteus7打不开“.pdsprj”工程文件;
6、后缀.hex结尾的文件为烧录文件,仿真时一定要记得烧录程序(.hex)。
注:
请大家将keil安装在默认路径,C:Keil,不要安装在其他盘上,以免重新配置工具文件路径。
遇到问题先上网查找答案,大部分问题都能在网上找到解决办法。