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

您所在的位置:网站首页 52单片机时钟电路原理图 基于51单片机的数字万年历设计【程序+proteus仿真+参考论文+AD原理图】【免费分享】

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

2024-07-12 14:50| 来源: 网络整理| 查看: 265

一、项目功能简介

 整个设计系统由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万年历



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3