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

下载本文档

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

文档简介

单片机原理及应用

课程教案第六章:单片机应用实例单片机原理及应用主要内容6.1单片机应用系统设计的基本准则6.2单片机应用系统的设计方法6.3数码管时钟电路的设计主要内容6.1单片机应用系统设计的基本准则6.1.1可靠性

高可靠性是单片机系统应用的前提,在系统设计的每一个环节,都应该将可靠性作为首要的设计准则。提高系统的可靠性通常从以下几个方面考虑:1.使用可靠性高的元器件2.采用双机系统3.设计电路板时布线和接地要合理,严格安装硬件设备及电路6.1单片机应用系统设计的基本准则6.1.1可靠性6.1单片机应用系统设计的基本准则4.对供电电源采用抗干扰措施5.输入输出通道抗干扰措施6.进行软硬件滤波7.系统自诊断功能6.1.2操作维护方便6.1.3性价比6.1.4设计周期短。4.对供电电源采用抗干扰措施6.2.1系统总体设计

系统总体设计是单片机系统设计的前提,合理的总体设计是系统成败的关键。总体设计关键在于对系统功能和性能的认识和合理分析,系统单片机及关键芯片的选型,系统基本结构的确立和软、硬件功能的划分

6.2单片机应用系统的设计方法6.2.1系统总体设计6.2单片机应用系统的设计方法单片机系统的研制过程图单片机系统的研制过程图明确系统的功能与性能系统单片机选型划分系统软、硬件功能4.确定系统结构组成

明确系统的功能与性能1.程序存储器2.数据存储器3.I/O接口4.译码电路5.总线驱动器6.抗干扰电路

6.2.2硬件设计1.程序存储器6.2.2硬件设计

6.2.3软件设计

软件设计流程

6.2.3软件设计

软件设计流程

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

软件设计通常分作系统定义、软件结构设计和程序2.软件结构设计3.程序设计图6.42.软件结构设计图6.4

系统调试包括硬件调试、软件调试和软、硬件联调。根据调试环境不同,系统调试又分为模拟调试与现场调试。各种调试所起的作用是不同的,它们所处的时间段也不一样,不过它们的目的都是为了查出用户系统中存在的错误或缺陷。系统调试的一般过程如图6.5。

6.2.4系统总体调试

系统调试包括硬件调试、软件调试和软、硬件联调。根据调试图6.5图6.51.单片机应用系统调试工具(1)单片机开发系统(2)万用表(3)逻辑笔(4)逻辑脉冲发生器与模拟信号发生器(5)示波器(6)逻辑分析仪

1.单片机应用系统调试工具2.单片机应用系统的一般调试方法(1)硬件调试

①静态调试

②动态调试

(2)软件调试

①先独立后联机

②先分块后组合

③先单步后连续

2.单片机应用系统的一般调试方法(3)系统联调①

软、硬件能否按预定要求配合工作。②系统运行中是否有潜在的设计时难以预料的错误。

③系统的动态性能指标(包括精度、速度参数)是否满足设计要求。(4)现场调试(3)系统联调

6.3数码管时钟电路的设计6.3.1系统设计引言

LED数码管时钟电路采用24h计时方式,时、分、秒用六位数码管显示。该电路采用AT89C2051单片机,使用3V电池供电。

6.3.2系统设计原理以AT89C2051单片机来实现时钟计时显示有如下几个要点:1.计算计数初值时钟计时的关键问题是秒的产生,因为秒是最小时钟单位,但使用MCS-51的定时器/计数器进行定时,即使按工作方式1,其最大定时时间也只能达到131ms,离1s还差很远。为此,我们把秒计时用硬件定时和软件计数相结合的方法实现,即:把定时器的定时时间定为125ms,这样计数溢出8次就可得到1s,而8次计数可用软件方法实现。

6.3数码管时钟电路的设计

为得到125ms定时,我们可使用定时器/计数器0,以工作方式1进行,假定单片机为6MHZ晶振,设计数初值为X,则有如下等式:(216–X)×2=125000

计算得计数初值X=3036,二进制表示为110011011100B,十六进制表示为0CDCH。2.设定定时器定时方式定时器采用中断定时方式完成,以便于通过中断服务程序进行溢出次数(每次125ms)的累计,计满8次即得到秒计时。为得到125ms定时,我们可使用定时器/计数器3.实现方法通过在程序中的数值累加和数值比较来实现从秒到分和从分到时的计时。4.设置时钟显示及显示缓冲区假定时钟时间在6位LED数码管上进行显示(时、分、秒各占两位)。为此,要在内部RAM中设置显示缓冲区,共6个单元,与数码管对应关系如图6.12所示。显示缓冲区从左向右依次存放时、分、秒的数值。

LED5LED4LED3LED2LED1LED07EH7DH7CH7BH7AH79H图6.12LED显示器的缓冲单位

3.实现方法LED5LED4LED3LED2LED6.3.3系统硬件设计

数码管时钟电路如图6.13所示,其采用AT89C2051单片机最小化应用设计,LED显示用动态扫描方式实现,P1口输出段码数据,P3.0~P3.5口作扫描输出,P3.7接按钮开关。了提供LED数码管的驱动电流,用三极管9012作电源驱动输出。为了提高秒计时的精确度,本设计中的计时采用定时器T0中断完成,其余状态循环调用显示子程序,当P3.7端口开关按下时,转入调时功能程序。

6.3.3系统硬件设计图6.13采用AT89C2051的六位时钟电路

供阳低电平有效低电平导通图6.13采用AT89C2051的六位时钟电路供阳低电6.3.4系统软件设计1.主程序(MAIN)

主程序的主要功能是进行定时器/计数器的初始化编程,然后通过反复调用显示子程序的方法,等待125ms定时中断的到来。系统主程序流程图如图6.14所示。

6.3.4系统软件设计调用显示子程序设置循环次数开中断定时开始计数初值定时器0工作方式1显示缓冲区单元清0定义堆栈区MAIN等待定时中断请求图6.14主程序流程调用显示子程序设置循环次数开中断定时开始计数初值定时器0工作

ORG0000H;程序执行开始地址

LJMPSTART;跳到标号START执行

ORG000BH;定时器0中断程序入口

LJMPINTTO;跳到标号INTTO执行

ORG0030H

START:MOVSP,#60H;确立堆栈区

MOVR0,#79H;显示缓冲区首地址

MOVR7,#06H;显示位数ML1:MOV@R0,#00H;显示缓冲单元清0

INCR0

DJNZR7,ML1

主程序清单如下:

ORG0000H;程序执行开始地址

LJMPSTART;跳

MOVTMOD,#01H;设置定时器0为方式1

MOVTL0,#0DCH;装计数器初值

MOVTH0,#0CH

SETBEA;总中断开放

SETBET0;允许T0中断

SETBTR0;开启T0定时器

MOV30H,#08H;计数溢出次数ML0:LCALLDISPLAY;调用显示子程序

JNBP3.7SETMM1;调整程序

SJMPML0

SETMM1:LJMPSETMM;转到调整程序

MOVTMOD,#01H;设置定时器0为方式1

MOV2.加1子程序(DAADl)

加1子程序用于完成对秒、分和时的加1操作,中断服务程序中在秒、分、时加1时共有三处调用此子程序。加l操作共包括以下三项内容:加1子程序清单:

DAA1:MOVA,@R0;加1子程序,十位送A

DECR0

SWAPA;十位数占高4位

ORLA,@R0;个位数占低4位

ADDA,#01H;加12.加1子程序(DAADl)DAA1:MOVA

DAA;十进制调整

MOVR2,A;全值暂存R2中

ANLA,#0FH;屏蔽十位数,取个位数

MOV@R0,A;个位值送显示缓冲单元

MOVA,R2

INCR0

ANLA,#0F0H;屏蔽个位数取出十位数

SWAPA;使十位数占低4位

MOV@R0,A;十位数送显示缓冲单元

RET

;返回

DAA;十进制调整

MOVR2,A;全值暂存R2中

ANL十位数送缓冲单元把十位数交换到低半字节个位数送缓冲单元十进制调整加1取个位数,并占A低半字节使十位数占A高半字节取十位数DISPLAY图6.5加1子程序流程十位数送缓冲单元把十位数交换到低半字节个位数送缓冲单元十进制3.中断服务程序(PITO)

中断服务程序的主要功能是进行计时操作。程序开始先判断计数溢出是否满了8次,不满8次表明还没达到最小计时单位秒,中断返回;如满8次则表明已达到最小计时单位秒,程序继续向下执行,进行计时操作。中断服务程序流程如图11.16所示。中断子程序清单:

INTT0:PUSHACC;现场保护

PUSHPSW

SETBPSW.3;选1组通用寄存器

MOVTL0,#0DCH;计数器重新加载

MOVTH0,#0CH

3.中断服务程序(PITO)INTT0:PUS

MOVA,30H;循环次数减1

DECA

MOV30H,A

JNZRET0;不满8次转移

MOV30H,#08H;满8次开始计时

MOVR0,#7AH;秒显示缓冲单元

ACALLDAAD1;秒加1

MOVA,R2;加1后秒值在R2

XRLA,#60H;判是否到60秒

JNZRET0;不到转移

ACALLCLR0;到60S显示单元清0

MOVR0,#7CH;分显示缓冲单元地址

ACALLDAAD1;分加1

MOVA,R2

MOVA,30H;循环次数减1

DECA

MOV3

XRLA,#60H;判是否到60分

JNZRET0

ACALLCLR0;到60分显示单元清0

MOVR0,#7EH;时显示缓冲单元地址

ACALLDAAD1;时加1

MOVA,R2

XRLA,#24H;判是否24小时

JNZRET0

ACALLCLR0;到24小时清缓冲单元RET0:POPACC;现场恢复

POPPSW

RET1

;中断返回

XRLA,#60H;判是否到60分

JNZRET0

ACCLR0:CLRA;清缓冲单元子程序

MOV@R0,A;十位数缓冲单元清0

DECR0

MOV@R0,A;个位数缓冲单元清0

RET

;返回4、清缓冲单元子程序:CLR0:CLRA;清缓冲单元子程序

MOV@R0,A;十

秒显示缓冲单元清0秒加1循环次数减1计数器重新加载现场保护PITO是否满8次是否60秒时显示缓冲单元清0是否24小时是否60分分值加1现场恢复时值加1分显示缓冲单元清0返回图11.16中断服务程序流程 秒显示缓冲单元清0秒加1循环次数减1计数器重新加载现场保5.显示子程序

数码管显示的数据存放在内存单元79H一7EH中,其中79H~7AH存放秒数据,7BH~7CH存放分数据,7DH~7EH存放时数据,每一地址单元内均为十进制BCD码。由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。显示时,先取出79H~7EH某一地址中的数据,然后查得对应的显示用段码从P1口输出。P3口将对应的数码管选中,就能显示该地址单元的数据值。

5.显示子程序DISPLAY:MOVR0,#79H;建立显示缓冲区首址

MOVR3,#FEH;从右数第一位显示

MOVA,R3;扫描字放入ALD0:MOVP3,A;从P3口输出

MOVA,@R0;取显示数据到A

MOVDPTR,#TAB;取段码表地址

MOVCA,@A+DPTR;查显示数据对应段码

MOVP1,A;段码放P1口

ACALLDL1MS;延时1ms

INCR0;指向下一地址DISPLAY:MOVR0,#79H;建立显示缓冲区首址

MOVA,R3

JBACC.5LD1;ACC.5=0一次显示结束

RLA;A中数据循环左移

MOVR3,A;将位控码送R3保存

AJMPLD0;继续扫描LD1:RET

TAB:DBC0H;字形代码表0

DBF9H;1

DBA4H;2

DBB0H;3

DB99H;4

MOVA,R3

JBACC.5LD1;ACC.5=0ThankYou!ThankYou!单片机原理及应用

课程教案第六章:单片机应用实例单片机原理及应用主要内容6.1单片机应用系统设计的基本准则6.2单片机应用系统的设计方法6.3数码管时钟电路的设计主要内容6.1单片机应用系统设计的基本准则6.1.1可靠性

高可靠性是单片机系统应用的前提,在系统设计的每一个环节,都应该将可靠性作为首要的设计准则。提高系统的可靠性通常从以下几个方面考虑:1.使用可靠性高的元器件2.采用双机系统3.设计电路板时布线和接地要合理,严格安装硬件设备及电路6.1单片机应用系统设计的基本准则6.1.1可靠性6.1单片机应用系统设计的基本准则4.对供电电源采用抗干扰措施5.输入输出通道抗干扰措施6.进行软硬件滤波7.系统自诊断功能6.1.2操作维护方便6.1.3性价比6.1.4设计周期短。4.对供电电源采用抗干扰措施6.2.1系统总体设计

系统总体设计是单片机系统设计的前提,合理的总体设计是系统成败的关键。总体设计关键在于对系统功能和性能的认识和合理分析,系统单片机及关键芯片的选型,系统基本结构的确立和软、硬件功能的划分

6.2单片机应用系统的设计方法6.2.1系统总体设计6.2单片机应用系统的设计方法单片机系统的研制过程图单片机系统的研制过程图明确系统的功能与性能系统单片机选型划分系统软、硬件功能4.确定系统结构组成

明确系统的功能与性能1.程序存储器2.数据存储器3.I/O接口4.译码电路5.总线驱动器6.抗干扰电路

6.2.2硬件设计1.程序存储器6.2.2硬件设计

6.2.3软件设计

软件设计流程

6.2.3软件设计

软件设计流程

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

软件设计通常分作系统定义、软件结构设计和程序2.软件结构设计3.程序设计图6.42.软件结构设计图6.4

系统调试包括硬件调试、软件调试和软、硬件联调。根据调试环境不同,系统调试又分为模拟调试与现场调试。各种调试所起的作用是不同的,它们所处的时间段也不一样,不过它们的目的都是为了查出用户系统中存在的错误或缺陷。系统调试的一般过程如图6.5。

6.2.4系统总体调试

系统调试包括硬件调试、软件调试和软、硬件联调。根据调试图6.5图6.51.单片机应用系统调试工具(1)单片机开发系统(2)万用表(3)逻辑笔(4)逻辑脉冲发生器与模拟信号发生器(5)示波器(6)逻辑分析仪

1.单片机应用系统调试工具2.单片机应用系统的一般调试方法(1)硬件调试

①静态调试

②动态调试

(2)软件调试

①先独立后联机

②先分块后组合

③先单步后连续

2.单片机应用系统的一般调试方法(3)系统联调①

软、硬件能否按预定要求配合工作。②系统运行中是否有潜在的设计时难以预料的错误。

③系统的动态性能指标(包括精度、速度参数)是否满足设计要求。(4)现场调试(3)系统联调

6.3数码管时钟电路的设计6.3.1系统设计引言

LED数码管时钟电路采用24h计时方式,时、分、秒用六位数码管显示。该电路采用AT89C2051单片机,使用3V电池供电。

6.3.2系统设计原理以AT89C2051单片机来实现时钟计时显示有如下几个要点:1.计算计数初值时钟计时的关键问题是秒的产生,因为秒是最小时钟单位,但使用MCS-51的定时器/计数器进行定时,即使按工作方式1,其最大定时时间也只能达到131ms,离1s还差很远。为此,我们把秒计时用硬件定时和软件计数相结合的方法实现,即:把定时器的定时时间定为125ms,这样计数溢出8次就可得到1s,而8次计数可用软件方法实现。

6.3数码管时钟电路的设计

为得到125ms定时,我们可使用定时器/计数器0,以工作方式1进行,假定单片机为6MHZ晶振,设计数初值为X,则有如下等式:(216–X)×2=125000

计算得计数初值X=3036,二进制表示为110011011100B,十六进制表示为0CDCH。2.设定定时器定时方式定时器采用中断定时方式完成,以便于通过中断服务程序进行溢出次数(每次125ms)的累计,计满8次即得到秒计时。为得到125ms定时,我们可使用定时器/计数器3.实现方法通过在程序中的数值累加和数值比较来实现从秒到分和从分到时的计时。4.设置时钟显示及显示缓冲区假定时钟时间在6位LED数码管上进行显示(时、分、秒各占两位)。为此,要在内部RAM中设置显示缓冲区,共6个单元,与数码管对应关系如图6.12所示。显示缓冲区从左向右依次存放时、分、秒的数值。

LED5LED4LED3LED2LED1LED07EH7DH7CH7BH7AH79H图6.12LED显示器的缓冲单位

3.实现方法LED5LED4LED3LED2LED6.3.3系统硬件设计

数码管时钟电路如图6.13所示,其采用AT89C2051单片机最小化应用设计,LED显示用动态扫描方式实现,P1口输出段码数据,P3.0~P3.5口作扫描输出,P3.7接按钮开关。了提供LED数码管的驱动电流,用三极管9012作电源驱动输出。为了提高秒计时的精确度,本设计中的计时采用定时器T0中断完成,其余状态循环调用显示子程序,当P3.7端口开关按下时,转入调时功能程序。

6.3.3系统硬件设计图6.13采用AT89C2051的六位时钟电路

供阳低电平有效低电平导通图6.13采用AT89C2051的六位时钟电路供阳低电6.3.4系统软件设计1.主程序(MAIN)

主程序的主要功能是进行定时器/计数器的初始化编程,然后通过反复调用显示子程序的方法,等待125ms定时中断的到来。系统主程序流程图如图6.14所示。

6.3.4系统软件设计调用显示子程序设置循环次数开中断定时开始计数初值定时器0工作方式1显示缓冲区单元清0定义堆栈区MAIN等待定时中断请求图6.14主程序流程调用显示子程序设置循环次数开中断定时开始计数初值定时器0工作

ORG0000H;程序执行开始地址

LJMPSTART;跳到标号START执行

ORG000BH;定时器0中断程序入口

LJMPINTTO;跳到标号INTTO执行

ORG0030H

START:MOVSP,#60H;确立堆栈区

MOVR0,#79H;显示缓冲区首地址

MOVR7,#06H;显示位数ML1:MOV@R0,#00H;显示缓冲单元清0

INCR0

DJNZR7,ML1

主程序清单如下:

ORG0000H;程序执行开始地址

LJMPSTART;跳

MOVTMOD,#01H;设置定时器0为方式1

MOVTL0,#0DCH;装计数器初值

MOVTH0,#0CH

SETBEA;总中断开放

SETBET0;允许T0中断

SETBTR0;开启T0定时器

MOV30H,#08H;计数溢出次数ML0:LCALLDISPLAY;调用显示子程序

JNBP3.7SETMM1;调整程序

SJMPML0

SETMM1:LJMPSETMM;转到调整程序

MOVTMOD,#01H;设置定时器0为方式1

MOV2.加1子程序(DAADl)

加1子程序用于完成对秒、分和时的加1操作,中断服务程序中在秒、分、时加1时共有三处调用此子程序。加l操作共包括以下三项内容:加1子程序清单:

DAA1:MOVA,@R0;加1子程序,十位送A

DECR0

SWAPA;十位数占高4位

ORLA,@R0;个位数占低4位

ADDA,#01H;加12.加1子程序(DAADl)DAA1:MOVA

DAA;十进制调整

MOVR2,A;全值暂存R2中

ANLA,#0FH;屏蔽十位数,取个位数

MOV@R0,A;个位值送显示缓冲单元

MOVA,R2

INCR0

ANLA,#0F0H;屏蔽个位数取出十位数

SWAPA;使十位数占低4位

MOV@R0,A;十位数送显示缓冲单元

RET

;返回

DAA;十进制调整

MOVR2,A;全值暂存R2中

ANL十位数送缓冲单元把十位数交换到低半字节个位数送缓冲单元十进制调整加1取个位数,并占A低半字节使十位数占A高半字节取十位数DISPLAY图6.5加1子程序流程十位数送缓冲单元把十位数交换到低半字节个位数送缓冲单元十进制3.中断服务程序(PITO)

中断服务程序的主要功能是进行计时操作。程序开始先判断计数溢出是否满了8次,不满8次表明还没达到最小计时单位秒,中断返回;如满8次则表明已达到最小计时单位秒,程序继续向下执行,进行计时操作。中断服务程序流程如图11.16所示。中断子程序清单:

INTT0:PUSHACC;现场保护

PUSHPSW

SETBPSW.3;选1组通用寄存器

MOVTL0,#0DCH;计数器重新加载

MOVTH0,#0CH

3.中断服务程序(PITO)INTT0:PUS

MOVA,30H;循环次数减1

DECA

MOV30H,A

JNZRET0;不满8次转移

MOV30H,#08H;满8次开始计时

MOVR0,#7AH;秒显示缓冲单元

ACALLDAAD1;秒加1

MOVA,R2;加1后秒值在R2

XRLA,#60H;判是否到60秒

JNZRET0;不到转移

ACALLCLR0;到60S显示单元清0

MOVR0,#7CH;分显示缓冲单元地址

ACALLDAAD1;分加1

MOVA,R2

MOVA,30H;循环次数减1

DECA

MOV3

XRLA,#60H;判

温馨提示

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

评论

0/150

提交评论