




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE单片机课程设计报告题目硬件定时液晶显示时钟设计学院电信学院专业电气工程及其自动化学生姓名学号200910316122年级09级指导教师职称讲师2012年6月25日硬件定时液晶显示时钟的设计摘要:本设计的主要任务是实现液晶定时时钟的显示,用到的硬件有微控制器AT89C51,时钟芯片DS1302,液晶显示屏LCD1602.DS1302时钟芯片内含有一个实时时钟/日历和31个字节静态RAM,实时时钟/日历能提供2100年之前的秒、分、时、日、日期、月、年等信息,时钟操作可通过AM/PM指示决定采用24小时或12小时格式。首先设定时钟DS1307的各寄存器地址,然后对LCD初始化,在对时钟读写时间,最后在LCD上显示。并且通过按键来修改和定时日期和时间,我们的显示结果在实验台上显示结果,通过连接实验台上的相关器件,运行仿真之后会在液晶显示屏上显示相关内容,其中第一行显示年月日,第二行显示时分秒。关键词:AT89C51单片机DS1302LCD1602目录第1章引言………………………11.1研究背景…………………11.2课程设计的目的………………………11.3课程设计内容……………1第2章总体方案设计……………22.1硬件定时液晶显示时钟的设计方案证…………………22.2方案选择…………………2第3章硬件系统设计…………33.1总电路设计……………33.2器件的介绍……………33.2.1MCS-51系列单片机……………33.3.2钟芯片DS1302简介……………3.3.3键盘的介绍………………………8第4章软件系统设计…………104.1软件程序思想………………………104.2流程图…………………104.3汇编语言源程序清单…………………11第5章系统仿真…………185.1KEIL51介绍………………………185.2PROTEUS介绍………………………185.3仿真过程及仿真结果…………………195.3.1硬件调式…………………195.3.2软件调试…………………195.3.3仿真结果…………………20第6章结束语…………………21参考文献…………………………22PAGE22第1章引言研究背景随着计算机科学与技术的飞速发展,计算机的应用已经渗透到国民经济与人们生活的各个角落,正在日益改变着传统的人类工作方式和生活方式,而单片机技术又作为计算机技术中的一个独立分支,有着性价比高,集成度高,体积小,可靠性高,控制功能强大,低功耗,低电压,便于生产,便于携带等特点,所以得到越来越广泛的应用,特别是在工业控制和仪表仪器智能化中起极其重要的作用.本文利用单片机强大的控制功能和内部定时器重要部件,设计了一款把时、分、秒用LCD显示的并且通过用按键来修改日期火热时间的电子钟。数字电子钟系统设计已经成熟,但是目前系统设计时基本都是采用LED作为显示电路,造成硬件电路复杂、功耗高、产品体积庞大等特点;液晶显示模块由于具有低功耗、寿命长、体积小、显示内容丰富、价格低、接口控制方便等优点,因此在各类电子产品中被极广泛地推广和应用。字符型液晶显示模块是一类专门用于显示字母、数字、符号等点阵式液晶显示模块。本系统设计采用字符型液品显示模块LCD1602作为显示器件,这样不仅简化了系统的硬件设计,而且极大地提高了系统的可靠性。1LCD1602简介字符型液晶显示模块LCD1602已经是单片机应用设计中最常用的信息显示器件。LCD1602可以显示两行,每行16个字符,采用+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。1.2课程设计的目的单片机课程设计是单片机课程后续学习阶段的一个重要的实践学习环节,它既能增强学生对所学课程内容的理解和综合,也能培养学生的综合应用及设计能力,同时,还可以拓宽课程内容和培养创新意识。1.3课程设计内容设计一个单片机硬件定时液晶显示时钟。要求:采用应用广泛的微控制器AT89C51,系统采用12MHz的晶振;时钟芯片采用DS1302;显示器采用LCD1602;实时显示年、月、日和秒、分、时,时间以24小时为一个周期;通过按键K1,K2,K3来修改日期和时间,达到定时的目的。第2章总体方案设计2.1硬件定时液晶显示时钟的设计方案单片机电子时钟方案选择主要涉及两个方面:计时方案和显示方案。方案一:计时方案单片机电子时钟计时有两种方法:第一种是通过单片机内部的定时器/计数器,采用软件编程来实现时钟计时,这种实现的时钟一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合;第二种是采用专用的硬件时钟芯片计时,这种实现的时钟一般称为硬时钟。专用的时钟芯片功能比较强大,除了自动实现基本计时外,一般还具有日历和闰年补偿等功能,计时准确,软件编程简单,但硬件成本相对较高,通常用在对时钟精度要求较高的场合。方案二:显示方案对于电子时钟而言,显示是另一个重要的环节。显示通常采用两种方式:LED数码管显示和LCD液晶显示。其中LED数码管显示亮度高,显示内容清晢,根据具体的连接方式可分为静态显示和动态显示,在多个数码管时一般采用动态显示,动态显示时须要占用CPU的大量时间来执行动态显示程序,显示效果往往和显示程序的执行相关。LCD液晶显示一般能显示的信息多,显示效果好,而且液晶显示器一般都带控制器,显示过程由自带的控制器控制,不须要CPU参与,但液晶显示器造价相对较高。软件计时LED数码管显示的单片机电子时钟总体设计框图,硬件定时LCD液晶显示的单片机电子时钟总体设计框图如图2.1、2.2所示。51单片机时钟电路复位51单片机时钟电路复位电路LED按键51单片机时钟电路复位电路LCD按键时钟芯片图2.1软件计时LED显示时钟总体框图图2.2硬件定时LCD显示时钟总体框图2.2方案选择从节省功耗,体积,I/O口的节省,本设计采用硬件定时LCD液晶显示的单片机电子时钟总体设计,如上图2.2所示。单片机扩展的LCD显示器用来显示秒、分、时计数单元中的值。整个设计包括两大部分:硬件部分和软件部分,以单片机为核心,配以一定的外围电路和软件。硬件是整个系统的基础,软件部分则要合理、充分地支持和使用系统的硬件,从而完成系统所要完成的任务。该时钟系统主要由时钟模块、液晶显示模块、键盘控制模块组成。能够准确显示时间(显示格式为时时:分分:秒秒,24小时制),可随时进行时间调整。设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。第3章硬件系统设计3.1总电路设计图3-1硬件定时LCD显示时钟硬件电路图硬件定时LCD液晶显示时钟的具体硬件电路如图3-1所示,其中单片机采用应用广泛的AT89C52,系统时钟采用12MHz的晶振,时钟芯片采用DS1302,显示器采用LCD1602,DS1302复位线与89C52单片机的P1.2相连,时钟线SCLK与P1.3相连,数据线I/O与P1.4相连,DS1302的X1和X2接32kHz晶体,VCC2接主电源Vcc,VCC1接备用电源(3V的电池)。LCD1602的数据线与89C52的P2口相连,RS与P1.7相连,R/与P1.6相连,E端与P1.5相连。也只设定3个开关K0、K1和K2,通过P1口低3位相连。其中K0键为模式选择键,K1为加1键,K2为减1健。K0没有按下,则正常走时,K0按第一次,则可调年,按第二次,则可调月,按第三次,则可调日,按第四次,则可调小时,按第五次,则可调分,按第六次,则又回到正常走时。3.2器件的介绍3.2.1MCS-51系列单片机AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路[2]。同时,AT89C52可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。1.MCS-51系列单片机的基本组成虽然MCS-51系列单片机的芯片有多种类型,但它们的基本组成相同。MCS-51单片机的基本结构如图3-2所示。 图3-2MCS-51的基本结构2.MCS-51系列单片机的内部结构MCS-51单片机的内部结构框图如图3-3所示。图3-3MCS-51内部结构图由图3-3可以看到:它集成了中央处理器(CPU)、存储器系统(RAM和ROM)、定时/计数器、并行接口、串行接口、中断系统及一些特殊功能寄存器(SFR)。它们通过内部总线紧密地联系在一起。它的总体结构仍是通用CPU加上外围芯片的总线结构。只是在功能部件的控制上与一般微机的通用寄存器加接口寄存器控制不同,CPU与外设的控制不再分开,采用了特殊功能寄存器集中控制,使用更方便。内部还集成了时钟电路,只需外接石英晶体就可形成时钟。另外注意,8031和8032内部没有集成ROM。3.MCS-51系列单片机的中央处理器(CPU)MCS-51单片机的中央处理器包含运算部件和控制部件。运算部件以算术逻辑运算单元ALU为核心,包含累加器ACC、B寄存器、暂存器、标志寄存器PSW等许多部件,且能实现算术运算、逻辑运算、位运算、数据传输等处理。控制部件是单片机的控制中心,它包括定时和控制电路、指令寄存器、指令译码器、程序计数器PC、堆栈指针SP、数据指针DPTR以及信息传送控制部件等。它先以振荡信号为基准产生CPU的时序,从ROM中取出指令到指令寄存器,然后在指令译码器中对指令进行译码,产生执行指令所需的各种控制信号,送到单片机内部的各功能部件中,指挥各功能部件产生相应的操作,完成对应的功能。具体控制过程本书不作描述。4.MCS-51系列单片机的存储器结构MCS-51单片机的存储器结构与一般微机的存储器结构不同,分为程序存储器ROM和数据存储器RAM。程序存储器存放程序、固定常数和数据表格,数据存储器用作工作区及存放数据,两者完全分开。程序存储器和数据存储器都有各自的寻址方式、寻址空间和控制系统。程序存储器和数据存储器从物理结构上可分为片内和片外两种。它们的寻址空间和访问方式也不相同。5.MCS-51单片机中断系统在计算机执行程序的过程中,由于计算机内部事件或外部事件,软件事件或硬件事件,使CPU从当前正在执行的程序中暂停下来,而转去执行预先安排好的、处理该事件所对应的服务程序(中断服务程序),执行完服务程序后,再返回被暂停的位置继续执行原来的程序,这个过程称为中断。图3-4中断过程示意图1)中断源MCS-51单片机提供5个(52子系列提供6个)硬件中断源:两个外部中断源(P3.2)和(P3.3),两个定时/计数器T0和T1的溢出中断TF0和TF1;1个串行口发送T1和接收R1中断。1) 外部中断和外部中断源和的中断请求信号从外部引脚P3.2和P3.3输入,主要用于自动控制、实时处理、单片机掉电和设备故障的处理。外部中断请求和有两种触发方式:电平触发及跳变(边沿)触发。这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。特殊功能寄存器TCON在定时/计数器中使用过,其中高4位用于定时/计数器控制,前面已介绍。低4位用于外部中断控制,形式如图3-5所示。TCOND7D6D5D4D3D2D1D0(88H)TF1TR1TF0TR0IE1IT1IE0IT0图3-5定时/计数器控制寄存器TCON2) 定时/计数器T0和T1中断当定时/计数器T0(或T1)溢出时,由硬件置TF0(或TF1)为“1”,向CPU发送中断请求,当CPU响应中断后,将由硬件自动清除TF0(或TF1)。3) 串行口中断MCS-51的串行口中断源对应两个中断标志位:串行口发送中断标志位TI和串行口接收中断标志位RI。无论哪个标志位置“1”2)中断允许控制MCS-51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许寄存器IE的各位来控制的。中断允许寄存器IE的字节地址为A8H,可以进行位寻址,各位的定义如图3-6所示。IED7D6D5D4D3D2D1D0(A8H)EAET2ESET1EX1ET0EX0图3-6中断允许寄存器IE各项说明具体如下。EA:中断允许总控位。ET2:定时器/计数器T2的溢出中断允许位,只用于52子系列,51子系列无此位。ES:串行口中断允许位。ET1:定时器/计数器T1的溢出中断允许位。EX1:外部中断的中断允许位。ET0:定时器/计数器T0的溢出中断允许位。EX0:外部中断的中断允许位。如果置“1”,则开放的相应的中断;如果清“0”,则禁止相应的中断。系统复位时,中断允许寄存器IE的内容为00H,如果要开放某个中断源,则必须使IE中的总控位置位和对应的中断允许位置“1”。3)优先级控制MCS-51单片机有5个中断源,为了处理方便,每个中断源有两级控制:高优先级和低优先级。通过由内部的中断优先级寄存器IP来设置,中断优先级寄存器IP的字节地址为B8H,可以进行位寻址,各位定义如图3-7所示。IPD7D6D5D4D3D2D1D0(B8H)PT2PSPT1PX1PT0PX0图3-7中断优先级寄存器IP各项说明具体如下。PT2:定时器/计数器T2的中断优先级控制位,只用于52子系列。PS:串行口的中断优先级控制位。PT1:定时器/计数器T1的中断优先级控制位。PX1:外部中断的中断优先级控制位。PT0:定时器/计数器T0的中断优先级控制位。PX0:外部中断的中断优先级控制位。如果某位被置“1”,则对应的中断源被设为高优先级;如果某位被清零,则对应的中断源被设为低优先级。对于同级中断源,系统有默认的优先权顺序,默认的优先权顺序如表3-1所示。表3-1同级中断源的优先级顺序中断源优先级顺序外部中断0定时/计数器T0中断外部中断1定时/计数器T1中断串行口中断定时/计数器T2中断最高最低通过中断优先级寄存器IP改变中断源的优先级顺序可以实现两个方面的功能:改变系统中断源的优先级顺序和实现二级中断嵌套。通过设置中断优先级寄存器IP能够改变系统默认的优先级顺序。例如,要把外部中断的中断优先级设为最高,其他的按系统默认的顺序,则把PX1位设为1,其余位设为0,五个中断源的优先级顺序就为:T0T1ES。3.2.2钟芯片DS1302简介DS1302时钟芯片内含有一个实时时钟/日历和31个字节静态RAM,实时时钟/日历能提供2100年之前的秒、分、时、日、日期、月、年等信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24小时或12小时格式。内部含有31个字节静态RAM,可提供用户访问。DS1302与单片机之间能简单地采用同步串行的方式进行通信,使得管脚数量最少,与单片机通信只需RES(复位线)、I/O(数据线)和SCLK(串行时钟)三根信号线;对时钟、RAM的读/写,可以采用单字节方式或多达31个字节的字符组方式;工作电压范围宽:2.0~5.5V;与TTL兼容,VCC=5V;温度范围宽,可在-40C~+85C正常工作;采用主电源和备份电源双电源供电,备份电源可由电池或大容量电容实现;DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。DS1302可采用8脚DIP封装或SOIC封装,引脚图如图3-8所示。图3-8DS1302的引脚图引脚功能如下。X1、X2:32.768kHz晶振接入引脚。GND:地。:复位引脚,低电平有效。I/O:数据输入/输出引脚,具有三态功能。SCLK:串行时钟输入引脚。VCC1:电源1引脚。VCC2:电源2引脚。在单电源与电池供电的系统中,VCC1提供低电源并提供低功率的备用电源。双电源系统中,VCC2提供主电源,VCC1提供备用电源,以便在没有主电源时能保存时间信息以及数据,DS1302由VCC1和VCC2两者中较大的供电。3.2.3键盘的介绍1.键盘的基本原理键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合,按下后可向计算机产生一脉冲波。按键开关的结构和产生的波形如图3-9示。
(a)键盘开关的结构(b)键盘产生的波形图3-9键盘开关及波形示意图在图3-9(a)中,当按键开关未按下时,开关处于断开状态,向P1.1输入高电平;当按键开关按下时,开关处于闭合状态,向P1.1输入低电平。因此可通过读入P1.1的高低电平状态来判断按键开关是否按下。2.抖动的消除在单片机应用系统中,通常按键开关为机械式开关,由于机械触点的弹性作用,一个按键开关在闭合时往往不会马上稳定地接通,断开时也不会马上断开,因而在闭合和断开的瞬间都会伴随着一串的抖动,如波形如图3-10所示。按下键位时产生的抖动称为前沿抖动,松开键位时产生的抖动称为后沿抖动。如果对抖动不作处理,会出现按一次键而输入多次,为确保按一次键只确认一次,必须消除按键抖动。消除按键抖动通常有硬件消抖和软件消抖两种方法。图3-10抖动波形示意图硬件消抖是通过在按键输出电路上添加一定的硬件线路来消除抖动,一般采用R-S触发器或单稳态电路,图3-11是由两个与非门组成的R-S触发器消抖电路。平时,没有按键时,开关倒向下方,上面的与非门输入高电平,下面的与非门输入低电平,输出端输出高电平。当按下按键时,开关倒向上方,上面的与非门输入低电平,下面的与非门输入高电平,由于R-S触发器的反馈作用,使输出端迅速的变为低电平,而不会产生抖动波形,而当按键松开时,开头回到下方时也一样,输出端迅速的回到高电平而不会产生抖动波形。经过图中的R-S触发器消抖后,输出端的信号就变为标准的矩形波。图3-11硬件消抖电路软件消抖是利用延时程序消除抖动。由于抖动时间都比较短,因此可以这样处理:当检测到有键按下时,执行一段延时程序跳过抖动,再去检测,通过两次检测来识别一次按键,这样就可以消除前沿抖动的影响。对于后沿抖动,由于在接收一个键位后,一般都要经过一定时间再去检测有无按键,这样就自然跳过后沿抖动时间而消除后沿抖动了。当然在第二次检测时有可能发现又没有键按下,这是怎么回事呢?这种情况一般是线路受到外部电路干扰使输入端产生干扰脉冲,这时就认为没有键输入。在单片机应用系统中,一般都采用软件消抖。第4章软件系统设计4.1软件程序思想根据系统的功能将软件程序划分为以下几个部分:系统主程序、DS1302驱动程序、LCD驱动程序。在主程序中调用DS1302驱动程序和LCD驱动程序,另外在主程序中还包含按键处理。4.2流程图主程序流程图如图4-1所示,先是将LCD初始化,其次在LCD显示日期和时间的提示信息,然后进入死循环,在循环中先判断是否有键按下,如按下K0键,则功能单元加1;如按下K1键,则根据功能单元的内容把日期时间相应位加1;如按下K2键,则根据功能单元的内容把日期时间相应位减1;并把修改后的日期时间写入1302(在这个过程中注意日期时间的数据格式的转换)。其次读DS1302日历时钟寄存器,读出的内容存入日期、时间缓冲区;最后把日期、时间缓冲区数转化为ASCII码放入LCD显示缓冲区并调用LCD显示程序显示。图4-1主程序流程图4.3汇编语言源程序清单汇编语言程序:T_RSTBitP1.2 ;DS1302复位线引脚T_CLKBitP1.3 ;DS1302时钟线引脚T_IOBitP1.4 ;DS1302数据线引脚RSBITP1.7 ;LCD1602控制线定义RWBITP1.6EBITP1.5K0BITP3.0 ;定义按键 K1BITP3.1K2BITP3.2;40h~46h存放"秒、分、时、日、月、星期、年"的初值;格式按寄存器中的格式;30h~36h存放1302读出的秒、分、时、日、月、星期、年的大小。;37H单元为功能计数器。;********************************************* ORG 0000H AJMP MAIN ORG 0030HMAIN:MOVSP,#50H ACALLINIT MOVA,#80H ;写入显示缓冲区起始地址为第1行第1列开始显示DATE: ACALLWC51R MOVA,#'D' ACALLWC51DDR MOVA,#'A' ACALLWC51DDR MOVA,#'T' ACALLWC51DDR MOVA,#'E' ACALLWC51DDR MOVA,#':' ACALLWC51DDR MOVA,#0C0H ;写入显示缓冲区起始地址为第2行第1列开始显示TIME: ACALLWC51R MOVA,#'T' ACALLWC51DDR MOVA,#'I' ACALLWC51DDR MOVA,#'M' ACALLWC51DDR MOVA,#'E' ACALLWC51DDR MOVA,#':' ACALLWC51DDRREP:LCALL KEYSCAN ;调键盘程序修改日期时间 LCALL GET1302 ;读取当前日期时间到40H~46HMOVR0,#40H;40H~46H日期时间格式转换成日期时间数据放入30H~36H MOV R1,#30H MOV R2,#07REP1:MOV A,@R0 SWAP A ANL A,#0FH MOV B,#10 MUL AB MOV @R1,A MOV A,@R0 ANL A,#0FH ADD A,@R1 MOV @R1,A INC R0 INC R1 DJNZ R2,REP1MOVA,#86H ;写入显示缓冲区起始地址为第1行第7列开始显示当前日期 ACALLWC51R MOV A,46H ;年拆分成十位与个位,转换字符显示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR MOVA,#'-' ACALLWC51DDR MOV A,44H ;月拆分成十位与个位,转换字符显示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR MOVA,#'-' ACALLWC51DDR MOV A,43H ;日拆分成十位与个位,转换字符显示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR MOVA,#'' ACALLWC51DDR MOVA,#0c6H ;写入显示缓冲区起始地址为第2行第7列开始显示当前时间 ACALLWC51R MOV A,42H ;小时拆分成十位与个位,转换字符显示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR MOVA,#':' ACALLWC51DDR MOV A,41H ;分拆分成十位与个位,转换字符显示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR MOVA,#':' ACALLWC51DDR MOV A,40H ;秒拆分成十位与个位,转换字符显示 MOV B,#10H DIV AB ADD A,#30H ACALLWC51DDR MOV A,B ADD A,#30H ACALLWC51DDR LJMPREP;按键程序,无键按下返回,有键按下修改时间并写入1302KEYSCAN:JNBK0,KEYSCAN0 JNBK1,KEYSCAN1 JNBK2,KEYSCAN2 RETKEYSCAN0:LCALLDL10MS JBK0,KEYOUTWAIT0: JNBK0,WAIT0 INC37H MOVA,37H CJNEA,#06H,KEYOUT MOV37H,#00 SJMPKEYOUTKEYSCAN1:LCALLDL10MS JBK1,KEYOUTWAIT1: JNBK1,WAIT1 MOVA,37H CJNEA,#01H,KSCAN11 INC36H MOVA,36H CJNEA,#100,KEYOUT MOV36H,#00 SJMPKEYOUTKSCAN11:CJNEA,#02H,KSCAN12 INC34H MOVA,34H CJNEA,#13,KEYOUT MOV34H,#01 SJMPKEYOUTKSCAN12:CJNEA,#03H,KSCAN13 INC33H MOVA,33H CJNEA,#32,KEYOUT MOV33H,#01 SJMPKEYOUTKSCAN13:CJNEA,#04H,KSCAN14 INC32H MOVA,32H CJNEA,#24,KEYOUT MOV32H,#00 SJMPKEYOUT KSCAN14:CJNEA,#05H,KEYOUT INC31H MOVA,31H CJNEA,#60,KEYOUT MOV31H,#00 SJMPKEYOUT KEYOUT:LCALLNUMTOTT ;调转换程序把30H~36H日期时间数据转换成期时间格式放入40H~46H LCALL SET1302 ;设定的日期时间写入1302 RETKEYSCAN2:LCALLDL10MS JBK2,KEYOUTWAIT2: JNBK2,WAIT2 MOVA,37H CJNEA,#01H,KSCAN21 DEC36H MOVA,36H CJNEA,#0FFH,KEYOUT MOV36H,#99 SJMPKEYOUTKSCAN21:CJNEA,#02H,KSCAN22 DEC34H MOVA,34H CJNEA,#00H,KEYOUT MOV34H,#12 SJMPKEYOUTKSCAN22:CJNEA,#03H,KSCAN23 DEC33H MOVA,33H CJNEA,#00H,KEYOUT MOV33H,#31 SJMPKEYOUTKSCAN23:CJNEA,#04H,KSCAN24 DEC32H MOVA,32H CJNEA,#0FFH,KEYOUT MOV32H,#23 SJMPKEYOUTKSCAN24:CJNEA,#05H,KEYOUT DEC31H MOVA,31H CJNEA,#0FFH,KEYOUT MOV31H,#59 SJMPKEYOUTNUMTOTT:MOV R0,#40H ;30H~36H日期时间数据转换成日期时间格式放入40H~46H MOV R1,#30H MOV R2,#07REP2: MOV A,@R1 MOV B,#10 DIV AB SWAP A ORL A,B MOV @R0,A INC R0 INC R1 DJNZ R2,REP2 ;WRITE子程序 ;功能:写DS1302一字节,写入的内容在B寄存器中 ;*********************************************WRITE:MOV50h,#8 ;一个字节有8个位,移8次INBIT1: MOVA,B RRCA ;通过A移入CY中 MOVB,A MOVT_IO,C ;移入芯片内 SETBT_CLK CLRT_CLK DJNZ50h,INBIT1 RET ;********************************************* ;READ子程序 ;功能:读DS1302一个字节,读出的内容在累加器A中 ;*********************************************READ:MOV50h,#8 ;一个字节有8个位,移8次OUTBIT1:MOVC,T_IO ;从芯片内移到CY中 RRCA ;通过CY移入A中 SETBT_CLK CLRT_CLK DJNZ50h,OUTBIT1 RET ;************************************************************ ;SET1302子程序名 ;功能:设置DS1302初始时间,并启动计时 ;调用:WRITE子程序 ;入口参数:初始时间秒、分、时、日、月、星期、年在40h~46h单元 ;出口参数:无 ;影响资源:ABR0R1R4R7 ;************************************************************SET1302:CLRT_RST CLRT_CLK SETBT_RST MOVB,#8EH ;控制命令字 LCALLWRITE MOVB,#00H ;写操作前清写保护位W LCALLWRITE SETBT_CLK CLRT_RSTMOVR0,#40H ;秒、分、时、日、月、星期、年数据在40h~46h单元 MOVR7,#7 ;共7个字节 MOVR1,#80H ;写秒寄存器命令S13021: CLRT_RST CLRT_CLK SETBT_RST MOVB,R1 ;写入写秒命令 LCALLWRITE MOVA,@R0 ;写秒数据 MOVB,A LCALLWRITE INCR0 ;指向下一个写入的日历、时钟数据 INCR1 ;指向下一个日历、时钟寄存器 INCR1 SETBT_CLK CLRT_RST DJNZR7,S13021 ;未写完,继续写下一个 CLRT_RST CLRT_CLK SETBT_RST MOVB,#8EH ;控制寄存器 LCALLWRITE MOVB,#80H ;写完后打开写保护控制,WP置1 LCALLWRITE SETBT_CLK CLRT_RST ;结束写入过程 RET ;************************************************************ ;GET1302子程序名 ;功能:从DS1302读时间 ;调用:WRITE写子程序,READ子程序 ;入口参数:无 ;出口参数:秒、分、时、日、月、星期、年保存在40h~46h单元 ;影响资源:ABR0R1R4R7 ;************************************************************GET1302:MOVR0,#40H MOVR7,#7 MOVR1,#81H ;读秒寄存器命令G13021: CLRT_RST CLRT_CLK SETBT_RST MOVB,R1 ;写入读秒寄存器命令 LCALLWRITE LCALLREAD MOV@R0,A ;存入读出数据 INCR0 ;指向下一个存放日历、时钟的存储单元 INCR1 ;指向下一个日历、时钟寄存器 INCR1 SETBT_CLK CLRT_RST DJNZR7,G13021 ;未读完,读下一个 RET ;LCD初始化子程序INIT: MOVA,#00000001H ;清屏 ACALLWC51R MOVA,#00111000B ;使用8位数据,显示两行,使用5×7的字型 LCALLWC51R MOVA,#00001100B ;显示器开,光标关,字符不闪烁 LCALLWC51R MOVA,#00000110B;字符不动,光标自动右移一格 LCALLWC51R RET ;检查忙子程序F_BUSY:PUSHACC ;保护现场 MOVP2,#0FFH CLRRS SETBRWWAIT: CLRE SETBE JBP2.7,WAIT ;忙,等待 POPACC;不忙,恢复现场 RET ;写入命令子程序WC51R: ACALLF_BUSY CLRE CLRRS CLRRW SETBE MOVP2,ACC CLRE RET ;写入数据子程序WC51DDR:ACALLF_BUSY CLRE SETBRS CLRRW SETBE MOVP2,ACC CLRE RET ;延时10MS子程序DL10MS:MOVR6,#14HDL1:MOVR7,#0FBHDL2: DJNZR7,DL2 DJNZR6,DL1 RET END第5章系统仿真5.1KEIL51介绍KeilµVisionIDE是美国KeilSoftware公司出品的51系列单片机C语言集成开发系统,与汇编语言相比,C语言在功能上,结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用
C
语言来开发,这种体会将会更加深刻。KeilµVisionIDE开发系统提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点是,只要看一下编译后生成的汇编代码,就能体会到KeilµVisionIDE生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。另外,KeilµVisionIDE也能识别汇编程序。下面将详细介绍KeilµVisionIDE开发系统各部分的功能和使用。在KeilµVisionIDE中,管理文件使用的是项目方式而不是以前的单一文件的模式,C51源程序、汇编源程序、头文件等都放在项目文件里统一管理。使用步骤为:1.项目文件的建立;2.给项目添加程序文件;3.编译、连接项目,形成目标文件;4.运行调试观察结果;5.仿真环境的设置。5.2PROTEUS介绍ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高级厨师职业技能考试试卷及答案
- 2025年海外留学申请知识考试试卷及答案
- 2025-2030中国高等教育主动学习平台行业市场发展趋势与前景展望战略研究报告
- 2025-2030光纤放大器行业市场深度分析及发展策略研究报告
- 2025-2030中国阻燃海绵产业现状动态及未来发展决策建议报告
- 2025至2031年中国汽车用电喇叭行业投资前景及策略咨询研究报告
- 2025-2030健康保健器材行业市场深度分析及发展前景与投资机会研究报告
- 2025-2030国内湿纸巾行业市场发展现状及发展前景与投资机会研究报告
- 2025至2031年中国枪式电烙铁行业投资前景及策略咨询研究报告
- 小学语文五年级下册我和祖父的园子教学设计
- 山东省山东名校考试联盟2025年高三4月高考模拟考试英语试卷+答案
- 国家开放大学《课程与教学论》形考任务1-4参考答案
- 药品网络交易服务三方平台质量管理体系文件-B2B平台(完整版)
- 【MOOC】跨文化交际-苏州大学 中国大学慕课MOOC答案
- 护士延续注册体检表
- CJJ 82-2012 园林绿化工程施工及验收规范
- 服装导购工作合同范本
- 某大厦供配电系统毕业设计(论文)
- 第一步登录山东省特种设备作业人员许可申报审批系统
- DBJT5302 昆明市城市道路路缘石、人行道标准图集21
- 民法典试题题库300 题
评论
0/150
提交评论