目录
一、设计目的
(1) 了解熟悉七段LED工作原理
(2) 了解熟悉多键盘扫描工作原理
(3) 构建人机界面
二、设计任务
项目内容:
(1) 构建一个六位的七段LED和4*4的键盘矩阵
(2) 构建运行一个电子时钟,显示时:分:秒:,数字按秒递增
(3) 可以校正时间和设定闹钟
思考:分析如何减少时钟的误差
三、设计内容
使用51单片机采用4x4的键盘矩阵设计电子钟,其中键盘矩阵有4行和4列。键盘的工作原理是基于按键的排布和按键闭合时的电路连通情况,将键盘的4行和4列连接到51单片机的I/O引脚上。每个按键位于交点处,其中一根导线表示按键的行,另一根表示按键的列。当按下某个按键时,行和列导线通过按键的闭合而连接,从而创建一个特定的电路路径,进而识别出所按下的按键。
键盘扫描的目标是检测哪个按键被按下。扫描过程是先行扫描:逐一设置每一行为低电平,同时检查列引脚的状态。如果列引脚为低电平,表示在当前行和列的交点处有按键按下。再列扫描:逐一设置每一列为低电平,同时检查行引脚的状态。如果行引脚为低电平,表示在当前列和行的交点处有按键按下。
但键盘扫描时,可能会出现按键的抖动问题,通过在软件中引入防抖解决这个问题,以确保只记录一次按键事件。
七段LED数码管是一种常见的显示设备,用于显示数字字符(0-9)以及一些字母字符(A-F)和特殊符号。它由七个独立的LED段(a、b、c、d、e、f、g)组成,加上一个小数点(dp),可以显示不同的字符和数字。七段LED显示器的每个LED段代表显示字符的一部分。它们通常排列成一个数字"8",其中a、b、c、d、e、f、g分别代表8个部分,小数点dp代表"8"的中间。每个LED段有两个状态,亮和暗。当需要显示某个字符时,通过控制相应的LED段的电平状态来实现。但七段LED需要一个驱动电路,将51单片机的输出信号转化为控制每个LED段的电平。使用字符解码器可以更加方便的控制七段LED,可以它将数字或字符输入转化为相应的LED段亮暗状态。
3.1 硬件设计与仿真
使用八级联七段数码管,分别连接到到89C51单片机的P0口和P2口输出引脚上,共需要需要16个引脚来控制八级联7段数码管显示。
设计键盘矩阵,连接4x4的键盘矩阵到89C51单片机的P1口输入引脚上,4行和4列需要8个引脚,其中4个用于输入行和4个用于输出列。并设计一个蜂鸣器以实现闹钟接口。
主要实现的功能有,日期显示,时间显示,日期,时间切换,修改日期及时间,12小时/24小时切换 ,闹钟功能 ,闹钟关闭/打开 。
所用的电子元器件有单片机89C51,八级联LED数码管(共阳极),上拉电阻,按键若干。因为需要实现闹钟,加入蜂鸣器,按键连接到P1.0-P1.6,P1.7连接蜂鸣器,P0,P2口控制显示器显示日期,时间等。

3.2 局部电路
3.2.1晶振电路
晶振电路主要用于产生12M 的晶振,给单片机提供工作信号脉冲。如图所示,将两个电容C1、C2串联在AT89C51的18和19端口即XTAL1和XTAL2两个端口,再并联一个晶振器(如图中Y1),最后整体接地,构成晶振电路。

3.2.2 复位电路
将如图所示电路接入AT89C51的9号端口RST端口,用于总电路的复位。
3.2.3按键电路
用4*4矩阵键盘的16个按键实现不同的功能,并且按键有去抖动功能,数码管可以通过清零键清零。左上角的9位作为9个数字输入按键,剩下的8位按键分别实现以下功能:
按键1的功能为:转换显示内容,将时间转换为日期,将日期转换为时间。
按键2的功能为:按下实现24/12转换。
按键3的功能为:当显示日期时,年增加,当显示时间时,小时增加,当显示闹钟时,小时增加。
按键4的功能为:当显示日期时月增加,当显示时间时分增加,当闹钟时分增加。
按键5的功能为:当显示日期时日增加,当显示时间时秒增加,当闹钟时秒增加。
按键6的功能为:设置闹钟的时间。
按键7的功能为:打开或者关闭闹钟。

3.2.4 显示电路

四、软件设计、说明与仿真
为了实现本次的功能,可以选择用C语言或者汇编语言来编写相应程序,但是由于汇编语言能实现功能较少,且编写复杂,而本次课程设计涉及的软件部分又较为繁琐,故采用相对来说更加便捷、清晰的C语言来编写。
本次设计大体功能需要再构建一个六位的七段LED和4*4的键盘矩阵的基础上,构建运行一个电子时钟,显示时:分:秒:,数字按秒递增,并且可以校正时间和设定闹钟。
本次软件部分可大致分为以下部分:
1. 主函数
2. 键盘扫描模块
3. 七段LED显示模块
4. 中断处理模块
4.1 主函数

4.2 键盘扫描模块
4.3 八位七段LED显示模块


4.4 中断处理模块
五、联合仿真结果及分析
开始仿真后,八位七段数码管自动显示时间,显示下午15:00。
按下按键1,转换显示内容,将时间转换为日期,将日期转换为时间。此时为23年20月25日
按下按键2,实现24/12时间刻度转换。
按下按键3后,若此时显示日期时,年增加,若此时显示时间时,小时增加,若此时显示闹钟时,小时增加。
按下按键4后,若此时显示日期时,月增加,若此时显示时间时,分增加,若此时显示闹钟时,分增加。
按下按键5后,若此时显示日期时,日增加,若此时显示时间时,秒增加,若此时显示闹钟时,秒增加。
六、优化及讨论
利用中断来触发每秒的时间更新、按键扫描,可以提高系统的响应速度,避免轮询式扫描,节省处理器资源。允许八位7段数码管显示日期、时间,通过七段LED的快速刷新功能,实现多位数的切换显示。
可以通过添加蓝牙或Wi-Fi模块,从而实现与其他设备的通信,允许远程无线配置时间和功能。或者采用LCD168替代7段数码管,创建更直观的显示操作界面,允许通过按键设置时间、日期和闹钟,以及切换不同的显示模式。