2022年单片机系统的电子钟设计方案与仿真.docx
精品学习资源基于单片机系统的电子钟设计与仿真王金胜摘 要近年来随着运算机在社会领域的渗透和大规模集成电路的进展,单片机的应用正在不断地走向深化,由于它具有功能强,体积小,功耗低,价格廉价,工作牢靠,使用便利等特点,因此越来越广泛地应用各个领域 .本文的电子钟系统是以单片机 <AT89C51)为核心,时钟芯片 DS1302、数码管显示驱动芯片 MAX7219等元器件组成;详细介绍应用 Proteus 的 ISIS 软件进行单片机系统的电子钟设计与仿真的实现方法;该方法既能精确验证所设计的系统是否满意技术要求 , 又能提高系统设计的效率和质量 , 降低开发成本 , 具有推广价值;关键词: 单片机; 时钟芯片 ;数码管显示驱动芯片; Proteus ;电子钟Design and Simulation Of electronic clock Based on Single-chip SystemwangjinshengAbstractIn recent years, with computers in the infiltration and the development of large-scale integrated circuits. SCM application is steadily deepening, as it has strong function, small size, low power dissipation, low prices, reliable, easy to use features, it is particularly suited to and control of the system, increasingly widely used in various fields.Thisarticle describes an electronic bellsystem is single-chip microcomputerAT89C51> as the core, the clock chip DS1302, LED display driver chip components, such as MAX7219 component.Describes the application of Proteus's ISIS software of the electronic single-chip system clock to achieve the design and simulation methods in details.The method can not only test the property of the system precisely,but also improve development efficiency and reduce development cost,which values in popularity.Key words: AT89C51 ; DS1302; MAX7219 ;Proteus; electronics clock欢迎下载精品学习资源目 录第一章绪论. 21.1 引言 21.2 Proteus 软件简介 2其次章系统设计2.1 电子钟系统器件挑选 332.1.1 AT89C51单片机简介 .32.1.2实时时钟电路 DS1302工作原理 .62.1.3 MAX7219工作原理简介 .82.2 电子钟系统设计流程 .11第三章硬件电路设计. 123.1 Protel DXP 电路图设计 .123.2 Proteus 电路图设计 12第四章软件设计. 144.1 程序流程图设计 .144.2 源程序设计 .144.3 KeilC51 进行程序调试 18第五章系统调试与仿真.195.1 Proteus 中 Hex 文件挑选 .195.2 Proteus 进行电子钟系统仿真 .20终止语21参考文献.21致谢.21欢迎下载精品学习资源第一章 绪 论1.1 引 言随着半导体技术的飞速进展,以及移动通信、网络技术、多媒体技术在嵌入 式系统设计中的应用,单片机从4 位、8 位、16 位到 32 位,其进展历程始终受到广大电子爱好者的极大关注;单片机功能越来越强大,价格却不断下降的优势无疑 成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到 基于单片机系统的开发行列中,推动着单片机技术的创新进步;然而传统的单片机系统开发除了需要购置诸如仿真器、编程器、示波器等价格不菲的电子设备外,开发过程也较繁琐;来自英国Labcenter Electronics公司的Proteus软件很好地诠释了利用现代EDA工具便利快捷开发单片机系统的优势;它 包括 PROTEUS VSM<Virtual System Modelling )、 PROTEUS PCB DESIG两N大组成部分,在 PC 机上就能实现原理图电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证以及形成PCB文件的完整嵌入式系统设计与研发过程;单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面 ,其调试过程一般分为软件调试、硬件测试、系统调试3 个过程;假如采纳单片机系统的虚拟仿真软件Proteus ,就不用制作详细的电路板也能够完成以上工作;1.2 Proteus 软件简介PROTEU软S 件由 Labcenter 公司开发,是目前世界上最先进、最完整的嵌入式系统设计与仿真平台,可以实现数字电路、模拟电路及微掌握器系统与外设的混合 电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计等功能,是目前唯独能够对各种处理器进行实时仿真、调试与测试的EDA工具;微掌握器系统相关的仿真需建立编译和调试环境,可挑选Keil C51uVision2软件;该软件支持众多不同公司的芯片,集编辑、编译和程序仿真等于一体,同时仍支持 PLM、汇编和 C语言的程序设计;它的界面友好易学,在调试程序、软件仿真方面有很强大的功能; 其革命性的功能是:将电路仿真和微处理器仿真进行协同,直接在基于原理图的虚拟原型上进行处理器编程调试,并进行功能验证,通过动态器件如电机、 LED、LCD、欢迎下载精品学习资源开关等,实时看到运行后的输入、输出的成效,协作系统配置的虚拟仪器如示波器、规律分析仪等, Proteus为我们建立了完备的电子设计开发环境;欢迎下载精品学习资源其次章系统设计2.1 电子钟系统硬件组成电子钟系统硬件主要由 AT89C51单片机、时钟芯片 DS1302、数码管显示驱动芯片MAX7219等元器件组成;AT89C51是一种带 4K 字节闪耀可编程可擦除只读储备器的低电压,高性能位微处理器,俗称单片机CMOS8DS1302 是美国 DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时;MAX7219是 MAXIM公司生产的串行输入 / 输出共阴极数码管显示驱动芯片;单片机晶振电路8位LED 显示单片机复位电路时钟芯片DS1302AT89C51单片机数码管显示驱动芯片MAX7219蜂鸣器按键电路图 2.1 电子钟系统硬件电路组成框图2.1.1 AT89C51 单片机简介AT89C51 是一 种带 4K 字节 闪耀 可编程可擦除 只读 储备器<FPEROM Falsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8位微处理器,俗称单片机; AT89C2051是一种带 2K 字节闪耀可编程可擦除只读储备器的单片机;单片机的可擦除只读储备器可以反复擦除100 次;该器件采纳 ATMEL高密度非易失储备器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容;由于将多功能 8 位 CPU和闪耀储备器组合在单个芯片中, ATMEL的 AT89C51是一种高效微掌握器, AT89C2051是它的一种精简版本; AT89C单片机为许多嵌入式掌握系统供应了一种敏捷性高且价廉的方案;欢迎下载精品学习资源图 2.11 AT89C51 单片机1. 主要特性与 MCS-51 兼容 4K 字节可编程闪耀储备器 寿命: 1000 写/ 擦循环 数据保留时间: 10 年 全静态工作: 0Hz-24Hz 三级程序储备器锁定 128*8 位内部 RAM 32可编程 I/O 线 两个 16 位定时器 / 计数器 5 个中断源可编程串行通道低功耗的闲置和掉电模式 片内振荡器和时钟电路2. 管脚说明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外部中断 0P3.3 /INT1外部中断 1P3.4 T0记时器 0 外部输入P3.6 /WR外部数据储备器写选通P3.7 /RD外部数据储备器读选通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:来自反向振荡器的输出;振荡器特性 :XTAL1和 XTAL2 分别为反向放大器的输入和输出;该反向放大器可以配置为片内振荡器;石晶振荡和陶瓷振荡均可采纳;如采纳外部时钟源驱动器件, XTAL2应不接;有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必需保证脉冲的高低电平要求的宽度;2.1.2 实时时钟电路 DS1302工作原理1.DS1302 的结构及工作原理DS1302 是美国 DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作 电压为 2.5V 5.5V ;采纳三线接口与 CPU进行同步通信,并可采纳突发方式一次传送多个字节的时钟信号或 RAM数据; DS1302内部有一个 31×8 的用于暂时性存放数据的 RAM寄存器; DS1302是 DS1202的升级产品,与 DS1202兼容,但增加了主电源/ 后背电源双电源引脚,同时供应了对后背电源进行涓细电流充电的才能;2. 引脚功能及结构欢迎下载精品学习资源图 2.12 DS1302 芯片图示表出 DS1302 的引脚排列 , 其中 Vcc1 为后备电源, VCC2 为主电源;在主电源关闭的情形下,也能保持时钟的连续运行;DS1302由 Vcc1 或 Vcc2 两者中的较大者供电;当 Vcc2 大于 Vcc1 0.2V 时, Vcc2 给 DS1302 供电;当 Vcc2 小于 Vcc1 时, DS1302由 Vcc1 供电; X1 和 X2 是振荡源,外接 32.768kHz 晶振; RST是复位 / 片选线,通过把 RST输入驱动置高电平来启动全部的数据传送;RST 输入有两种功能:第一, RST 接通掌握规律,答应地址 / 命令序列送入移位寄存器;其次, RST供应终止单字节或多字节数据的传送手段;当RST 为高电平常,全部的数据传送被初始化,答应对DS1302 进行操作;假如在传送过程中RST 置为低电平,就会终止此次数据传送, I/O 引脚变为高阻态;上电运行时,在Vcc2.5V 之前, RST必需保持低电平;只有在 SCLK为低电平常,才能将 RST置为高电平; I/O 为串行数据输入输出端 双向>, SCLK始终是输入端;3. DS1302 的寄存器DS1302有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 BCD码形式 ,此外, DS1302 仍有年份寄存器、掌握寄存器、充电寄存器、时钟突发寄存器及与 RAM相关的寄存器等;时钟突发寄存器可一次性次序读写除充电寄存器外的全部寄存器内容; DS1302 与 RAM相关的寄存器分为两类:一类是单个RAM单元,共 31 个,每个单元组态为一个 8 位的字节,其命令掌握字为 C0H FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写全部的 RAM的 31 个字节,命令掌握字为 FEH写>、FFH读>;欢迎下载精品学习资源2.1.3 MAX7219 工作原理简介MAX7219是 MAXIM公司生产的串行输入 / 输出共阴极数码管显示驱动芯片,一片MAX7219可驱动 8 个 7 段<包括小数点共 8 段)数字 LED、LED条线图形显示器、或64 个分立的 LED发光二级管;该芯片具有 10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置全部LED的段电流;它的操作很简洁, MCU只需通过模拟 SPI 三线接口就可以将相关的指令写入MAX7219的内部指令和数 据寄存器,同时它仍答应用户挑选多种译码方式和译码位;此外它仍支持多片7219串联方式,这样 MCU就可以通过 3 根线<即串行数据线、串行时钟线和芯片选通线)掌握更多的数码管显示 ;图 2.1.3.1 DS1302 芯片 MAX7219 的外部引脚安排欢迎下载精品学习资源1. 引脚安排及功能图 2.1.3.2MAX7219的内部引脚安排各引脚的功能为:DIN:串行数据输入端DOU:T 串行数据输出端,用于级连扩展LOAD:装载数据输入 CLK:串行时钟输入 DIG0DIG7: 8 位 LED位选线,从共阴极 LED中吸入电流 SEG ASEG G DP7 段驱动和小数点驱动ISET:通过一个 10k 电阻和 Vcc 相连,设置段电流2. 寄存器介绍MAX7219内部的寄存器如下列图,主要有:译码掌握寄存器、亮度掌握寄存器、扫描界限寄存器、关断模式寄存器、测试掌握寄存器;编程时只有正确操作这些寄存器, MAX7219才可工作;欢迎下载精品学习资源图 2.1.3.3MAX7219 内部的相关寄存器分别介绍如下:()译码掌握寄存器 <X9H)如下列图, MAX7219有两种译码方式: B 译码方式和不译码方式;当挑选不译码 时, 8 个数据为分别一一对应 7 个段和小数点位; B 译码方式是 BCD译码,直接送数据就可 以显 示; 实际 应用中 可以 按位 设置 选 择 B 译码 或是不 译码方 式 ;图 2.1.3.4 MAX7219的译码掌握寄存器()扫描界限寄存器 <XBH)如下列图,此寄存器用于设置显示的LED 的个数<18),比如当设置为 0xX4 时,LED 05显示;欢迎下载精品学习资源图 2.1.3.4 MAX7219的扫描界限掌握寄存器()亮度掌握寄存器 <XAH)共有 16 级可挑选,用于设置 LED的显示亮度,从 0xX00xXF()关断模式寄存器 <XCH)共有两种模式挑选,一是关断状态, <最低位 D0=0)一是正常工作状态 <D0=1);2.2 电子时钟系统设计流程Protel DXP与 Proteus电路设计源程序设计生成目标代码基于 Proteus仿真图 2.2 基于 Proteus的单片机系统设计流程欢迎下载精品学习资源第三章硬件电路设计3.1 电路原理图设计图 3.1 Protel DXP 设计的电子钟电路原理图主要元器件功能介绍:AT89C51是一种带 4K 字节闪耀可编程可擦除只读储备器的低电压,高性能CMOS8位微处理器,俗称单片机;DS1302 是美国 DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时;具有调时功能;时钟操作可通过 AMPM指示打算采纳 24 或 12 小时格式;MAX7219是 MAXIM公司生产的串行输入 / 输出共阴极数码管显示驱动芯片;采纳三线制串行接口技术进行数据传送,可直接与单片机连接,用户能便利地修改内部参数实现多位 LED数码管显示;内含有硬件动态扫描显示掌握,每块芯片可驱动8 个LED数码管;欢迎下载精品学习资源3.2 Proteus 电路图设计运行 Proteus的 ISIS后显现程序主窗口界面,鼠标左键单击窗口左侧的元器件 工具栏的 component. 按钮,接着再点击窗口左侧的元器件挑选区的Pick Divices. 按 钮 , 弹 出 如 图 1所 示 的 PickDevices窗 口 , 再 在 Categ栏 里 点 击MicroprocessorICs项后,在 Results栏里会显现各种类型的CPU 器件,找到AT89C51后双击, AT89C51就被添加到当前窗口左侧的元器件列表区了;欢迎下载精品学习资源用同样的方法依次把DS130、MAX721、9加到器件列表区里;数码管、晶振以及多个电阻、电容也添欢迎下载精品学习资源然后再依次点击列表区里的器件,单击左键把他们放到绘图区,右键选中元件, 并编辑其属性,合理布局后,进行连线;连线时当鼠标的指针靠近一个对象的引脚 时,跟着鼠标的指针 r ICs就会显现一个“×”提示符号,点击鼠标左键即可画线了,需要拐弯时点击一下即可,在终点再点击确认一下就画出了一段导线,全部导 线画完后,点击工具栏的 Inter-sheeTerminal.按钮,添加上电源和接地符号,原理图的绘制就完成了;图 3.2.2Proteus 中设计的电子时钟系统原理图欢迎下载精品学习资源第四章 软件设计4.1 程序流程图设计开头MAX7219初始化DS1302初始化从 DS1302读取时间时间送MAX7219显示图 4.1 系统程序流程图4.2 源程序设计以下为部分源程序: #include "AT89X51.H" #include "delay.h" #include "max7219.c" #include "music.c"#define uchar unsigned char#define uint unsigned int idata sbit ADD=P11 ;欢迎下载精品学习资源sbit SUB=P10 ;sbit ACC0 = ACC0 ;sbit ACC7 = ACC7 ;void showDayvoid> ;/ 显示时间void showDatavoid>;/ 显示日期void showDishivoid>;/ 显示定时void int_0void>;/ 中断 0void int_1void>;/ 中断 1void flash_max7219unsigned char n>;/ 闪一个位 max7219/*/*实时时钟模块时钟芯片型号: DS1302 */*/*/sbit T_CLK = P23; /* 实时时钟时钟线引脚 */ sbit T_IO = P24; /* 实时时钟数据线引脚 */ sbit T_RST = P25; /* 实时时钟复位线引脚 */*/void v_RTInputByteuchar ucDa>; /往 DS1302写入 1Byte 数据uchar uc_RTOutputBytevoid>;/从 DS1302读取 1Byte 数据void v_W1302uchar ucAddr, uchar ucDa>;/ 往 DS1302写入数据uchar uc_R1302uchar ucAddr>;/ 读取 DS1302某地址的数据/void v_BurstW1302Tuchar *pSecDa>;/ 往 DS1302 写入时钟数据 多字节方式>/void v_BurstR1302Tuchar *pSecDa>;/ 读取 DS1302时钟数据/void v_BurstW1302Ruchar *pReDa>;/ 往 DS1302 寄存器数写入数据 多字节方式>/void v_BurstR1302Ruchar *pReDa>;/ 读取 DS1302寄存器数据void v_Set1302uchar *pSecDa>;/ 设置初始时间 , 输入: pSecDa:初始时间地址;初始时间格式为 :秒 分 时 日 月 星期 年void v_Get1302uchar ucCurtime>;/ 读取 DS1302当前时间欢迎下载精品学习资源ucharshowTime8=0,0,10,0,0,10,0,0;/显示的时间*全局变量uchar setTime2=0,0;/ 定时的设定uchar time7=0,0x59,0x19,0x24,0x7,0x01,0x08;/ 秒 分 时 日 月 星期年uchar Tmod=7;/ 此时的调剂模式void main>delay_ms200> ;/sound> ;initMAX7219> ;/ 初始化 max7219 cls> ;/ 清屏 max7219/v_Get1302& time>;/v_Set1302& time>;EX0=1;EX1=1;IT1=1 ;/ 下降沿触发IT0=1 ;EA=1;/ 开中断v_Get1302& time> ;showDay>;/int_1>;/int_0>;while1>v_Get1302& time> ;showDay>;if setTime0=time2>&&setTime1=time1>>sound>;/*显示时间void showDayvoid>欢迎下载精品学习资源/ 将数据转化为显示格式showTime7=time0 & 0x0f;/ 个位showTime6=time0>>4;/ 十位showTime4=time1 & 0x0f;showTime3=time1>>4;showTime1=time2 & 0x0f;showTime0=time2>>4;showTime2=showTime5=10 ;disp_88& showTime> ;/*显示日期void showDatavoid>showTime7=time3 & 0x0f;showTime6=time3>>4;showTime4=time4 & 0x0f;showTime3=time4>>4;showTime1=time6 & 0x0f;showTime0=time6>>4;showTime2=showTime5=10 ;disp_88& showTime> ;/*显示定时void showDishivoid>showTime1=setTime0 & 0x0f;showTime0=setTime0>>4;showTime4=setTime1 & 0x0f;showTime3=setTime1>>4;showTime6=12 ;showTime7=13 ;showTime2=showTime5=10 ;disp_88& showTime> ;欢迎下载精品学习资源4.3 KeilC51 进行程序调试欢迎下载精品学习资源第五章 系统调试与仿真5.1 Proteus 中 Hex 文件挑选系统仿真分析电路原理图在ISIS里设计完成,并将系统软件编译成 .Hex 文件, 再进行电子时钟的系统虚拟仿真;<1)在 ISIS的原理图中,右键单击AT89C51 将其选中,然后单击左键打开AT89C51的 Edit Component对话框,如下图所示;图 5.1 Edit Component 对话框<2)挑选相应的 .Hex 文件,再在 Proteus ISIS编辑窗口的 File菜单中挑选Save Design选项,储存设计,生成 .DSN文件;欢迎下载精品学习资源5.2 Proteus 进行电子钟系统仿真在 Proteus ISIS的 Debug菜单中挑选 Execute,运行程序,系统仿真结果如下图所示;实现功能:当进入调整功能时,按第一个键K1 进行减运算,按其次个键K2 进行加运算;按下第三个键 K3, 实现日期 时间调整及 定时功能,等数字闪耀后,按一二键进行加减,从而可以进行详细日期时间调整;当定时设定后,到预定时间后,系统通过C51 音乐程序演唱歌曲 - 八月桂花;按下第四个键 K4,可以进行时间日期切换, 8 位 LED 数码管将显示时间或日期,采纳 24 小时制;时间显示格式为:时 - 分- 秒;日期显示格式为:日 - 月- 年;具有实时显示当前运算机系统时间和日期的功能;图 5.2 Proteus 系统仿真结果欢迎下载精品学习资源终止语本文的电子钟系统是以单片机<AT89C51)为核心,时钟芯片 DS1302、数码管显示驱动芯片 MAX7219等元器件组成;详细介绍应用Protel DXP进行电路原理图设计, Keil C51软件调试程序以及 Proteus的 ISIS软件进行单片机系统的电子钟设计与仿真;实现了硬件软化的目的;欢迎下载