单片机课设-基于单片机的电子时钟设计(仿真+代码+报告)


前言

  这篇文章是自己写的单片机课设,发这篇文章就当留个小纪念;如果说有什么不太好的地方还请大神请指出
Keil C51的代码以及Proteus的仿真的百度网盘链接放在文章最后,需要的人可以自取


提示:以下是本篇文章正文内容,下面案例可供参考

一、课设任务是什么?

  1. 用LCD液晶作为显示设备
  2. 可以分别设定小时,分钟和秒,复位后时间为:00:00:00
  3. 能实现日期的设置,年、月、日
  4. 其他创新内容,如:闹钟功能;显示星期;整点音乐报时等。

二、系统总体方案硬件设计

2.1 系统硬件总体设计

将设计的通信系统硬件进行模块化设计,主要由以下模块构成:
A:AT89C51单片机,控制的核心部件;
B:键盘电路;
C:LCD1602液晶显示电路;
D:复位电路;
E:DS1302实时时钟芯片

2.2 键盘电路设计

本设计共有6个设置按键,分别为年,月,日,时,分,秒,复位时间,启动时间与日期的修改。如图4-5 键盘电路

2.3 DS1302实时时钟芯片电路设计

DS1302是DALLAS公可推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM通过简单的申行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和同年的天数可自功调整。时钟操作可通过AMPM指示决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信。

2.4 复位电路

见报告

2.5 LCD电路设计

见报告

三、软件设计

3.1 主程序流程图

见报告

3.2 主要程序设计代码

main函数代码

3.3 修改时间函数

void adjust(void)
{
  if(key_scan()&&key_flag1)
  switch(key_value())
  {
    case '0':sec_add++;break;
    case '1':min_add++;break;
    case '2':hou_add++;break;
    case '3':day_add++;break;
    case '4':mon_add++;break;
    case '5':yea_add++;break;
		case '6':fuwei();break;
    default: break;
  }
    adjusted.Second+=sec_add; 
    adjusted.Minute+=min_add;
    adjusted.Hour+=hou_add;
    adjusted.Day+=day_add;
    adjusted.Month+=mon_add;
	adjusted.Year+=yea_add;
    if(adjusted.Second>59)	
	{
	  adjusted.Second=adjusted.Second%60;
	  adjusted.Minute++;
	}
	if(adjusted.Minute>59)	
	{
	  adjusted.Minute=adjusted.Minute%60;
	  adjusted.Hour++;
	}
	if(adjusted.Hour>23)		
	{
	  adjusted.Hour=adjusted.Hour%24;
	  adjusted.Day++;
	}
	if(adjusted.Day>31)		
	  adjusted.Day=adjusted.Day%31;
	if(adjusted.Month>12)		
	  adjusted.Month=adjusted.Month%12;
	if(adjusted.Year>100)		
	  adjusted.Year=adjusted.Year%100;
}	

3.4 扫描键盘函数

int key_scan()  //扫描是否有键按下
{ 
  int i=0;
  uint temp;

  P1=0xf0;
  temp=P1;
  if(temp!=0xf0)
  {
    i=1;
  }
  else
  {
    i=0;
  }

  return i;
}

四、仿真源码下载

  这篇文章是自己写的单片机课设,发这篇文章就当留个小纪念;如果说有什么不太好的地方还请大神请指出。
  下载链接🔐:点击跳转下载➡️单片机课设-基于单片机的电子时钟设计(仿真+代码+报告)


能力有限,欢迎指正

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stanford_sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值