Protues 万年历的仿真实验 (STM32+温度显示,可设闹钟)

Protues仿真电路图

部分代码:

1.主函数代码

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "rtc.h"
#include "key.h"
#include "oled.h"
#include "ds18b20.h"
#include "beep.h"

int main(void)
{
 // u8 Menu=0;
	u8 key=0;
	delay_init();       //ÑÓʱ³õʼ»¯
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÖжϷÖ×éÅäÖÃ
  //uart_init(115200);    //´®¿Ú²¨ÌØÂÊÉèÖÃ
	LED_Init();         //LED³õʼ»¯
	RTC_Init();         //RTCʱÖÓ³õʼ»¯
	KEY_Init();         //°´¼ü³õʼ»¯
	BEEP_Init();        //·äÃùÆ÷³õʼ»¯
	OLED_Init();        //OLEDÆÁÄ»³õʼ»¯
	OLED_ColorTurn(0);//0Õý³£ÏÔʾ£¬1 ·´É«ÏÔʾ
  OLED_DisplayTurn(0);//0Õý³£ÏÔʾ 1 ÆÁÄ»·­×ªÏÔʾ
	while(DS18B20_Init())	//DS18B20³õʼ»¯	
	{
		OLED_ShowString(10,2,"DS18B20 Error",24);
		OLED_Refresh();
		delay_ms(200);	
	} 
	OLED_Clear();
	LED0=1;
	BEEP=1;
	delay_ms(200);
	BEEP=0;
	delay_ms(200);
	while(1)
	{ 
      Show_Time();
			Show_Tem();
			OLED_Refresh();	
			if(Alr_Sta==2)
			{
				BEEP=1;
				delay_ms(200);
				BEEP=0;
				delay_ms(200);
			}	
      if((alrcalendar.alrhour==calendar.hour)&&(alrcalendar.alrmin==calendar.min)&&(alrcalendar.alrsec==calendar.sec))
			{
       Alr_Sta=2;
			}				
			key=KEY_Scan(0);	//µÃµ½¼üÖµ	
			if(key)
			{
				switch(key)
				{	
          case KEY_ADD_PRES:	 //ÄÖÖÓÉèÖÃ
					OLED_Clear();	
					Key_Alr_Set();
          break;
          case KEY_RIGHT_PRES:	 
					Alr_Sta=0;
          break;					
					case KEY_SET_PRES:   //ʱ¼äÉèÖÃ
					OLED_Clear();
					Key_Set();
					break;
				}
			}else delay_ms(20); 

	}
}

该工程详细代码与资料上传到了博客,可以下载

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值