搜索
您的当前位置:首页基于单片机的点阵式显示屏设计

基于单片机的点阵式显示屏设计

来源:爱问旅游网
学 号:

课 程 设 计

题 目

教 学 院 专 业 班 级 姓 名 指导教师

单片机数字时钟设计

机电工程学院 机械电子工程

学年第二学期

课程设计任务书

设计名称: 单片机原理及接口技术课程设计 班级: 机械电子 地点: K1-303 一、课程设计目的

1. 巩固和深化有关《电子技术基础》、《自动控制原理》、《算法语言》、《单片机原理与接口技术》等专业理论课程的理论知识。

2. 运用所学知识,进一步提高对单片机系统分析、设计及使用技术资料的能力。 3. 培养学生运用所学知识和技能,独立分析和解决生产中的实际控制对象的能力。 4. 培养学生运用计算机软件进行开发、设计能力。

二、课程设计内容(含技术指标)

课题:基于单片机的点阵式显示屏设计 设计要求:

(1) 以51系列单片机为核心器件,组成一个数字时钟。 (2) 通过按钮可以实现分秒的转换并调节。 (3) 通过按钮可以实现时分的转换并调节。

三、进度安排

本次课程设计共2周时间,具体进度安排如下: 1. 布置任务、准备参考资料 2. 总体方案设计 3. 硬件设计 4. 软件设计 5. 软件调试 6. 硬件仿真

(0.5工作日) (0.5工作日) (1.5工作日) (2.5工作日) (1.0工作日) (1.0工作日) (2.0工作日) (1.0工作日)

7. 撰写设计报告 8. 答辩与总结

四、基本要求

1. 根据应用系统的要求,初步掌握总体设计的方法和思路,从中选择一种最佳的设计方案。

2. 根据应用系统结构规模的要求,掌握在单片机外部扩展系统硬件设计的基本过程(如硬件接口的设计,正确合理选用所需元器件,绘制应用系统于单片机连接的电路图等项工作)。

3. 根据设计任务和要求,首先画出程序总体流程图,然后进行各控制模块程序的设计、编写系统程序。

4. 掌握如何应用单片机仿真器来开发应用系统集仿真调试的过程。如先进行各模块调试,然后进行各程序模块的联调,最后与硬件一起进行联调,反复检测和修改直至开发结束。

机械电子教研室

目 录

第1章 设计内容 .......................................................................................................................... 1 第2章 电子时钟设计思想 .......................................................................................................... 1 第3章 MSC-51单片机系统简介 ................................................................................................. 1 第4章 MCS-51单片机内部定时器\\计数器、中断系统简介 ................................................... 2

4.1 定时器\\计数器............................................................................................................... 2 4.2 中断系统......................................................................................................................... 2 第5章 键盘和LED数码管显示器简介 ...................................................................................... 3

5.1 键盘................................................................................................................................. 3 5.2 LED数码管显示器.......................................................................................................... 3 第6章 基本原理 .......................................................................................................................... 3 第7章 系统硬件设计 .................................................................................................................. 4

7.1 80C51单片机结构.......................................................................................................... 4 7.2单片机引脚图及封装...................................................................................................... 5 7.3硬件组成电路图以及运行结果...................................................................................... 8 第8章 系统软件程序的设计 ...................................................................................................... 9

8.1 主程序............................................................................................................................. 9 8.2 数码管显示模块............................................................................................................. 9 8.3 定时器/计数器T0中断服务程序............................................................................... 10 8.4按键处理模块................................................................................................................ 11 第9章 设计过程 ........................................................................................................................ 11

9.1 在PROTEUS中设计硬件............................................................................................... 11 9.2 元器件清单................................................................................................................... 11 9.3 在MEDWIN中编写程序,编译、连接形成HEX文件................................................. 11 9.4 在PROTEUS中把HEX文件加载到单片机芯片上....................................................... 11 9.5运行仿真调试看结果.................................................................................................... 11

总 结 ...................................................................................................................................... 12 参 考 文 献 ................................................................................................................................ 13 附录1 电路设计总原理图 ......................................................................................................... 14 附录2 程 序 清 单 ................................................................................................................... 15

第一章、设计内容

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

第二章、电子时钟设计思想:

用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,设定初值,形成定时时间为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单片机内部定时器\\计数器、中断系统简介

4.1 定时器\\计数器

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

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

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

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

4.2中断系统:

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数码管显示器简介

5.1 键盘

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

5.2 LED数码管显示器

在单片机应用系统中,经常用到LED数码管作为显示输出设备,LED数码管显示器虽然显示信息简单,但它具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,基本上能够满足单片机应用系统的需要,所以在单片机应用系统中经常用到。LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种。

所谓译码方式是指由显示字符转换得到对应的字段码的方式。对于LED数码管显示器,通常的译码方式有两种:硬件译码方式和软件译码方式。LED数码管在显示时,通常有两种显示方式:静态显示方式和动态显示方式。在使用时可以把它们组合起来。在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。

第六章、基本原理

软时钟是利用单片机内部的定时器\\计数器来实现的,它的处理过程如下:首先设定单片机内部的一个定时器\\计数器工作于定时方式,对机器周期计数形成基准时间,然后用另一个定时器\\计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。然后

通过数码管把它们的内容在相应位置显示出来即可。

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

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

第七章、系统硬件设计

7.1 80C51单片机结构

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

图2-2外形及引脚

1 内部结构:只读存储器即ROM(READ ONLY MEMORY)。

2 外部结构:1、电源:单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。 2、振荡电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。3、复位引脚 4、EA引脚:EA引脚接到正电源端。

3 引脚功能说明: 单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。⒈ 电源: ⑴ VCC — 芯片电源,接+5V; ⑵ VSS ---接地端;

4 时钟:XTAL1、XTAL2---晶体振荡电路反相输入端和输出端。 5 控制线:控制线共有4根,

ALE/PROG:地址锁存允许/片内EPROM编程脉冲。 ① ALE功能:用来锁存P0口送出的低8位地址。

② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

(2) PSEN:外ROM读选通信号。 (3)RST/VPD:复位/备用电源。

① RST(Reset)功能:复位信号输入端。 ② VPD功能:在Vcc掉电情况下,接备用电源。 (4)EA/Vpp:内外ROM选择/片内EPROM编程电源。

① EA功能:内外ROM选择端,管脚接到正电源端。

② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

6 I/O线

89C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线). 7.2单片机引脚图及封装

图2-3 总线型引脚封装

主要特性:

·与MCS-51 兼容

·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24MHz ·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道

·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 管脚说明:

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。P3口也可作为AT89C51的一些特殊功能口,如:P3.0 RXD(串行输入口),P3.1 TXD(串行输出口),P3.2 /INT0(外部中断0),P3.3 /INT1(外部中断1),P3.4 T0(记时器0外部输入),P3.5 T1(记时器1外部输入),P3.6 /WR(外部数据存储器写选通),P3.7 /RD(外部数据存储器读选通),P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址

的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。 7.3硬件组成电路图以及运行结果

C247uFX1CRYSTAL19C3GNDU1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161747uF18XTAL29RSTVCC293031PSENALEEAK0R5R4R35.1k5.1k5.1k12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51K1K2K0键为模式选择键,按第一次暂停,设小时;按第二次暂停,设分,按第三次重新开始走动。K1为加1键,K2为减1健。第八章、系统软件程序的设计

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

8.1.主程序

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

8.2.数码管显示模块

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

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

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

开始 显示单元清零 T0、T1设为16位计数模式 允许T0中断 调用显示子程序 否 按下键否? 是 进入功能程序 图11.2 主程序流程图

开始 现场保护,重置初值 启动下一个50ms 50ms 计数器加1 否 50ms 计数器=20? 是 秒单元加1,50ms计数器清0,秒写入秒个位和秒十位 否 秒单元=60? 是 分单元加1,秒单元清0,分写入分个位和分十位 否 分单元=60? 是 时单元加1,分单元清0,时写入时个位和时十位 否 时单元=24? 时单元清0 是 中断返回

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

流程图

8.4.按键处理模块

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

第九章、设计过程

9.1、在PROTEUS中设计硬件

PROTEUS软件使用过程如下: 1)选择元器件 2)放置元器件 3)连线 4)添加程序 5)运行仿真 9.2、元器件清单如下:

单片机:80C51 按键:BUTTON 电阻:RES 电容:CAP

晶振:CRYSTAL

LED数码管:7SEG-MPX8-CA-BLUE(CA:共阳,CC:共阴) 地:GRAND 电源:POWER

9.3、在MEDWIN中编写程序,编译、连接形成HEX文件。 9.4、在PROTEUS中把HEX文件加载到单片机芯片上。 9.5、运行仿真调试看结果。

调试分析

在调试运行过程中,在所有参数正确的情况下,我的结果仍出现运行缓慢情况。产生误差的主要原因有软件计时、外围石英晶振振荡频率误差。

软件计时

计时 1 秒是采用定时器的中断服务程序。当电子钟运行 1 秒,执行中断程序需要一定时间,这个时间就是所产生的误差,这个误差是不可避免的。同时,单片机工作也会受到环境的影响,比如温度、湿度,以及其它电子设备的干扰。

因此,应该让电子钟工作在适度温度、干燥和电子干扰较少的环境下,还有

一种方法就是采用实时时钟芯片,这样可以使误差降低到最少。

外围石英晶振振荡频率误差

石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。

现今,电子计时器通常以石英晶振为时钟源。时钟源的频率通常为几十 kHz 乃至几十 MHz,而时钟的最小计时单位一般在 0.01s~1s。高频的时钟源脉冲通过分频器后产生基本定时脉冲。电子计时器的计时部分就是对基本定时脉冲进行累加,产生秒、分、时等时间信息乃至日、月、年等日期信息。由于石英晶体的选频特性,只有某一频率点的信号可以通过它,其它频率段的信号均会被它所衰减,而且,振荡信号的频率与振荡电路中的 R、C 元件的数值无关,为了提高秒信号准确性和稳定性,需要对振荡信号频率误差进行调整。

总结

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

在这个课程项目的设计过程中,我们充分体会到了要全面发展,各个学科都要学好,只是的全面性很重要。比如在编写程序是,我们就明显感觉到了汇编语言的不熟练,当初学汇编语言时没有意识到它的重要性,而当我们真正开始做设计时候才发现一个课程的项目设计是需要其他很多项目来给它做基础的。再设计过程中,同时学会运用proteus ISIS仿真软件对电子钟仿真,运用keil软件编程序。

设计的灵魂便在于它的理念,要做出一个好的设计作品来,需要你平时最生活有足够的观察和了解。古话说,学以致用,即使你设计出来的东西原理再高深,但在实际生活中却无处可用,那也是没有任何价值的。所以在刻苦学习的同时,也要关注社会动态,了解人民生活所需,有一个正确的设计理念才能使自己走对每一步棋。

参考文献

[1] 张义和,陈敌北.例说8051.北京:人民邮电出版社,2006 [2] 张鑫主编.单片机原理及应用.北京:机械工业出版社,2005

[3] 胡亚琦主编.单片机原理及应用系统设计.西安:西安电子科技大学出版

社,2010

[5] 徐玮.C51单片机高效入门.北京:机械工业出版社,2010

[6] 周润景,张丽娜,刘映群.PROTEUS入门实用教程.北京:机械工业出版

社,2007

附录1.电路设计总原理图

C247uFX1CRYSTAL19C3GNDU1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161747uF18XTAL29RSTVCC293031PSENALEEAK0R5R4R35.1k5.1k5.1k12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51K1K2K0键为模式选择键,按第一次暂停,设小时;按第二次暂停,设分,按第三次重新开始走动。K1为加1键,K2为减1健。

附录2.汇编语言源程序清单

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

2、使用80C51单片机,12MHZ晶振,P0输出字段码,P2口输出位选码,用共阳

LED数码管,P1.0为调时位选择按键,P1.1为加1键,P1.2为减1键。 3、片内RAM的70H到77H单元为LED数码管的显示缓冲区 4、78H,79H,7AH分别为秒、分、小时计数单元 5、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 ;将70H到7CH单元清零

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

DL1MS:MOV R6,#14H ;延时1MS子程序

DL1:MOV R7,#19H DL2:DJNZ R7,DL2

DJNZ R6,DL1 RET

DL20MS:ACALL SCAN ;延时20MS子程序 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 ;循环扫描,扫描时间间隔为1ms MOV P2,#00H MOV P0,#0FFH RET

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

90H,0BFH

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

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

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 ;1s计时 INC 78H

MOV A,78H

CJNE A,#3CH,OUTT0

MOV 78H,#00 ;计60秒清零 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

60分清零 ;计24小时清零

;按扭1

;按扭2,+ 设置 ;按扭3,-设置

;计

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

因篇幅问题不能全部显示,请点此查看更多更全内容

Top