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

发布时间:2024-06-14  

仿真: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);//延时

  }

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>