基于51单片机的定时闹钟设计

  1. 本设计中涉及到的硬件模块有C52、独立键盘、数码管、PC(含keil软件、烧写工具、串口调试工具等)
    MCU闹钟设计
    (1)C52
    核心处理器。对传送的各个指令和数据进行处理。供其他模块用到的主要引脚有:P0:送码值;P2:送位选信号,连接键盘;TXD、RXD:串口通信;P3.7:蜂鸣器
    (2) 独立键盘K20-K27
    键盘分为独立键盘和矩阵式键盘。扫描方法有逐行扫描法和行列翻转法。在本设计中用到的键盘是独立式键盘K20-K27,分别连接到MCU C52的P2口,采用逐行扫描法,又由于只有一行,故只需扫描一次即可。在键盘按键时,需要考虑到键盘消抖问题。键盘消抖分为硬件消抖和软件消抖。在本设计中,直接采用软件延时delay2(),达到消抖功能,代码不长,又节省硬件资源。
    独立键盘K20-K27连接到C52管脚P2和数码管。各键功能:
    K20:编辑时间,以递增方式控制时针数值,包括时钟和闹钟
    K21:编辑时间,以递增方式控制分针数值,包括时钟和闹钟
    K22:时钟模式切换到闹钟模式
    K23:退出闹钟模式,并保存闹钟时间,开启闹钟
    K24:时钟模式和秒数显示模式切换
    K25:未用到,供功能扩充使用
    K26:开闹钟
    K27:关闹钟
    (3) 数码管
    数码管用于显示当前时间,闹钟时间和秒数。
    数码管显示分为静态显示和动态显示。静态显示时,各数码管在显示过程中持续得到送显信号,与各数码管接口的I/O口线是专用的。静态显示需借助C52串口完成。动态显示时,各数码管在显示过程中轮流得到送显信号,与各数码管接口的I/O口线是共用的。在动态显示过程中,数码管常亮是通过循环扫描送显信号实现。本设计中用到的数码管为共阴极接法,阴极接位选信号,即C52 P2口,阳极接P0口,接受码值时钟和闹钟模式下,显示时针数值和分针数值。秒数显示模式下,只有两个数码管亮,显示当前时间秒值。
    (4) PC
    在PC端除了编辑软件Keil和烧写工具外,另一个很重要的工具就是串口调试工具。串口工具通过串口线与C52通信。PC端到C52传送数据,控制写当前时间和设置闹钟。C52到PC端传送数据,提示PC送到C52的数据有误,并在串口界面上显示字符串“error! ”,供以提示。在PC端的串口工具选项设置与代码中串口设计参数匹配。波特率为9600,数据位8位,停止位1位。采用十六进制Hex发送。
    2.软件设计
    (1)时钟
    时钟设计有两个方案,一:利用程序计数延时定时;二:利用定时器定时。考虑到,程序定时不准确,误差大,而定时器c52内部晶振提供的时钟,能够精确定时,所以,本设计采用定时器给各模块提供准确时钟。对于时钟,主要用在走秒,即定时器定时时间为1s,考虑到,设计中需要用到串口进行数据传送,而且对用C52,1s属于长定时,所以定时器采用定时器timer0。timer0工作在方式1,定时设置为50ms,即初始值为TH0=0x4c,TL0=0x01,再通过一个标志位flag来控制次数,初始值为20,则定时时间刚好为1s。
    (2) 时间显示模式
    从设计要求看,本设计至少要涉及到两个模式:(1)时钟模式;(2)闹钟模式。时钟模式下,数码管实时显示当前时间,闹钟模式下,显示设置的闹钟时间,并且闹钟模式下,数码管显示的值闪烁,以区别于时钟模式,这样更易于区分这两种模式。这两个模式通过K22和K23来切换,K22从时钟模式进入闹钟模式,K23退出闹钟模式,并保存当前设置的闹钟时间,并置位闹钟状态位flag1=0(flag1=0,开闹钟;flag1=1,关闹钟),此外,时钟、闹钟模式下均为可编辑状态,K20、K21分别控制时针数值和分针数值。为了更接近现实的时钟,本设计提供第三种模式–秒数显示模式。这个模式下,4个数码管只有两个亮,用来显示秒数值,通过键K24切换到此模式,和退出此模式,对于秒数,其控制权在定时器timer0,不提供编辑功能。
    (3)振铃
    此功能的实现主要依靠实验箱上的蜂鸣器,当当前时间到达闹钟时间时,RD=0,开始振铃,蜂鸣器响。本设计中,在振铃状态,提供关闹铃功能,通过K27关闹钟,置闹钟状态位flag1=1,关闹钟;若是需要打开闹钟,则可按键K26,置flag1=0。
    (4) 串口
    此功能用于,在PC上通过串口工具,传送数据到C52,进而控制数码管值,即设置时间和闹钟。在实现串口功能,搭配用了定时器timer2,timer2工作于方式2,即8位自动重装。timer2作为波特率发生器,给串口提供数据传送速率。本设计中,波特率为9600,故timer2初始值为TH1=0xfd,TL1=0xfd。 在本设计中,在时钟模式和闹钟模式下,串口数据逐位传送,分别传给时针数值和分针数值。更具人性化的是,本设计提供错误提。当传送时针数值时,数据大于23,或传送分针数值时,数据大于59时,C52通过串口向PC传送错误提示“error! ”,提示数据传送错误。
    (5)键盘扫描
    本设计中键盘采用独立键盘K20-K27。读取键盘值通过:P2=0xff;key_pressed=P2;key_pressed则为读取到的键盘值,再匹配从而知道按了哪个键。在键盘扫描设计中,一个关键技术是键盘消抖。这里通过延时程序delay2()延时一段时间,再读取键盘值,判断是键盘抖动还是正常按下的值。
    3.MCU闹钟设计.

相关文章:

  • 2022-12-23
  • 2022-01-25
  • 2022-12-23
  • 2021-08-21
  • 2021-08-26
  • 2021-04-28
  • 2021-10-22
  • 2021-10-31
猜你喜欢
  • 2022-01-09
  • 2021-12-06
  • 2021-12-06
  • 2021-12-17
  • 2021-04-03
  • 2022-12-23
相关资源
相似解决方案