基于51单片机电子钟闹钟12/24小时制LCD显示( proteus仿真+程序+设计报告+讲解视频)

您所在的位置:网站首页 单片机lcd液晶显示仿真 基于51单片机电子钟闹钟12/24小时制LCD显示( proteus仿真+程序+设计报告+讲解视频)

基于51单片机电子钟闹钟12/24小时制LCD显示( proteus仿真+程序+设计报告+讲解视频)

2024-07-04 13:33:47| 来源: 网络整理| 查看: 265

基于51单片机电子钟闹钟12/24小时制LCD显示 1. 主要功能:2. 讲解视频:3. 仿真设计4. 程序代码5. 设计报告6. 设计资料内容清单&&下载链接 基于51单片机电子钟闹钟12/24小时制LCD显示( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0082

1. 主要功能:

基于51单片机的电子钟12/24小时制万年历设计

1.电子钟设计能设定起始时间,按下复位键恢复初始化时间;

2.具有闹钟功能,可以通过按键设定闹钟闹铃时间;

3.有12 小时/24 小时两种制式可选;

4.能显示年月日星期;

5.使用DS1302计时,LCD1602液晶显示;

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

img

以下为本设计资料展示图:

2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

https://www.bilibili.com/video/BV17p421978t/

3. 仿真设计

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

img

显示时间的情况下,按下切换键进入设置模式,设置的变量闪烁,默认先设置年份,通过按键加和按键减调整,通过下一个按键切换设置月份,设置月份时同样通过加减键调整。如此类推设置日期,星期,时分秒。

img

设置好时钟后按下切换按键设置闹钟。同样通过按键加减调整闹钟时间,通过下一个按键切换设置时钟/分钟。

img

按下12/24小时制切换可以切换时制。上午显示AM,下午显示PM,方便区分时间。

img

img

4. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。

#include #include "lcd1602.h" #include"ds1302.h" #define uchar unsigned char #define uint unsigned int //功能设计:调整时间、调整闹钟、正常 sbit key1=P3^6;//功能切换 sbit key2=P3^5;//下一个设置点 sbit key3=P3^4;//加 sbit key4=P3^3;//减 sbit key5=P3^2;//12,24小时制切换 sbit beep=P3^7;//蜂鸣器 //=============================================================== uchar mode=0;//模式 设置,工作 uchar t=0; uchar fen=1,shi=12;//闹钟分钟和闹钟时间设置 uchar cixu=0,flag=0;//小模式 uchar moshi=0;//12,24控制 uchar hang1[]="2000/00/00 0";//日期 + 星期 uchar hang2[]="00:00:00 ";//时间 uchar hang3[]="00:00 "; //闹钟 时+分 void suan()//计算 { uchar i=0; hang1[2]=(TIME[6]>>4)+0x30; hang1[3]=(TIME[6]&0x0f)+0x30; hang1[5]=(TIME[4]>>4)+0x30; hang1[6]=(TIME[4]&0x0f)+0x30; hang1[8]=(TIME[3]>>4)+0x30; hang1[9]=(TIME[3]&0x0f)+0x30; hang1[12]=TIME[5]+0x30; if(moshi==0)//小时 { hang2[0]=(TIME[2]>>4)+0x30; hang2[1]=(TIME[2]&0x0f)+0x30; hang2[11]=' '; hang2[12]=' '; } else { i=(TIME[2]>>4)*10+(TIME[2]&0x0f); if(TIME[2] hang2[0]=(i-12)/10+0x30; hang2[1]=(i-12)%10+0x30; hang2[11]='P'; hang2[12]='M'; } } hang2[3]=(TIME[1]>>4)+0x30;//分钟 hang2[4]=(TIME[1]&0x0f)+0x30; hang2[6]=(TIME[0]>>4)+0x30; hang2[7]=(TIME[0]&0x0f)+0x30; hang3[0]=shi/10+0x30; hang3[1]=shi%10+0x30; hang3[3]=fen/10+0x30; hang3[4]=fen%10+0x30; } void xian()//显示 { suan();//计算 if(mode==0)//正常 { write_string(1,0,hang1); write_string(2,0,hang2); } else { switch(cixu) { case 0: //年 if(flag) { hang1[2]=(TIME[6]>>4)+0x30; hang1[3]=(TIME[6]&0x0f)+0x30; } else { hang1[2]=' '; hang1[3]=' '; } break; case 1: //月 if(flag) { hang1[5]=(TIME[4]>>4)+0x30; hang1[6]=(TIME[4]&0x0f)+0x30; } else { hang1[5]=' '; hang1[6]=' '; } break; case 2: //日 if(flag) { hang1[8]=(TIME[3]>>4)+0x30; hang1[9]=(TIME[3]&0x0f)+0x30; } else { hang1[8]=' '; hang1[9]=' '; } break; case 3: //星期 if(flag) { hang1[12]=TIME[5]+0x30; } else { hang1[12]=' '; } break; case 4: //时 if(flag) { hang2[0]=(TIME[2]>>4)+0x30; hang2[1]=(TIME[2]&0x0f)+0x30; } else { hang2[0]=' '; hang2[1]=' '; } break; case 5: //分 if(flag) { hang2[3]=(TIME[1]>>4)+0x30; hang2[4]=(TIME[1]&0x0f)+0x30; } else { hang2[3]=' '; hang2[4]=' '; } break; case 6: //秒 if(flag) { hang2[6]=(TIME[0]>>4)+0x30; hang2[7]=(TIME[0]&0x0f)+0x30; } else { hang2[6]=' '; hang2[7]=' '; } break; case 7: //时,闹钟 if(flag) { hang3[0]=shi/10+0x30; hang3[1]=shi%10+0x30; } else { hang3[0]=' '; hang3[1]=' '; } break; case 8: //分,闹钟 if(flag) { hang3[3]=fen/10+0x30; hang3[4]=fen%10+0x30; } else { hang3[3]=' '; hang3[4]=' '; } } if(cixu write_string(1,0,"CLOCK: "); write_string(2,0,hang3); } } } //主函数 void main() { uchar i,j,k; TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。 TH0=0X3C; //定时50ms TL0=0Xb0; ET0=1;//打开定时器0中断允许 EA=1;//打开总中断 TR0=1;//打开定时器 init_1602();//LCD初始化 write_string(1,0,hang1); write_string(2,0,hang2); // Ds1302ReadTime();//启动DS1302 TIME[0]=0; Ds1302Init(); while(1) { if(!key5)//12,24切换 { moshi=!moshi; while(!key5); } //判断 k=0; i=(shi/10 beep=1; } //按键检测 if(!key1)//功能 { cixu=0; mode=!mode; while(!key1); } if(!key2)//next { if(cixu case 0: //年 i=(TIME[6]>>4)*10+(TIME[6]&0X0F); if(i if(t


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭