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

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

  • 前言
  • 一、课设任务是什么?
  • 二、系统总体方案硬件设计
    • [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;
}

四、仿真源码下载

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


能力有限,欢迎指正

相关推荐
KIOXIA铠侠总代37 分钟前
推动高效能:东芝TB67H301FTG全桥直流电机驱动IC
单片机·嵌入式硬件
真果粒wrdms1 小时前
【sqlite3】联系人管理系统
linux·c语言·数据库·经验分享·笔记·sqlite
托马斯-木1 小时前
const与#define 比较
c语言·内存
编程者也2 小时前
Linux应用开发-第三章Linux的目录IO
linux·服务器·嵌入式硬件
小小怪下士的编程小屋2 小时前
FreeRTOS的任务间通信
c语言·stm32·单片机·嵌入式硬件
Q_hd2 小时前
【嵌入式】探索嵌入式世界:在ARM上构建俄罗斯方块游戏的奇妙之旅
linux·c语言·arm开发·游戏
EAK电阻2 小时前
电阻负载柜或无功负载组?
单片机·嵌入式硬件
heater4042 小时前
【STM32】GPIO复用和映射
stm32·单片机·嵌入式硬件
IoT_H23 小时前
74HC165芯片验证
stm32·单片机·嵌入式硬件
9毫米的幻想3 小时前
【C语言】—— 文件操作(上)
c语言·开发语言·学习