基于单片机的多功能数字钟60秒LED旋转电子钟
基于单片机的多功能数字钟的设计

基于单片机的多功能数字钟的设计摘要:本设计论文介绍了用AT89C2051单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。
此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。
它的计时周期为12小时,显示满刻度为12时59分59秒99毫秒,另外应有校时功能。
电路由时钟脉冲发生器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。
用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。
根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个12进制(时)的计数器。
构成秒、分、时的计数,实现计时的功能。
显示器件选用LED七段数码管。
在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。
针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。
关键词:单片机;AT89C2051;数字钟;计时Based on SCM multi-purpose digital clock designAbstract:The paper mainly presents the hardware and software design of the digital clock using AT89C2051. The source program using assemble Language is given. This digital clock is a time-device, which can display "hour", "minute", "second". Its time period is 12 hours and the full scale of the display is 12 hours, 59 minutes, 59 seconds and 99 milliseconds and it has the function of time adjustment. The circuit consists of the clock pulse generator, the clock counter, decoding drive circuit, digital display circuit and the time adjustment circuit. It generates time standard signal using crystal oscillator, here is the quartz crystal oscillator. Because 60 seconds is 1 minute, 60 minutes is 1 hour and 24 hours is 1 day, we uses two counters of 60 parts and a counter of 12 part separately to constitute the count of percentage of second, second, minute, and hour. So it can realize time function. Display component selects seven-segment numerical tube LED. Driven by decoding output circuit, it can display showing clear and intuitive figures. Due to walking error of digital clock, we design time calibration circuit in the system.Key words:Single-chip microcomputer; AT89C2051; Digital clock; Time目录第1章绪论 (5)1.1 前言 (5)1.2 设计的目的及意义 (5)第2章数字钟的功能实现与设计方案 (6)2.1 数字钟的功能及设计要求 (6)2.2数字钟的实现形式 (6)2.3 方案的确定 (7)2.3.1 微处理器 (7)2.3.2 显示电路 (7)2.3.3 按键电路 (8)第3章数字钟的硬件系统设计 (9)3.1数字时钟的硬件系统框架 (9)3.2 数字时钟的主机电路设计 (9)3.2.1系统控制芯片CPU(AT89C2051)的选择 (9)3.2.2系统时钟电路设计 (14)3.2.3 系统复位电路设计 (16)3.2.4 按键与按钮电路设计 (17)3.2.5闹铃声光指示电路设计 (17)3.2.6 数字钟的显示电路设计 (17)3.3校时电路设计 (21)3.3.1校时原理 (22)3.3.2 国家授时中心 (22)3.3.3窗口比较器 (23)3.3.4 校时电路电路图 (24)3.4 电源设计 (24)第4章程序设计 (28)4.1 主控模块设计 (28)4.2基本现实模块设计 (29)4.3 当前编辑位闪烁功能的实现 (30)4.4时间设定模块设计 (30)4.5脉冲发生器原理与走时处理 (31)4.6 闹铃功能的实现 (32)第5章系统的调试及结果 (34)5.1 系统调试环境 (34)5.2 软件调试 (34)5.3硬件调试 (34)5.4调试结果 (34)结论 (35)致谢 (36)参考文献 (37)附录1:完整的汇编语言源程序 (38)附录2:系统设计原理图 (61)附录3:系统设计PCB图 (63)附录4:实物照片 (64)西南科技大学本科生毕业论文第1章绪论1.1前言计算机尤其是以微细加工技术支持的微型计算机技术飞速发展,其应用渗透到了各行各业。
单片机课程设计---新颖60秒LED旋转电子钟.

单片机课程设计1 新颖的60秒旋转电子钟余水宝数理与信息工程学院2006年5月课程设计任务书新颖的60秒旋转电子钟任务书一、任务设计一款基于AT89C2051单片机的电子钟。
二、设计要求1、基本要求⑴用4只LED数码管输出显示时和分。
⑵可通过按键设置闹钟功能,且停闹无须手工操作。
⑶可通过按键设置分校时。
⑷月计时误差小于45秒。
⑸写出详细的设计报告。
⑹给出全部电路和源程序。
2、发挥部分⑴用60只LED发光管旋转显示,模拟“秒针”的行走。
⑵模拟“秒针”行走的“嘀哒”声。
⑶增加室温检测和显示功能(可与时间交替显示)。
⑷增加停(掉)电保护功能。
⑸提高计时精度,使年计时误差小于30秒。
⑹增加日自动校准功能,使得该电子钟“永无误差”。
⑺增加红黄绿三色变色装饰。
⑻可通过按键设置一天两闹(比如早晨、中午各一次)。
1单片机课程设计-----新颖的60秒旋转电子钟新颖的60秒旋转电子钟目前市场上提供的无论是机械钟还是石英钟在晚上无照明的情况下都是不可见的。
要知道当前的时间,必须先开灯,故较为不便。
现在市场上也出现了一些电子钟,它以六只LED数码管来显示时分秒,与传统的以指针显示秒的方式不同,违背了人们传统的习惯与理念,而且这类电子钟一般是采用大型显示器件,适用于银行、车站等公共场所,且外观设计欠美观,很少进入百姓家庭。
此外,无论是机械钟、石英钟还是电子钟,都存在着共同的问题:时间误差。
针对以上存在的问题,我们设计了一款采用LED显示器件显示的电子时钟,有效克服了时钟存在的误差问题,并能在夜间不必其它照明就能看到时间,且以60只发光管实现秒显示,接近于传统的秒针来显示秒的形式,用户容易接受,而且美观大方。
另加七只装饰用的LED灯,使整个时钟显的相当美观新颖,故还可作为室内装饰用。
1 系统主要功能电子钟的外观如图1所示。
周边60只发光管顺时旋转来显示秒,中间四只LED 数码管用于显示时间,中下方的七只LED灯顺时旋转,供装饰用。
基于单片机的多功能数字时钟设计

技术平台采用碱性电解液电沉积活性锌粉,选取电解液浓度1.25g/cm3,电流密度150mA/cm2,电解槽温度只需控制在室温,锌粉洗涤后真空干燥,所制得的锌粉比表面积大于0.8m2/g,具有较高的电化学活性,能满足锌银电池生产需要,生产效率也达到批量生产要求。
参考文献:[1]侯新刚,王胜,王玉棉.超细活性锌粉的制备与表征[J].粉末冶金工业,2004,14(1):10-13.[2]李永祥,黄孟阳,任锐.电解法制备树枝状锌粉工艺研究[J].四川有色金属,2011,(3):45-50.[3]胡会利,李宁,程瑾宁,等.电解法制备超细锌粉的工艺研究[J].粉末冶金工业,2007,17(1):24-29.基于单片机的多功能数字时钟设计刘晓萌(安徽职业技术学院铁道学院/合肥铁路工程学校,安徽 合肥 230011)摘 要:常见的数字钟有时间、闹钟等功能。
本文基于单片机、温度传感器、液晶显示屏、时钟芯片等硬件设计了多功能数字时钟,软件部分采用C语言编程实现。
该多功能数字时钟包含万年历、节日、节气、温度信息显示等功能,并且在断电的情况下也能正常工作。
关键词:单片机;多功能数字时钟;C语言编程0 引言人类对于时间的需求从古到今始终存在。
古代有浑天仪、日晷,近代出现了机械时钟。
如今,传统的计时工具,甚至是电子钟都已经满足不了人们多元化的时间需求。
数字时钟具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的应用空间[1]。
使用数字时钟,用户可以获取精确到秒的时间信息,或是对时钟进行自定义的操作,为现代社会提供了极大的方便[2]。
然而,传统的数字时钟只包含时间显示、闹钟等功能,存在一定的局限性。
本文基于单片机、温度传感器、液晶显示屏、时钟芯片、键盘模块、闹铃模块和电力支持模块等硬件,设计了一款多功能的数字时钟。
1 系统硬件组成数字时钟的硬件由七个模块组成,包括:STC89C52单片机主控芯片、DS1302时钟芯片、DS18B20温度芯片、LCD1602液晶显示模块、闹铃模块、键盘模块和电源。
基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计1. 本文概述随着现代科技的发展,电子时钟已成为日常生活中不可或缺的一部分。
本文旨在介绍一种基于51单片机的多功能电子钟的设计与实现。
51单片机因其结构简单、成本低廉、易于编程等特点,在工业控制和教学实验中得到了广泛应用。
本文将重点阐述如何利用51单片机的这些特性来设计和实现一个具有基本时间显示、闹钟设定、温度显示等功能的电子钟。
本文的结构安排如下:将详细介绍51单片机的基本原理和特点,为后续的设计提供理论基础。
接着,将分析电子钟的功能需求,包括时间显示、闹钟设定、温度显示等,并基于这些需求进行系统设计。
将详细讨论电子钟的硬件设计,包括51单片机的选型、时钟电路、显示电路、温度传感器电路等。
软件设计部分将介绍如何通过编程实现电子钟的各项功能,包括时间管理、闹钟控制、温度读取等。
本文将通过实验验证所设计的电子钟的功能和性能,并对实验结果进行分析讨论。
通过本文的研究,旨在为电子钟的设计提供一种实用、经济、可靠的方法,同时也为51单片机的应用提供一个新的实践案例。
2. 51单片机概述51单片机,作为一种经典的微控制器,因其高性能、低功耗和易编程的特性而被广泛应用于工业控制、智能仪器和家用电器等领域。
它基于Intel 8051微处理器的架构,具备基本的算术逻辑单元(ALU)、程序计数器(PC)、累加器(ACC)和寄存器组等核心部件。
51单片机的核心是其8位CPU,能够处理8位数据和执行相应的指令集。
51单片机的内部结构主要包括中央处理单元(CPU)、存储器、定时器计数器、并行IO口、串行通信口等。
其存储器分为程序存储器(ROM)和数据存储器(RAM)。
程序存储器通常用于存放程序代码,而数据存储器则用于存放运行中的数据和临时变量。
51单片机还包含特殊功能寄存器(SFR),用于控制IO端口、定时器计数器和串行通信等。
51单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。
基于单片机的多功能数字钟

基于单片机的多功能数字钟摘要:现代社会人们工作生活的节奏越来越快,时间对于人们也越来越重要。
在人们日常生活以及各类社会活动中,都离不开时间,时间与人们的生活息息相关。
所以在很早时候人们就发明了各种各样的计时方法,直到演变成现在的钟。
而多功能数字钟就提供了一个便利,不仅能够准确显示时间,还有自动报时,闹钟设置,环境温度测量等等其他功能。
多功能数字钟与机械式时钟相比具有更高的准确性和直观性,是一种采用数字电路技术来实现时、分、秒计时的装置,因为没有机械装置,所以具有更长的使用寿命,因此得到了广泛的应用。
单片机是一种集CPU、RAM、ROM、I/O接口和中断系统等于一体的器件,只需要外加电源和晶振就可实现对数字信息的处理和控制。
单片机与多功能数字钟相结合,用于时间显示,温度测试等不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被检测数值的技术指标,从而能够大大提高产品的质量和数量。
因此,单片机在现代生活以及现代工业中应用的越来越广泛。
关键词:单片机,温度传感器,C语言Multifunction Digital Clock based on MCS Abstract:As modern society increasingly rapid pace of working life, time for people to have more and more important in people's daily life and various social activities, can not do without time, time and people's daily life. Multi-function digital clock on the provision of a convenient, not only can accurately display the time, there is alarm settings, temperature measurement, etc. Other features, compared with the mechanical clock is more accurate and intuitive, is used digital circuit technology, the minute and second timing device, because no mechanical device, and therefore have a longer life, it has been widely used.SCM is a set of CPU, RAM, ROM, I / O interfaces and interrupt system part in one of the devices, only external power supply and the crystal can be realized on digital information processing and control. SCM combined with multi-function digital clock, for the time display, temperature measurement is not only easy to control, simple configuration and flexibility of big advantages, but also greatly enhance the value of the technical indicators are detected, which can greatly enhance the quality of the product and quantity. Therefore, the MCU in modern life and more and more widely applied in industry.Key words:Single-chip microcomputer, Temperature Sensor,C language目录第一章引言 (1)1.1系统开发背景及现状 (1)1.2系统开发的目的 (1)本章小结 (1)第二章基础理论 (2)2.1单片机概述 (2)2.1.1 单片机的历史与发展概况 (2)2.1.2 单片机的发展趋势 (2)2.1.3 单片机的应用 (4)2.2MCS-51系列单片机简介 (5)2.3C语言的介绍..................................................................................................... 错误!未定义书签。
DIY基于51单片机的旋转LED数字电子钟

标签:DIY基于51单片机的旋转LED数字电子钟(红外线遥控调时)在网上看到不少老外做的各种旋转LED显示屏,非常COOL,我也动手用洞洞板试做了一个类似的显示屏,结果感觉还不错。
于是再接再励继续努力,将作品进一步改进,完善后制成如今这个样子。
由于刚学51单片机,加上制作电路板软件也是从零开始,的确花了我不少的时间和精力。
不过也就是在这艰难的独立制作中,真正学到了不少实在的东西。
本项目的关键是如何解决高速旋转的电路板如何供电,如何调时的问题。
我采用电机电刷的原理,将旋转轴钻空,通过一只插头将电源的从反面引到前面的电路板上,而这个旋转的插头又与固定在背板上的两个铜片接触的。
调时的问题有些困难,一是让电路板在旋转前与PC机相接,由电脑传送调时数据,这虽然可行但不方便。
还有就是用遥控方法,但此方案在调试方面有很大的困难。
显示方式上,我采用平衡式的两排LED,这除了在旋转时能较好的保持平衡外,主要能利用两边交替显示方式,比单排要快一倍。
本装置不仅是一个时钟,它还可以动态显示汉字及图案,这就看如何发挥了。
其具体制作过程如下:一。
旋转电机的制作从制作成本与方便考虑,选用旧电脑用的大软驱上的直流无刷电机,只是对局部进行改造。
就是这种古董软驱软驱上的直流无刷电机拆开后的电机仔细拆开直流电机,将带圆盘的铝轴从中开孔,让它刚好能插入一个插头。
将旋转轴加工成这样装配好以后按拆开时的顺序,反序将轴安装直流电机上。
电机装配完成后用两片铜片做的电刷电刷装好后的侧面图将电路板上较突出的元件改焊在反面,电机的电源接法。
从电路板标注的符号看,“+”为电源正,“G”为电源负,“C”与“M”端分别与电源正相连匀可使电机运转将一张旧唱片按电机座的位置开孔,而定位用的挡光板应根据电路板上感光组件的位置确定。
二。
电路板的制作本制作品用51单片机控制,具体电原理图如下:用Protel 99设计制作了电路板。
最后得到完成的作品。
遥控器用的是松下车载机的,只用了其中的六个键。
基于单片机的多功能数字钟的设计与实现

基于单片机的多功能数字钟的设计与实现摘要:本文介绍了一种基于单片机的多功能数字钟的设计与实现。
该数字钟具有时间显示、闹钟、倒计时、温度显示等多种功能,并且在设计中采用了数字电子管显示,使得时间显示更加清晰明了。
此外,本文还对数字钟的硬件和软件设计进行了详细的讲解,为读者提供了一定的参考和借鉴价值。
关键词:单片机;数字钟;时间显示;闹钟;倒计时;温度显示 1. 引言数字钟作为一种常见的计时设备,已经广泛应用于生活中的各个方面。
随着技术的不断发展,数字钟的功能也越来越多样化和智能化。
本文将介绍一种基于单片机的多功能数字钟的设计与实现,该数字钟具有时间显示、闹钟、倒计时、温度显示等多种功能,并且在设计中采用了数字电子管显示,使得时间显示更加清晰明了。
2. 硬件设计2.1 主控制器本文采用AT89C51单片机作为主控制器,其主频为11.0592MHz。
单片机具有丰富的外设资源,可以很方便地实现数字钟的各种功能。
2.2 显示模块数字钟采用4位共阳数码管进行时间、温度等信息的显示。
数码管选用型号为TM1637,具有低功耗、高亮度、长寿命等特点。
数码管的控制线接口分别为CLK、DIO。
2.3 温度传感器本文采用DS18B20数字温度传感器对环境温度进行测量。
DS18B20具有精度高、精度稳定、响应速度快等特点,可以满足数字钟的温度显示需求。
2.4 功能按键数字钟采用4个功能按键,分别为闹钟设置键、倒计时设置键、温度显示键、复位键。
3. 软件设计3.1 时间显示程序中通过时钟中断来实现时间的显示和更新。
时钟中断周期为1s,每次中断时,将当前时间显示在数码管上。
具体实现过程如下: ```cvoid Timer0() interrupt 1{TH0 = (65536 - 11059200/12/1000)/256;TL0 = (65536 - 11059200/12/1000)%256;if(++timeCount == 1000){timeCount = 0;Time_Get();Display_Time();}}3.2 闹钟数字钟具有闹钟功能,用户可以通过按下闹钟设置键来设置闹钟时间。
基于单片机的多功能数字钟的设计

基于单片机的多功能数字钟的设计摘要:本设计论文介绍了用AT89C2051单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。
此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。
它的计时周期为12小时,显示满刻度为12时59分59秒99毫秒,另外应有校时功能。
电路由时钟脉冲发生器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。
用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。
根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个12进制(时)的计数器。
构成秒、分、时的计数,实现计时的功能。
显示器件选用LED七段数码管。
在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。
针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。
关键词:单片机;AT89C2051;数字钟;计时Based on SCM multi-purpose digital clock designAbstract:The paper mainly presents the hardware and software design of the digital clock using AT89C2051. The source program using assemble Language is given. This digital clock is a time-device, which can display "hour", "minute", "second". Its time period is 12 hours and the full scale of the display is 12 hours, 59 minutes, 59 seconds and 99 milliseconds and it has the function of time adjustment. The circuit consists of the clock pulse generator, the clock counter, decoding drive circuit, digital display circuit and the time adjustment circuit. It generates time standard signal using crystal oscillator, here is the quartz crystal oscillator. Because 60 seconds is 1 minute, 60 minutes is 1 hour and 24 hours is 1 day, we uses two counters of 60 parts and a counter of 12 part separately to constitute the count of percentage of second, second, minute, and hour. So it can realize time function. Display component selects seven-segment numerical tube LED. Driven by decoding output circuit, it can display showing clear and intuitive figures. Due to walking error of digital clock, we design time calibration circuit in the system.Key words:Single-chip microcomputer; AT89C2051; Digital clock; Time目录第1章绪论 (1)1.1 前言 (1)1.2 设计的目的及意义 (1)第2章数字钟的功能实现与设计方案 (2)2.1 数字钟的功能及设计要求 (2)2.2数字钟的实现形式 (2)2.3 方案的确定 (3)2.3.1 微处理器 (3)2.3.2 显示电路 (3)2.3.3 按键电路 (4)第3章数字钟的硬件系统设计 (5)3.1数字时钟的硬件系统框架 (5)3.2 数字时钟的主机电路设计 (5)3.2.1系统控制芯片CPU(AT89C2051)的选择 (5)3.2.2系统时钟电路设计 (10)3.2.3 系统复位电路设计 (12)3.2.4 按键与按钮电路设计 (13)3.2.5闹铃声光指示电路设计 (13)3.2.6 数字钟的显示电路设计 (13)3.3校时电路设计 (17)3.3.1校时原理 (18)3.3.2 国家授时中心 (18)3.3.3窗口比较器 (19)3.3.4 校时电路电路图 (20)3.4 电源设计 (20)第4章程序设计 (24)4.1 主控模块设计 (24)4.2基本现实模块设计 (25)4.3 当前编辑位闪烁功能的实现 (26)4.4时间设定模块设计 (26)4.5脉冲发生器原理与走时处理 (27)4.6 闹铃功能的实现 (28)第5章系统的调试及结果 (30)5.1 系统调试环境 (30)5.2 软件调试 (30)5.3硬件调试 (30)5.4调试结果 (30)结论 (31)致谢 (32)参考文献 (33)附录1:完整的汇编语言源程序 (34)附录2:系统设计原理图 (57)附录3:系统设计PCB图 (59)附录4:实物照片 (60)西南科技大学本科生毕业论文第1章绪论1.1前言计算机尤其是以微细加工技术支持的微型计算机技术飞速发展,其应用渗透到了各行各业。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1节引言1.1 电子钟概述目前市场上提供的无论是机械钟还是石英钟在晚上无照明的情况下都是不可见的。
要知道当前的时间,必须先开灯,故较为不便。
现在市场上也出现了一些电子钟,它以六只LED数码管来显示时分秒,违背了人们指针式的传统习惯与理念,而且这类电子钟一般是采用大型显示器件,适用于银行、车站等公共场所,且外观设计欠美观,很少进入百姓家庭。
此外,无论是机械钟、石英钟还是电子钟,都存在着共同的问题:时间误差。
针对以上存在的问题,我们设计了一款采用LED显示器件显示的电子时钟,解决了时钟存在的误差问题,并能在夜间不必其它照明就能看到时间,且以60只发光管实现秒显示,接近于传统的秒针来显示秒的形式,用户容易接受,而且美观大方。
另加七只装饰用的LED灯,使整个时钟显的相当美观新颖,故还可作为室内装饰用。
1.2 设计任务本次设计通过对一个实现定时、双时钟显示、闹钟、温度等功能的时间系统的设计,其中结合了数据转换显示、数码管显示、动态扫描、单片机定时中断等技术。
系统由AT89C2051、LED数码管、按键、三极管、两片CD4017BE、CD4069BE、DS18B20、电阻等组成。
能实现时钟时、分、秒的显示。
也具有温度显示、时间设置、闹铃开和关设置、制式切换。
文章后附有电路图、程序清单。
1.3 系统主要功能电子钟的外观如图1所示。
周边60只发光管顺时旋转来显示秒,中间四只LED 数码管用于显示时间,中下方的七只LED灯顺时旋转,供装饰用。
其主要功能有:①整点报时;②四只LED数码管显示当前时分;③每隔一秒钟周边的60只LED发光管旋转一格;④当发生停电事件时,由后备电池供电,系统进入低功耗状态,所有显示部件停止显示,这样即延长了电池的寿命,同时又保证CPU继续计数,不至于因停电而时钟停止运行。
⑤当恢复供电后,系统自动恢复工作状态,不影响计时。
图一第2节电子钟硬件设计2.1系统的硬件构成及功能电子钟的原理框图如图2所示。
它由以下几个部件组成:单片机89C2051、电源、时分显示部件、60秒旋转译码驱动电路。
时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。
时分显示模块、60秒旋转译码驱动电路以及显示驱动都通过89C2051的I/O口控制。
电源:电源部分有二部分组成。
一部分是由220V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作;另一部分是由3V的电池供电,以保证停电时正常计时。
正常情况下电池是不提供电能的,以保证电池的寿命。
具体电路参见“新颖的60秒旋转电子钟参考电路原理图”。
2.2AT89C2051单片机及其引脚说明AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版。
内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。
由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。
AT89C2051是一个有20个引脚的芯片,引脚配置如图3所示。
与8051相比,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。
AT89C2051芯片的20个引脚功能为:VCC 电源电压;GND 接地;RST 复位输入。
当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”;XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入;XTAL2 来自反向振荡放大器的输出。
P1口 8位双向I/O口。
引脚P1.2~P1.7提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。
P1.0和P1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输出缓冲器能接收20mA的灌电流,并能直接驱动LED显示器;P1口引脚写入“1”后,可用作输入。
在闪速编程与编程校验期间,P1口也可接收编码数据。
P3口引脚P3.0~P3.5与P3.7为7个带内部上拉的双向I/0引脚。
P3.6在内部已与片内比较器输出相连,不能作为通用I/O引脚访问。
P3口的输出缓冲器能接收20mA 的灌电流;P3口写入“1”后,内部上拉,可用作输入。
P3口也可用作特殊功能口,其功能见表1。
P3口同时也可为闪速存储器编程和编程校验接收控制信号。
2.360秒旋转译码驱动原理按常规传统设计,需60进制译码驱动电路才能实现60秒旋转译码驱动,若用六片十进制计数译码器构成六十进制计数译码电路,则电路连线多(需要120根连线),硬件电路庞大,开销大。
为此,我们巧妙地采用了两片CD4017进行六十进制计数译码,实现60秒旋转译码驱动。
既减少了电路的复杂程度又可降低了成本。
图4图3.4 AT89C2051引脚配置图4 CD4017引脚图图5 CD4017时序图为CD4017功能引脚图,图5为其时序图。
CD4017集成电路是十进制计数/时序译码器,共有10个译码输出Q0~Q9;每个译码输出通常处于低电平,且在时钟脉冲由低到高的上升沿输出高电平;每个高电平输出维持1个时钟周期;每输入10个时钟脉冲,输出一个进位脉冲,因此进位输出信号可作为下一级计数器的时钟信号。
在清零输入端(R )加高电平或正脉冲时,只有输出端Q0为高电平,其余各输出端均为低电平“0”。
为实现对发光二极管的驱动,将每一个译码输出端口接一只发光二极管,并将二极管串联限流电阻后接地。
当译码端口Q0~Q9中任一端口为高电平,则对应的发光二极管点亮,如图6所示。
仔细考查CD4017的功能,可发现其10个输出的高电平是相互排斥的,即任一时刻只有一只发光二极管点亮,因此可将图6电路进一步简化为如图7所示,从而简化电路设计。
在本电子钟设计中,每秒点亮一个发光二极管,循环点亮一周共需60个发光二极管,若用上述的6片CD4017实现驱动,显然电路复杂。
为此我们选用两片CD4017和一片6反相器,采用“纵横双译码”技术,巧妙地实现60秒旋转译码驱动,其中一片接成10进制,一片接成6进制,实现6×10=60的功能,具体连接方法如图8图6 CD4017控制LED 原理图 图7 优化后控制LED 原理图所示。
将周期为1秒的输入脉冲作为其中一片CD4017的时钟脉冲,而此片的级联进位输出端(QC )作为另一片的时钟输入,并将Q6与复位端相连。
在两片译码输出端交叉点上接入发光二极管,构成6×10矩阵。
根据CD4017时序特点,在初始状态,作为高位(纵)的CD4017译码器输出端口Q0处于高平,经反相器反相后为低电平。
当作为低位(横)的CD4017译码器输出端口Q0~Q9依次输出高电平后,则对应的二极管LD1~LD10依次点亮;此后由于QC 端的进位,高位CD4017译码输出端口Q1输出高电平,反相后输出低电平,当低位的CD4017译码输出端口Q0~Q9依次输出高电平后,二极管LD11~LD20依次点亮。
如此往复,直至高位Q6向复位端输入高电平,CD4017复位,60秒循环点亮重新开始。
2.4 时分显示部件由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。
LED 有共阴极和共阳极两种。
如图8所示。
二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V 的电压。
一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a ~g ,另一个小数点为dp 发光二极管。
当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。
为了保护各段LED 不被损坏,需外加限流电阻LED 显示数码管通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。
本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。
所谓软件译码,即由单片机软件完成从数字到显示码的转换。
从LED 数码管结构原理可知,为了显示字符,要为LED 显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED 数码管的显示段码为1个字节。
这种连接方式由于多位字段线连在一起,因此,要想图8 发光二极管“纵横双译码”循环点亮LED 原理图显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。
在这一瞬时,只有这一位在显示,其他几位则暗。
在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开关”状态。
系统的时分显示部件由4只7段共阳LED数码管构成,前两只用于时的显示,后两只用于分的显示。
值得一提的是,在设计中需要实现时与分之间的两个闪烁点,为此,将第三只LED数码管倒置摆放,这样就很巧妙地形成了两个很自然的闪烁点。
与此同时,为了能使两点显示能够形象的表示时钟“秒”的变化,设计时,将两个点由P1.7单独控制,每隔一秒使P1.7发送一个正脉冲,从而实现了两个点的闪烁显示,闪烁周期为一秒第三节实验核心代码DP BIT 24H.3 ;定义半秒闪烁位单元SECOND EQU 31H ; 定义计数单元MBUF EQU 32H ; 定义分计数单元HBUF EQU 33H ; 定义时计数单元MBUF0 EQU 34H ; 定义分个位计数存储单元MBUF1 EQU 35H ; 定义分十位计数存储单元HBUF0 EQU 36H ; 定义时个位计数存储单元HBUF1 EQU 37H ; 定义时十位计数存储单元DMBF0 EQU 40H ; 定义分个位显示缓冲单元DMBF1 EQU 41H ; 定义分十位显示缓冲单元DHBF0 EQU 42H ; 定义时个位显示缓冲单元DHBF1 EQU 43H ; 定义时十位显示缓冲单元AMBF10 EQU 44H ; 定义定闹1分个位缓冲单元AMBF11 EQU 45H ; 定义定闹1分十位缓冲单元AHBF10 EQU 46H ; 定义定闹1时个位缓冲单元AHBF11 EQU 47H ; 定义定闹1时十位缓冲单元AMBF1 EQU 48H ; 定义定闹1分计数单元AHBF1 EQU 49H ; 定义定闹1时计数单元AMBF20 EQU 4AH ; 定义定闹2分个位缓冲单元AMBF21 EQU 4BH ; 定义定闹2分十位缓冲单元AHBF20 EQU 4CH ; 定义定闹2时个位缓冲单元AHBF21 EQU 4DH ; 定义定闹2时十位缓冲单元AMBF2 EQU 4EH ; 定义定闹2分计数单元AHBF2 EQU 4FH ; 定义定闹2时计数单元AA EQU 50HLED BIT P1.7 ; LED脉冲ORG 0000HLJMP MAINORG 000BHMOV TL0, #0DCH ; 125毫秒定时器初值低8位MOV TH0, #0BH ; 125毫秒定时器初值高8位PUSH ACC ; 系统主定时,每125毫秒中断1次PUSH PSWDEC R4 ; 软件计数器减1INT01: DJNZ R2, INT02 ; 1秒计数MOV R2, #08HCPL DP ; 小数点半秒闪烁ACALL BEEP ; 1秒到, 发“笛嗒”声和LED旋转脉冲DJNZ SECOND, OUTT0MOV SECOND, #10H ; 1分到ACALL ADD1 ; 分十进制加1子程序INT02: MOV A, R2CJNE A, #08H, OUTT0 ; 判断是否半秒CPL DP ; 是半秒,秒闪动一次OUTT0: POP PSWPOP ACCRETIMAIN: MOV SP, #6FHMOV R2, #08H ; 定时器1秒中断次数MOV R4, #08H ; 快校时定时计数,8X125ms后快校时MOV SECOND, #3CH ; 秒计数单元MOV MBUF0, #0 ; 分个位计数存储单元0 初值MOV MBUF1, #0 ; 分十位计数存储单元1 初值MOV HBUF0, #4 ; 时个位计数存储单元0 初值MOV HBUF1, #1 ; 时十位计数存储单元1 初值MOV MBUF, #00H ; 分计数存储单元初值MOV HBUF, #14H ; 时计数存储单元初值MOV AMBF10, #1 ; 定闹1分个位计数存储单元0 初值MOV AMBF11, #0 ; 定闹1分十位计数存储单元1 初值MOV AHBF10, #4 ; 定闹1时个位计数存储单元0 初值MOV AHBF11, #1 ; 定闹1时十位计数存储单元1 初值MOV AMBF1, #01H ; 定闹1分计数存储单元初值MOV AHBF1, #14H ; 定闹1时计数存储单元初值MOV AMBF20, #3 ; 定闹2分个位计数存储单元0 初值MOV AMBF21, #5 ; 定闹2分十位计数存储单元1 初值MOV AHBF20, #0 ; 定闹2时个位计数存储单元0 初值MOV AHBF21, #2 ; 定闹2时十位计数存储单元1 初值MOV AMBF2, #53H ; 定闹2分计数存储单元初值MOV AHBF2, #20H ; 定闹2时计数存储单元初值MOV IE, #10000010B ; 允许定时器0中断MOV TMOD, #00100001B ; T0方式1MOV TL0, #0DCH ; 125毫秒定时器初值低8位MOV TH0, #0BH ; 125毫秒定时器初值高8位MOV IP, #00000010B ; 定时器0高优先级SETB TR0 ; 启动T0计时LOOP: MOV R4, #08 ; 喂狗MOV A, HBUF ; 取时整点SUBB A, #7JC LOOP1 ; 判断是否早7时前MOV A, HBUF ; 早7时前----晚22时后为夜间SUBB A, #22HJNC LOOP1 ; 判断是否晚22时后ACALL DISPAJMP ALARM1LOOP1: ACALL NDISP ; 是夜间,调用夜间显示子程序ALARM1: MOV A, AHBF1 ; 判定闹1CJNE A, HBUF, ALARM2 ; 判定闹1的小时是否与系统时间相等?MOV A, AMBF1CJNE A, MBUF, ALARM2 ; 判定闹1的分是否与系统时间相等?MOV C, DPMOV P3.3, C ; 蜂鸣器响半秒,停半秒MOV A, SECOND ; 定闹1分钟JNZ LOOPALARM2: MOV A, AHBF2CJNE A, HBUF, LOOP2 ; 判定闹2的时是否与系统时间相等?MOV A, AMBF2CJNE A, MBUF, LOOP2 ; 判定闹2的分是否与系统时间相等?MOV C, DPMOV C, DPMOV P3.3, C ; 蜂鸣器响半秒,停半秒MOV A, SECOND ; 定闹1分钟JNZ LOOPLOOP2: JB P3.2, LOOP7 ; 判断校时键是否按下? LOOP3: ACALL DISP ; 用于长时间按键时的显示MOV A, R4 ; 有校时键按下CJNE A, #00H, LOOP6 ; 校时键按下有1秒吗?LOOP4: ACALL ADD1 ; 校时键按下有1秒,则快调MOV R1, #40LOOP5: ACALL DISPDJNZ R1, LOOP5JNB P3.2, LOOP4 ; 校时键未放开,继续快调AJMP LOOP7 ;LOOP6: JNB P3.2, LOOP3 ; 校时键按下不到1秒,返回再判ACALL ADD1 ; 单次慢调MOV TL0, #0DCH ; 校时结束,秒初值置0MOV TH0, #0BHMOV SECOND, #00LOOP7: JB P3.3, LOOPALAM11: ACALL ADSP1 ; 用于设置定闹1时,长时间按键的显示MOV A, R4 ; 有定闹1键按下CJNE A, #00H, ALAM16 ; 定闹1键按下有1秒吗?ALAM12: ACALL AAD1 ; 定闹1键按下有1秒,则快调MOV R1, #50ALAM13: ACALL ADSP1DJNZ R1, ALAM13JNB P3.3, ALAM12MOV R1, #10 ; 定闹1快调结束,闪烁显示定闹时间8秒ALAM14: MOV R3, #40ALAM15: ACALL ADSP1DJNZ R3, ALAM15ACALL D400MSDJNZ R1, ALAM14AJMP AGAINALAM16: NOPJNB P3.3, ALAM11 ; 定闹1键按下不到1秒,返回再判ALAM17: ACALL AAD1 ; 定闹1单次慢调MOV R1, #10 ; 定闹1慢调结束,闪烁显示定闹时间12秒ALAM18: MOV R3, #40ALAM19: ACALL ADSP1DJNZ R3, ALAM19ACALL D400MSDJNZ R1, ALAM18AGAIN: JB P3.3, RETUN ; 返回主程序MOV R4, #08ALAM21: ACALL ADSP2 ; 用于设置定闹2时,长时间按键的显示MOV A, R4 ; 有定闹2键按下CJNE A, #00H, ALAM26 ; 定闹2键按下有1秒吗?ALAM22: ACALL AAD2 ; 定闹2键按下有1秒,则快调MOV R1, #50ALAM23: ACALL ADSP2DJNZ R1, ALAM23JNB P3.3, ALAM22MOV R1, #10 ; 定闹2快调结束,闪烁显示定闹时间9秒ALAM24: MOV R3, #40ALAM25: DJNZ R3, ALAM25ACALL D400MSDJNZ R1, ALAM24AJMP LOOPALAM26: JNB P3.3, ALAM21 ; 定闹2键按下不到1秒,返回再判ALAM27: ACALL AAD2 ; 定闹2单次慢调MOV R1, #10 ; 定闹2慢调结束,显示定闹时间9秒ALAM28: MOV R3, #40ALAM29: ACALL ADSP2DJNZ R3, ALAM29ACALL D400MSDJNZ R1, ALAM28RETUN: AJMP LOOP ; 返回主程序ADD1: MOV A, MBUF ; 分加1子程序,ADD A, #01 ; 分十进制加1DA AMOV MBUF, AANL A, #0FHMOV MBUF0, AMOV A, MBUFSWAP AANL A, #0FHMOV MBUF1, AMOV A, MBUFCJNE A, #60H, ADDOUTMOV MBUF0, #0MOV MBUF1, #0MOV MBUF, #0MOV A, HBUFADD A, #01 ; 时十进制加1DA AMOV HBUF, AANL A, #0FHMOV HBUF0, AMOV A, HBUFSWAP AANL A, #0FHMOV HBUF1, AMOV A, HBUFCJNE A, #24H, ADDOUTMOV HBUF0, #0MOV HBUF1, #0MOV HBUF, #0ADDOUT:MOV A,MBUF0CJNE A,#01H,T1MOV AA,MBUF1MOV MBUF1,#11T1: CJNE A,#02H,T2MOV MBUF1,AAMOV MBUF0,#11T2: RETAAD1: MOV A, AMBF1 ; 定闹1,分加1子程序,ADD A, #01DA AMOV AMBF1, AANL A, #0FHMOV A, AMBF1SWAP AANL A, #0FHMOV AMBF11, AMOV A, AMBF1CJNE A, #60H, AAD1OTMOV AMBF10, #0MOV AMBF11, #0MOV AMBF1, #0MOV A, AHBF1ADD A, #01DA AMOV AHBF1, AANL A, #0FHMOV AHBF10, AMOV A, AHBF1SWAP AANL A, #0FHMOV AHBF11, AMOV A , AHBF1CJNE A, #24H, AAD1OTMOV AHBF10, #0MOV AHBF11, #0MOV AHBF1, #0AAD1OT: RETAAD2: MOV A, AMBF2 ; 定闹2分加1子程序,ADD A, #01DA AMOV AMBF2, AANL A, #0FHMOV AMBF20, AMOV A, AMBF2SWAP AANL A, #0FHMOV AMBF21, AMOV A, AMBF2CJNE A, 60H, AAD2OTMOV AMBF20, #0MOV AMBF21, #0MOV AMBF2, #0MOV A, AHBF2ADD A, #01DA AMOV AHBF2, AANL A, #0FHMOV AHBF20, AMOV A, AHBF2SWAP AANL A, #0FHMOV AHBF21, AMOV A, AHBF2CJNE A, #24H, AAD2OTMOV AHBF20, #0MOV AHBF2, #0AAD2OT: RETDSPM0: MOVC A, @A+DPTR ; 白天分个位显示子程序SETB ACC.7MOV P1, ACLR P3.5ACALL DY1MSSETB P3.5ACALL DY1MSRETDSPM1: MOVC A, @A+DPTR ; 白天分十位显示子程序MOV C, DPMOV ACC.7, CMOV P1, ACLR P3.4ACALL DY1MSSETB P3.4ACALL DY1MSRETDSPH0: MOVC A, @A+DPTR ; 白天时个位显示子程序MOV C, DPMOV ACC.7, CMOV P1, ACLR P3.1ACALL DY1MSSETB P3.1ACALL DY1MSRETDSPH1: MOVC A, @A+DPTR ; 白天时十位显示子程序SETB ACC.7MOV P1, ACLR P3.0ACALL DY1MSSETB P3.0ACALL DY1MSRETDISP: MOV DPTR , #TAB1 ; 显示子程序,指向个位顺置管段码表首地址MOV A, MBUF0 ; 取分个位ACALL DSPM0 ; 调用分个位显示子程序MOV DPTR, #TAB2MOV A, MBUF1 ; 取分十位ACALL DSPM1 ; 调用分十位显示子程序MOV DPTR, #TAB1MOV A, HBUF0 ; 取时个位ACALL DSPH0 ; 调用时个位显示子程序MOV DPTR, #TAB1MOV A, HBUF1 ; 取时十位ANL A, #0FFHJNZ DISP1MOV A, #0AHDISP1: ACALL DSPH1 ; 调用时十位显示子程序RETNDPM0: MOVC A, @A+DPTR ; 夜间分个位显示子程序SETB ACC.7MOV P1, ACLR P3.5ACALL DY1MSSETB P3.5ACALL DY2MSRETNDPM1: MOVC A, @A+DPTR ; 夜间分十位显示子程序MOV C, DPMOV ACC.7,CMOV P1, ACLR P3.4ACALL DY1MSSETB P3.4ACALL DY2MSRETNDPH0: MOVC A, @A+DPTR ; 夜间时个位显示子程序MOV C, DPMOV ACC.7,CMOV P1, ACLR P3.1ACALL DY1MSSETB P3.1ACALL DY2MSRETNDPH1: MOVC A, @A+DPTR ; 夜间时十位显示子程序SETB ACC.7MOV P1, ACLR P3.0ACALL DY1MSSETB P3.0ACALL DY2MSRETNDISP: NOPMOV DPTR, # TAB1 ; 显示子程序,指向个位顺置管段码表首地址MOV A, MBUF0 ; 取分个位ACALL NDPM0 ; 调用分个位显示子程序MOV DPTR, #TAB2MOV A, MBUF1 ; 取分十位ACALL NDPM1 ; 调用分十位显示子程序MOV DPTR, #TAB1MOV A, HBUF0 ; 取时个位ACALL NDPH0 ; 调用时个位显示子程序MOV DPTR , # TAB1MOV A, HBUF1 ; 取时十位ANL A, #0FFHJNZ NDISP1MOV A, #0AHNDISP1: ACALL NDPH1 ; 调用时十位显示子程序RETADSP1: NOPMOV DPTR, #TAB1 ; 定闹1显示子程序,指向个位顺置管段码表首地址MOV A, AMBF10 ; 取定闹1分个位ACALL DSPM0 ; 调用分个位显示子程序MOV DPTR, #TAB2MOV A, AMBF11 ; 取定闹1分十位ACALL DSPM1 ; 调用分十位显示子程序MOV DPTR, #TAB1MOV A, AHBF10 ; 取定闹1时个位ACALL DSPH0 ; 调用时个位显示子程序MOV DPTR, #TAB1MOV A, AHBF11 ; 取定闹1时十位ANL A, #0FFHJNZ ADSP11MOV A, #0AHADSP11: ACALL DSPH1 ; 调用时十位显示子程序RETADSP2: MOV DPTR, #TAB1 ; 定闹2显示子程序,指向个位顺置管段码表首地址MOV A, AMBF20 ; 取定闹2分个位ACALL DSPM0 ; 调用分个位显示子程序MOV DPTR, #TAB2MOV A, AMBF21 ; 取定闹2分十位ACALL DSPM1 ; 调用分十位显示子程序MOV DPTR, #TAB1MOV A, AHBF20 ; 取定闹2时个位ACALL DSPH0 ; 调用时个位显示子程序MOV DPTR, #TAB1MOV A, AHBF21 ; 取定闹2时十位ANL A, #0FFHJNZ ADSP21MOV A, #0AHADSP21: CLR ACC.7ACALL DSPH1 ; 调用时十位显示子程序RETDY1MS: MOV R6, #250 ; 延时1ms子程序DY1M1: DJNZ R6, DY1M1RETDY2MS: MOV R6, #250 ; 延时2ms子程序DY2M1: NOPNOPDJNZ R6, DY2M1RETD100MS: MOV R7, #100 ; 延时100ms子程序D100M1: MOV R6, #250D100M2: DJNZ R6, D100M2DJNZ R7, D100M1RETD400MS: MOV R7, #200 ; 延时400ms子程序D400M1: MOV R6, #250D400M2: NOPNOPDJNZ R6, D400M2DJNZ R7, D400M1RETBEEP: CLR P3.3CPL LED ; LED旋转脉冲CPL LEDMOV R6, #10BEEP1: DJNZ R6, BEEP1SETB P3.3RETINTT1: NOPRETITAB1: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H ; 段码DB 92H, 82H, 0F8H, 80H, 90H, 0FFH,08HTAB2: DB 0C0H, 0F9H, 0A4H, 86H, 8BH ; 倒置段码DB 92H, 42H, 0F8H, 40H, 50H, 0FFH,01HEND第四节实验总结体会来到师大的第一次短学期,忙忙碌碌的三天,总的来说在余老师的指导下基本完成了实验的基本要求,但是离精通还差得很远,在以后的学习中还要继续努力。