单片机人机界面及电子钟-微机原理课程设计

本文详细描述了在《微机原理及应用》课程中,学生徐晓峰设计了一个包含六位七段LED显示和4*4键盘矩阵的单片机电子钟系统,涉及硬件设计、键盘扫描、显示电路和软件编程,包括主函数、中断处理等内容,以及实际的仿真和优化讨论。
摘要由CSDN通过智能技术生成
课程设计题目: 沟通对话的单片机---单片机人机界面及电子钟
所修课程名称: 《微机原理及应用》(1)
徐晓峰
2024.1.2


单片机人机界面及电子钟

一、设计目的

  (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口控制显示器显示日期,时间等。
  


在这里插入图片描述

图 1 总体电路

3.2 局部电路

3.2.1晶振电路

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


在这里插入图片描述

图 2 晶振电路

3.2.2 复位电路

  将如图所示电路接入AT89C51的9号端口RST端口,用于总电路的复位。

在这里插入图片描述

图 3 复位电路

3.2.3按键电路

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

  


在这里插入图片描述

图 4 按键电路

3.2.4 显示电路

  


在这里插入图片描述
图 5 显示电路

四、软件设计、说明与仿真

  为了实现本次的功能,可以选择用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段数码管,创建更直观的显示操作界面,允许通过按键设置时间、日期和闹钟,以及切换不同的显示模式。

  • 29
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值