基于51单片机可调数字钟的设计

  • 格式:doc
  • 大小:129.50 KB
  • 文档页数:24

下载文档原格式

  / 24
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

安阳师范学院

单片机技术课程实践——基于89C51单片机可调数字钟的仿真设计

班级:

姓名:

学号:

辅导老师:

设计时间:

1. 设计目的

1.1设计目的

(1)掌握51系列内部定时/计数器的原理和基本应用;

(2)掌握使用单片机处理复杂逻辑的方法;

(3)掌握多位数码管动态显示的方法;

(4)掌握独立式(和矩阵)键盘的编程方法;

(5)掌握利用汇编语言编写单片机系统的应用软件的方法;

(6) 巩固,加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;

(7) 培养针对课题需要,选择和查阅有关手册,图表及文献资料的自学能力,提高组成系统,编程,调试的动手能力;

(8) 熟悉单片机用系统开发,研制的过程,软硬件设计方法,内容及步骤.

(9) 了解数字钟的组成及工作原理.

1.2设计性能

(1)用51单片机的定时/计数器TMR0产生一秒的定时时间,作为秒计数时间;

(2)当一秒产生时,秒计数加1;

(3)开机时,显示00.00.00,并开始连续计时;

(4)计时满23.29.59时,返回00.00.00重新开始计时;

(5)在以上设计基础上,在单片机的I/O口上分别接入四个按键:K0—控制“秒”的调整,每按一次加1秒;K1—控制“分”的调整,每按一次加1分;K2—控制“时”的调整,每按一次加1小时;K3—时间复位按键。

2.系统电路的方案

2.1实现时钟计时的基本方法

用AT89C51单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1开机时。显示00-00-00的时间,开始计时;计时满23-59-59时,返回00-00-00重新计时

AT89C51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD,即可完成。定时/计数器何时工作也是通过TCON特殊功能寄存器来设置的。

在此设计中,选择16位定时工作方式。对于T0来说,系统时钟为12MHz,最大定时也只有65536us,即65.536ms,无法达到我们所需要的1秒的定时,因此,必须通过软件来处理这个问题,假设取T0的最大定时为50ms,即要定时1秒需要经过20次的50ms的定时。对于这20次计数,就可以采用软件的方法来统计了。

设定TMOD=01H,设置定时/计数器0工作在方式1。

给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出:N=t/Ty=(50×10^-3)/(1×10^-6)=50000

X=65536-50000=15536=3CB0H

即TH0=3CH,TL0=0B0H.

这样,当定时/计数器0计满50ms时,产生一个中断,我们可以在中断服务程序中,对中断次数加以统计,以实现数字钟的逻辑功能。

2.2数字钟的时间显示

显示器的时间显示采用动态扫描电路驱动形式,以达到简化电路的目的。但要注意所需的驱动电流比静态驱动时要大,因此要增加驱动电路。可采用

74LS244或者晶体管;其中74LS244是用来驱动段选码,晶体管是驱动位选码。

电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。

3.系统的硬件设计

3.1单片机的功能介绍

AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示。

图3.1 单片机AT89C52引脚功能简化图

3.2时钟振荡电路

时钟振荡器即时钟脉冲发生器,产生整个芯片内部各功能电路正常操作所需

的时钟脉冲和定时信号。最常用的一种电路连接方法是,在XTAL1和XTAL2这2只引脚之间外接一只晶体振荡器XTAL和2只电容C1和C2到地(如图5-3所示),与片内电路共同构成一个多谐振荡器电路。其振荡频率取决于外接石英晶体振荡器元件XTAL的固有频率,常选取12MHZ或6MHZ的晶振。

典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作) 特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行。

图3.2时钟振荡电路图

3.3键盘控制电路

键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘.而靠软件编程来识别的称为非编码键盘;

在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。下图5-6是非编码键盘式控制电路。

图3.3 键盘控制电路

按键在闭合和断开时,触点会存在抖动现象为使CPU能正确地读出端口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用的去抖动的方法有两种:硬件方法和软件方法。单片机中常用软件法,软件法其实很简单,就是在单片机获得端口为低的信息后,不是立即认定按键已被按下,而是延时10毫秒或更长一些时间后再次检测端口,如果仍为低,说明按键的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(端口为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。

4.系统的软件设计

4.1系统软件设计流程图

这次的数字钟设计用到很多子程序,最好将它们分为若干个相对独立且相互联系的部分。主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。以下是数字钟工作的流程图。