全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

STM32电子钟万年历时钟闹钟LCD1602仿真设计

时间:2023-07-25 10:20

人气:

作者:admin

标签: lcd1602  蜂鸣器  led灯  PCB板 

导读:STM32电子钟万年历时钟闹钟LCD1602仿真设计-具有闹钟功能,时间到声光报警(蜂鸣器嘟嘟嘟,LED灯闪烁)。...

STM32电子钟万年历Proteus仿真_LCD1602液晶屏 (仿真+原理图+PCB+源码)

仿真:protues 8.9

程序编译器:keil 5

编程语言:C语言

编号C0003

题目要求:

1.具有显示年、月、日、时、分、秒功能;

2.能计算并显示星期;

3.能手动调整时间,设置闹钟;

4.具有闹钟功能,时间到声光报警(蜂鸣器嘟嘟嘟,LED灯闪烁)。 

讲解视频

仿真图(提供源文件):

06b39750-2a0d-11ee-a368-dac502259ad0.jpg

原理图(提供源文件):

07099dda-2a0d-11ee-a368-dac502259ad0.png

PCB(提供源文件):

07550806-2a0d-11ee-a368-dac502259ad0.png

程序(提供源文件源码):

07cc31c4-2a0d-11ee-a368-dac502259ad0.jpg

以下为部分程序:

 

int main(void)
{
  bool i = 0;
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* Configure the system clock */
  SystemClock_Config();//系统时钟初始化
  delay_init(10);//初始化延时函数
  TIM3_Init(2400-1, 72-1);// 10ms 定时器初始化
  MX_RTC_Init();  //STM32内部RTC初始化
  
  Key_Init();//按键初始化
  Beep_Init();//声光报警初始化
  LCD_Init();//LCD1602初始化        
  
  sAlrm_g.Alm_Hour = 0;//闹钟时间 时
  sAlrm_g.Alm_Min  = 0;//闹钟时间 分
  sAlrm_g.Alm_Sec  = 10;//闹钟时间 秒


  while(1)
  {
    switch(set_mode)//设置模式
    {
      case 0:
        HAL_RTC_GetDate(&hrtc, &sDate_g, RTC_FORMAT_BIN);//得到RTC的年月日
        HAL_RTC_GetTime(&hrtc, &sTime_g, RTC_FORMAT_BIN);  //得到RTC的时分秒      
        Conv_Disp_Data(0);//参数0 得到全部显示数据
        LCD_write_string(0, 0, (char*)temp_line_one);//LCD1602第一行显示
        LCD_write_string(0, 1, (char*)temp_line_two);//LCD1602第二行显示
      break;
      
      case 1://设置年份
        Conv_Disp_Data(i*1);//i是1 屏蔽掉年份显示。i是0,显示年份。通过对i的取反实现年份闪缩
        i = !i;//i取反
        LCD_write_string(0, 0, (char*)temp_line_one);//LCD1602第一行显示
      break;
      
      case 2://设置月份
        Conv_Disp_Data(i*2);
        i = !i;
        LCD_write_string(0, 0, (char*)temp_line_one);
      break;
      
      case 3://设置日份
        Conv_Disp_Data(i*3);
        i = !i;
        LCD_write_string(0, 0, (char*)temp_line_one);
      break;
      
      case 4://设置时间
        Conv_Disp_Data(i*4);
        i = !i;
        LCD_write_string(0, 0, (char*)temp_line_one);
      break;
      
      case 5://设置分钟
        Conv_Disp_Data(i*5);
        i = !i;
        LCD_write_string(0, 0, (char*)temp_line_one);
      break;
      
      case 6://设置秒
        Conv_Disp_Data(i*6);
        i = !i;
        LCD_write_string(0, 0, (char*)temp_line_one);
      break;
      
      case 7://设置闹钟时钟
        Conv_Disp_Data(i*7);
        i = !i;
        LCD_write_string(0, 1, (char*)temp_line_two);
      break;
      
      case 8://设置闹钟分钟
        Conv_Disp_Data(i*8);
        i = !i;
        LCD_write_string(0, 1, (char*)temp_line_two);
      break;
      
      case 9://设置闹钟秒钟
        Conv_Disp_Data(i*9);
        i = !i;
        LCD_write_string(0, 1, (char*)temp_line_two);
      break;
      
      default:        
      break;      
    }
    
    if( (sTime_g.Hours == sAlrm_g.Alm_Hour) && (sTime_g.Minutes == sAlrm_g.Alm_Min) && (sTime_g.Seconds == sAlrm_g.Alm_Sec) )//判断闹钟时间
    {
      for(uint8_t j = 0; j < 10; j++)//执行十次
      {
        LED2_TOG();//LED2翻转,蜂鸣器嘟嘟嘟报警
        HAL_Delay(300);
      }
      
    }
    HAL_Delay(100);//延时
  }
}

 





审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信