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

基于单片机的电子时钟设计

  • 前言
  • 一、课设任务是什么?
  • 二、系统总体方案硬件设计
    • [2.1 系统硬件总体设计](#2.1 系统硬件总体设计)
    • [2.2 键盘电路设计](#2.2 键盘电路设计)
    • [2.3 DS1302实时时钟芯片电路设计](#2.3 DS1302实时时钟芯片电路设计)
    • [2.4 复位电路](#2.4 复位电路)
    • [2.5 LCD电路设计](#2.5 LCD电路设计)
  • 三、软件设计
    • [3.1 主程序流程图](#3.1 主程序流程图)
    • [3.2 主要程序设计代码](#3.2 主要程序设计代码)
    • [3.3 修改时间函数](#3.3 修改时间函数)
    • [3.4 扫描键盘函数](#3.4 扫描键盘函数)
  • 四、仿真源码下载

前言

这篇文章是自己写的单片机课设,发这篇文章就当留个小纪念;如果说有什么不太好的地方还请大神请指出
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 修改时间函数

c 复制代码
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 扫描键盘函数

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

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

  return i;
}

四、仿真源码下载

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


能力有限,欢迎指正

相关推荐
五味香11 分钟前
Linux学习,ip 命令
linux·服务器·c语言·开发语言·git·学习·tcp/ip
DevinLGT1 小时前
6Pin Type-C Pin脚定义:【图文讲解】
人工智能·单片机·嵌入式硬件
lb36363636361 小时前
整数储存形式(c基础)
c语言·开发语言
浪里个浪的10241 小时前
【C语言】从3x5矩阵计算前三行平均值并扩展到4x5矩阵
c语言·开发语言·矩阵
<但凡.1 小时前
编程之路,从0开始:知识补充篇
c语言·数据结构·算法
小A1592 小时前
STM32完全学习——系统时钟设置
stm32·嵌入式硬件·学习
f狐0狸x2 小时前
【数据结构副本篇】顺序表 链表OJ
c语言·数据结构·算法·链表
CoderBob2 小时前
【EmbeddedGUI】脏矩阵设计说明
c语言·单片机
浪里个浪的10242 小时前
【C语言】计算3x3矩阵每行的最大值并存入第四列
c语言·开发语言·矩阵
敲敲敲-敲代码3 小时前
游戏设计:推箱子【easyx图形界面/c语言】
c语言·开发语言·游戏