单片机数码钟设计实例_第1页
单片机数码钟设计实例_第2页
单片机数码钟设计实例_第3页
单片机数码钟设计实例_第4页
单片机数码钟设计实例_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理及应用 课程教案第六章:单片机应用实例主要内容6.1 单片机应用系统设计的基本准则6.2 单片机应用系统的设计方法6.3 数码管时钟电路的设计6.1.1 可靠性 高可靠性是单片机系统应用的前提,在系统设计的每一个环节,都应该将可靠性作为首要的设计准则。提高系统的可靠性通常从以下几个方面考虑: 1. 使用可靠性高的元器件 2. 采用双机系统 3. 设计电路板时布线和接地要合理,严格安装硬件设备及电路6.1 单片机应用系统设计的基本准则 4. 对供电电源采用抗干扰措施 5. 输入输出通道抗干扰措施 6. 进行软硬件滤波 7. 系统自诊断功能6.1.2 操作维护方便6.1.3 性价比6.1

2、.4 设计周期短 。6.2.1 系统总体设计 系统总体设计是单片机系统设计的前提,合理的总体设计是系统成败的关键。总体设计关键在于对系统功能和性能的认识和合理分析,系统单片机及关键芯片的选型,系统基本结构的确立和软、硬件功能的划分 6.2 单片机应用系统的设计方法单片机系统的研制过程图 明确系统的功能与性能 系统单片机选型 划分系统软、硬件功能 4. 确定系统结构组成 1. 程序存储器 2. 数据存储器 3. I/O接口 4. 译码电路 5. 总线驱动器 6. 抗干扰电路 6.2.2 硬件设计6.2.3 软件设计 软件设计流程 软件设计通常分作系统定义、软件结构设计和程序设计等三个步骤(见上图

3、)。 1. 系统定义 定义说明各输入/输出口的功能,确定信息交换的方式、与系统接口方式、所占口地址、读取和输出方式等。 在程序存储器和数据存储器区域中,合理分配存储空间,其中包括系统主程序、常数表格、数据暂存区域、堆栈区域和入口地址等。 对面板控制开关、按键等输入量以及显示、打印等输出量也必须给予定义,以此作为编程依据。 针对可能出现的由干扰引起的错误进行容错设计,给出错误处理方案,以达到提高软件可靠性的目的。 明确所设计的用户程序应达到的精度、速度指标。 2. 软件结构设计3. 程序设计图 6.4 系统调试包括硬件调试、软件调试和软、硬件联调。根据调试环境不同,系统调试又分为模拟调试与现场调

4、试。各种调试所起的作用是不同的,它们所处的时间段也不一样,不过它们的目的都是为了查出用户系统中存在的错误或缺陷。系统调试的一般过程如图6.5。 6.2.4 系统总体调试图 6.51. 单片机应用系统调试工具 (1) 单片机开发系统 (2) 万用表 (3) 逻辑笔 (4) 逻辑脉冲发生器与模拟信号发生器 (5) 示波器 (6) 逻辑分析仪 2. 单片机应用系统的一般调试方法 (1) 硬件调试 静态调试 动态调试 (2) 软件调试 先独立后联机 先分块后组合 先单步后连续 (3) 系统联调 软、硬件能否按预定要求配合工作。 系统运行中是否有潜在的设计时难以预料的错误。 系统的动态性能指标(包括精度

5、、速度参数)是否 满足设计要求。(4) 现场调试 6.3 数码管时钟电路的设计6.3.1 系统设计引言 LED数码管时钟电路采用24 h计时方式,时、分、秒用六位数码管显示。该电路采用AT89C2051单片机,使用3 V电池供电。 6.3.2 系统设计原理以AT89C2051单片机来实现时钟计时显示有如下几个要点:1. 计算计数初值 时钟计时的关键问题是秒的产生,因为秒是最小时钟单位,但使用MCS-51的定时器/计数器进行定时,即使按工作方式1,其最大定时时间也只能达到131ms,离1s还差很远。为此,我们把秒计时用硬件定时和软件计数相结合的方法实现,即:把定时器的定时时间定为125ms,这样

6、计数溢出8次就可得到1s,而8次计数可用软件方法实现。 为得到125ms定时,我们可使用定时器/计数器0,以工作方式1进行,假定单片机为6MHZ晶振,设计数初值为X,则有如下等式:(216 X)2=125000 计算得计数初值X=3036,二进制表示为110011011100B,十六进制表示为0CDCH。2. 设定定时器定时方式 定时器采用中断定时方式完成,以便于通过中断服务程序进行溢出次数(每次125ms)的累计,计满8次即得到秒计时。3. 实现方法 通过在程序中的数值累加和数值比较来实现从秒到分和从分到时的计时。4. 设置时钟显示及显示缓冲区 假定时钟时间在6位LED数码管上进行显示(时、

7、分、秒各占两位)。为此,要在内部RAM中设置显示缓冲区,共6个单元,与数码管对应关系如图6.12所示。显示缓冲区从左向右依次存放时、分、秒的数值。 LED5LED4LED3LED2LED1LED07EH7DH7CH7BH7AH79H图6.12 LED显示器的缓冲单位 6.3.3 系统硬件设计 数码管时钟电路如图6.13所示,其采用AT89C2051单片机最小化应用设计,LED显示用动态扫描方式实现,P1口输出段码数据,P3.0P3.5口作扫描输出,P3.7接按钮开关。了提供LED数码管的驱动电流,用三极管9012作电源驱动输出。为了提高秒计时的精确度,本设计中的计时采用定时器T0中断完成,其余

8、状态循环调用显示子程序,当P3.7端口开关按下时,转入调时功能程序。 图6.13 采用AT89C2051的六位时钟电路 供阳低电平有效低电平导通6.3.4 系统软件设计1. 主程序(MAIN) 主程序的主要功能是进行定时器计数器的初始化编程,然后通过反复调用显示子程序的方法,等待125ms定时中断的到来。系统主程序流程图如图6.14所示。 调用显示子程序设置循环次数开中断定时开始计数初值定时器0工作方式1显示缓冲区单元清0定义堆栈区MAIN等待定时中断请求图 6.14 主程序流程ORG0000H;程序执行开始地址LJMPSTART;跳到标号START执行ORG000BH;定时器0中断程序入口L

9、JMPINTTO;跳到标号INTTO执行ORG 0030HSTART:MOVSP,#60H;确立堆栈区MOVR0,#79H;显示缓冲区首地址MOVR7,#06H;显示位数ML1:MOVR0,#00H;显示缓冲单元清0INCR0DJNZR7,ML1主程序清单如下:MOVTMOD ,# 01H;设置定时器0为方式1MOVTL0,# 0DCH;装计数器初值MOVTH0,# 0CHSETBEA;总中断开放SETBET0;允许T0中断SETBTR0;开启T0定时器MOV30H,#08H;计数溢出次数ML0: LCALLDISPLAY;调用显示子程序JNBP3.7 SETMM1;调整程序SJMPML0SE

10、TMM1:LJMP SETMM;转到调整程序2. 加1子程序(DAADl) 加1子程序用于完成对秒、分和时的加1操作,中断服务程序中在秒、分、时加1时共有三处调用此子程序。加l操作共包括以下三项内容: 加1子程序清单: DAA1: MOVA,R0;加1子程序,十位送ADECR0SWAP A;十位数占高4位ORLA,R0;个位数占低4位ADDA,#01H;加1DAA;十进制调整MOVR2,A;全值暂存R2中ANLA,#0FH;屏蔽十位数,取个位数MOVR0,A;个位值送显示缓冲单元MOVA,R2INCR0ANLA, # 0F0H;屏蔽个位数取出十位数SWAP A;使十位数占低4位MOVR0,A;

11、十位数送显示缓冲单元RET;返回十位数送缓冲单元把十位数交换到低半字节个位数送缓冲单元十进制调整加1取个位数,并占A低半字节使十位数占A高半字节取十位数DISPLAY图 6.5 加1子程序流程3. 中断服务程序(PITO) 中断服务程序的主要功能是进行计时操作。程序开始先判断计数溢出是否满了8次,不满8次表明还没达到最小计时单位秒,中断返回;如满8次则表明已达到最小计时单位秒,程序继续向下执行,进行计时操作。中断服务程序流程如图11.16所示。 中断子程序清单: INTT0: PUSHACC;现场保护PUSHPSWSETBPSW.3;选1组通用寄存器MOVTL0,#0DCH;计数器重新加载MO

12、VTH0,#0CHMOV A,30H;循环次数减1DEC AMOV 30H,AJNZ RET0;不满8次转移MOV 30H,#08H;满8次开始计时MOV R0,#7AH;秒显示缓冲单元ACALL DAAD1;秒加1MOVA,R2;加1后秒值在R2XRL A,#60H;判是否到60秒JNZ RET0;不到转移ACALL CLR0;到60S显示单元清0MOV R0,#7CH;分显示缓冲单元地址ACALLDAAD1;分加1MOVA,R2XRLA,#60H;判是否到60分JNZRET0ACALLCLR0;到60分显示单元清0MOVR0,#7EH;时显示缓冲单元地址ACALLDAAD1;时加1MOVA

13、,R2XRLA,#24H;判是否24小时JNZRET0ACALLCLR0;到24小时清缓冲单元RET0:POPACC;现场恢复POPPSWRET1;中断返回CLR0: CLRA;清缓冲单元子程序MOVR0,A;十位数缓冲单元清0DECR0MOVR0,A;个位数缓冲单元清0RET;返回4、 清缓冲单元子程序:秒显示缓冲单元清0秒加1循环次数减1计数器重新加载现场保护PITO是否满8次是否60秒时显示缓冲单元清0是否24小时是否60分分值加1现场恢复时值加1分显示缓冲单元清0返回图 11.16 中断服务程序流程5. 显示子程序 数码管显示的数据存放在内存单元79H一7EH中,其中79H7AH存放秒数据,7BH7CH存放分数据,7DH7EH存放时数据,每一地址单元内均为十进制BCD码。 由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。显示时,先取出79H7EH某一地址中的数据,然后查得对应的显示用段码从P1口输出。P3口将对应的数码管选中,就能显示该地址单元的数据值。 DISPLAY: MOVR0,#79H;建立显示缓冲区首址MOVR3, # FEH;从右数第一位显示MOVA,R3;扫描字放入ALD0: MOVP3,A;从P3口输出MOVA,R0;取显示数据到A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论