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

一、系统方案

本设计采用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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
小莞尔2 小时前
【Proteus仿真】【51单片机】基于51单片机密码锁
stm32·单片机·嵌入式硬件·51单片机·proteus
XINVRY-FPGA10 小时前
EPM240T100I5N Altera FPGA MAX II CPLD
人工智能·嵌入式硬件·fpga开发·硬件工程·dsp开发·射频工程·fpga
mit6.82411 小时前
[openvela] Hello World :从零开始的完整实践与问题复盘
c++·嵌入式硬件
曙曙学编程14 小时前
stm32——GPIO
c语言·c++·stm32·单片机·嵌入式硬件
第二层皮-合肥15 小时前
FPGA实现ETH接口
单片机·嵌入式硬件·fpga开发
anghost15015 小时前
基于单片机的智能声控窗帘
单片机·嵌入式硬件·mongodb
璞致电子18 小时前
【PZ-ZU47DR-KFB】璞致FPGA ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常见问题说明
嵌入式硬件·fpga开发·fpga·软件无线电·sdr
陌夏微秋19 小时前
FPGA硬件设计2 最小芯片系统-ZYNQ7020/7010
嵌入式硬件·fpga开发·硬件架构·硬件工程·信息与通信·智能硬件
猫猫的小茶馆19 小时前
【STM32】HAL库中的实现(五):ADC (模数转换)
stm32·单片机·嵌入式硬件·mcu·51单片机·智能硬件·pcb工艺
紫阡星影21 小时前
【模块系列】STM32&W25Q64
stm32·单片机·嵌入式硬件