电子时钟的仿真图及c语言程序,电子时钟计时器的设计(c语言版,调试完美通过,可直接使用)(附原理图源程序以及完整的文档)...

矩阵法来做键盘是最合理的。

矩阵式键盘的按钮识别办法确定矩阵式键盘上何键被按下简绍一种“行扫描法”。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的,按钮识别办法,如下图示键盘,介绍过程如下。

判断键盘中有无键盘按下将全部行线置低电平,然后检测列的电平为低,则表示键盘中有键被按下,而且闭合的键位位于低电平线与4根行线相交叉的4个按钮之中。若所有列线均为高电平,则键盘中无键按下。

判断闭合键所在的位置:在确认有键按下后,即可置某根行线为低电平时,其他线为高电平。在确定某根位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列与置为低电平的行线交叉处的按钮就是闭合的按钮。将程序通过串口下载到单片机中,在键盘上按任意键时,将会在数码管上显示对应的字符。

为了驱动键盘,同上以8255_PC第四位作为输入,8255PC高四位作为列扫描输出,以此来实现动态扫描显示法。如图8所示:

图8 键盘动态扫描电路设计

9

3.控制系统的软件设计

3.1主程序流程图

本设计中主程序主要实现显示的初始化和调用各子程序工作的功能,读取时间的子程序主要实现初始化,时间信息的采集和显示段码的码的存取。分别对各个器件的功能进行编程设计,根据主程序流程图(如下)进行全面的分析。设计中计时主要以定时器T0中断完成,定点闹铃使用峰鸣器来完成。当端口有开关按下时,转入相应的功能程序。其主程序执行流程图如下图9:

开始初始化显示N是否到闹钟时间N是否按键YNNY蜂鸣器响4是否整点秒Y蜂鸣器响1分钟是否为开启闹钟Y设置闹钟时间调节显示时间

图9 主程序流程图

10

3.2显示子程序

时间显示子程序显示时钟芯片3个内存单元(小时、分钟、秒钟)的BCD码数据,8255的PA口送数码管的位选编码。8255的PB口送段选编码,位选段选编码存放在ROM表中。

显示时,先取出位选编码数据,然后送至PA口输出,接着取出段选编码数据送至PB口输出,剩下的数码管以同样地方法送数据直到将3个内存单元的数据分成6个位全部送去数码管显示。数码管显示子程序流程图如图9所示:

开始初始化显示数值从RAM中取键码计算存入缓冲区显示延时六位显示完成?Y 结束N

图 10 数码管显示子程序流程图

3.3闹钟时间设定功能程序

在时钟状态下,触发外中断1时,进入闹钟时间设定模式,且不影响T0计时器的功能状态,在键盘上输入对应的数字进行时间设定。当分别按下调节时钟、分钟和秒钟的个位时,时间自动确定,闹钟时间只精确到分钟。闹钟时间设定流程图如图11所示:

11

开始达到预设时间?Y闹铃N返回

图11 闹钟时间设定流程图

3.4键盘扫描程序

本设计采用动态扫描法,动态扫描法不仅扫描键阵,也可以实现显示,是目前应用十分广泛的一种方法。动态扫描法是采用输出“移动”信号,轮流对各行按键进行检测来实现的。设置行线为输出,列线为输入,当无按键按下时,列输入全为“1”.设计时,将某一行输出为“0”,读取列线值,若其中某一位为“0”,则表明行、列交叉处的按键按下,否则,无按键按下;继续扫描下一行(将下一行输出为“0”),直至全扫描完为止。键盘扫描程序流程图如12图所示:

开始初始化地址参数输出列扫描信号读入行信号该列有键入NN四列扫描完YY按照行列计算键值查表得键码等待键释放返回

图12 键盘扫描程序流程图

12

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值