做网站荣耀体验服官网,平面设计师网站,wordpress 安装证书,营销做得好的品牌基于STM32的电子钟万年历闹钟OLED显示设计
_带温湿度显示
本设计包含Proteus仿真程序代码原理图PCB元器件清单设计报告讲解视频
一、开发环境
仿真图#xff1a;proteus 8.17
程序编译器#xff1a;keil 5
编程语言#xff1a;C语言
设计编号#xff1a;C0124
二、…基于STM32的电子钟万年历闹钟OLED显示设计_带温湿度显示本设计包含Proteus仿真程序代码原理图PCB元器件清单设计报告讲解视频一、开发环境仿真图proteus 8.17程序编译器keil 5编程语言C语言设计编号C0124二、主要功能基于STM32F103C8T6的多功能智能时钟系统实时时钟显示使用DS1302时钟芯片显示年、月、日、时、分、星期。2.温湿度监测DHT11传感器监测环境温湿度温湿度数据显示。温湿度超阈值黄灯亮。3.闹钟功能可以设置闹钟时间具有开关闹钟选项支持手动停止闹钟。默认闹钟是00:014.具有时间设置功能通过按键调整年月日时分秒自动处理闰年大小月。5.使用0.96寸OLED显示屏显示所有信息。主要硬件设备STM32F103C8T6单片机、DHT11温湿度传感、OLED、蜂鸣器资料下载链接可点击链接: https://pan.baidu.com/s/1kHw9wHR0Rutz-lL5cVLVEA?pwd9iq5提取码: 9iq5三、仿真设计开始仿真后OLED第一行显示年月日星期第二行显示时分秒第三行显示温度和湿度。如果温度或者湿度超过范围温度15-30℃湿度30-60%指示灯黄灯亮。闹钟时间到红色指示灯闪烁蜂鸣器滴滴滴。可以设置闹钟和年月日时分秒通过OLED显示四、程序设计程序是用keil5 mdk版本打开的如果打开有问题核实下keil的版本代码有注释方便理解。代码intmain(void){DHT11_Data_TypeDef DHT11_Data;// delay_init(); //延时函数 系统初始化// Delay_Init(SYSTEM_CLOCK_8M);User_Delay_Init();LED_GPIO_Config();//初始化GPIO接口KEY_Init();//按键初始化BEEP_Init();//蜂鸣器初始化GENERAL4_TIM_Init();//10ms 通用定时器3初始化 10msNVIC_Configuration();//中断优先级设置USART2_Config();ds1302_gpio_init();delay_ms(5);//初始化ds1302端口ds1032_init();ds1032_read_realTime();//读取此时时刻OLED_Init();//初始化OLEDOLED_Clear();//清屏delay_ms(100);DHT11_Init();//传感器初始化OLED_DrawBMP(0,0,128,8,BMP19);//欢迎使用开机页面delay_ms(1000);OLED_Clear();//清屏RealTime_Display_Init();//上电初始化显示实时时间UsartPrintf(USART_DEBUG,RealTime_Display_Init...\r\n);// 初始化时间变量为当前时间UpdateTimeVariablesFromDS1302();// 初始化星期显示UpdateWeekDayDisplay();while(1){delay_ms(200);//添加延时保证检测的稳定性ds1032_read_realTime();//读取此时时刻// 更新星期显示if(TimeData.day!last_day){UpdateWeekDayDisplay();last_dayTimeData.day;}RealTime_Display();//实时时间日期实时刷新显示if(DHT11_Data_Read_flag)//6秒读取一次温湿度数据{if(DHT11_Read_TempAndHumidity(DHT11_Data)SUCCESS){humidityDHT11_Data.humi_int;temperatureDHT11_Data.temp_int;}else{UsartPrintf(USART_DEBUG,ERROR:DHT11_Read_TempAndHumidity_fault\r\n);}DHT11_Data_Read_flag0;//复位读取DHT11数据标志}// 闹钟报警程序段if(Alarm_Clock!Alarm_Manual_Stop_flag){if((TimeData.hourAlarm_Hour)(TimeData.minuteAlarm_Minute)){Alarm_Clock_flag1;// 闹钟报警标志位}else{Alarm_Clock_flag0;// 闹钟报警标志位}}else{Alarm_Clock_flag0;// 闹钟报警标志位}// 闹钟报警过程中停止按键if(!KEY_DEC){delay_ms(10);if(KEY_DEC0){while(!KEY_DEC);Alarm_Manual_Stop_flag1;}}// 一旦设定值与当前时间不一致则手动终端报警复位if(TimeData.minute!Alarm_Minute){Alarm_Manual_Stop_flag0;}// 按键修改时间和日期程序段if(!KEY_ADJ){delay_ms(10);if(KEY_ADJ0){while(!KEY_ADJ);// 关键修改在进入时间设置前更新时间为当前时间UpdateTimeVariablesFromDS1302();OLED_Clear();// 清屏OLED_ShowChinese(0,0,21);// 年OLED_ShowChinese(68,0,22);// 月OLED_ShowChinese(0,3,23);// 日OLED_ShowChinese(68,3,24);// 时OLED_ShowChinese(0,6,25);// 分OLED_ShowChinese(68,6,26);// 周只显示不可修改Show_Modify_Data(num);// 显示默认的时间日期设定参数while(1){// 在设置界面中也要实时更新星期显示u8 temp_wCalculateWeekDay(y,m,d);OLED_ShowNum(88,6,temp_w,2,16);OLED_ShowNum(20,0,y,2,16);OLED_ShowNum(88,0,m,2,16);OLED_ShowNum(20,3,d,2,16);OLED_ShowNum(88,3,h,2,16);OLED_ShowNum(20,6,mi,2,16);if(!KEY_ALM){delay_ms(10);if(KEY_ALM0){while(!KEY_ALM);num;if(num4)num0;// 最大值为4跳过星期选项Show_Modify_Data(num);}}if(!KEY_ADD){delay_ms(10);if(KEY_ADD0){while(!KEY_ADD);switch(num){case0:y;if(y59)y0;// 年循环0-59break;case1:m;if(m12)m1;// 月循环1-12// 月份改变后需要检查日期是否超出新月份的最大天数if(dGetMaxDaysInMonth(y,m)){dGetMaxDaysInMonth(y,m);}break;case2:d;if(dGetMaxDaysInMonth(y,m))d1;// 日循环1-当月最大天数break;case3:h;if(h23)h0;// 时循环0-23break;case4:mi;if(mi59)mi0;// 分循环0-59break;}}}if(!KEY_DEC){delay_ms(10);if(KEY_DEC0){while(!KEY_DEC);switch(num){case0:if(y0){y--;}else{y59;// 年循环0-59}// 年份改变后需要检查日期是否超出新年份二月的最大天数if(m2dGetMaxDaysInMonth(y,m)){dGetMaxDaysInMonth(y,m);}break;case1:if(m1){m--;}else{m12;// 月循环1-12}// 月份改变后需要检查日期是否超出新月份的最大天数if(dGetMaxDaysInMonth(y,m)){dGetMaxDaysInMonth(y,m);}break;case2:if(d1){d--;}else{dGetMaxDaysInMonth(y,m);// 日循环1-当月最大天数}break;case3:if(h0){h--;}else{h23;// 时循环0-23}break;case4:if(mi0){mi--;}else{mi59;// 分循环0-59}break;}}}if(!KEY_ADJ){delay_ms(10);if(KEY_ADJ0){while(!KEY_ADJ);// 设置时间时使用计算得到的星期wCalculateWeekDay(y,m,d);ProcessTimeSetting();// 处理时间设置ds1302_write_time();// 修改时间写入OLED_Clear();// 清屏ds1032_read_realTime();// 读取此时时刻Modify_RealTime_Display();// 修改后时间日期刷新一次显示break;}}}}}// 修改闹钟时间和闹钟设定程序段if(!KEY_ALM){delay_ms(10);if(KEY_ALM0){while(!KEY_ALM);OLED_Clear();// 清屏OLED_ShowChinese(32,0,27);// 闹钟设定OLED_ShowChinese(48,0,28);OLED_ShowChinese(64,0,29);OLED_ShowChinese(80,0,30);OLED_ShowChar(60,3,:,16);Show_Modify_Alarm(num2);// 显示修改闹钟信息while(1){OLED_ShowNum(44,3,Alarm_Hour,2,16);OLED_ShowNum(68,3,Alarm_Minute,2,16);// 闹钟开关显示if(Alarm_Clock){OLED_ShowChinese(104,3,31);}else{OLED_ShowChinese(104,3,32);}// 防止显示1位数不整齐if(Alarm_Minute10){OLED_ShowChar(68,3,0,16);}if(!KEY_ADJ){delay_ms(10);if(KEY_ADJ0){while(!KEY_ADJ);num2;if(num22)num20;Show_Modify_Alarm(num2);}}if(!KEY_ADD){delay_ms(10);if(KEY_ADD0){while(!KEY_ADD);switch(num2){case0:Alarm_Hour;if(Alarm_Hour23)Alarm_Hour0;// 时循环0-23break;case1:Alarm_Minute;if(Alarm_Minute59)Alarm_Minute0;// 分循环0-59break;case2:Alarm_Clock;if(Alarm_Clock1)Alarm_Clock0;// 开关循环0-1break;}}}if(!KEY_DEC){delay_ms(10);if(KEY_DEC0){while(!KEY_DEC);switch(num2){case0:if(Alarm_Hour0){Alarm_Hour--;}else{Alarm_Hour23;// 时循环0-23}break;case1:if(Alarm_Minute0){Alarm_Minute--;}else{Alarm_Minute59;// 分循环0-59}break;case2:if(Alarm_Clock0){Alarm_Clock--;}else{Alarm_Clock1;// 开关循环0-1}break;}}}if(!KEY_ALM){delay_ms(10);if(KEY_ALM0){while(!KEY_ALM);OLED_Clear();ds1032_read_realTime();// 读取此时时刻Modify_RealTime_Display();// 修改后时间日期刷新一次显示break;}}}}}//*五、原理图PCB六、元器件清单11BS-02-A1AJ010B1212.3kHzBUZ1311N4007D144K4-6×6_THKEY1,KEY2,KEY3,KEY451LED-TH-3mm_RLED261XL-302UYDLED3710.96OLED模块_4POLED81SS8550Q1914K7R1102100R3,R71111kR512110kR6131DHT11S1141DS1302ZNU2151LCKFB-DKX-STM32F103C8T6U616132.768KHZX1七、实物图八、设计报告6541字设计报告内容包括硬件设计、软件设计、调试、结论等。随着物联网技术和智能家居的快速发展传统时钟已不能满足现代生活需求。智能时钟作为智能家居系统的重要组成部分不仅需要提供准确的时间信息还应具备环境监测、智能提醒等扩展功能。STM32微控制器以其高性能、低功耗和丰富的外设接口成为开发此类嵌入式系统的理想选择。尤为值得关注的是本设计经过了严格的验证流程利用Proteus仿真软件进行了全面的功能测试与稳定性评估。通过仿真设计团队不仅提前发现并修正了潜在的硬件冲突与软件逻辑错误还对系统的实际工作性能进行了细致的校验确保了最终实物制作与应用时的高可靠性和稳定性。这一仿真验证过程的加入不仅提升了设计的科学严谨性也为后续的优化迭代提供了宝贵的参考依据。九、资料清单下载链接0、常见使用问题及解决方法–必读1、程序代码2、Proteus仿真3、功能要求4、开题报告5、设计报告6、讲解视频7、原理图PCB8、元器件清单9、实物图10、相关框图Altium Designer 安装破解filename.batKEILproteus 单片机仿真设计教程KEIL安装破解Proteus元器件查找Proteus安装Proteus简易使用教程单片机学习资料相关数据手册答辩技巧设计报告常用描述鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url资料下载链接可点击链接: https://pan.baidu.com/s/1kHw9wHR0Rutz-lL5cVLVEA?pwd9iq5提取码: 9iq5