




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于51单片机的电子万年历设计毕业论文摘 要电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89C52单片机作为核心,功耗小,能在3V的低压工作,电压可选用35V电压供电。 万年历的设计过程在硬件与软件方面进行同步设计。硬件部分主要由AT89C52单片机,LED显示电路,以及调时按键电路等组成。为了能更轻松的控制这三片显示器,本人使用了3片74HC164来驱动。74HC164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。软件方面主要包括日历程序、时间调整程序,公历转阴历程序,显示程序等。程序采用C语言语言编写,以便更简单地实现调整时间及阴历显示功能。所有程序编写完成后,在keil uvision4软件中进行调试好后,在Proteus软件中进行仿真。关键词: DS1302; DS18B20; 动态扫描; 单片机 Electronic calendar design based on 51 MCUAbstractElectronic calendar day time is a very wide range of tools, increasingly popular in modern society. It can be timed to the year, month, day, Sunday, when, minutes and seconds, also has a leap year compensation and other functions, and the DS1302s long life, small error. For the digital electronic calendar using visual digital display, can display year, month, day, Sunday, when, minutes and seconds, and temperature and other information, is also a time-calibration functions. The circuit uses AT89C52 microcontroller as the core, power consumption is small, can work in low-voltage 3V, voltage can choose 35V supply voltage. The design process of the calendar synchronization in the hardware and software design. Hardware mainly by the AT89C52 microcontroller, LED display circuit, and when the key circuits etc. In order to the three display control more relaxed, I used 3 pieces of 74HC164 to drive. 74HC164 is a 8 bit edge-triggered shift register, serial input data, and then the parallel output. The software includes calendar program, time to adjust the procedure, turn the lunar calendar program, display program. Using C language, in order to more easily adjust the time and calendar display function. All programming is complete, the Keil for debugging uvision4 software, make sure there is no problem, embedded microcontroller simulation in Proteus software.34Key words: DS1302; DS18B20; Dynamic scanning; MCU目 录摘 要IAbstractII目 录11 绪论31.1 概述31.2 研究目的42 系统的硬件设计与实现52.1 电路设计框图52.2 系统硬件概述52.3 主要单元电路的设计62.3.1 单片机主控制模块的设计62.3.2 时钟电路模块的设计62.3.3 电路原理及说明72.3.4 显示模块的设计113 系统开发软件133.1 Proteus 仿真软件133.1.1 Proteus 仿真软件的特点133.1.2 Proteus ISIS 原理图设计133.2 Keil C51153.3 Proteus 与Keil的联调184 系统的软件设计204.1 程序流程框图204.2 程序的设计214.2.1 主电路设计214.2.2 键盘子程序设计224.2.3 日历时钟子程序设计254.2.4 显示子程序设计264.2.5 部分程序代码275 总结33参考文献34致 谢35附录1 外文参考文献(译文)36附录2 外文参考文献(原文)391 绪论 1.1 概述 在日新月异的21世纪里,家用电子产品得到了迅速发展。许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。并且已经深入到工业生产的各个环节以及人民生活的各个方面,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。用单片机来控制的小型家电产品具有便携实用,操作简单的特点。时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。本文设计的日历和时钟的显示广泛用于小型智能家用电子产品,如电子钟。利用单片机进行控制,实时时钟芯片DS1302进行记时,外加掉电存储电路和显示电路,可实现时间的调整和显示。电子钟既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。因而,此设计具有相当重要的现实意义和实用价值。时间,对人们来说是非常宝贵的,准确的掌握时间和分配时间对人们来说至关重要。因此自从时钟发明的那刻起,就成为人类的好朋友。随着时间的流逝,科学技术的不断发展和提高,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好、更方便、更精确的显示时间,这就要求人们不断设计研发出新型的时钟。高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校1。数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在单片机的应用系统中,时钟有两个方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时器/计数器来实现;二是用专门的时钟芯片实现2。由于51系列单片机的内部具有定时器/计数器的功能,因此采用51系列单片机里的AT89S51和LED数码管为核心,加以必要的电路,来构成了一个单片机电子时钟。1.2 研究目的 通过利用MCS-51单片机内部的定时器/计数器功能、中断系统功能、以及外围的按键和LED显示器等部件,设计一个基于单片机的万年历。设计的万年历通过数码管显示,并能通过按键对时间进行设置。2 系统的硬件设计与实现2.1 电路设计框图LCD1602液晶显示模块键盘模块AT89C52主控制模 块 电源模块DS1302时钟模块图2.1 电路设计框图2.2 系统硬件概述 本电路是由AT89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由个数码管,74ls138、74ls47译码器构成。使用动态扫描显示方式对数字的显示。AT89C52是一种低功耗、高性能CMOS 8位微控制器,使用 ATMEL 公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。并具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2.3 主要单元电路的设计2.3.1 单片机主控制模块的设计 AT89C52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端. 如图2.2所示 图2.2 主控制系统 2.3.2 时钟电路模块的设计 图2.3示出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进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。 图2.3 DS1302的引脚图2.3.3 电路原理及说明(1) 时钟芯片DS1302的工作原理: DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。图5为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表6为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。(2) DS1302的控制字节 DS1302的控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。(3) 数据输入输出(I/O) 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。(4) DS1302的寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表2-1。表2-1 DS1302的日历、时间寄存器写寄存器读寄存器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit080H81HCH10秒秒82H83H10分分84H85H12/24010时时AM/PM86H87H0010日日88H89H0010日日8AH8BH00000星期8CH8DH10年年8EH8FHWP0000000此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 低功耗时钟芯片DS1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义。采用DS1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中。在测量控制系统中,特别是长时间无人职守的测控系统中,经常需要记录某些具有特殊意义的数据及其出现的时间。记录及分析这些特殊意义的数据,对测控系统的性能分析及正常运行具有重要的意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许。而在系统中采用DS1302则能很好地解决这个问题。 DS1302的性能特性实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;用于高速数据暂存的318位RAM;最少引脚的串行I/O;2.55.5V 电压工作范围;2.5V时耗电小于300nA;用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;简单的3线接口;可选的慢速充电(至VCC1)的能力。DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:VCC1 在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;VCC2在双电源系统中提供主电源,在这种运用方式中,VCC1 连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由VCC1或VCC2中较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电;当VCC2小于VCC1时,DS1302由VCC1供电。DS1302数据操作原理DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。图2.4 DS1302管脚图如果在传送过程中置RST为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在VCC =2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的管脚图如图2.4所示,表2-2为各引脚的功能。表2-2 DS1302引脚功能表引脚号引脚名称功能1VCC2主电源2,3X1,X2振荡源,外接32768HZ晶振4GND地线5RST复位/片选线6I/O串行数据输入/输出端(双向)7SCLK串行时钟输入端8VCC1后备电源2.3.4 显示模块的设计LED显示器由若干个发光二极管组成,当发光二极管导通时,相应的一个笔画或一个点就发光。控制相应的管导通,就能显示出对应字符。各段LED显示器需要由驱动电路驱动。在七段LED显示器中,通常将各段发光二极管的阴极或阳极连在一起作为公共端。将各段发光二极管连在一起的叫共阳极显示器,用低电平驱动;将阴极连在一起的叫共阴极显示器,用高电平驱动。静态显示就是每一个显示器各笔画段都要独占具有一个锁存功能的输出口线,CPU把要显示的字形代码送到输出口上,就可以使显示器上显示所需的数字或符号,此后,即使CPU不在去访问它,因为各笔画段借口具有锁存功能,显示的内容也不会消失。动态显示是指显示器显示某一字符时,相应段的发光二极管恒定地导通或截止。静态显示有并行输出和串行输出两种方式。在本系统中数码管使用共阴极接法而且是用动态显示。图2.5 LED动态扫描显示图2.6系统电路图3 系统开发软件在当前的单片机开发行业中,仿真软件Proteus和编程软件Keil受到广大的行业人员的青睐。用Proteus与Keil相结合的方式使得单片机实验更加方便。本章详细的介绍了Proteus和Keil软件的特点和使用方法,介绍了Proteus与Keil的联合调试。3.1 Proteus 仿真软件3.1.1 Proteus 仿真软件的特点Proteus是世界上著名的EDA仿真软件,是由英国Labcenter electronics公司开发的,它可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。该软件提供智能原理图设计系统、SPICE模拟电路、数字电路及MCU器件混合仿真系统和PCB设计系统功能。其不仅可以仿真传统的电路分析实验、模拟电子线路实验、数字电路实验等,而且可以仿真嵌入式系统的实验, Proteus软件从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 3.1.2 Proteus ISIS 原理图设计Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它的工作界面是一种标准的Windows界面,如图3.1所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。Proteus ISIS 设计单片机电路的基本步骤:(1)新建设计文件夹或打开一个现有的设计文件。图3.1 Proteus主界面(2)通过关键字或分类检索选择元器件。(3)将元器件放入设计窗口,如下图3.2所示。图3.2 Proteus设计窗口(4)添加其他模型,如电源、地线、信号源等,以及添加相关的虚拟仪器。(5)编辑和连接电路。(6)编写单片机所需的源程序。(7)加入源程序,并通过构造,得到仿真程序或目标程序。(8)根据需要,设置对象的属性,如将单片机的“Program File”属性设置为上述仿真调试程序或目标程序。(9)启动仿真功能,对电路进行仿真操作,验证其功能。3.2 Keil C51Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,是目前功能最强大的单片机C语言集成开发环境。Keil C51生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 Keil开发单片机程序的步骤如下:(1)工程的建立执行菜单命令“工程(Project)新建工程(New Project)”出现创建新工程对话框,起一个工程名,并在下拉列表中选择单片机厂家和型号,这里选择Atmel公司的89C51,单击“确定”按钮。(2)工程属性的设置根据不同的软件配置和仿真调试情况,需要对工程属性进行设置:鼠标右击工程窗口下的“Target 1”,然后选择“目标属性(Option for target 1)”,出现工程属性对话框。该对话框有8个选项卡,大部分设置取默认值即可。其中下列两张选项卡需要进行设置:“输出(Output)”选项卡设置如图3.3所示图3.3 输出属性设置图目标文件夹默认为工程文件所在的文件夹,一般不需修改。可以单击“选择obj文件”按钮进行查看和修改。勾选“生成HEX文件”则在构造时会产生HEX格式的目标文件。这是Intel公司提出的数据格式,所有数据使用16进制数字表示。在Proteus ISIS中进行单片机仿真调试时需要用到这种格式文件;构造实际的单片机应用系统时,也需要将这种格式的文件下载到单片机程序存储器中。“调试(Debug)”选项卡设置Keil提供两类调试方法。一是在Keil中进行软件仿真调试,这时应选“使用仿真器”。二是配合硬件仿真器或电路仿真软件进行程序和电路的联合调试,这时要选“使用:Proteus VSM Simulator”选项,提供的vdmagdi.exe,安装后在此处的列表中将会出现“Proteus VSM Simulator”选项,供于ISIS进行程序和电路的联调使用。如果Keil和ISIS在同一台计算机上运行,则需单击“设置”,填入运行ISIS计算机的IP地址,端口号为8000。还要说明的是,两者联调时,要在ISIS中选择“DEBUG”菜单下的“Use remote debug monitor”。(3)源文件的建立和添加Keil内集成有一个文本编辑器,故可以在集成环境中直接进行源程序的输入。编辑器支持语法着色功能,即对添加到工程中的源程序,不同语法成分用不同颜色着色表示,例如,关键字用蓝色表示,以便查看和发现错误。但该文本编辑器对汉字的支持较差,故程序注释最好使用英文或汉语拼音。执行、菜单命令“文件(File)新建(New)”,在源程序窗口会出现一个新的文件输入窗口,可在该窗口里输入源程序。输入完毕后,选择“文件(File)保存(Save)”,输入文件名,把文件保存在工程目录中。文件取名时必须加上扩展名,汇编程序以.ASM或.A51为扩展名保存,C程序以扩展名.C保存。图3.4 调试属性的设置程序编写完成以后,并不会自动出现在工程窗口中,还需要同过以下的操作将其加入工程.鼠标左键单击“Source group 1”,在出现的快捷菜单中选择“增加文件到(ADD Files to Group“Source group 1”)”,出现添加文件的对话框,选择相应源程序即可。在工程中添加源文件也可以通过相应的菜单操作完成:“工程(Project)目标,组和文件(Targets Groups Files)。”Keil 默认加入文件格式为C语言源文件,因此在默认情况下,“文件类型”下拉列表框中不显示该文件夹下的汇编文件。要显示汇编语言源文件,需要单击“文件类型”下拉列表框右侧的下三角按钮,弹出下拉列表,选择“Asm Source file(*.a*;*.src)”,这时才会将文件夹下的“*.asm”文件显示出来。鼠标左键双击要加入的文件,或单击要加入的文件后单击“Add”按钮,都可以将该文件加入到工程中。如图3.4所示。回到主界面,加入的文件即出现在工程管理器“Source Group 1”上午下一级菜单中,双击该文件名,将在右边编辑窗口打开该文件,可以进行第一步编辑。(4)构造目标程序设置好工程并添加了源程序文件后,即单击构造目标框上的相关构造工具或按快捷键进行目标构造,即对工程进行汇编或编译、连接,最终生成目标文件*.HEX等相关文件。构造过程中,有关信息将出现在屏幕下方输出窗口中的“Build(构造)”页中。如果程序中有语法错误,这里会出现错误报告;双击错误报告行,可以定位到源程序中相关的出错行。对源程序反复修改后,最终构造后输出窗口中应出现“0错误”或“0Error”,表示程序已没有语法错误。构造的目标文件*.HEX被用于下载到单片机芯片中。这一过程中,在工程文件夹中还会生成其他一些文件,如*.LST列表文件、*.obj目标文件*.M51程序符号列表文件。在设计和调试状态下均可以直接修改程序的源代码,但是必须重新构造工程或文件才能得到修改后的目标程序.如对源程序做了修改,必须对工程重新进行构造,从而产生新的目标文件,否则Keil 调试所使用的目标文件仍然是上次构造的。3.3 Proteus 与Keil的联调(1)下载并安装Proteus 与Keil软件。(2)安装完毕后,把Proteus 7 ProfessionalMODELS目录下的 VDM51.dll文件复制到 KeilC51BIN 文件夹下。 (3)用记事本或者其它的编辑软件,打开Keil 根目录下的 TOOLS.INI 文件,在C51 栏目下加入 TDRV3=BINVDM51.DLL (Proteus VSM Monitor-51 Driver ) ,其中“TDRV3” 中的 “3”要根据实际情况写,不要和已有的TDRV重复即可。(4)keil的设置。把C:Program FilesLabcenter ElectronicsProteus 6 Professional SAMPLES中的8051 LCD Driver”文件夹复制到新建的Proteus文件夹下。运行keil程序,在8051 LCD Driver文件夹下建立一个新的名为8051 LCD Driver工程。单片机的型号可选择AT89C52,把LCDDEMO 文件加到Source Group 1组里。点击工具栏的option for target按钮,在出现的对话框里点击Debug,在右栏上部的下拉菜单里选中 Proteus VSM Monitor-51 Driver,还要点击一下Use前面的小圆点。点击Setting设置通信接口,在Host后面添上127.0.0.1,如果想换一台电脑,在这里添上另一台电脑的IP地址即可。在Port后面添上8000。点击OK按钮。最后把工程编译一下再运行。(5)Proteus的设置。运行Proteus的ISIS,进入主界面后鼠标左键点击菜单DEBUG,选中use remote debugger monitor。再用鼠标左键点击菜单File,点击Load Design,导入8051 LCD Driver文件夹下的LCDDEMO.design文件。要把keil的工程和Proteus的文件放到同一个目录下,即Proteus的工程文件要和Keil工程的那个文件夹在同一层目录下。(6)调试并运行。打开keil,按Ctrl+F5进入调试界面或者点击工具栏的调试按钮。如果不能进入调试界面,可能设置有误,按照上面的步骤再重新设置一下。进入了调试界面,按F5或者点击工具栏的调试按钮,全速运行,再看看ISIS,观察其变化。连接成功以后,就可以开始调试程序了,调试成功后再点击运行按钮运行程序得到运行效果。4 系统的软件设计4.1 程序流程框图开始初始化读、写日期、时间和温度分离日期时间温度显示值显示子程序农历自动更新子程序日期、时间修改子程序闰月子程返回定时闹铃子程序 图4.1 主程序流程图主程序才用模块化设计,流程图如图4.1所示。从上面主程序看出,主程序的组成是通过分别调用各子程序组成总体系统功能,能很直观的看出主程序所要完成的功能,首先是初始化各模块,之后调用键盘完成时间的调整,调用日历子程序完成日历时钟的初始化和时间数据的读写,调用显示子程序显示数据,最后又转到键盘程序来回循环。初始化部分主要有初始化定时器部分和和一些寄存器、标志位、初始化时间等。对定时器T0初始化时,首先置初值,CPU开中断,定时器T0开中断,并且开始计数,而对定时器T1初始化时,首先置初值,定时器T1关中断,并且停止计数,只有收到命令时才能产生中断。寄存器的初始化主要是初始化执行程序时用到的部分RAM空间,防止程序执行时带来混乱。标志位初始化是对时间调整时判断是调分还是调时等而专设的位标志,初始化过程中标志位全部置0,即开始时是处于显示状态,而不是调整状态,这一点在程序中相当明了。初始化时间是开机时显示的时间,并通过调用日历时钟的写程序来完成时间的置初值。4.2 程序的设计4.2.1 主电路设计主电路的功能是完成年、月、日、星期、时、分、秒之间的转换, 再送往LED显示,并且接受键盘操作,对日期和时间进行校正。电路原理图如图4.2所示,显示部分用P0口做为输出数据接到LED数码管a到h,并接74ls244做为各段的驱动(为了简化电路图在此用了8个上拉电阻代替74ls244)。用P3口的低3位接译码器的A0,A1,A2端,用P3.3,P3.4,P3.5分别接译码器的使能端,通过控制P3口来控制LED的动态扫描。单片机的18和19引脚接12MHZ的晶振,并接两个22PF的电容同时接地,单片机复位端接一极性电容并连接到电源处,在极性电容的负极接一10K的电阻,并连接至地做为放电用。本设计用到四个独立式键盘分别接到P1口的低4位,用P1口的P1.4,P1.5,P1.6接日历时钟的使能端和时钟端及数据输入输出口,并在日历时钟上接一32.768KHZ的晶振,并接两个22PF的电容终端和地相连,各芯片的电源部分分别接到有开关式电源产生的5V电源上,芯片的接地端都接在公共地上,在这里接电源部分就不再一一详述。设计采用动态显示,轮流扫描各个LED使之显示相应的数型码,当扫描频率大于人眼所能识别的频率时就看不到闪烁现象。动态显示的亮度不如静态显示,但静态显示占用的I/O口资源较多,往往用移位寄存器74LS164等来扩充其I/O口不足的情况,当显示位数较多时,这样势必增加硬件开销,增大成本,不利于开阔市场。本设计的突出之处在于硬件电路简单,大大减少了硬件开销,这样又势必增加了软件开发的难度,但降低了成本有利于市场的开阔。图4.2电路原理图4.2.2 键盘子程序设计多功能键盘程序的设计是本设计的难点,也是完成本设计的重点,当有键按下时,调用10ms延时程序,再判断是否有键按下无则返回,若有先调用显示程序再判断是否松开,否则再转到显示程序,这样避免了在按键松开之前能正常显示。其中K1键功能最多,通过判断K1键按下的次数来判断是调时间还是定时,并对对应的位置闪烁。本键盘深度为7级,即连续按下K1键8次时则返回到原来界面。当判断键值为1时则为调秒状态,对应的秒低位闪烁,为2时为调分状态并分闪烁,为3时为调时状态并时闪烁,为4时为调日状态并日闪烁,为5时为调月状态并月闪烁,为6时为调年状态并年闪烁,为7时为调星期状态并星期闪烁。 K2为加1键,K3为减1键,K4为总返回键,即在调时见时不用只有按下K1键值为8才返回,而通过按下K4键即可返回。由于键盘流程图非常复杂,在此只表示秒,如图4.3所示,其余略。N开始 有键按下?延时10msK2按下?K3按下?K4按下?K1按下?调显示K1为0?键值加1Y调显示有键按下?键值清0标志位清0返回回 NNNYNYN下页1YYY下页31键值为1?调显示秒闪烁秒标志位置1K2按下?K3按下?秒减1秒数据送DS1302秒加13YNYY键值为?N。图4.3 键盘子程序流程图4.2.3 日历时钟子程序设计DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。日历时钟DS1302的读写需要初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机启动写时序开始,如果要求单总线器件回送是低位在先。读写都是16位数据高8位是地址低8位是数据,在读写时要严格遵从其读写时序,否则读写将会失效。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平,这一点我们要一定注意。当RST置为高电平时,在串行时钟的SCLK的上升沿,DS1302从I/O端口读入一位数据,8个串行时钟脉冲就可以读入一字节的数据。在串行时钟的下降沿,DS1302向I/O端口输出一位数据,8个串行时钟脉冲就可以输出一字节的数据。显示子程序设计电子产品是否实用其中显示占了很重要的地位,很多数人都渴求用视觉效果好,范围广,直观明了,LED符合以上的要求,但相应的硬件设计相对复杂。RST置1开 始发送1位命令码命令码8位送完?写一位数据数据写完?RST置0(a)时钟写结 束开 始RST置1发送1位命令码命令码8位送完?读一位数据数据读完?RST置0结 束(b) 时钟读图4.4 日历时钟的写和读NYYYYNNN4.2.4 显示子程序设计本设计的显示部分具有消隐和闪烁功能,当时分秒等高位为0时显示消隐, 此时在读时间时更加明了,但低位不能显示消隐。闪烁功能也是本设计的一个难点,本设计采用8个位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际融资租赁合同
- 畜牧业合作社养殖废弃物处理协议
- 仅用于招聘面试的工作证明声明(5篇)
- 植物学分类与鉴别能力考核试题
- 行政管理经济法前景展望试题及答案
- 思想政治教育学科授课
- 酒店业服务质量提升与管理手册
- 影视制作公司与剧组合作协议
- 畜牧养殖合作与产品供应保障协议
- 水利水电工程前沿研究领域试题及答案
- 妇科常用方歌(珍藏版)-滋血汤方歌之欧阳理创编
- GB/T 35544-2017车用压缩氢气铝内胆碳纤维全缠绕气瓶
- 2022中国流动人口发展报告
- 《无人机结构与系统》第1章 无人机结构与飞行原理
- 中国交通文化
- 肠道病毒(共33张PPT)
- DB33T 2540-2022 生物安全实验室管理评价规范
- 2023届高三语文模拟试卷及参考答案2023年全国高考(北京卷)语文及试题解析
- 清华大学抬头信纸
- 设备一级保养表(行吊)
- 《教育心理学电子书》word版
评论
0/150
提交评论