基于AT89C52单片机的数字时钟系统设计.doc_第1页
基于AT89C52单片机的数字时钟系统设计.doc_第2页
基于AT89C52单片机的数字时钟系统设计.doc_第3页
基于AT89C52单片机的数字时钟系统设计.doc_第4页
基于AT89C52单片机的数字时钟系统设计.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PROTUES 仿真图protel 99e 硬件原理图元器件清单有需要的加我qq 981196812 下面是正文部分1 引言人类的生活和工作均离不开时钟。从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准确的测量和记录时间,人们一直在努力改进着计时工具。钟表的数字化,大力推动了计时的精确性和可靠性。1.1 课题背景近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的要求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。数字钟成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便1。在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性能价格比的不断提高,新一代产品的应用也越来越广泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能。小则可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大,体积小,质量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品2。随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。根据这种实际情况,设计了一个单片机多功能数字时钟,它可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制,同时又可以进行时钟校准和定点打铃。它可以执行不同的时间表(考试时间和日常作息时间)的打铃,可以任意设置时间。这种具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。在城市的主要营业场所、车站、码头等公共场所使用LCD数字电子钟已经成为一种时尚。但目前市场上各式各样的LCD数字电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大等缺点,因此有必要对数字电子钟进行改进。1.2 数字时钟的发展现状几种常用数字时钟设计方案:a) 基于微机系统的数字时钟设计计时单元由定时/计数器8253的通道0来实现。定时采用硬件计数和软件技术相结合的方式,即通过8253产生一定的定时时间,然后再利用软件进行计数,从而实现24小时制定时。8253定时时间到了之后产生中断信号,8253在中断服务程序中实现时、分、秒的累加。时间显示采用实验平台上的6个LED数码管分别显示时、分、秒,采用动态扫描方式实现。校时和闹铃定时通过键盘电路和单脉冲产生单元来输入。按键包括校时键、闹钟定时键、加1键和减1键等。报警声响用蜂鸣器产生,将蜂鸣器接到8255的一个端口,通过输出电平的高低来控制蜂鸣器的发声。系统硬件设计主要利用微机实验平台上的电路模块。硬件电路主要由键盘电路、单脉冲产生单元、8253定时计数器、8255并行接口单元、8259中断控制器、LED显示电路和蜂鸣器电路等等。b) 基于VHDL的数字时钟设计基于VHDL语言,用Top_Down的思想进行设计。用CN6无进位六进制计数器选择数码管的亮灭以及对应的数,循环扫描显示,用SEL61六选一选择器选择给定的信号输出对应的数送到七段码译码器。K4模块进行复位,设置小时和分,输出整点报时信号和时,分,秒信号。单元模块设计部分分三个部分,介绍数字钟选择显示数码管和对应的数模块CN6,信号选择模块SEL61,七段码译码器模块DISP和复位,秒,分,时显示,设置模块。c) 基于单片机数字时钟设计基于单片机的数字时钟设计是模块化设计,以单片机做主控制模块,控制时钟芯片、温度传感器芯片等,又将数据控制输出到显示模块。基于MCS-51单片机的数字时钟系统具有显示准确、直观、易于调整等特点。单片机自诞生以来给全世界人类的生活和工作起到了剧烈的变化,而MCS-51单片机是我国使用最早、最易掌握和应用的一款单片机。通过该系统的设计,对单片机的原理和功能有个比较系统和全面的掌握,初步学习到有关工程设计的方法和思路。这样以后的就业面会更加宽广,也可以满足当今社会对单片机开发人才的大量需求。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,录象机、摄象机,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。但是却很少知道它的内部结构以及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。输出设备显示器可以用液晶显示技术和数码管显示技术。 综上所述此基于单片机的数字时钟具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。值得我们进行深入的研究和了解。1.3 课题研究的意义多功能数字时钟的用途十分广泛,只要有计时的存在,便要用到数字时钟的原理及结构;同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费者的喜爱。随着人类科技文明的发展,人们对于时钟的要求在不断提高。时钟已不仅仅被看出一种用来显示时间的工具,在很多实际应用中它还需要能够实现更多其它的功能。高精度、多功能、小体积、低功耗,是现代时钟发展的趋势。在这种趋势下,时钟的数字化、多功能化已经成为现在时钟生产研究的主导设计方向3。1.4 本课题研究内容本论文主要研究基于单片机的数字时钟设计。当程序执行后,显示即时时间、年月日、星期、温度。设置4个操作键:K1:设置键;K2:上调键;K3:下调键;K4:确定键。本设计的主要内容:1、了解单片机技术的发展现状,熟悉数字时钟各模块的工作原理;2、选择适当的芯片和元器件,确定系统电路,绘制电路原理图,尤其是各接口电路;3、熟悉单片机使用方法和C语言的编程规则,编写出相应模块的应用程序;4、分别在各自的模块中调试出对应的功能,在Proteus软件上进行仿真。5、做出实物,调试出相应功能。2 系统设计 2.1 系统构成设计基于单片机的数字时钟和数字温度计,并将时间和温度直接的显示出来。设计初步思路:本设计由单片机、时钟电路、温度检测电路、显示电路、键盘接口5个模块组成。如下图2.1所示,单片机电 源时钟显示键盘部分温度检测 图2.1 系统框图2.2 模块芯片方案的选择2.2.1 单片机主控制部分的方案方案一用凌阳16位单片机设计。凌阳16位单片机有丰富的中断源和时基,方便本实验的设计。它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。但是,在控制与显示的结合上有些复杂,显示模组资源相对有限,而且单片机的稳定性不是很高。方案二主控芯片使用51系列AT89C52单片机,片内ROM全都采用Flash ROM,能以3V的超底压工作,同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。2.2.2 时钟芯片的方案 方案一直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二采用DS1302作为主要计时芯片,可以做到计时准确。更重要的是,DS1302可以在很小电流的后备电源(2.55V电源,在2.5V时耗电小于300nA)下继续计时,停电后时钟无需重新调整,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电,阳历、星期与年月日自动对应。2.2.3 测温部分的方案方案一使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二与前面相比,采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-55125,最大分辨率可达0.0625。采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。2.2.4 显示部分的方案方案一采用LED数码管动态扫描,虽然LED数码管价格适中, LED数码管显示容量有限,且动态扫描需要占用大量单片机时间,无法做到实时显示。所以在此设计中也不采用LED数码管。方案二采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形, 具有超精致影像画质、十足平面显示、节省空间、节省能源等优点。综上各方案所述,对此次设计的方案选定: 采用AT89C52作为主控制芯片,DS1302时钟芯片计时,DS18B20采集温度,LCD1602作为显示模块。3 硬件设计本电路是以AT89C52单片机为控制核心,该芯片具有在线编程功能,功耗低,能在3.3V的超低压下工作;时钟芯片采用DS1302,它是一款高性能、低功耗、自带RAM的实时时钟芯片,具有使用寿命长,精度高和功耗低等特点,同时具有掉电自动保存功能,可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,其工作电压为2.5V5.5V;温度检测模块由DS18B20构成,它采用独特的单线接口仅需一个端口引脚进行通讯, 具有测量精度高、测量范围广等优点,其测温范围在-55+125,工作电压为3v5.5v;显示部份使用1602液晶显示屏来实现,该显示屏具有低功耗、寿命长、可靠性高的特点,其工作电压为5v4。3.1 单片机模块的设计 本设计中的单片机主要负责对外设的控制和各个功能模块间的协调,没有复杂的数据计算,因此8位的51系列单片机足以胜任。51单片机以其低廉的价格以及出色的性能成了很多控制系统的首选。它具有丰富的内部资源,较大的数据,程序存储区。一个典型的单片机最小系统一般由时钟电路,复位电路,电源指示灯和尾部扩展接口等部分组成,本系统也不例外,当单片机具备了这些最基本的条件后,就可以正常工作了。单片机最小系统如图3.1所示,单片机的XTAL1和XTAL2引脚用于连接晶振电路。XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。RESET为复位引脚,连接复位电路,它用于对单片机进行初始化。复位电路包括复位电容,复位电阻和复位开关5。图3.1 单片机最小系统3.1.1 AT89C52单片机简介AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用.a)主要功能特性1)兼容MCS51指令系统;2) 8k可反复擦写(大于1000次)Flash ROM;3) 32个双向I/O口;4) 256x8bit内部RAM;5) 3个16位可编程定时/计数器中断;6) 时钟频率0-24MHz;7) 2个串行中断,可编程UART串行通道;8) 2个外部中断源,共6个中断源;9) 2个读写中断口线,3级加密位;10) 低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11) 有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品.b)管脚说明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)这是由于上拉的缘故。 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:来自反向振荡器的输出6。3.1.2 复位电路的设计复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这上状态开始工作。a)单片机常见的复位电路通常单片机复位电路有两种:上电复位电路,按键复位电路。上电复位电路:上电复位是单片机上电时复位操作,保证单片机上电后立即进入规定的复位状态。它利用的是电容充电的原理来实现的。按键复位电路:它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单的多。如果要实现复位的话,只要按下RESET键即可。它主要是利用电阻的分压来实现的在此设计中,采用的按键复位电路。按键复位电路如图3.2所示。图3.2 复位电路b)复位电路工作原理上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作。3.1.3 晶振电路的设计晶振电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,如图3.3中Y1、C1、C2。可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容7。图3.3 时钟振荡电路3.2 时钟电路模块的设计DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。图3.4所示为DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源。DS1302由VCC1或VCC2两者中的较大者供电。所以在主电源关闭的情况下,也能保持时钟的连续运行。X1和X2是振荡源,外接32.768KHz晶振用来为芯片提供计时脉冲。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电行动时,在VCC大于等于2.5V之前,RST必须保持低电平。在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端8。图3.4 DS1302的硬件接线图时钟芯片DS1302的工作原理:a) DS1302的控制字节DS1302控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出b) 数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。c) DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。3.3 温度传感器电路设计本设计的测温元件采用DS18B20数字温度传感器,该产品采用美国DALLAS公司生产的DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。使用DS18B20数字温度传感器,可以感测周围环境温度变化,并将数据传送给单片机进行处理,实现周围环境实时温度的监测。DS18B20具有独特的单线接口,只需1个接口引脚即可通信;多点能力使分布式温度检测应用得以简化;不需要外部元件;可用数据线供电,不需备份电源;测量范围从-55至+125,增量值为0.5。等效的华氏温度范围是-67F至257F;以9位数字方式读出温度;在1秒(典型值)内把温度变换为数字;用户可定义的,非易失性的温度告警设置;告诫搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情况);应用范围包括恒温控制,工业系统,消费类产品,温度计或任何热敏系统9。下图(图3.5)为DS18B20硬件接线图图3.5 DS18B20引脚接线引脚说明:GND为接地引脚;DQ为数据输入输出脚。用于单线操作,漏极开路;VCC接电源正;a) DS18B20的主要特性 1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。 2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 4)DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内。 5)温范围55125,在-10+85时精度为0.5。 6)可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。 7)在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。 8)测量结果直接输出数字温度信号,以一 线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 9)负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。DS18B20只需要接到控制器(单片机)的一个I/O口上,由于单总线为开漏所以需要外接一个4.7K的上拉电阻。DS18B20数据线是开漏结构,这就意味着,在没有数据的时候,总线处于什么样的状态是不确定的.加一个上拉电阻就可以使总线在空闲的时候处于高电平状态.b) DS18B20的供电方式DS18B20的供电方式有两种:寄生电源供电方式和外部电源供电方式。本设计采用外部电源供电方式(如图3.5),DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。 3.4 独立式键盘设计实现键盘控制的方法有多种,它可以用FPGA来进行控制,也可以用单片机来进行控制。在本系统中,我们采用了单片机来进行控制,因为单片机可以很好的解决键抖动。由若干个按键组成一个键盘,其电路结构可分为独立式键盘和矩阵式键盘两种。 独立式键盘每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的状态,矩阵式键盘按键排列为行列式矩阵结构,也称行列式键盘结构。4行4列共16个键,只占用8根I/O口线,键数目较多,可节省口线。本设计采用的是独立式键盘。键盘的工作方式可分为编程控制方式和中断控制方式。CPU在一个工作周期内,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;若有键操作,则进而判断是哪个键,并执行相应的键处理程序。这种方式为编程扫描方式。由于单片机在正常应用过程中,可能会经常进行键操作,因而编程控制方式使CPU经常处于工作状态, 在进行本次设计中,只涉及到了设置、上调、下调、确定四个功能。因此采用独立式键盘。如图3.6所示图3.6 按键设计3.5 显示模块的设计本设计中由于要对时间、温度进行显示,所以选择液晶显示屏1602模块作为输出。1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。 管脚功能如表3.1所示:表3.1 LCD1602引脚功能引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端。4RSRS为寄存器选择。5R/WR/W为读写信号线。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0底4位三态、 双向数据总线 0位(最低位)8DB1底4位三态、 双向数据总线 1位9DB2底4位三态、 双向数据总线 2位10DB3底4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)LCD1602主要管脚介绍:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生鬼影使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。RW为读写信号线端,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址;当RS为高电平RW 为低电平时可以写入数据。E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令10。图3.7 LCD液晶与单片机硬件连线图将L1602的RS端和P2.5,R/W端和P2.6, E 端和P2.7相连,当RS=0时,对LCD1602写入指令;当RS=1时,对LCD1602写入数据。当R/W端接高电平时芯片处于读数据状态,反之处于写数据状态,E端为使能信号端。当R/W为高电平,E端也为高电平,RS为低电平时,液晶显示屏显示需要显示的示数。图3.7为1602液晶显示屏与单片机的硬件连接图。4 软件设计软件部分主要包括:a)主程序,主流程图b)温度检测流程图和温度检测程序c)DS1302时钟流程图和时钟程序d)LCD显示程序和LCD显示流程图。程序主要应用Keil进行软件仿真开发。主要步骤为:1)编写源程序并保存;2)建立工程并添加源文件;3)设置工程;4)编译/汇编、连接,产生目标文件;5)程序调试。4.1 主流程图主流程图如图4.1所示。流程图分析:首先系统初始化,系统开始运行,当有设置键按下时进入修改时间模式,无按键按下时读取时间、温度等数据送入液晶屏显示;在修改时间模式下设置时间完成后再送数据到液晶屏显示。系统初始化显 示读时间设置时间读温度进入修改时间模式开 始设置键有否按下设置完成NYYN图4.1主流程图4.2 温度程序流程图温度读取流程图如图4.2所示。流程图分析:开始进入初始化DS18B20,就是通过主机拉低单线产生复位脉冲然后释放该线,如果有应答脉冲,即发起ROM命令当成功的执行操作命令后,就使用Convert T命令即开始温度转换,当转换完后,又初始化DS18B20是否有应答脉冲,若有,就发起Read Scratchpad(读取暂存器和CRC字节)命令,既同时读出第1,2个字节,即为温度的数据。YN初始化DS18B20初始化DS18B20读取第1,2字节极为温度数据发起convert命令发起Read Scrtchpad命令发起skipRom命令开 始应答脉冲NY应答脉冲延时1s等待温度转换完成图4.2温度显示流程图DS18B20是一种单总线数字式温度传感器,它与单片机之间采用的是串行数据传送,所以在对DS18B20进行读写操作时必须按照它的时序进行。一般访问DS18B20时按如下步骤进行:初始化;ROM操作命令;存储器操作命令;执行/数据。4.3 DS1302时钟程序流程图时钟流程图如图4.3所示。流程图分析:DS1302开始计时时,首先进行初始化,当有中断信号时,读取时钟芯片的数据送入液晶屏显示。这时若有设置键按下时,进行时间修改,完成后将数据送入时钟芯片;若没有按键按下,则直接存入EPROM,送入液晶屏显示。初始化送EPROM 读时钟芯片送显示送时钟芯片开中断开 始设置键有否按下?是否修改当前时间?NYYN图4.3 时钟流程图DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如图4.4所示。765432101RAMA4A3A2A1A0RDGKWR图4.4 DS1302的控制字控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。数据读写时序如图4.5、4.6所示。图4.5 单字节读图4.6 单字节写在进行任何数据传输时,RST必须被置高电平,每个SCLK为上升沿时数据被输入,下降沿时数据被输出。先把RST置低,禁止数据传输,SCLK置低,清零时钟总线,RST再置高,允许数据传输。传送完成后,RST置低,禁止字节的传送。4.4 LCD显示程序流程图显示程序流程图如图4.7。流程图分析:首先对1602显示屏进行初始化(初始化大约持续10ms左右),然后检查忙信号,若BF=0,则获得显示RAM的地址,写入相应的数据显示;若BF=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到BF=0为止。 对1602初始化写入显示设置命令延时5ms延时5ms 获得显示 RAM地址写入相应的数据检查忙信号开 始数据显示完毕?BF=0?NYYN结 束图4.7 LCD显示程序流程图1602通过D0D7的8位数据端传输数据和指令,其模块内的控制器有11条控制指令。当液晶显示屏的接口电路与单片机系统I/O按照并行数据传输方式连接完成以后,即可以对AT89C52单片机进行编程。在液晶屏完成显示之前首先要对液晶进行初始化。5 系统仿真与调试 调试包括:keil软件对程序进行编译与调试。根据硬件原理图,画出proteus仿真图,通过proteus对系统进行功能的仿真。最后调试做出实物,调试,得到正确的实物图效果。5.1 软件简介5.1.1 Keil软件简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。这款软件提供了丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的是,Keil C51软件编译后生成的汇编代码,就能展现出生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。Keil软件中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,可载入Proteus仿真软件中的MCU中,进行功能仿真。5.1.2 Proteus ISIS简介Proteus ISIS是英国Labcenter Electronics公司开发的电路分析与实物仿真软件。它由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,它运行于Windows操作系统上,用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。该软件的特点是:a)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。b)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2 C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。c)目前支持的单片机类型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。d)支持大量的存储器和外围芯片。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真ARM、51、AVR、PIC。Proteus启动画面:此外,ARES软件是一款高级的布线编辑软件,它采用了32位数据库的高性能PCB设计系统,以及高性能的自动布局和自动布线方法。集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计11。5.2 Keil软件调试流程首先选择菜单File-New,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c。然后选择菜单Project-New Project,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2),工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group Source Group1”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。加入文件后点close返回主界面,展开“Source Group1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-Option for Target Target1(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如果要写片,还必须在Output选项卡中选中“Creat Hex Fi”;其它选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。成功编译/汇编、连接后,选择菜单Debug-Start/Stop Debug Session(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-Step Over)、全速执行等多种运行方式进行程序调试12。图5.1仿真调试状态口如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-Inline Assambly),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug-Insert/Remove Breakpoint或Debug-Breakpoints等)。在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。Keil软件由于其强大的软件仿真功能,友好的用户界面以及易于掌握的特点,应用此软件来编写程序有着巨大的优势,熟悉此软件也是调试整个数字时钟系统的基础。5.3 Proteus软件运行流程Proteus ISIS的工作界面是一种标准的Windows界面,如图5.2所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。运行Proteus程序后,进入软件的主界面(如图5.2)。通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。Proteus ISIS的工作界面:图5.2 Proteus ISIS的工作界面按P在库中查找元器件如图5.3:图5.3 Pick Devices窗口将所需要的元器件放置好后,绘制成原理图如图5.4图5.4 proteus仿真数字时钟的原理图5.4 数字时钟的功能仿真模拟调试:当电路搭建好之后,选中单片机AT89C52,左键点击AT89C52,在出现的对话框里点击Program File按钮,找到刚才Keil软件编译得到的HEX文件,载入然后点击“OK”按钮就可以模拟了。点击模拟调试按钮的运行按钮,进人调试状态。最后得到仿真图,如图5.5所示,图5.5 系统仿真图5.5 系统调试数字时钟的电路系统比较复杂,对于焊接方面不可轻视,只要电路系统中出于一处的错误,就会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺破带有包皮的导线,则会对电路造成短路现象。在本次数字时钟的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的一个问题。问题:烧入程序后,LCD液晶显示屏不显示或者亮度不好。解决:不显示时首先使用万用表对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏的现象。若无此问题查看烧写的程序是否正确无误,对程序进行认真修改。当显示亮度不好时一遍旋转10K欧的滑动变阻器,一遍观看LCD显示屏,直到看到合适的亮度为止。 经过多次的反复调试试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力。同时在软件的编程方面得到更到的提高,对编程能力得到加强,同时对所学的知识得到很大的提高与巩固。如下为硬件图图5.6 实物图结 论本设计通过各种方案的比较与芯片的选择,最终确定以AT89C52单片机为主控制器,DS1302为时钟芯片计时,DS18B20温度采集,LCD1602液晶屏显示。以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。系统主要由单片机控制电路温度传感器电路,显示电路以及按键校正电路。硬件电路包括单片机模块的设计,时钟电路模块的设计,温度传感器的设计,独立式键盘的设计,显示模块的设计。其中单片机模块设计中,包括复位电路设计与晶振电路的设计。 软件设计包括主流程图,温度程序流程图,DS1302时钟程序流程图,LCD显示程序流程图。系统程序采用C语言编写,经Keil软件进行调试后在Proteus软件中进行仿真,能够准确显示时间,显示格式为:年,月,日,星期,时,分,秒,可通过按键随时进行时间调整,能够对时钟所在的环境温度进行模拟测量并显示。最后焊接实物,开始没有任何现象,通过调节电位器,调节了显示屏的对比度,得到了正确的数字时钟实物,验证了设计的可行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论