测控单片机课程设计报告--电子时钟时分秒

《6位单片机电子钟》、设计内容

该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。设计的电子时钟通过数码管显示,并能通 过按键实现设置时间和暂停、启动控制等。

二、电子时钟设计思想:

用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY(自己计算)。形成定时时间为50ms。用片内RAM的7BH单元对50ms计数,计20次产生秒计数器78H单元加1,秒计数器加到60则分计数器79H单元加1,分计数器加到60则时计数器7AH单元加1,时计数器加到24则时计数器清0。然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。在处理过程中加上了按键判断程序,能对按键处理。

三、MCS-51单片机系统简介

     单片机应用系统由硬件系统和软件系统两部分组成。硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。软件系统包括监控程序和各种应用程序。

     在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行。

     在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD显示器,还可以使用CRT显示器。单片机应用系统中键盘一般用的比较多的是矩阵键盘,显示器用的比较多的是LED数码管还LCD显示器。

四、MCS-51单片机内部定时器\计数器、中断系统简介

     定时器\计数器

   1、MCS-51系列中51子系列有两个16位的可编程定时\计数器可:定时\计数器T0和定时\计数器T1。它由加法计数器、方式寄存器TMOD、控制寄存器TCON等组成。方式寄存器用于设定定时计数器T0和T1的工作方式,控制寄存器用于对定时计数器启动、停止进行控制。

   2、每个定时计数器既可以对系统时钟计数实现定时,也可以外部信号计数实现计数功能通过编程设定来实现。

   3、每个定时计数器都有多种工作方式,其中T0有四种工作方式,T1有三种工作方式,T2有三种工作方式。通过编程可设定工作于某种方式。四种工作方式为:13位定时\计数器、16位定时\计数器、8位自动重置定时\计数器、两个8位定时\计数器(只有T0有)

   4、每一个定时计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。

中断系统:

1、MCS-51单片机提供5个硬件中断源,2个外部中断源,2个定时计数器T0和T1的溢出中断TF0和TF1,1个串行口发送TI和接收RI中断。

2、MCS-51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许寄存器IE的各位来控制的。中断允许寄存器IE的字节地址为A8H,可以进行位寻址。系统复位时,中断允许寄存器IE的内容为00H,如果要开放某个中断源,则必须使IE中的总控置位和对应的中断允许位置“1”。

3、MCS-51单片机有5个中断源,为了处理方便,每个中断源有两级控制,高优先级和低优先级。通过由内部的中断优先级寄存器IP来设置,中断优先级寄存器IP的字节地址为B8H,可以进行位寻址。如果某位被置“1”,则对应的中断源被设为高优先级;如果某位被清零,则对应的中断源被设为低优先级。对于同级中断源,系统有默认的优先权顺序,从高到低优先权顺序为外部中断0、定时计数器T0中断、外部中断1、定时计数器T1中断、串行口中断。通过设置中断优先级寄存器IP能够改变系统默认的优先级顺序。

4、MCS-51单片机响应中断的条件为:中断源有请求且中断允许。

五、键盘和LED数码管显示器简介

键盘是单片机应用系统中最常用的输入设备,在单片机应用系统中,操作人员一般都是通过键盘向单片机系统输入指令、地址和数据,实现简单的人机通信。键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。键盘的结构形式一般有两种:独立式键盘和矩阵式键盘。矩阵式键盘的工作方式有3种:查询工作方式、定时扫描工作方式和中断工作方式。

LED数码管显示器:在单片机应用系统中,经常用到LED数码管作为显示输出设备,LED数码管显示器虽然显示信息简单,但它具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,基本上能够满足单片机应用系统的需要,所以在单片机应用系统中经常用到。LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种。所谓译码方式是指由显示字符转换得到对应的字段码的方式。对于LED数码管显示器,通常的译码方式有两种:硬件译码方式和软件译码方式。LED数码管在显示时,通常有两种显示方式:静态显示方式和动态显示方式。在使用时可以把它们组合起来。在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。

六、基本原理

软时钟是利用单片机内部的定时器\计数器来实现的,它的处理过程如下:首先设定单片机内部的一个定时器\计数器工作于定时方式,对机器周期计数形成基准时间,然后用另一个定时器\计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。然后通过数码管把它们的内容在相应位置显示出来即可。

数码管显示可以采用静态显示方法或动态显示方法。静态显示方法需要数据锁存器等硬件,接口复杂,时钟显示一般用6个或8个数码管。由于系统没有其他的复杂的任务处理,而且显示的时钟信息随时都可能变化,一般采用动态显示方式。动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,信息看起来才稳定。译码方式可分为软件译码和硬件译码,软件译码通过译码程序查得显示信息的字段码;硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。

在具体处理时,定时器计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。在主程序中只需对定时器计数器初始化、调用显示子程序和控制子程序。另外,为了使用方便,设计了简单的按键,可以通过按键实现时、分的调整,这样在主程序中就加入了键盘设置子程序。

七、系统硬件电路的设计

        

八、系统软件程序的设计

电子时钟的软件系统由主程序和子程序组成,主程序程序包含初始化参数设置、按键处理、数码管显示模块等,

1.主程序

主程序执行流程如图11.2,主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序。

2.数码管显示模块

本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位和时十位。采用软件译码动态显示。

3.定时器/计数器T0中断服务程序

       定时器/计数器T0用于时间计时。选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把它们的值放到存储单元的指定位置。定时器/计数器T0中断服务程序流程图如图11.3。

        

图11.2  主程序流程图             图11.3  定时器/计数器T0中断服务程序流程图 

4.按键处理模块

       按键处理设置为:如没有按键,则时钟正常走时。当按下K0按键时,进入调分状态,时钟停止走动;按K1可K2按键可进行加1或减1操作;继续按K0键可分别进行分和小时的调整;最后按K0键将退出调整状态,时钟开始计时运行。

5.汇编语言源程序清单

;采用8位LED软件译码动态显示程序

;使用AT89C51单片机,12MHZ晶振,P0输出字段码,P2口输出位选码,用共阳

;LED数码管,P1.0为调时位选择按键,P1.1为加1键,P1.2为减1键。

;片内RAM的70H到77H单元为LED数码管的显示缓冲区

;78H,79H,7AH分别为秒、分、小时计数单元

;7BH为50ms计数器,7CH为调时按键计数器

ORG  0000H

LJMP  START

ORG  000BH     ;定时器/计数器T0中断程序入口

LJMP  INTT0

;主程序

START:MOV  R0,#70H

              MOV  R7,#0CH

INIT:  MOV  @R0,#00H

              INC  R0

              DJNZ  R7,INIT

              MOV  72H,#10

              MOV  75H,#10

              MOV  TMOD,#01H

              MOV  TL0,#0B0H

              MOV  TH0,#03CH

              SETB  EA

              SETB  ET0

              SETB  TR0

START1:LCALL  SCAN

              LCALL  KEYSCAN

              SJMP  START1

;延时1MS子程序

DL1MS:MOV  R6,#14H

DL1:MOV  R7,#19H

DL2:DJNZ  R7,DL2

       DJNZ  R6,DL1

       RET

;延时20MS子程序

DL20MS:ACALL  SCAN

              ACALL  SCAN

              ACALL  SCAN

              RET

;数码管显示程序

SCAN: MOV  A,78H       ;时间存入显示缓冲区相应位置

              MOV  B,#0AH

              DIV  AB

              MOV  71H,A

              MOV  70H,B

              MOV  A,79H

              MOV  B,#0AH

              DIV  AB

              MOV  74H,A

              MOV  73H,B

MOV  A,7AH

              MOV  B,#0AH

              DIV  AB

              MOV  77H,A

MOV  76H,B

       MOV  R1,#70H     ;循环扫描显示

              MOV  R5,#80H

              MOV  R3,#08H

       SCAN1:MOV  A,R5

              MOV  P2,A

              MOV  A,@R1

              MOV  DPTR,#TAB

              MOVC  A,@A+DPTR

              MOV  P0,A

              MOV  A,R5

              LCALL  DL1MS

              INC  R1

              MOV  A,R5

              RR  A

              MOV  R5,A

              DJNZ  R3,SCAN1

              MOV  P2,#00H

              MOV  P0,#0FFH

              RET

       TAB:DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH

              ;“0~9”,“-”的共阳极字段码

;定时器/计数器T0中断服务程序

INTT0: PUSH  ACC

              PUSH  PSW

              CLR  ET0

              CLR  TR0

              MOV  TL0,#0B0H

              MOV  TH0,#03CH

              SETB  TR0

              INC  7BH

              MOV  A,7BH

              CJNE  A,#14H,OUTT0

              MOV  7BH,#00

              INC  78H

              MOV  A,78H

              CJNE  A,#3CH,OUTT0

              MOV  78H,#00

INC  79H

MOV  A,79H

              CJNE  A,#3CH,OUTT0

              MOV  79H,#00

INC  7AH

MOV  A,7AH

              CJNE  A,#18H,OUTT0

              MOV  7AH,#00

OUTT0:

SETB  ET0

POP  PSW

POP  ACC

              RETI

;按键处理程序

KEYSCAN:CLR  EA

              JNB  P1.0,KEYSCAN0

              JNB  P1.1,KEYSCAN1

              JNB  P1.2,KEYSCAN2

KEYOUT:SETB  EA

RET

KEYSCAN0:LCALL  DL20MS

JB  P1.0,KEYOUT

WAIT0:JNB  P1.0,WAIT0

              INC  7CH

              MOV  A,7CH

              CLR  ET0

              CLR  TR0

              CJNE  A,#03H,KEYOUT

              MOV  7CH,#00

              SETB  ET0

              SETB  TR0

              SJMP  KEYOUT

KEYSCAN1:LCALL  DL20MS

JB  P1.1,KEYOUT

WAIT1:JNB  P1.1,WAIT1

              MOV  A,7CH

              CJNE  A,#02H,KSCAN11

              INC  79H

MOV  A,79H

CJNE  A,#3CH,KEYOUT

              MOV  79H,#00

SJMP  KEYOUT

KSCAN11:INC  7AH

MOV  A,7AH

CJNE  A,#18H,KEYOUT

              MOV  7AH,#00

SJMP  KEYOUT

KEYSCAN2:LCALL  DL20MS

JB  P1.2,KEYOUT

WAIT2:JNB  P1.2,WAIT2

              MOV  A,7CH

              CJNE  A,#02H,KSCAN21

              DEC  79H

MOV  A,79H

CJNE  A,#0FFH,KEYOUT

              MOV  79H,#3BH

SJMP  KEYOUT

KSCAN21:DEC  7AH

MOV  A,7AH

CJNE  A,#0FFH,KEYOUT

              MOV  7AH,#17H

SJMP  KEYOUT

END             

九、设计过程

1、在PROTEUS中设计硬件

PROTEUS软件使用过程如下:

       1)选择元器件

       2)放置元器件

       3)连线

       4)添加程序

       5)运行仿真

元器件清单如下:

单片机:80C52

按键:BUTTON

电阻:RES

电容:CAP

晶振:CRYSTAL

LED数码管:7SEG-MPX8-CA-BLUE(CA:共阳,CC:共阴)

地:GRAND

电源:POWER

2、在KEIL51中编写程序,编译、连接形成HEX文件。

3、在PROTEUS中把HEX文件加载到单片机芯片上。

4、运行仿真看结果。

十、总结

通过这次的课程设计,我了解了Keil  C51集成环境和PROTEUS仿真软件的使用,用此软件练习电子时钟的设计,不仅能够掌握此软件的使用方法,而且复习了原来的汇编语言,对电子时钟的原理和电子时钟的汇编程序有了更进一步的理解。仿真实现了把抽象的东西具体化,把理论和实际结合起来,更利于对单片机程序的理解掌握。并且,在这次的课程设计中,我知道了,要自己熟练地掌握一个软件,不能光看老师的演示过程,得自己去学习这个软件,明白每一个步骤的确切含义,自己逐步的亲手去进行演示,这样才能变成自己的知识来熟练应用。                                                                    

  

 

第二篇:红外遥控电子钟_单片机课程设计报告

红外遥控电子钟单片机课程设计报告

红外遥控电子钟单片机课程设计报告

红外遥控电子钟单片机课程设计报告

红外遥控电子钟单片机课程设计报告

红外遥控电子钟单片机课程设计报告

红外遥控电子钟单片机课程设计报告

红外遥控电子钟单片机课程设计报告

红外遥控电子钟单片机课程设计报告

相关推荐