基于51单片机的数字万年历设计【程序+proteus仿真+参考论文+AD原理图】【免费分享】

一、项目功能简介

 整个设计系统由STC89C52单片机+DS1302时钟芯片+DS18B20温度模块+LCD1602液晶显示+按键模块+电源模块组成。

具体功能:

1、显示和设置年、月、日、时、分、秒、星期;

2、显示农历、闰年、平年;

3、显示和设置闹钟;

4、整点报时;

二、系统构成图

三、仿真

本次项目采用proteus8.11软件实现仿真设计。由于proteus软件版本原因,不能确保proteus其他版本软件能够正常运行,请安装好对应软件版本(版本一致或者高于这个版本都可以)

四、程序


void main()
{
  
  LCD_Init();            //LCD的初始化
  DS1302_Init();          //时间模块的初始化
  Timer0_Init();          //定时器的初始化  
//  DS1302_SetTime();        //用于DS1302第一次启动,写入时间
  DS1302_ReadTime();        //读取时间
  ALAEM_Time[0] = DS1302_Time[0];  //先把时间的年月日填入闹钟里面
  ALAEM_Time[1] = DS1302_Time[1];
  ALAEM_Time[2] = DS1302_Time[2];
  Temp_Buffer = Get_temp();      //读取DS18B20的值
  Delay_ms(500);          //等待1s等待DS18B20数据稳定。否则可能会出现85℃。
  LCD_ShowString(1,1,"  -  -  ");  //LCD先显示时间日期的标号
  LCD_ShowString(2,1,"  :  :  ");  
  BUZZ_F();
  while(1)
  {
    Delay_ms(10);        //延时
    KeyNumber = Key();      //检测哪个按键被按下
    if(KeyNumber == 1 && SET_flag == 0 )  //按键1被按下
    {
      MODE++;          //显示界面++
      LCD_WriteCommand(0x01);  //清理LCD显示屏幕
      if(MODE > 2)      //只有三个显示界面,0-1-2
      {
        MODE = 0 ;
      }
      if(MODE == 0 )      //显示时间日期
      {
        LCD_ShowString(1,1,"  -  -  ");  //LCD先显示时间日期的标号
        LCD_ShowString(2,1,"  :  :  ");
      }
      if(MODE == 1 )      //显示农历
      {
        LCD_ShowString(1,1,"NL:  -  -  ");
        LCD_ShowString(2,1,"     :  :  ");
      }
      if(MODE == 2 )      //显示闹钟
      {
        
        LCD_ShowString(1,1,"ALAEM_Time");
        LCD_ShowString(2,1,"  -  -     :  ");
      }
    }
    switch(MODE)            //显示选择模式
    {
      case 0: TimeShow();break;    //时间日期
      case 1: TimeNLShow();break;    //农历
      case 2: Alarm_Show();break;    //闹钟
    }
    
    ShowSet();              //进入设置
    ALAEM_CLOCK();            //闹钟检测
    baoshi();              //整点报时
  }
}

五、原理图

本原理图利用AD17软件设计。

六、参考论文

论文仅限于参考,内容跟项目对应。

七、全部资料

八、资料获取

关注公众号,后台回复:51万年历

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值