找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5650|回复: 3
收起左侧

STM32万年历程序Keil版本源码

[复制链接]
ID:416325 发表于 2018-10-29 21:07 | 显示全部楼层 |阅读模式
万年历程序

单片机源程序如下:
  1. /*********************************** File Info *********************************
  2. ** File name:                        main.c
  3. ** Last modified Date:               
  4. ** Last Version:               
  5. ** Descriptions:               
  6. **
  7. **-----------------------------------------------------------------------------
  8. ** Created by:         Chase               
  9. ** Created date:2018年6月2日                 
  10. ** Version:               
  11. ** Descriptions:
  12. **
  13. *******************************************************************************/
  14. #include "pbdata.h"        //公用函数库

  15. /*BSP层*/
  16. #include "USART.h"                        //串口
  17. #include "RTC.h"                        //RTC时钟
  18. #include "LED.h"                        //LED
  19. #include "KEY.h"                        //KEY
  20. #include "BEEP.h"                        //蜂鸣器
  21. #include "LCD1602.h"                //LCD1602
  22. #include "DS18B20.h"                //18B20
  23. #include "EEPROM_FLASH.h"        //EEPROM

  24. short temperature;
  25. /*******************************************************************************
  26. * 函数名称:main
  27. * 功    能:功能函数入口
  28. * 入口参数:
  29. * 出口参数:
  30. * 描    述:
  31. * 全局变量:
  32. * 调用模块:
  33. * 更改记录:
  34. *******************************************************************************/
  35. void BSP_Configuration(void);
  36. void LCD_ShowTime(void);
  37. int main(void)
  38. {       
  39.          
  40.         BSP_Configuration();
  41.        
  42.         Read_Ala(&calendar.alarm_hour,&calendar.alarm_min,&calendar.alarm_sec);
  43.         calendar.alarm_flag=1;
  44.         while(1)
  45.         {
  46.                 KeyScan();
  47.                 temperature=DS18B20_Get_Temp();       
  48.                 if(setmode==0)
  49.                 {
  50.                         LCD_ShowTime();
  51.                         //闹钟,鸣叫一分钟
  52.                         if(calendar.alarm_flag==1)
  53.                         {
  54.                                 if((calendar.hour==calendar.alarm_hour)&&(calendar.min==calendar.alarm_min))
  55.                                 {
  56.                                         BEEP=0;
  57.                                 }else
  58.                                 {
  59.                                         BEEP=1;
  60.                                 }
  61.                         }else
  62.                         {
  63.                                 BEEP=1;
  64.                         }
  65.                 }
  66.         }
  67. }
  68. /*******************************************************************************
  69. * 函数名称:BSP_Configuration()
  70. * 功    能:硬件初始化
  71. * 入口参数:无
  72. * 出口参数:无
  73. * 描    述:
  74. * 全局变量:
  75. * 调用模块:
  76. * 引用模块:
  77. * 更改记录:
  78. *******************************************************************************/
  79. void BSP_Configuration(void)
  80. {       
  81.         RTC_Configuration();
  82.         LED_Configuration();
  83.         BEEP_Configuration();
  84.         KEY_Configuration();       
  85.        
  86. //        USART1_Configuration(115200);
  87.         LCD_Initial();
  88.         DS18B20_Init();
  89. }
  90. /*******************************************************************************
  91. * 函数名称:LCD_ShowTime()
  92. * 功    能:显示时间
  93. * 入口参数:无
  94. * 出口参数:无
  95. * 描    述:
  96. * 全局变量:
  97. * 调用模块:
  98. * 引用模块:
  99. * 更改记录:
  100. *******************************************************************************/
  101. u8 show_mode=0;//显示模式
  102. u8 hour_show=0;//时间显示值
  103. void LCD_ShowTime(void)
  104. {
  105.         char displaytemp[16];        //定义显示区域临时存储数组
  106.        
  107.         displaytemp[0]=calendar.w_year%10000/1000+0x30;
  108.         displaytemp[1]=calendar.w_year%1000/100+0x30;
  109.         displaytemp[2]=calendar.w_year%100/10+0x30;
  110.         displaytemp[3]=calendar.w_year%10/1+0x30;

  111.         displaytemp[4]='-';
  112.         displaytemp[5]=calendar.w_month%100/10+0x30;
  113.         displaytemp[6]=calendar.w_month%10/1+0x30;
  114.         displaytemp[7]='-';
  115.         displaytemp[8]=calendar.w_date%100/10+0x30;
  116.         displaytemp[9]=calendar.w_date%10/1+0x30;
  117.         displaytemp[10]=' ';
  118.         switch(calendar.week)
  119.         {
  120.                 case 1:
  121.                         displaytemp[11]='M';
  122.                         displaytemp[12]='O';
  123.                         displaytemp[13]='N';
  124.                 break;
  125.                 case 2:
  126.                         displaytemp[11]='T';
  127.                         displaytemp[12]='U';
  128.                         displaytemp[13]='E';
  129.                 break;
  130.                 case 3:
  131.                         displaytemp[11]='W';
  132.                         displaytemp[12]='E';
  133.                         displaytemp[13]='N';
  134.                 break;
  135.                 case 4:
  136.                         displaytemp[11]='T';
  137.                         displaytemp[12]='H';
  138.                         displaytemp[13]='U';
  139.                 break;
  140.                 case 5:
  141.                         displaytemp[11]='F';
  142.                         displaytemp[12]='R';
  143.                         displaytemp[13]='I';
  144.                 break;
  145.                 case 6:
  146.                         displaytemp[11]='S';
  147.                         displaytemp[12]='A';
  148.                         displaytemp[13]='T';
  149.                 break;
  150.                 case 0:
  151.                         displaytemp[11]='S';
  152.                         displaytemp[12]='U';
  153.                         displaytemp[13]='N';
  154.                 break;
  155.                 default:
  156.                         displaytemp[11]=' ';
  157.                         displaytemp[12]=' ';
  158.                         displaytemp[13]=' ';
  159.                 break;                       
  160.         }
  161.         displaytemp[14]=' ';
  162.         displaytemp[15]=' ';
  163.         LCD_Write_String(0,0,displaytemp);        //显示第一行
  164.        
  165.         if(show_mode==0)        //24小时制
  166.         {
  167.                 hour_show=calendar.hour;
  168.                 displaytemp[9]='-';
  169.                 displaytemp[10]='-';
  170.         }
  171.         else                                //12小时制
  172.         {
  173.                 if(calendar.hour<12)
  174.                 {
  175.                         hour_show=calendar.hour;
  176.                         displaytemp[9]='A';
  177.                         displaytemp[10]='M';
  178.                 }
  179.                 else
  180.                 {
  181.                         hour_show=calendar.hour-12;
  182.                         displaytemp[9]='P';
  183.                         displaytemp[10]='M';
  184.                 }
  185.         }
  186.        
  187.         displaytemp[0]=hour_show/10+0x30;
  188.         displaytemp[1]=hour_show%10+0x30;
  189.         displaytemp[2]=':';
  190.         displaytemp[3]=calendar.min/10+0x30;
  191.         displaytemp[4]=calendar.min%10+0x30;
  192.         displaytemp[5]=':';
  193.         displaytemp[6]=calendar.sec/10+0x30;
  194.         displaytemp[7]=calendar.sec%10+0x30;
  195.         displaytemp[8]=' ';
  196.        
  197.         displaytemp[11]=' ';
  198.         displaytemp[12]=' ';
  199.         if(temperature<0)
  200.                 displaytemp[13]='-';
  201.         else
  202.                 displaytemp[13]='+';
  203.         displaytemp[14]=0x30+(temperature%1000)/100;
  204.         displaytemp[15]=0x30+(temperature%100)/10;
  205.        
  206.         LCD_Write_String(0,1,displaytemp);        //显示第二行
  207. }
复制代码

所有资料51hei提供下载:
Keil版本.rar (373.16 KB, 下载次数: 135)


回复

使用道具 举报

ID:1 发表于 2018-10-31 01:10 | 显示全部楼层
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

ID:242804 发表于 2020-8-25 15:50 | 显示全部楼层
要是分享原理图更加
回复

使用道具 举报

ID:936000 发表于 2021-6-10 13:53 | 显示全部楼层
pbdata.h  是什么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表