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

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

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

四、仿真源码下载

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


能力有限,欢迎指正

相关推荐
刘阿去19 分钟前
tcc编译器教程6 进一步学习编译gmake源代码
c语言·学习
C_VuI2 小时前
STM32初始安装
stm32·单片机·嵌入式硬件
爱写代码的雨一颗2 小时前
STM32-SPI通信协议
stm32·单片机·嵌入式硬件
宇希啊3 小时前
2025/03/06(嵌入式学习开始第二天)
嵌入式硬件·学习
life_time_3 小时前
C语言(23)
c语言·开发语言
星夜钢琴手3 小时前
C/C++ 实现由用户通过键盘输入自然数并判断其是不是素数(带清空缓冲区等考虑)
c语言·开发语言·c++·c/c++
lucky1_1star4 小时前
FX-extern C
c语言·开发语言·chrome
_GR4 小时前
2019年蓝桥杯第十届C&C++大学B组真题及代码
c语言·数据结构·c++·算法·蓝桥杯
听风lighting5 小时前
C语言八股---预处理,编译,汇编与链接篇
c语言·开发语言·汇编
触角010100015 小时前
STM32步进电机驱动全解析(上) | 零基础入门STM32第五十七步
驱动开发·stm32·单片机·嵌入式硬件·物联网