一、资料内容(私信获取)

  • (1)、基于51单片机的电子万年历proteus仿真设计一份;
  • (2)、基于51单片机的电子万年历proteus仿真设计keli源代码一份;
  • (3)、基于51单片机的电子万年历Altium designer 的原理图一份;
  • (4)、基于51单片机的电子万年历proteus仿真设计的课程报告一份;
  • (5)、基于51单片机的电子万年历proteus仿真设计视频讲解一份;

二、设计要求

  1. 要求以51系列单片机为核心,设计一款电子万年历;
  2. 系统需要采用LCD1602屏幕显示相关数据;
  3. 系统要求可以显示公历日期(年、月、日)、时间(时、分、秒)、星期,并且以上数据可以通过按键更改设置;
  4. 系统可以通过LCD1602显示平年和润年;
  5. 系统需要含有闹钟功能,并且闹钟时间可以通过用户设定;

三、相关资料截图

四、视频讲解

私信获取全部内容

部分源代码

#include <reg52.h>
#include <intrins.h>#define uchar unsigned char   // 以后unsigned char就可以用uchar代替
#define uint  unsigned int  // 以后unsigned int 就可以用uint 代替sfr ISP_DATA  = 0xe2;     // 数据寄存器
sfr ISP_ADDRH = 0xe3;      // 地址寄存器高八位
sfr ISP_ADDRL = 0xe4;      // 地址寄存器低八位
sfr ISP_CMD   = 0xe5;      // 命令寄存器
sfr ISP_TRIG  = 0xe6;      // 命令触发寄存器
sfr ISP_CONTR = 0xe7;      // 命令寄存器sbit LcdRs_P    = P2^7;       // 1602液晶的RS管脚
sbit LcdRw_P    = P2^6;       // 1602液晶的RW管脚
sbit LcdEn_P    = P2^5;       // 1602液晶的EN管脚
sbit RST_P      = P1^3;                // 时钟芯片DS1302的RST管脚
sbit SDA_P      = P1^2;                // 时钟芯片DS1302的SDA管脚
sbit SCK_P      = P1^1;                // 时钟芯片DS1302的SCK管脚
sbit KeySet_P   = P3^2;                // 设置时间按键
sbit KeyClock_P = P3^3;                // 设置闹钟按键
sbit KeyDown_P  = P3^4;                // 减按键
sbit KeyUp_P    = P3^5;                // 加按键
sbit Buzzer_P   = P2^0;                // 蜂鸣器uchar TimeBuff[7]={16,8,5,6,18,30,50};               // 时间数组,默认2016年8月5日,星期五,16:30:50
// TimeBuff[0] 代表年份,范围00-99
// TimeBuff[1] 代表月份,范围1-12
// TimeBuff[2] 代表日期,范围1-31
// TimeBuff[3] 代表星期,范围1-7,1是星期天,2是星期一... ...
// TimeBuff[4] 代表小时,范围00-23
// TimeBuff[5] 代表分钟,范围00-59
// TimeBuff[6] 代表秒钟,范围00-59uchar Clock_Hour;                 // 闹钟的小时
uchar Clock_Minute;             // 闹钟的分钟
uchar Clock_Swt;                    // 闹钟的开关
uchar Buzzer_Flag=0;           // 蜂鸣器工作标志
uchar nian_type;          // 年份类型/*********************************************************/
// 单片机内部EEPROM不使能
/*********************************************************/
void ISP_Disable()
{ISP_CONTR = 0;ISP_ADDRH = 0;ISP_ADDRL = 0;
}/*********************************************************/
// 从单片机内部EEPROM读一个字节,从0x2000地址开始
/*********************************************************/
unsigned char EEPROM_Read(unsigned int add)
{ISP_DATA  = 0x00;ISP_CONTR = 0x83;ISP_CMD   = 0x01;ISP_ADDRH = (unsigned char)(add>>8);ISP_ADDRL = (unsigned char)(add&0xff);// 对STC89C51系列来说,每次要写入0x46,再写入0xB9,ISP/IAP才会生效ISP_TRIG  = 0x46;    ISP_TRIG  = 0xB9;_nop_();ISP_Disable();return (ISP_DATA);
}/*********************************************************/
// 往单片机内部EEPROM写一个字节,从0x2000地址开始
/*********************************************************/
void EEPROM_Write(unsigned int add,unsigned char ch)
{ISP_CONTR = 0x83;ISP_CMD   = 0x02;ISP_ADDRH = (unsigned char)(add>>8);ISP_ADDRL = (unsigned char)(add&0xff);ISP_DATA  = ch;ISP_TRIG  = 0x46;ISP_TRIG  = 0xB9;_nop_();ISP_Disable();
}/*********************************************************/
// 擦除单片机内部EEPROM的一个扇区
// 写8个扇区中随便一个的地址,便擦除该扇区,写入前要先擦除
/*********************************************************/
void Sector_Erase(unsigned int add)
{ISP_CONTR = 0x83;ISP_CMD   = 0x03;ISP_ADDRH = (unsigned char)(add>>8);ISP_ADDRL = (unsigned char)(add&0xff);ISP_TRIG  = 0x46;ISP_TRIG  = 0xB9;_nop_();ISP_Disable();
}/*********************************************************/
// 毫秒级的延时函数,time是要延时的毫秒数
/*********************************************************/
void DelayMs(uint time)
{uint i,j;for(i=time;i>0;i--)for(j=112;j>0;j--);
}/*********************************************************/
// 1602液晶写命令函数,cmd就是要写入的命令
/*********************************************************/
void LcdWriteCmd(uchar cmd)
{ LcdRs_P = 0;LcdRw_P = 0;LcdEn_P = 0;P0=cmd;DelayMs(2);LcdEn_P = 1;    DelayMs(2);LcdEn_P = 0;
}/*********************************************************/
// 1602液晶写数据函数,dat就是要写入的命令
/*********************************************************/
void LcdWriteData(uchar dat)
{LcdRs_P = 1; LcdRw_P = 0;LcdEn_P = 0;P0=dat;DelayMs(2);LcdEn_P = 1;    DelayMs(2);LcdEn_P = 0;
}/*********************************************************/
// 1602液晶初始化函数
/*********************************************************/
void LcdInit()
{LcdWriteCmd(0x38);        // 16*2显示,5*7点阵,8位数据口LcdWriteCmd(0x0C);        // 开显示,不显示光标LcdWriteCmd(0x06);        // 地址加1,当写入数据后光标右移LcdWriteCmd(0x01);        // 清屏
}/*********************************************************/
// 液晶光标定位函数
/*********************************************************/
void LcdGotoXY(uchar line,uchar column)
{// 第一行if(line==0)        LcdWriteCmd(0x80+column); // 第二行if(line==1)        LcdWriteCmd(0x80+0x40+column);
}

【002】基于51单片机的电子万年历proteus仿真设计相关推荐

  1. 【019】基于51单片机的交通灯Proteus仿真设计

    一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...

  2. 【034】基于51单片机的HX711电子秤Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的HX711电子秤proteus仿真设计一份: (2).基于51单片机的HX711电子秤proteus仿真设计keli源代码一份: (3).基于51单片机的H ...

  3. 基于51单片机的烟雾火灾报警器proteus仿真设计

    基于51单片机的烟雾火灾报警器proteus仿真设计 1 开发环境 仿真图:proteus8.9以上 程序代码:KEIL4/KEIL5 原理图:AD 设计编号:A0004 代码讲解+仿真讲解+仿真演示 ...

  4. 【013】【毕业设计】基于51单片机的节能路灯proteus仿真设计

    ​一.资料内容(私信) (1).基于51单片机的节能路灯proteus仿真设计一份: (2).基于51单片机的节能路灯proteus仿真设计keli源代码一份: (3).基于51单片机的节能路灯pro ...

  5. 【039】基于51单片机的简易门铃Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的简易门铃proteus仿真设计一份: (2).基于51单片机的简易门铃proteus仿真设计keli源代码一份: (3).基于51单片机的简易门铃prote ...

  6. 基于51单片机的倒计时秒表proteus仿真设计

    目录 一.设计背景 二.实现功能 三.仿真演示 四.源程序 一.设计背景 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入.本文阐述了基于单片机的数字电子秒表倒计时设计,倒计时精度达0.05s ...

  7. 【008】【毕业设计】基于51单片机的烟雾报警系统proteus仿真与实物设计

    ​一.压缩包资料内容(私信获取) (1).基于51单片机的烟雾报警系统proteus仿真设计一份: (2).基于51单片机的烟雾报警系统proteus仿真设计keli源代码一份: (3).基于51单片 ...

  8. 基于51单片机的电子万年历的设计-源代码

    电子万年历的设计目录 电子万年历的设计 电子万年历的系统整体设计框图 所需要的元件 DS18B20模块 DS18B20的特点 DS18B20内部结构 DS18B20管脚排列 DS1302模块 SPI时 ...

  9. 基于51单片机的电子万年历设计

    基于51单片机的电子万年历 1)LCD1602显示时间.日期.星期.温度 2)按键可调整时间日期星期 3)整点报时 4)DS1302时钟芯片 5)DS18B20温度传感器 6)闹钟功能 7)判断闰年 ...

最新文章

  1. 数字万用表的四位半,三位半都是什么意思?
  2. KMP--字符串匹配
  3. Android 布局学习之——Layout(布局)详解一
  4. C#在Linux上的开发指南
  5. Real Application Cluster 10g安装与配置(下)
  6. 一个小爱好竟然改变了全世界!Linux30年都经历了什么?
  7. 2021 ICPC Asia Jinan Regional Contest-J Determinant(取模高斯消元)
  8. 怎么制作简单地图,怎样画简单的地图?
  9. Gradle的神奇之处
  10. COSCon'20 Apache Roadshow- China 精彩收官!|会场精彩回顾篇
  11. JAVA的stream流操作详细解析
  12. 2013 NMPD展示预览,第1部分
  13. JVM3--垃圾回收机制:垃圾回收概述、垃圾回收算法及分类
  14. 【CentOS】常用命令
  15. 目前最新版AndroidStudio详细安装教程,纯萌新安装
  16. Win11老是弹出输入体验怎么办
  17. 二叉树的最大深度(力扣作业)
  18. hdmi接口线_买了新电视画质还是不清晰?可能是你买错了HDMI线!7点教你避坑
  19. 寻找网络1020的结构平衡点
  20. 基于树莓派的智能家居控制系统设计

热门文章

  1. 一口气Ping1000个IP地址,会发生什么事情?
  2. 基于粒子群优化算法的无人机路径规划与轨迹算法的实现(Matlab代码实现)
  3. hisense出现android怎么打开,hisense手机怎么刷机?hisense手机刷机教程【图文】
  4. 酒干倘卖无之递归算法
  5. RNN-LSTM实现AI作曲实例
  6. Android之开发者选项
  7. 大学计算机学cad的,浙江大学计算机学院CADCG国家重点实验室.PDF
  8. 手把手带你免费快速让自己电脑访问公网
  9. Centos镜像地址列表(全)
  10. 计算机组成与设计(一)计算机概要