基于单片机的万年历温度无线传输控制系统系统

一、系统方案

本设计采用DS1302采集年月日时分秒,DS18B20采集温度值,按键设置温度报警上下限,实际测量温度低于下限或高于上限,蜂鸣器报警,同时将测量温度上传到蓝牙助手。

二、硬件设计

原理图如下:

三、单片机软件设计

1、首先是系统初始化

P0 = P1 = P2 = P3 = 0xff; //单片机IO口初始化为1

init_time0(); //初始化定时器

init_1602(); //lcd1602初始化

init_1602_dis_csf(); //lcd1602初始化显示

复制代码
temperature = read_temp();	//先读出温度的值
delay_1ms(650);

Uart_init();

2、液晶显示程序

/lcd1602写命令函数 */

void write_com(uchar com)

{

e=0;

rs=0;

rw=0;

P0=com;

delay_uint(3);

e=1;

delay_uint(25);

e=0;

}

/lcd1602写数据函数 */

void write_data(uchar dat)

{

e=0;

rs=1;

rw=0;

P0=dat;

delay_uint(3);

e=1;

delay_uint(25);

e=0;

}

3、按键程序

/***独立按键程序 /

uchar key_can; //按键值

void key() //独立按键程序

{

static uchar key_new;

key_can = 20; //按键值还原

P3 |= 0x78; //对应的按键IO口输出为1

if((P3 & 0x78) != 0x78) //按键按下

{

delay_1ms(1); //按键消抖动

if(((P3 & 0x78) != 0x78) && (key_new == 1))

{ //确认是按键按下

key_new = 0;

switch(P3 & 0x78)

{

case 0x70: key_can = 4; break; //得到按键值

case 0x68: key_can = 3; break; //得到按键值

case 0x58: key_can = 2; break; //得到按键值

case 0x38: key_can = 1; break; //得到按键值

}

// write_sfm2(1,0,key_can); //显示按键值

}

}

else

key_new = 1;

}

4、核心算法程序

/主函数 ***/

void main()

{

P0 = P1 = P2 = P3 = 0xff; //单片机IO口初始化为1

init_time0(); //初始化定时器

init_1602(); //lcd1602初始化

init_1602_dis_csf(); //lcd1602初始化显示

复制代码
temperature = read_temp();	//先读出温度的值
delay_1ms(650);

Uart_init();

复制代码
while(1)
{
	  if(temperature>ah*10){led1=0;}
	  else
	  {led1=1; }
	if(temperature<al*10){led2=0;}
	  else
	  {led2=1; }
	


	  if((temperature>ah*10)||(temperature<al*10)){beep=0;}
	  else
	  {beep=1; }
	
			mcu_pc('W');
       	mcu_pc('e');
      	mcu_pc('e');
				mcu_pc('d');
       	mcu_pc('u');
		mcu_pc(':');
		mcu_pc(' ');
		mcu_pc(temperature/100+0x30);
			mcu_pc(temperature%100/10+0x30);
       	mcu_pc('.');
				mcu_pc(temperature%10+0x30);
		  	mcu_pc('C');
	   	mcu_pc(0X0D);
	    mcu_pc(0X0A);
		
	key();			 //按键程序
	if(key_can < 10)
	{
			key_with();	
			read_time();	
	}
	
	if(flag_200ms == 1)
	{	
		flag_200ms = 0;
		if(menu_1 == 0)
		{
			read_time();		  //读时间
			EA=0;
			temperature = read_temp();	//先读出温度的值
			EA=1;
			init_1602_ds1302();   //显示时钟
		}
	}
	delay_1ms(1);
}

}

四、 proteus仿真设计

Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
小莞尔24 分钟前
【51单片机】【protues仿真】基于51单片机四层电梯系统
单片机·嵌入式硬件
CFZPL32 分钟前
使用江科大串口发送函数发送freertos的vTaskList出现跑飞
单片机
F133168929571 小时前
WD5030A,24V降5V,15A 大电流,应用于手机、平板、笔记本充电器
stm32·单片机·嵌入式硬件·51单片机·硬件工程·pcb工艺
易享电子2 小时前
基于单片机电器断路器保护器系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·fpga开发·51单片机·proteus
爱倒腾的老唐5 小时前
01、如何学习单片机
单片机·嵌入式硬件·学习
点灯小铭5 小时前
基于单片机的夹具压力控制系统设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计
雾削木11 小时前
stm32解锁芯片
javascript·stm32·单片机·嵌入式硬件·gitee
璞致电子13 小时前
fpga开发板ZYNQ 璞致 PZ7010/7020 邮票孔核心板简介-ZYNQ7000系列小系统学习板
linux·嵌入式硬件·学习·fpga开发·fpga·fpga开发板·xilinx开发板
三佛科技-1341638421213 小时前
手持小风扇MCU方案,智能风扇方案设计开发
单片机·嵌入式硬件
btzhy13 小时前
STM32单片机:基本定时器应用:PWM 生成(STM32L4xx)
stm32·单片机·嵌入式硬件·基本定时器应用:pwm生成