51单片机数码管时钟电路的设计-AT89C51
数码管数字时钟电路的设计

程序如下: ORG 0000H AJMP MAINT NOP ORG 000BH AJMP INT01 NOP ORG 001BH AJMP INT11 NOP
;转主程序 ;转定时器T0中断程序 ;转定时器T1中断程序
******主程序******
MAINT:
MOV R0,#7FH
;00H~7FH单元清零
开始
内存单元清零 T0, T1为 16位 计 数 器
允 许 T0中 断
调用显示子程序
N
P 2 .7 = 0 ?
Y 调时程序
图10-7 主程序流程图
2) 显示子程序
数码管显示的数据存放在50H~55H内存单元中, 其中50H、51H单元存放秒数据,52H、53H单元存放 分数据,54H、55H单元存放时数据。时间数据采用 BCD码表示,对应的显示用段码表存放在ROM中。
AJMP
XYZ4
;转到XYZ4循环
KMTES: SETB ET0 ;省电状态,开T0中断
SETB TR0 ;启动T0(开时钟)
KMA: JB P2.7,$ ;无按键按下,等待
LCALL XSZCX
;通过调用显示时间程序延时消抖动
JB P2.7,KMA ;是干扰返回等待
KMA1:
JNB P2.7,$
ET1
;允许T1中断
SETB
TR1
;启动T1
XYZ2:JNB P2.7,XYZ1
;P2.7端为0,等待
CLR 01H
;置调分标志位为1
XYZ4:JB P2.7,XYZ3
;等待键按下
LCALL
YS05S
;延时0.5 s
JNB
P2.7,XYZHH
时钟电路的设计

一、概述本次设计以AT89C51单片机芯片为核心,辅以必要的外围电路,设计了一个简易的电子时钟并且利用单片机自身的定时计数器,使LED 按照一定的时间间隔闪烁,闪烁时间间隔不小于1秒。
在硬件方面,除了CPU 外,使用七段数码管来进行动态扫描。
通过数码管能够比较准确显示时,分,LED 一闪一灭显示秒,设计方面采用C 语言编程,整个电子时钟能完成时间的显示,手动复位等功能。
本系统是基于AT89C51单片机设计的一个具有显示的数字实时时钟的发光二极管,该系统同事具有硬件设计简单,工作稳定性高,价格低廉等优点。
数字单片机的技术进步反应在内部结构,功率消耗,外部电压等级以及制造工艺上。
二、方案论证利用单片机自身的定时计数器,使LED 发光二极管按照一定的时间间隔闪烁,闪烁时间间隔不小于1秒。
方案一:采用AT89C51单片机来做LED 时间闪烁电路,其方案原理框图如下图1所示。
图1 打片机控制设计时钟电路的原理框图方案二:采用电子电路装置安装,其原理框图如下图2所示。
图2 电子电路控制设计时钟电路原理图时钟电路A T89C51 单片机 复位电路按键控制电路LED 显示电路直流5V 电源电路振荡电路控制电路计数器译码器LED 显示电路本设计采用的是方案一,AT89C51单片机构成的数码管显示时钟,硬件设计简单,工作稳定性高,性价比高比较合适。
三、电路设计1.程序流程图程序总体结构示意流程图如下图3所示。
程序从开始运行,设计要求为1秒的闪烁间隔,内容包括了开关中断子程序,以及总体流程。
YNNY图3 程序总体结构示意图2.复位电路AT89C51的复位方式可以是自动复位,也可以是手动复位,复位电路主要是确定开始开关中断 Countor1++(自加1)Counror1==20 D1=~D1(按位取反操作)TH0=(65536-50000)/256(重新赋初值)P1~0口状态改变单片机的起始状态,完成单片机的启动过程,本实验主要采用手动按键复位方式,该复位方式同样具有自动复位功能.当MCS-51单片机的复位引脚RST出现两个周期以上的高电平时,单片机就执行复位操作。
基于AT89C51单片机的数字钟设计

随着 电子 技术 的 飞速 发展 ,以单 片机 为核 心设
口的 四位作为显示器各位 的片选 信号 ,另 四位作 为键 盘扩展 口使用 ,采用一个频率为 1 1 . 0 5 9 2 MI - I z的晶振 构成时钟 电路 ,系统原理如 图 1 所示 。
计 的数 字钟 越 来 越 受 到人 们 喜 爱 。 因其 具 有 功 能 强 、体积 小 、功 耗 低 、价 格 便 宜 、工 作 可 靠 等 特
准 ,暂停 等功 能 ,计 时准确 ,功 能完 善 。
1 系统 框 图 简 介
系统设计 中用 到 A T 8 9 C 5 1 单 片机 的部分 功能 :
3 系统 主 程 序 流 程 图
Ab s t r a c t :T h i s p a p e r i n t r o d u c e s t h e AT 8 9 C 5 1 mi c r o c o n t r o l l e r a s t h e c o r e c o mp o n e n t s a n d o t h e r p e r i p h e r a l c i r c u i t a n d t h e c o r r e s p o n d —
杨 建成
( 台州学 院 物理与 电子工程学院 ,浙江 台州 3 1 8 0 0 0 )
摘要 :文章介绍 了采 用 A T 8 9 C 5 1单 片机为核心部件 以及 其他 外围电路 、相应接 口进行数字钟的设计 与实现。结 果显示用单 片机 来设计数 字钟 ,软件 实现各种功能 比较方便 ,结构 简单 ,精度 高、性 能稳 定。 关 键 词 :单片机 ;数 码管 ;按 键开关 ;设计
YAN G J i a n c h e n g
基于51单片机的数字时钟设计_毕业设计

基于51单片机的数字时钟设计目录摘要 (1)Abstract (2)第一章绪论 (3)1.1 数字时钟设计的背景 (3)第二章AT89C51单片机简介 (3)2.1 单片机介绍 (3)2.2 单片机的应用特点 (4)2.3 单片机的应用领域 (4)2.4 单片机的中断与定时系统 (4)2.4.1 MCS-51单片机中断系统 (4)2.4.2 MCS-51 单片机的定时器/计数器 (6)2.4.3 MCS-51定时器/计数器的四种工作方式 (6)2.5 AT89C51引脚功能介绍 (7)第三章设计方案 (8)3.1 主程序 (8)3.2 数码管显示模块 (9)3.3 定时器计数器T0中断服务程序 (9)3.4按键处理模块 (10)第四章硬件电路设计 (10)4.1 复位电路 (10)4.2 时钟电路 (11)4.3 按键电路 (12)4.4 数码管显示电路 (13)4.5 电源电路设计 (13)第五章软件设计与程序代码 (14)5.1 软件选择与介绍 (14)5.1.1 软件介绍 (14)5.1.2 Proteus7.8的特点 (15)5.2 软件仿真电路全图 (15)5.3 源程序代码 (16)第六章结论 (20)参考文献 (21)致谢 (22)摘要近几年,单片机在各个领域得到广泛的应用。
从工业到人们的日常生活,大部分的科技产品都是通过单片机来控制。
在它问世之前,自动控制设备得不到广泛的应用,这是因为控制设备的体积庞大,耗电量大,价格昂贵。
在第一台微处理器成功研制不久,第一个单片机就问世了。
因为其小巧的体积,低功耗,以及高效的性能,单片机受到了大家的欢迎。
本设计利用Atmel公司的AT89C52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用C语言进行软件编程,并用Proteus软件进行演示、验证。
主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机80C51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机的数字电子时钟。
基于AT89C51单片机定时闹钟设计

塔里木大学信息工程学院《单片机原理与外围电路》课程论文题目:单片机定时闹钟设计姓名:海热古丽·依马木学号:**********班级:计算机15-1班摘要:本设计是单片机定时闹钟系统,不仅能实现系统要求的功能,而且还有附加功能,即还能设定和修改当前所显示的时间。
本次设计的定时闹钟在硬件方面就采用了AT89C51芯片,用6位LED数码管来进行显示。
LED用P0口进行驱动,采用的是动态扫描显示,能够比较准确显示时时—分分—秒秒。
通过S1、S2、S3、和S4四个功能按键可以实现对时间的修改和定时,定时时间到喇叭可以发出报警声。
在软件方面采用汇编语言编程。
整个定时闹钟系统能完成时间的显示,调时和定时闹钟、复位等功能,并经过系统仿真后得到了正确的结果。
关键词:单片机、AT89C51、定时闹钟、仿真Abstract:T his design is a single-chip timing alarm system, can not only realize the function of system requirements, and there are additional functions, which can set up and modify the display time. Timing alarm clock this design adopts the AT89C51 chip on the hardware side, with 6 LED digital tube to display. LED P0 export driven, by using dynamic scanning display, can accurately display always -sub -seconds seconds. Through the S1, S2, S3, and S4 four function keys can be achieved on the time changes and timing, timing to the horn can send out alarm sound. Using assembly language programming in the software. The timing clock system has functions of time display, timing and timing alarm clock, reset and other functions, and the system simulation to obtain correct results.Keywords: single chip microcomputer, AT89C51, alarm clock, simulatio目录1绪论 (2)1.1课题背景及研究意义 (2)1.2国内外现状 (2)1.3课题的设计目的 (2)1.4课题的主要任务 (2)1.5课题的主要功能 (2)2系统概述 (3)2.1方案论证 (3)2.2系统设计原理 (3)3系统硬件设计 (4)3.1单片机AT89C51简介 (4)3.2数码管显示电路 (6)3.3时钟电路 (7)3.4喇叭:SPEAKER (8)4系统软件设计 (8)4.1系统软件设计说明 (8)4.2 程序调试 (8)4.3 程序流程图 (9)4.3仿真步骤 (10)4.4仿真结果 (10)结论 (12)参考文献 (13)附录A 系统整体电路 (14)附录B 全部程序清单 (14)附录C:PCB图和3D图 (23)1绪论1.1课题背景及研究意义进入信息时代,计算机的影子无处不在,带有像单片机一类嵌入式处理器的小型智能化电子产品,已经成为家用电器的主流,市场需求前景广阔,因此,掌握小型单片机应用系统设计方法,已成为当今电子应用工程师所必备的技能,定时闹钟具备小型单片机应用系统的一切要素,其结构简单、成本低廉、走时精确、设置方便,所以智能化方面有广泛的用途。
(完整word版)51单片机数字钟

目录1 设计任务与要求 (I)2 设计方案 (1)3 硬件设计 (2)3.1 AT89C51单片机简介 2 3.2单片机型号的选择 (6)3.3数码管显示工作原理 (6)4 软件设计 (7)4.1主程序模块介绍 (7)4.2主程序 (7)5 仿真调试 ......................................... 错误!未定义书签。
5.1K EIL仿真结果.................................. 错误!未定义书签。
5.2仿真结果分析 (13)6 小结 ............................................. 错误!未定义书签。
1 设计任务与要求1. 设计一个基于单片机的电子时钟,并且能够实现时分秒的现实和调节。
2. 设计出硬件电路。
3. 设计出软件编程方法,并写出源代码。
4. 用PROTEUS进行仿真。
5.用汇方式实现目的。
7.系统的各各功能模块要编语言编实现程序设计。
6.利用查表,中断等清楚,有序。
8.程序运行时有友好的用户界面。
2 设计方案本设计主要设计了一个基于AT89C51单片机的电子时钟。
并在数码管上显示相应的时间。
并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。
应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。
该方法仿真效果真实、准确,节省了硬件资源。
该设计的硬件部分主要包括89C51多功能接口芯片用于开发电子时钟芯片、LED七段数码显示器用于显示时间、8031集成定时器用于定时、0.125W、8欧姆的扬声器用于定时发声。
软件部分包括主程序、定时计数中断程序、时间调整程序、延时程序四大模块。
通过中断程序进行定时器计数,时间调整程序是当键按下时间小于1秒,关闭显示(省电)进入调节时间状态,延时程序用于时间的延迟。
先设计个秒钟程序,在秒钟程序中先不设计按钮,直接通电运行,使用40H 存放计数值,从00—59,一直循环,把40H中的数值拆分成个位和十位,分别存在30H与31H中,要求动态扫描时,使用21H当标志位,用指令JB控制显示个位与十位,程序中使用中间寄存器R0与R1用于存放拆分后的字型,再传到30H与31H中去,再设计时钟程序。
51单片机电子时钟课程设计

一、设计要求1、准确计时,以数字形式显示时、分、秒地时间.2、小时以24小时计时形式,分秒计时为60进位.3、校正时间功能,即能随意设定走时时间.4、闹钟功能,一旦走时到该时间,能以声或光地形式告警提示.5、设计5V直流电源,系统时钟电路、复位电路.6、能指示秒节奏,即秒提示.7、可采用交直流供电电源,且能自动切换.二、设计方案和论证本次设计时钟电路,使用了ATC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂地线路,使得电路简明易懂,使用键盘键上地按键来调整时钟地时、分、秒,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求. 2.1、总设计原理框图如下图所示:2.2、设计方案地选择1.计时方案方案1:采用实时时钟芯片现在市场上有很多实时时钟集成电路,如DS1287、DS12887、DS1302等.这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据地更新每秒自动进行一次,不需要程序干预.因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能.方案2:使用单片机内部地可编程定时器.利用单片机内部地定时计数器进行中端定时,配合软件延时实现时、分、秒地计时.该方案节省硬件成本,但程序设计较为复杂.2.显示方案对于实时时钟而言,显示显然是另一个重要地环节.通常LED显示有两种方式:动态显示和静态显示.静态显示地优点是程序简单、显示亮度有保证、单片机CPU地开销小,节约CPU地工作时间.但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂.需要几个LED就必须占有几个并行口,比较适用于LED数量较少地场合.当然当LED数量较多地时候,可以使用单片机地串行口通过移位寄存器地方式加以解决,但程序编写比较麻烦.LED动态显示硬件连接简单,但动态扫描地显示方式需要占有CPU较多地时间,在单片机没有太多实时测控任务地情况下可以采用.本系统需要采用6位LED数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式.2.3硬件部分1、STC89C51单片机介绍STC89C51单片机是由深圳宏晶公司代理销售地一款MCU,是由美国设计生产地一种低电压、高性能CMOS 8位单片机,片内含8kbytes地可反复写地FlashROM和128bytes地RAM,2个16位定时计数器[5].STC89C51单片机内部主要包括累加器ACC(有时也简称为A)、程序状态字PSW、地址指示器DPTR、只读存储器ROM、随机存取存储器RAM、寄存器、并行I/O接口P0~P3、定时器/计数器、串行I/O接口以及定时控制逻辑电路等.这些部件通过内部总线联接起来,构成一个完整地微型计算机.其管脚图如图所示.STC89C51单片机管脚结构图VCC:电源.GND:接地.P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流.当P1口地管脚第一次写1时,被定义为高阻输入.P0能够用于外部程序数据存储器,它可以被定义为数据/地址地第八位.在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高.P1口:P1口是一个内部提供上拉电阻地8位双向I/O口,P1口缓冲器能接收输出4TTL门电流.P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉地缘故.在FLASH编程和校验时,P1口作为第八位地址接收.P2口:P2口为一个内部上拉电阻地8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入.并因此作为输入时,P2口地管脚被外部拉低,将输出电流.这是由于内部上拉地缘故.P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址地高八位.在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器地内容.P2口在FLASH编程和校验时接收高八位地址信号和控制信号.P3口:P3口管脚是8个带内部上拉电阻地双向I/O口,可接收输出4个TTL门电流.当P3口写入“1”后,它们被内部上拉为高电平,并用作输入.作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉地缘故.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).2、上电按钮复位电路本设计采用上电按钮复位电路:首先经过上电复位,当按下按键时,RST直接与VCC相连,为高电平形成复位,同时电解电容被电路放电;按键松开时,VCC对电容充电,充电电流在电阻上,RST依然为高电平,仍然是复位,充电完成后,电容相当于开路,RST为低电平,单片机芯片正常工作.其中电阻R2决定了电容充电地时间,R2越大则充电时间长,复位信号从VCC回落到0V地时间也长.3、晶振电路本设计晶振电路采用12M地晶振.晶振地作用是给单片机正常工作提供稳定地时钟信号.单片机地晶振并不是只能用12M,只要不超过20M就行,在准许地范围内,晶振越大,单片机运行越快,还有用12M地就是好算时间,因为一个机器周期为1/12时钟周期,所以这样用12M地话,一个时钟周期为12us,那么定时器计一次数就是1us了,电容范围在20-40pF之间,这里连接地是30pF地电容.机器周期=10*晶振周期=12*系统时钟周期4.下载端口设计用到地STC89C52单片机芯片地ISP下载线是通过单片机地TXD,RXD引脚把程序烧进去地.管脚TXD和RXD用于异步串行通信.其实STC89C52单片机地ISP下载线就是一个max232芯片连接STC和计算机地串行通信口.计算机把程序从九针串口送到max232芯片,电平转换后送进单片机地串行口,也就是TXD和RXD.然后单片机地串行模块把数据送到程序区.5、显示电路就时钟而言,通常可采用液晶显示或数码管显示.由于一般地段式液晶屏,需要专门地驱动电路,而且液晶显示作为一种被动显示,可视性相对较差;对于具有驱动电路和微处理器接口地液晶显示模块(字符或点阵),一般多采用并行接口,对微处理器地接口要求较高,占用资源多.另外,89C2051本身无专门地液晶驱动接口,因此,本时钟采用数码管显示方式.数码管作为一种主动显示器件,具有亮度高、价格便宜等优点,而且市场上也有专门地时钟显示组合数码管.对于实时时钟而言,显示显然是另一个重要地环节.通常LED显示有两种方式:动态显示和静态显示.静态显示地优点是程序简单、显示亮度有保证、单片机CPU地开销小,节约CPU地工作时间.但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂.需要几个LED就必须占有几个并行口,比较适用于LED数量较少地场合.当然当LED数量较多地时候,可以使用单片机地串行口通过移位寄存器地方式加以解决,但程序编写比较麻烦.LED动态显示硬件连接简单,但动态扫描地显示方式需要占有CPU较多地时间,在单片机没有太多实时测控任务地情况下可以采用.本系统需要采用6位LED数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式.6、时钟显示校正电路本设计利用按键开关来校正时钟显示地数字.当按钮按下时,将在相应地端口输入一个低电平,通过相应地程序来改变时钟显示.其中S1按键开关用来选择要修改地数字;S2按键用来增加所选数字地数值;S3按键用来减少所选数字地数值.7、蜂鸣器电路电路接法:三极管选定PNP型,基极B连接5V电压,发射极E连接一个1K左右地电阻后接I/O口,集电极C连接蜂鸣器后接地.单片机在复位后地个I/O口是高电平,此时三极管是截止地,编写程序使选定地I/O为低电平,此时三极管导通,导通后蜂鸣器与电源正极连通,构成一个工作回路,从而发出滴滴地响声.其中电阻R1在电路里起分压限流地作用,PNP三极管起到模拟开关地作用.8、外接电源电路外接电源电路用于连接外部5V电源与电子时钟电路,通过自锁开关控制电路地导通与断开,当开关闭合时,电路导通,外部电源给电路正常供电,电子时钟正常工作.当开关断开时,电路停止工作.9、总电路原理图(五)软件部分根据上述电子时钟地工作流程,软件设计可分为以下几个功能模块:(1)主程序模块.主程序主要用于系统初始化:设置计时缓冲区地位置及初值,设置8155地工作方式、定时器地工作方式和计数初值等参数.主程序流程如下图所示.开始定义堆栈区8155、T0、数据缓冲区、标志位初始化调用键盘扫描程序否是C/R键?地址指针指向计时缓冲区主程序流程图(2)计时模块.即定时器0中断子程序,完成刷新计时缓冲区地功能.系统使用6MHz地晶振,假设定时器0工作在方式1,则定时器地最大定时时间为65.536ms,这个值远远小于1s.因此本系统采用定时器与软件循环相结合地定时方法.设定时器0工作在方式1,每隔50ms溢出中断一次,则循环中断20次延时时间是1s,上述过程重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:00:00.因定时器0工作在方式1,则50ms定时对应地定时器初值为:65536-50ms/2us=40536=9E58H,即TH0=9EH,TH0=58H.但应当指出:CPU从响应T0中断到完成定时器初值重装这段时间,定时器T0并不停止工作,而是继续计数.因此,为了确保T0能准确定时50ms,重装地定时器初值必须加以修正,修正地定时器初值必须考虑到从原定时器初值中扣除计数器多计地脉冲个数.由于定时器计数脉冲地周期恰好和机器周期吻合,因此修正量等于CPU从响应中断到重装完TL0为止所用地机器周期数.CPU响应中断通常要3~8个机器周期.经过测试,定时器0重装地计数初值设为9E5FH~9E67H,可以满足精度要求.另外,MCS-51单片机只有二进制加法指令,而时间是按十进制递增,因此用加法指令后必须进行二-十进制转换.计时模块流程图如下图所示.计时模块流程图(3)时间设置模块.该模块由键盘输入相应地数据来设置当前时间.程序通过调用一个键盘设置子程序通过键盘扫描将键入地6位时间值送入显示缓冲区.设置时间后,时钟要从这个时间开始计时,而时分秒单元各占一个字节,键盘占6个字节.因此程序中要调用一个合字子程序将显示缓冲区中地6位BCD码合并为3位压缩BCD码,并送入计时缓冲区,作为当前计时起始时间.该程序同时要检测输入时间值地合法性,若键盘输入地小时值大于23,分、秒值大于59,则不合法,将取消本次设置,清零重新开始计时.时间设置和键盘设置子程序地流程图如下图所示.时间设置流程图键盘设置子程序流程图(4)显示模块.该模块完成时分秒6位LED地动态显示.因为显示为6位,二计时是3个字节单元,为此,必须将3字节计时缓冲区中地时分秒压缩BCD码拆分为6字节BCD码,并送入显示缓冲区中.当按下调整时间键后,在6位设置完成之前,这6个LED应该显示键人地数据,不显示当前地时间.为此,我们设置了一个计时显示允许标志位F0,在时间设置期间F0=1,不调用刷新显示缓冲区地子程序.显示程序流程图如下图所示.保护现场是显示程序流程图键盘扫描程序流程图程序:ORG 0000H AJMP MAIN ORG 000BH AJMP TIME ORG 0300H MAIN:mov 20h,#00h MOV 21H,#00H MOV 22H,#00H MOV 23H,#00H MOV IP,#02H 。
基于51单片机电子时钟课程设计

《单片机原理及接口》课程设计报告题目:时钟系统设计姓名:专业:电信班级: 1 学号: *****指导教师:信息工程学院二0一六年一月时钟系统设计摘要:本系统是基于AT89C51单片机的具有准点报时、调时、以及可设闹钟功能的简单数字时钟系统的设计。
以AT89C51为核心控制器,系统分为时钟模块、显示模块、按键模块及闹钟模块。
系统以单片机内部定时器作为时钟模块的主要控制模块,通过频率计数实现计时功能,采用了8位数码管来显示时间,采用独立按键做为时间调时以及闹钟设置按键,采用蜂鸣器作为报时闹钟系统。
通过Keil软件C语言程序的编写、编译、调试以及硬件单片机的连接,实现了时间显示(24小时制)、闹钟设置、时间调试以及准点报时,可复位的功能,并运行了该电路的程序,得出了符合实验设计要求的结果。
关键字:数字时钟;AT89C51;数码管;C语言;闹钟;调时1 系统设计内容1.1 前言随着近年来科技的进步,单片机在近十年也取得了飞速的发展。
目前,单片机已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
现在虽然单片机的品种繁多,各具特色,但仍以MCS-51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的WinBond系列单片机。
以8031为核心的单片机占据了半壁江山,在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。
基于51单片机的数字钟设计与制作

一.基于52单片机制作的数字钟1.设计任务⑴时间显示: 上电后,系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间.⑵时间调整:按下k1,k2,k3键可以顺序设置秒、分、时,并在相应数码管上显示设置值,直至6位设置完毕。
2.系统基本方案选择和论证本时钟的设计具体有两种方法。
一是通过单纯的数字电路来实现;二是使用单片机来控制实现。
本次设计选取了较为简单的单片机控制;而选择这一方法后还要进行各个芯片的选择。
以下是我在这次设计中所用的方案。
2.1 芯片的选择方案一:采用AT89C51芯片,其为高性能CMOS 8位单片机,该芯片内含有4k bytes的可反复擦写的只读程序存储器(PEROM)、128 bytes的随机存取数据存储器(RAM)、 32位可编程I/O口线、2个16位定时/计数器、6个中断源、可编程串行UART通道及低功耗空闲和掉电模式,但是由于AT89C51芯片可擦写的空间不够大,且中断源提供的较小,为防止运行过程中出现不必要的问题,我们不选用AT89C51。
方案二:采用AT89C52芯片,它除了具备AT89C51的所有功能与部件外,其最大的优势就是AT89C52提供了8K字节可擦写Flash闪速存储器空间、8个中断源、及256*8字节内部存储器(RAM),解决了我们对可反复擦写的Flash闪速存储器空间大小与中断源的不够问题的担心。
2.2显示模块选择方案和论证方案一:采用LCD,电路比较简单,且在软件设计上也相对简单,具有低功耗功能。
价格贵。
方案二:采用LED数码管显示,显示较为清楚。
价格便宜。
所以本方案采用LED数码管显示。
2.3 时钟信号的选择方案和论证直接采用单片机定时计数器提供的秒信号,使用程序实现年、月、日、周、时、分、秒计数。
采用此种方案可减少芯片的使用,节约成本,实现的时间误差较小。
2.4 电路设计最终方案决定综上各方案所述,对此次数字时钟的方案选定为: 采用AT89C52作为主控制系统; 并由其定时计数器提供时钟; LED作为显示电路来实现功能。
基于89C51单片机电子数字时钟的设计本科毕业论文

本科毕业论文基于89C51单片机电子数字时钟的设计目录第一章第一章 电子时钟的总体设计电子时钟的总体设计 ....................................................................................................... ...................................................................................................... 44 1.1 设计目的设计目的.......................................................................................................................... 4 1.1.1 课程设计课程设计 ............................................................................................................... 4 1.1.2 AT89C51芯片的串口功能芯片的串口功能.................................................................................... 4 1.1.3用keil 软件进行编程与调试 .................................................................................. 4 1.2 设计任务设计任务 .......................................................................................................................... 4 1.3 设计思路设计思路.......................................................................................................................... 4 第二章第二章 硬件系统的设计硬件系统的设计............................................................................................................... .............................................................................................................. 66 2.1 电路原理图设计电路原理图设计 .............................................................................................................. 6 2.1.1 电子钟的硬件电路框图电子钟的硬件电路框图...................................................................................... 6 2.2 AT89C51引脚及其功能 (6)2.2.1 AT89C51的原理及说明的原理及说明 ........................................................................................ 6 2.2.2 引脚功能引脚功能 ............................................................................................................... 7 2.3 驱动部件驱动部件 .......................................................................................................................... 8 2.4 显示部分显示部分.......................................................................................................................... 9 第三章第三章 软件系统的设计软件系统的设计............................................................................................................. ............................................................................................................ 110 3.1 电子钟的主程序电子钟的主程序............................................................................................................ 11 3.2 电子钟的显示子序电子钟的显示子序 ........................................................................................................ 12 3.3 定时器中断服务程序定时器中断服务程序 .................................................................................................... 13 3.4 电子时钟设计程序清单电子时钟设计程序清单 ................................................................................................ 15 3.5 程序进行编译仿真程序进行编译仿真........................................................................................................ 18 3.5.1 89C51程序 ......................................................................................................... 18 3.5.2 用PROTEUS ISIS 进行电子万年历的仿真测试 . (20)第四章第四章对89C51设计的电子时钟的总结................................................................................. 22 参考文献 ........................................................................................................................................ . (2)23摘要本次实训是基于AT89C51单片机电子钟的设计,对时、分、秒的显示的控制,时、分、秒用六位数码管显示LED 数码管时钟电路采用24小时计时方式。
基于AT89C51单片机的电子时钟设计_毕业设计

基于AT89C51单片机的电子时钟设计摘要:本文介绍了AT89C51单片机控制162液晶显示屏的工作原理以及设计方法,利用ds1302芯片和162液晶屏以51单片机为主控芯片设计一个时钟电路,分为硬件设计与软件设计两个部分。
硬件设计主要是单片机、液晶和ds1302的接口设计;软件设计的主要部分是:单片机的端口初始化以及ds1302初始化,液晶显示屏的初始化,单片机驱动液晶屏的显示。
关键词:AT89C51单片机;162液晶显示屏;ds1302;LCD1 引言液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧等许多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。
本文中详细介绍了基于AT89C51单片机控制下的162液晶屏显示设计,此设计基于da1302的时钟电路方便实用,电路设计简单。
2 硬件介绍2.1、AT89C51简介AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
基于51单片机的数字钟设计报告

数字钟项目硬件总体设计说明书编制单位:侏罗纪工作室作者发布日期:2011-1-22审核人:批准人:目录1.引言 (1)1.1.编写目的: (1)1.2.背景 (1)1.3.定义 (2)1.4.参考资料 (2)2.总体设计 (3)2.1开发与运行环境 (3)2.2硬件功能描述 (3)2.3硬件结构 (3)3.硬件模块设计 (4)3.1.描述 (4)3.1.1.AT89C51单片机简介 (4)3.1.2. 键盘电路的设计 (5)3.1.3. 段码驱动电路 (5)3.1.4. 显示器的选择 (7)3.1.5. 蜂鸣器驱动电路 (8)3.2.功能 (8)4.嵌入式软件设计 (9)4.1.流程逻辑 (9)4.2.算法 (10)4.2.1. 中断定时器的设置 (26)4.2.2. 闹钟子函数 (27)4.2.1. 计时函数 (28)4.2.2. 键盘扫描函数 (29)4.2.3. 时间和闹钟的设置 (30)5.经验总结 (31)6.附录 (37)1.引言1.1.编写目的:20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间等造成的。
而钟表的数字化给人们生产生活带来了极大的方便。
数字钟是通过数字电路实现时,分,秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品。
由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烤箱、通断动力设备、甚至各种定时电气的自动启用等。
51单片机数码管时钟电路的设计-AT89C51

广东石油化工学院《51单片机原理与实践》课程设计报告学院计算机与电子信息学院专业班级学号姓名指导教师课程成绩完成日期 2010年12月27日数码管时钟电路的设计一、设计目的:通过这次课程设计掌握单片机系统的基本设计步骤及设计思路,掌握汇编语言的用法及各种指令的含义,比较熟练的运用指令进行单片机系统的设计的,熟悉用KEIL软件进行汇编语言的汇编,以及把代码写入实验板中,观测代码结合实际的运行结果后进行调整,体会到编程的分析问题、确定算法、画程序流程图、编写程序、程序功能模块化的优点的各各步骤。
二、设计要求:LED数码管时钟电路采用24h计时方式,时、分、秒用六位数码管显示。
该电路采用AT89C2051单片机,使用3V电池供电,只使用一个按键开关即可进入调时、省电(不显示LED数码管)和正常显示三种状态。
三、设计实验内容:1. 硬件的设计其采用AT89C51单片机应用设计,LED显示采用动态扫描方式实现,P0口输出段码数据,P2口输出位码数据,P1.1、P1.2接按钮开关。
为了提供LED数码管的驱动电流,采用6MHz晶振。
2. 系统总体分析系统主要包含四大模块:显示模块、时间计时模块、模式切换模块和模式设置模块。
●显示模块:主要由主循环负责。
内存中开辟了一段8字节的内存空间,用作数据显示的字符缓冲区。
主循环不断将缓冲区中的字符呈现至数码管。
●时间计时模块:电子钟的核心模块,记录了时间的时、分、秒信息。
●模式切换模块(MODE):切换电子钟的设置模式,包括时设置、分设置、秒设置、闹铃开关设置、闹铃时设置和闹铃分设置。
相关数据被设置时将闪烁显示。
●模式设置模块(CONFIG):通过判断设置模式(MODE),执行相应的设置。
如时、分、秒的增1以及闹铃开关的变换。
另外,主循环还负责扫描键盘,检测相应键是否被按下,若MODE键被按下则在特定单元中登记该功能,并启动定时器1,然后返回继续执行显示功能。
在定时器1中断时,被登记的功能正式执行。
基于AT89C51单片机的数字电子时钟设计

/安徽工程大学机电学院单片机课程设计题目:数字电子时钟设计指导老师:***制作人员:范超学号:************班级:自动化2132日期:7月13日-7月24日总评成绩:课程任务设计书设计题目:数字电子时钟的设计设计任务:1.设计一款时,分,秒可调数字电子时钟可整点报时;2.设计三个按键K1,K2和K3,用于调节时钟的时间;3.用8个、七段LED数码管作为显示设备,开机显示00-00-00;本设计采用AT89C51单片机为核心器件。
具有电子钟显示,时间调整,整点报时等功能。
此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。
根据60秒为一分、60分为1小时的计数周期,构成秒、分、时的计数,实现计时的功能。
而且能显示清晰、直观的数字符号。
针对数字钟会产生误差的现象,就设计有校准时间的功能。
AT89C51单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。
此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为24时00分00秒,另外应有校时功能。
电路由时钟脉冲发生器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。
用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。
根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个24进制(时)的计数器。
显示器件选用LED八段数码管。
在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。
针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。
关键字:Proteus,Keil uVision,AT89C51,电子钟,整点报时摘要 (3)第1章概述 (5)1.1 设计背景 (5)1.2系统方案论证与设计 (5)第2章系统硬件设计 (7)2.1 系统总电路的设计 (7)2.1.1系统的总框图 ................................................................................................2.1.2芯片的选择 (7)2.2最小系统设计 (9)2.2.1时钟电路的选择与设计 (10)2.2.2复位电路的选择与设计 .............................................. 错误!未定义书签。
51单片机数码管时钟电路的设计

另外,主循环还负责扫描键盘,检测相应键是否被按下,若MODE键被按下则在特定单元中登记该功能,并启动定时器1,然后返回继续执行显示功能。在定时器1中断时,被登记的功能正式执行。期间用时约10ms,用以消除机械抖动。
MOV A, cmode
INC A
CJNE A, #07H, enmode
MOV A, #00H
enmode:
MOV cmode, A
ANL A, #04H
JZ notalapage
MOV npage, #02H
ACALL preala;时钟调整页准备
notalapage:
MOV A, cmode
MOVC A, @A + DPTR
MOV m, #00H
MOV A, h ;h
INC A
DA A
MOV h, A
CJNE A, #24H, incn
MOV h, #00H
incn:
SETB bPalse
JNB bAlaOn, alarmoff
ACALL checkala ;check alarm when alarm is ON
alarmoff:
CJNE A, #60H, notset
MOV s, #00H
SJMP notset
setae:
CPL bAlaOn ;闹钟开关
SJMP notseta
setah:
MOV A, ah ;闹钟时设置
INC A
DA A
MOV ah, A
CJNE A, #24H, notseta
【毕业设计】基于AT89C51单片机的电子时钟

昆明工业职业技术学院系统软件设计内容提要单片计算机即单片微型计算机。
由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
本设计主要设计了一个基于AT89C51单片机的电子时钟。
应用定时器实现秒定时,在此基础上实现时钟的计时功能,并通过数码管输出时分秒信息,并设计按键调时功能。
关键字:单片机;电子时钟;键盘控制目录1绪论单片机在多功能数字钟中的应用已是非常普遍的,人们对电子时钟的功能及工作顺序都非常熟悉。
但是却很少知道它的内部结构以及工作原理。
由单片机作为电子时钟的核心控制器,可以通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。
通过键盘可以进行校时、定时等功能。
输出设备显示器可以用液晶显示技术或数码管来显示技术。
本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机AT89S51为核心元件同时采用LED数码管显示器动态显示“时”,“分”,“秒”的现代计时装置。
与传统机械表相比,它具有走时精确,显示直观等特点。
另外具有校时功能,秒表功能,和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。
1.1所做题目的意义:数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。
在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。
AT89C51单片机电子时钟设计

AT89C51单片机电子时钟设计目录1 电子时钟 (4)1.1 电子时钟简介 (4)1.2 电子时钟的基本特点 (4)1.3 电子时钟的原理 (4)2 单片机识的相关知识 (4)2.1单片机简介 (4)2.2 单片机的特点 (5)2.3 AT89C51单片机介绍 (5)3 设计方案的选择 (7)3.1计时方案 (7)3.2 显示方案 (7)3.3 数码管显示工作原理 (8)3.4 键盘电路设计 (9)3.5 主控模块AT89C51 (9)4 系统软件设计 (9)附录 (12)摘要:单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次设计通过对它的学习、应用,以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。
关键词:单片机;电子时钟;AT89C511 电子时钟1.1 电子时钟简介本设计采用AT89C51单片机,以汇编语言为程序设计的基础,设计一个用六位数码管显示时、分、秒的时钟。
现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零,从而达到计时的功能,是人民日常生活不可缺少的工具。
1.2 电子时钟的基本特点现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
单片机at89c51电子时钟论文

单片机电子时钟摘要:单片机即单片微型计算机。
(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。
他体积小,成本低,功能强,广泛应用于工业自动化上和智能产品。
时钟,自从它被发明的那天起,就成为了人类的好朋友,但随着时间的推移,科学技术的不断发展,时钟的应用越来越广范,人们对时间计量的精度要求也越来越高。
怎样让时钟更好的为人民服务,怎样让我们的老朋友再次焕发青春呢?这就要求我们不断设计出新型的时钟,来不断满足人们的日常生活需要。
然而市场上的时钟便宜的比较笨重,简单实用的又比较昂贵。
那么,有没有一款既简单实用价格又便宜的时钟呢?我们课程设计小组设想:可不可以利用单片机功能集成化高,价格又便宜的特点设计一款结构既简单,价格又便宜的单片机电子时钟呢?基于这种情况,我们课程设计小组成员多方查阅资料,反复论证设计出了这款既简单实用,又价格便宜的——单片机电子时钟。
关键词:单片机时钟计时第一章系统设计要求1.1 基本功能(1)能够显示时分秒(2)能够调整时分秒1.2 扩展功能(1)能够任意设置定时时间(2)定时时间到闹铃能够报警(3)实现了秒表功能第二章硬件总体设计方案本次设计时钟电路,使用了AT89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、显示屏即可满足设计要求。
2.1系统功能实现总体设计思路此设计原理框图如图2-1所示,此电路包括以下四个部分:单片机,键盘,闹铃电路及显示电路。
图2-1 设计原理框图经多方论证硬件我们小组采用AT89C51单片机和7SED 八位共阳极数码管等来实现单片机电子时钟的功能。
详细元器件列表如表2.1所示:表2.1 详细元器件列表2.2各部分功能实现(1)单片机发送的信号通过程序控制最终在数码管上显示出来。
用单片机AT89C51设计一个2位的LED数码显示作为“秒表”—单片机课程设计

目录一、设计题目和要求: (2)二、设计目的: (2)三、设计内容: (3)四、课程设计心得体会 (25)五、参考文献 (26)六、课程设计指导教师评审标准及成绩评定 (27)附件1:秒表原理图(实际接线图) (28)附件2:仿真图1 (30)附件3:仿真图2 (31)一、设计题目和要求:题目三:秒表应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。
设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
任务安排:李座负责绘制电路原理图;梁宗林负责收集资料及电子版整理;付忠林负责程序和仿真。
二、设计目的:1.进一步掌握AT89C51单片机的结构和工作原理;2.掌握单片机的接口技术及外围芯片的工作原理及控制方法;3.进一步掌握单片机程序编写及程序调试过程,掌握模块化程序设计方法;4.掌握PROTEUS仿真软件的使用方法;5.掌握LED数码管原理及使用方法。
6.掌握定时器、外部中断的设置和编程原理。
7.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
8.该课程设计通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥有正确的计时、暂停、清零、复位功能,并同时可以用数码管显示。
三、设计内容:了解8051芯片的的工作原理和工作方式,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示分、秒,并能用按钮实现秒表起动、停止、清零功能,精确到1秒。
AT89C51单片机的主要工作特性:·内含4KB的FLASH存储器,擦写次数1000次;·内含28字节的RAM;·具有32根可编程I/O线;·具有2个16位可编程定时器;·具有6个中断源、5个中断矢量、2级优先权的中断结构;·具有1个全双工的可编程串行通信接口;·具有一个数据指针DPTR;·两种低功耗工作模式,即空闲模式和掉电模式;·具有可编程的3级程序锁定定位;AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz.AT89C51各部分的组成及功能:振荡器和时钟电路数据存储器128字节程序存储器14KBCPU 两个16位定时器计数器中断控制总线扩展控制器并行可编程I/O口可编程串行口内部总线外部中断扩展控制P0 P1 P2 P3 RXD TXD1.单片机的中央处理器(CPU )是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广东石油化工学院《51单片机原理与实践》课程设计报告学院计算机与电子信息学院专业班级学号姓名指导教师课程成绩完成日期 2010年12月27日数码管时钟电路的设计一、设计目的:通过这次课程设计掌握单片机系统的基本设计步骤及设计思路,掌握汇编语言的用法及各种指令的含义,比较熟练的运用指令进行单片机系统的设计的,熟悉用KEIL软件进行汇编语言的汇编,以及把代码写入实验板中,观测代码结合实际的运行结果后进行调整,体会到编程的分析问题、确定算法、画程序流程图、编写程序、程序功能模块化的优点的各各步骤。
二、设计要求:LED数码管时钟电路采用24h计时方式,时、分、秒用六位数码管显示。
该电路采用AT89C2051单片机,使用3V电池供电,只使用一个按键开关即可进入调时、省电(不显示LED数码管)和正常显示三种状态。
三、设计实验内容:1. 硬件的设计其采用AT89C51单片机应用设计,LED显示采用动态扫描方式实现,P0口输出段码数据,P2口输出位码数据,P1.1、P1.2接按钮开关。
为了提供LED数码管的驱动电流,采用6MHz晶振。
2. 系统总体分析系统主要包含四大模块:显示模块、时间计时模块、模式切换模块和模式设置模块。
●显示模块:主要由主循环负责。
内存中开辟了一段8字节的内存空间,用作数据显示的字符缓冲区。
主循环不断将缓冲区中的字符呈现至数码管。
●时间计时模块:电子钟的核心模块,记录了时间的时、分、秒信息。
●模式切换模块(MODE):切换电子钟的设置模式,包括时设置、分设置、秒设置、闹铃开关设置、闹铃时设置和闹铃分设置。
相关数据被设置时将闪烁显示。
●模式设置模块(CONFIG):通过判断设置模式(MODE),执行相应的设置。
如时、分、秒的增1以及闹铃开关的变换。
另外,主循环还负责扫描键盘,检测相应键是否被按下,若MODE键被按下则在特定单元中登记该功能,并启动定时器1,然后返回继续执行显示功能。
在定时器1中断时,被登记的功能正式执行。
期间用时约10ms,用以消除机械抖动。
主循环流程图大致如下:图(一)主循环流程图定时器1中断服务程序流程图如下:图(二)定时器1中断服务程序流程图3. 系统主要程序的设计1)主程序本设计中的主程序主要负责对键盘扫描及显示数据,还包括判断是否闹钟正在活动。
若键盘中的P1.6(模式键)或P1.7(设置键)被按下,登记将被执行的功能,主循环不负责功能模块的执行。
若闹钟正在活动,调用蜂鸣函数。
其中bPalse标识了一秒的前半秒和后半秒,是为了控制显示数据的半秒闪烁。
主函数还包含初始化操作,以下省略。
loop:MOV B, #01111111B ;位选通信号MOV R0, #prebuf - 01H ;数据缓冲区nextnum:ACALL keyscan ;扫描键盘INC R0MOV A, @R0PUSH ACCMOV A, BRL AMOV B, AJB bPalse, showORL A, dmaskJNB bAlaIng, showMOV led, #0FFHACALL beeponce 若闹铃活动,调用蜂鸣函数DEC SPshow:PUSH ACCACALL displayone 在特定数码管显示数据。
DEC SPDEC SPACALL delayCJNE R0, #prebufend, nextnumSJMP loopkeyscan:JNB keym, keymode ;若切换键被按下,登记“切换”功能JNB keyc, keyconf ;若设置键被按下,登记“设置”功能RET;=====================;;log function 'mode';;=====================keymode:MOV funclog, #01H ;key actACALL funcperform ;激活“功能执行模块”(见下文),RET;=====================;;log function 'config';;=====================keyconf:MOV funclog, #02HACALL funcperform ;激活“功能执行模块”(见下文)RET2)显示子程序在特定数码管显示数据,通过堆栈传递参数。
第一个参数是待显示的字符,第二个参数是位选通信号。
函数通过查字形码表将字形显示至数码管。
displayone:PUSH ACCPUSH PSWMOV A, R0PUSH ACCPUSH BMOV PSW, #00HMOV A, SPSUBB A, #07HMOV R0, AMOV A, @R0INC R0MOV B, @R0PUSH DPHMOV DPTR, #metrixMOVC A, @A + DPTRJNB bPalse, noftANL A, ftnoft:MOV lmask, BMOV led, APOP DPHPOP DPLPOP BPOP ACCMOV R0, APOP PSWPOP ACCRET3)定时器TO中断服务程序电子钟的计秒程序,负责计算时间。
act: ;main timer actorCJNE R2, #0BH, conCLR bPalse ;palse per second con:DJNZ R2, leaveMOV R2, #14HPUSH ACCPUSH PSWMOV PSW, #00HMOV A, s ;sINC ADA AMOV s, ACJNE A, #60H, incnMOV s, #00HMOV A, m ;mINC ADA AMOV m, ACJNE A, #60H, incnMOV m, #00HMOV A, h ;hINC ADA AMOV h, ACJNE A, #24H, incnMOV h, #00Hincn:SETB bPalseJNB bAlaOn, alarmoffACALL checkala ;check alarm when alarm is ON alarmoff:MOV A, npageANL A, #02HJNZ skipACALL prepareskip:POP PSWPOP ACCleave:MOV TH0,#03CHMOV TL0,#0B0HRETI4)模式切换程序切换设置模式,包括时间时设置、时间分设置、时间秒设置、闹铃开关设置、闹铃时设置、闹铃分设置。
mode: ;mode;SETB P3.2PUSH ACCPUSH PSWPUSH DPLPUSH DPHJNB bAlaIng, modeskipSETB bKick ;stop alarmCLR bAlaIngSJMP modeleavemodeskip:MOV npage, #00HMOV DPTR, #maskdatMOV A, cmodeINC ACJNE A, #07H, enmodeMOV A, #00Henmode:MOV cmode, AANL A, #04HJZ notalapageMOV npage, #02HACALL preala ;时钟调整页准备notalapage:MOV A, cmodeMOVC A, @A + DPTRMOV dmask, A ;设置时闪烁modeleave:POP DPHPOP DPLPOP PSWPOP ACCRET5)模式设置程序对时间量执行加1,特别的闹铃开关执行开关设置。
conf: ;conf;SETB P3.3PUSH ACCPUSH PSWMOV PSW, #00HMOV A, cmodePUSH DPLPUSH DPHJNB bAlaIng, confskip;SETB bKick ;stop alarm ;CLR bAlaIngSJMP confleaveconfskip:MOV DPTR, #confsetRL AJMP @A + DPTRset1: ;时设置MOV A, hINC ADA AMOV h, ACJNE A, #24H, notsetMOV h, #00HSJMP notsetset2: ;分设置MOV A, mINC ADA AMOV m, ACJNE A, #60H, notsetMOV m, #00HSJMP notsetset3: ;秒设置MOV A, sINC ADA AMOV s, ACJNE A, #60H, notsetMOV s, #00HSJMP notsetsetae:CPL bAlaOn ;闹钟开关 SJMP notsetasetah:MOV A, ah ;闹钟时设置 INC ADA AMOV ah, ACJNE A, #24H, notsetaMOV ah, #00HSJMP notsetasetam:MOV A, am ;闹钟分设置 INC ADA AMOV am, ACJNE A, #60H, notsetaMOV am, #00Hnotseta:ACALL prealaCLR bKickSJMP confleavenotset:ACALL prepareconfleave:POP DPHPOP DPLPOP PSWPOP ACCRETconfset:SJMP confleaveSJMP set1SJMP set2SJMP set3SJMP setaeSJMP setahSJMP setam6)功能执行程序执行程序负责执行被登记的功能,功能由主循环扫描键盘并登记。
主循环中,当扫描到有键盘按下时,登记下将被执行的功能,然后启动定时器1,定时器1的中断服务程序即是功能执行程序,中断程序分析并执行被登记的功能。
encperform:CLR TR1 ;act oncePUSH ACCPUSH PSWMOV A, funclogCJNE A, #01H, encconfJNB keym, encperformleave ;action just at button up;ACALL mode ;do 'mode' functionSJMP encperformleaveencconf:CJNE A, #02H, encperformleaveJNB keyc, encperformleave ;action just at button up;ACALL conf ;do 'config' functionencperformleave:POP PSWPOP ACCRETI四、完整源代码s EQU 30Hm EQU 31Hh EQU 32Hdmask EQU 33Hcmode EQU 34Hft EQU 36Hprebuf EQU 37H ;8 byte buffer prebufend EQU 3EHam EQU 3FH ;alarm miniteah EQU 40H ;alarm hournpage EQU 41H ;function page funclog EQU 42H ;func to actstack EQU 4FH;pinled EQU P0lmask EQU P2beep EQU P3.3keym EQU P1.6 ;key 'mode'keyc EQU P1.7 ;key 'config';bit addrbPalse EQU 00HbAlaIng EQU 01HbAlaOn EQU 02HbKick EQU 03H;metrix elementm_none EQU 0AHm_o EQU 0BHm_f EQU 0CHm_n EQU 0DHorg 0000HLJMP startorg 0003HLJMP modelogger ;INT0 to modeorg 000BHLJMP act ;timerorg 0013HLJMP conflogger ;INT1 to config org 001BHLJMP encperform ;performerorg 0100Hstart:MOV SP, #stackMOV TMOD,#11HMOV TH0,#3CHMOV TL0,#0B0HMOV R2, #14H ;R2 used by T0MOV s, #00HMOV m, #00HMOV h, #00HMOV dmask, #00HMOV cmode, #00HMOV npage, #00HMOV ah, #23HMOV am, #59HSETB EASETB ET0 ;T0SETB PT0SETB TR0SETB ET1 ;T1SETB EX0 ;INT0SETB IT0SETB EX1 ;INT1SETB IT1SETB P3.2SETB P3.3SETB keymSETB keycCLR bAlaIngCLR bAlaOnCLR bKickloop:MOV B, #01111111BMOV R0, #prebuf - 01Hnextnum:ACALL keyscanINC R0MOV A, @R0PUSH ACCMOV A, BRL AMOV B, AJB bPalse, showORL A, dmaskJNB bAlaIng, showMOV led, #0FFH ;clr led when alarm ACALL beeponceDEC SPSJMP loopshow:PUSH ACCACALL displayoneDEC SPDEC SPACALL delayCJNE R0, #prebufend, nextnumSJMP loop ; end startbeeponce:CPL beepMOV R5, #02Hbeeploop2:MOV R6, #0FFHbeeploop1:NOPDJNZ R6, beeploop1DJNZ R5, beeploop2RET ;end beeponce;=====================;;display one character;;@param char Character to display;@param mask Position character to display;=====================displayone:PUSH ACCPUSH PSWMOV A, R0PUSH ACCPUSH BMOV PSW, #00HMOV A, SPSUBB A, #07HMOV R0, AMOV A, @R0INC R0MOV B, @R0PUSH DPLPUSH DPHMOV DPTR, #metrixMOVC A, @A + DPTRJNB bPalse, noftANL A, ftnoft:MOV lmask, BMOV led, APOP DPHPOP DPLPOP BPOP ACCMOV R0, APOP PSWPOP ACCRET ;end displayonedelay:PUSH ACCMOV A, R5PUSH ACCMOV A, R6PUSH ACCMOV R5, #03Hdloopo:MOV R6, #0FFHdloop:NOPDJNZ R6, dloopDJNZ R5, dloopoPOP ACCMOV R6, APOP ACCMOV R5, APOP ACCRET ;end delayORG 0200H;=====================;;prepare time datas;to the display buffer;;=====================prepare:MOV ft, #11011111B;enable ft PUSH ACCPUSH PSWPUSH BMOV A, R1PUSH ACCMOV R1, #prebufMOV @R1, #m_noneINC R1MOV @R1, #m_noneINC R1MOV A, h ;hMOV B, ASWAP AANL A, #0FHMOV @R1, AANL B, #0FHINC R1MOV @R1, BMOV A, m ;mMOV B, ASWAP AANL A, #0FHINC R1MOV @R1, AANL B, #0FHMOV @R1, BMOV A, s ;sMOV B, ASWAP AANL A, #0FHINC R1MOV @R1, AANL B, #0FHINC R1MOV @R1, BPOP ACCMOV R1, APOP BPOP PSWPOP ACCRET ;end prepare ;=====================;;prepare alarm datas;to the display buffer;;=====================preala:MOV ft, #0FFH ;no ftPUSH ACCPUSH PSWMOV R1, #prebufMOV @R1, #m_oINC R1JNB bAlaOn, alaoffMOV @R1, #m_nINC R1MOV @R1, #m_noneSJMP alaconalaoff:MOV @R1, #m_fINC R1MOV @R1, #m_falacon:INC R1MOV @R1, #m_noneMOV A, ahSWAP AANL A, #0FHINC R1MOV @R1, AMOV A, ahANL A, #0FHMOV @R1, AMOV A, amSWAP AANL A, #0FHINC R1MOV @R1, AMOV A, amANL A, #0FHINC R1MOV @R1, APOP PSWPOP ACCRET ;end prealaORG 0300H;=====================;;perform action;;=====================encperform:CLR TR1 ;act oncePUSH ACCPUSH PSWMOV A, funclogCJNE A, #01H, encconfJNB keym, encperformleave ;action just at button up; ACALL mode ;do 'mode' functionSJMP encperformleaveencconf:CJNE A, #02H, encperformleaveJNB keyc, encperformleave ;action just at button up; ACALL conf ;do 'config' function encperformleave:POP PSWPOP ACCRETI;=====================;;prepare to do function;;=====================funcperform:MOV TH1, #0D8HMOV TL1, #0F0HSETB TR1RET;=====================;;log function 'mode';;=====================modelogger:MOV funclog, #01HACALL funcperformRETI;=====================;;log function 'config';;=====================conflogger:MOV funclog, #02HACALL funcperformRETIORG 0400H;=====================;;mode;;to change function;or stop alarm when;alarming;;=====================mode: ;mode;SETB P3.2PUSH ACCPUSH PSWPUSH DPLPUSH DPHJNB bAlaIng, modeskipSETB bKick ;stop alarm CLR bAlaIngSJMP modeleavemodeskip:MOV npage, #00HMOV DPTR, #maskdatMOV A, cmodeINC ACJNE A, #07H, enmodeMOV A, #00Henmode:MOV cmode, AANL A, #04HJZ notalapageMOV npage, #02HACALL prealanotalapage:MOV A, cmodeMOVC A, @A + DPTRMOV dmask, Amodeleave:POP DPHPOP DPLPOP PSWPOP ACCRET ;end mode;=====================;;conf;;to change setting;that the 'mode' decided;;=====================conf: ;conf;SETB P3.3PUSH ACCPUSH PSWMOV PSW, #00HMOV A, cmodePUSH DPLPUSH DPHJNB bAlaIng, confskip;SETB bKick ;stop alarm ;CLR bAlaIngSJMP confleaveconfskip:MOV DPTR, #confsetRL AJMP @A + DPTRset1:MOV A, hINC A ;hDA AMOV h, ACJNE A, #24H, notsetMOV h, #00HSJMP notsetset2:MOV A, mINC A ;mDA AMOV m, ACJNE A, #60H, notsetMOV m, #00HSJMP notsetset3:MOV A, sINC A ;sDA AMOV s, ACJNE A, #60H, notsetMOV s, #00HSJMP notsetsetae:CPL bAlaOn ;ala enable SJMP notsetasetah:MOV A, ah ;ala hINC ADA AMOV ah, ACJNE A, #24H, notsetaMOV ah, #00HSJMP notsetasetam:MOV A, am ;ala mINC ADA AMOV am, ACJNE A, #60H, notsetaMOV am, #00Hnotseta:ACALL prealaCLR bKickSJMP confleavenotset:ACALL prepareconfleave:POP DPHPOP DPLPOP PSWPOP ACCRETconfset:SJMP confleaveSJMP set1SJMP set2SJMP set3SJMP setaeSJMP setahSJMP setam ; end confORG 0500Hkeyscan:JNB keym, keymodeJNB keyc, keyconfRET;=====================;;log function 'mode';;=====================keymode:MOV funclog, #01H ;key actACALL funcperformRET;=====================;;log function 'config';;=====================keyconf:MOV funclog, #02HACALL funcperformRETORG 0600Hact: ;main timer actorCJNE R2, #0BH, conCLR bPalse ;palse per second con:DJNZ R2, leaveMOV R2, #14HPUSH ACCPUSH PSWMOV PSW, #00HMOV A, s ;sINC ADA AMOV s, ACJNE A, #60H, incnMOV s, #00HMOV A, m ;mINC ADA AMOV m, ACJNE A, #60H, incnMOV m, #00HMOV A, h ;hINC ADA AMOV h, ACJNE A, #24H, incnMOV h, #00Hincn:SETB bPalseJNB bAlaOn, alarmoffACALL checkala ;check alarm when alarm is ON alarmoff:MOV A, npageANL A, #02HJNZ skipACALL prepareskip:POP PSWPOP ACCleave:MOV TH0,#03CHMOV TL0,#0B0HRETI ;end actcheckala:MOV A, mCJNE A, am, alashutMOV A, hCJNE A, ah, alashutJB bKick, notala ;ala stopSETB bAlaIngSJMP notalaalashut:CLR bAlaIngCLR bKicknotala:RETmaskdat:DB 00000000B, 00001100B, 00110000B, 11000000B, 00000111B, 00110000B, 11000000B metrix:;DB 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6FDB 0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60DB 0xFF ;0X0A: NONEDB 0X27 ;0X0B: 'O'DB 0XB1 ;0X0C: 'F'DB 0X37 ;0x0D: 'n'END(注:可编辑下载,若有不当之处,请指正,谢谢!)。