基于51单片机带温度显示电子钟万年历闹钟( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus8.17(有低版本)

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:P30

1主要功能:

设计任务:

带温度显示的电子钟闹钟

1.显示实时时间(年、月、日、时、分、秒、星期)和温度。

2.可以通过按键设置时间和闹钟。

3.闹钟功能:当时间到达设定的闹钟时间时,蜂鸣器会响。

闹铃状态下可按任意键停止。

4.温度测量:通过DS18B20传感器测量环境温度并显示。

5.可以通过 proteus 仿真和普中开发板运行。

(目前仅完全适配普中开发板A234,其他普中开发板型号可能需要做代码修改或接线)

img

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

资料下载链接:

P系列单片机设计下载链接(复制到浏览器打开)

https://docs.qq.com/doc/DS2pPenNRaHB6SlR1

以下为本设计资料展示图:

2.实物图:

第一行显示年月日和星期,第二行显示时分秒和检测到的温度值。

img

3.仿真设计

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

img

第一行显示年月日和星期,第二行显示时分秒和检测到的温度值。

img

显示时间的情况下,按下切换键进入设置模式,设置的变量闪烁,默认先设置年份,通过按键加和按键减调整,通过切换按键切换设置月份,设置月份时同样通过加减键调整。如此类推设置日期,时分秒。

设置好时钟后按下设置按键设置闹钟。同样通过按键加减调整闹钟时间,通过切换按键切换设置时钟/分钟。

4.程序代码

使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。

img

代码:

*******************************************************************************
* 主函数
* 功能:系统初始化和主循环
*******************************************************************************/
void main()
{	
	u8 key_temp = 0;  // 临时键值变量

	// 初始化各模块
	lcd1602_init();      // 初始化LCD1602
	ds1302_init();       // 初始化DS1302实时时钟
	ds18b20_init();      // 初始化DS18B20温度传感器
	time0_init();        // 初始化定时器0(10ms定时)
	
	// 初始化闪烁状态
	g_calendar.blink_state = 0;
	g_calendar.alarm=1;//闹钟默认开
	g_calendar.alarm_time[1]=0;//默认闹钟时间 时
	g_calendar.alarm_time[0]=1;//默认闹钟时间 分
	// 主循环
	while (1) {
		// 按键扫描
		key_temp = key_scan(0);
		if(key_temp!=0){
			if(g_calendar.alarming){
				g_calendar.alarming=0;
				key_temp=0;
			}
		}
		// K1按键处理:模式设置
		if (key_temp == KEY1_PRESS) {

			if (g_calendar.mode == 0) {
				// 第一次按下:进入时间设置模式
				g_calendar.mode = 1;
				g_calendar.setok = 0;
				g_calendar.time_choice = 0;
			} else if (g_calendar.mode == 1) {
				// 第二次按下:进入闹钟设置模式
				g_calendar.mode = 2;
				g_calendar.time_choice = 0;
				lcd1602_clear();  // 清屏
				lcd1602_show_string(0, 0, alarm_switch_str);  // 显示闹钟开关状态
			} else if (g_calendar.mode == 2) {
				// 第三次按下:确认设置并退出
				g_calendar.mode = 0;
				g_calendar.setok = 1;
				calendar_save_set_time(); // 保存设置
			}
			beep_alarm(100, 10);  // 按键提示音
		}				
		
		// K2按键处理:设置项切换
		else if (key_temp == KEY2_PRESS) {
			if (g_calendar.mode == 1) {
				// 时间设置模式:循环切换年月日时分秒
				g_calendar.time_choice++;
				if (g_calendar.time_choice == 6) {
					g_calendar.time_choice = 0;
				}
			} else if (g_calendar.mode == 2) {
				// 闹钟设置模式:循环切换分钟、小时、开关、返回
				g_calendar.time_choice++;
				if (g_calendar.time_choice == 4) {
					g_calendar.time_choice = 0;
				}
			}
			beep_alarm(100, 10);  // 按键提示音
		}
		
		// K3按键处理:数据加1
		else if (key_temp == KEY3_PRESS) {
			if (g_calendar.mode != 0) {
				g_calendar.add = 1;
				beep_alarm(100, 10);  // 按键提示音
			}
		}	
	完整代码见文章下载链接	
		// K4按键处理:数据减1
		else if (key_temp == KEY4_PRESS) {
			if (g_calendar.mode != 0) {
				g_calendar.sub = 1;
				beep_alarm(100, 10);  // 按键提示音
			}
		}
				
		// 处理时间设置
		calendar_set_time();
		
		// 处理闹钟设置
		calendar_set_alarm();
		
		// 显示日历信息
		calendar_show();
		
		// 检查闹钟
		alarm_compareproc();			
	}		
}

主程序流程框图

img

5.设计报告

7622字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

随着微电子技术、传感器技术和自动控制技术的飞速发展,传统的基于机械旋钮和定时器的电风扇控制系统已无法充分满足当代人们对智能化、舒适化和节能化的更高层次需求。这种传统控制方式存在操作不便、功能单一、能效低下等局限性,难以适应现代家居对智能化生活的追求。现代生活理念强调家居电器的智能化集成控制,旨在通过技术创新提升用户体验、实现能源高效利用并增强设备安全性能,从而打造更加智慧、便捷、环保的生活环境。

在此背景下,本课题立足于智能家居控制系统的发展趋势,设计并实现一款基于STC89C52单片机的智能风扇控制系统。该系统通过集成高精度数字温度传感器、多功能按键输入、数码管及LED状态显示等功能模块,构建了一个集环境感知、智能决策和人性化交互于一体的完整控制方案。系统能够实时监测环境温度变化,通过智能算法自动调节风扇运行状态,同时提供清晰直观的工作状态显示,实现对风扇工作状态的智能化监测与精准控制。

img

6.设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

img

0、常见使用问题及解决方法–必读!!!!

1、程序

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、烧录工具

8、讲解视频

9、实物图

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

资料下载链接(可点击):

https://docs.qq.com/doc/DS2pPenNRaHB6SlR1

更多资源 点击下方链接:

*https://docs.qq.com/sheet/DS0xIa0llTmtNakRW*

微信公众号:嘉盛单片机

img