毕业设计91多功能电子表课程设计.doc

毕业设计91多功能电子表课程设计

收藏

压缩包内文档预览:
预览图 预览图 预览图 预览图 预览图
编号:545586    类型:共享资源    大小:96.15KB    格式:ZIP    上传时间:2015-12-01 上传人:QQ28****1120 IP属地:辽宁
6
积分
关 键 词:
电气电子毕业设计论文
资源描述:
毕业设计91多功能电子表课程设计,电气电子毕业设计论文
内容简介:
1.多功能电子表方案论证设计一个具有特定功能的多功能电子表,多功能电子表应能正确反映实际时间值,完成特定功能,即秒表功能、报时功能;年、月、日、星期显示调整功能;时、分、秒显示调整功能。而且它应具有高精度、高可靠性、操作方便、价格便宜、智能化等特点,实现这些要求有很多种方法,下面列举三种方案。键盘图1.1方案一电路框图8279驱动器译码器显示器驱动器译码器AT89C52时钟电路复位电路报警电路1. 1方案一:采用AT89C52的I0口扩展一个键盘如图1.1所示显示器控制专用芯片8279段选码由8279的数据输出口A,B提供,其A为高四位数据,B口位低四位。LED采用动态显示软件译码,键盘采用回复线1即RL0。位控码由8279的SL0,SL1,SL2线组成,经三八译码器74LS138到六个LED管上,LED管的位选码其驱动电路由74LS244八 位驱动器,LED的段选码的驱动也采用74LS244八位驱动器。此次我们设计需要4个按键,在此电路由RL0和三八译码器的低四位构成,8279的片选端接到AT89C52的P2.7上,8279数据选择线A0由AT89C52的P0.0经74LS373连接上,74LS373的脉冲由AT89C52的ALE上,其工作频率由AT89C52的ALE提供。AT8952采用的是上电复位。判键是否按下是由外中断0实现的,具体为8279的IRQ经反相器到AT89C52的外中断0上。8279的数据线连接与单片机的P0上。方案一的优点是采用了单片机的I0口扩展,使用的芯片,它能对显示器自动扫描,能识别键盘上按下键的键号,可以分提高CPU的工作效率。但对于我们只完成一个电子表的功能可以说是大材小用了,而且8279比较贵,还需要多块驱动芯片和译码芯片。1.2方案二:直接采用AT89C52的各个I0口线来实现键盘显示电路如图1.2所示。时钟电路复位电路AT89C52驱动键盘限流显示报警电路图1.2方案二电路框图图1.2方案二电路框图在次电路中利用单片机的P0口输出八位段选码键盘口是采用单片机P1口的低四位,其中由P1.0接A键,P1.1接B键,P1.2接C键,P1.3接D键且P1.4接蜂鸣器。LED的位控线由AT89C52的P2口的低六位构成,从P2.0至P2.5依次控制LED管的顺序是从左到右。在电路中段选码和位控码均由74LS244驱动。利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时及秒表计时等功能。该方案节省硬件成本,且能使设计者对单片机的指令系统能有更深入的了解,从而掌握单片机应用技术MCS-51汇编语言程序设计方法,因此,本系统设计采用此种方案来实现计时。由于ATMEL公司AT89C52单片机是采用高密度、非易失性存储技术生产采用CHMOS工艺制成的,满足低功耗要求,它的功能强大,而且也较容易购买,故本设计中所选的单片机为AT89C52单片机。1.3方案三: 采用实时时钟芯片实时,时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机可通过中断或查询方式读取计时数据进行显示,因此计时功能的实现无需占用CPU的时间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性RAM,可用来存放需长期保存但有时也需变更的数据。由于功能完善、精度高、软件程序设计相对简单,且计时不占用CPU时间,因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。用这种方案设计比较先进、程序简单、功能强大,但不利于掌握单片机应用技术及MCS-51汇编语言程序设计方法。1.3.1 LED显示方案方案一:串口扩展,LED静态显示。如图1.3.1所示,该方案占用口资源少,采用串口传输实现静态显示,显示亮度有保证,但硬件开销大,电路复杂,信息刷速度慢,比较适用于并行口资源较少的场合。串行口AT89C52P1口移位寄存器4 1键盘移位寄存器LED1LED2图1.3.1LED显示方案一框图方案二:8155扩展,LED动态显示。如图1.3.2所示,该方案硬件连接简单,但动态扫描的显示方式需占用CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。图1.3.2 LED显示方案二框图AT89C528155键盘显示接口LED显示41键盘方案二的优点是不需要扩展电路,运行速度快,能及时的反应时钟的变化,在只用单片机做电子表用的设计中,能充分利用单片机的I0口,硬件电路简单,同时也能够满足各种功能的设置和需要,在经济上又合理。所以此次设计我采用这种方案。因为此次电子钟控制系统只需要几个功能键,所以采用独立式按键结构,结合LED动态显示,达到了资源与效果的最佳配置。2多功能电子表的工作原理电子表的工作主要框图如图2.1所示:这个框图就构成了一个简单的单片机应用系统。它的核心部分是AT89C52,配以输入、输出及外设电路。AT89C52时钟电路复位电路驱动器显示器驱动器键盘电路限流图2.1 电子表整机电路框图报警电路多功能电子表电路的核心的AT89C52单片机,其内部有8KB 的ROM,无须外扩程序储存器。系统配备6位LED显示,AT89C52的P2口通过74LS244 作为6位LED 的位选口,P0口通过74LS244 作为6位LED 的段选口。P1口的P1.0P1.3作为独立式键盘的扫描口。由于采用共阴极数码管,因此P2口输出底电平时选中相应的位,而P0口输出 高电平时点亮相应的段。本设计中的多功能电子表的核心是AT89C52单片机,其内部带有8KB的PEROM,无须外扩程序存储器,硬件电路主要由五部分构成:时钟电路,复位电路,键盘电路、显示电路以及报警电路等。时钟电路是电子表硬件电路的核心,没有时钟电路,电子表将无法正常工作计时。本系统时钟电路采用的晶振频率为6MHz,定时器采用的是定时器0和定时器1,定时器0用于实现时、分、秒的计时,工作方式为方式1,定时时间为125ms;定时器1用于实现秒表计时,工作方式为方式1,定时时间为10ms。用于实现系统定时采用的是定时器与软件循环相结合的方法。复位电路可使电子表恢复到初始状态。按键电路各键可对电子表进行开启、停止、年、月、日、时、分、秒、星期的显示及设定等操作,还能实现秒表功能等。显示电路为6个共阴LED数码管接200欧姆限流电阻再接74LS244驱动电路然后与AT89C52单片机I/O相连组成,它可使电子表显示出时、分和秒,6个LED数码管从右至左依次显示秒、分和时。报警电路用于实现电子表的报时功能,当设定的报时时间到,蜂鸣器就鸣叫。3:多功能电子表电路元器件清单表4.1 多功能电子表元器件AT89C52芯片一块LED数码管(共阴极)六个开关按键五个74LS244芯片二块电路印刷板一块芯片插座(40个脚)一块芯片插座(20个脚)二块晶振6MHz一个电阻1K欧姆一个电阻200欧姆一个限流电阻200欧姆八个上拉电阻1K欧姆四个33pF电容两个22F电容一个蜂鸣器一个集成芯片W7805一块变压器一个二极管五个电解电容220F二个电容0.33F一个电容0.1F一个4. 单元电路工作原理介绍及所用主要芯片介绍4.1电源电路工作原理电源的稳压电路根据调整元件类型可分为电子管稳压电路、三极管稳压电路、可控硅稳压电路,集成稳压电路等;根据调整元件与向载连接方法,可分为并联型和串联型;根据调整元件工作状态不同,可分为线性和开关稳压电路。该设计中采用了线性工作状态的线性集成稳压电源。我们知道直流稳压电源一般由电源变压器、整流滤波电路及稳压电路所组成,设计框图如图4.1所示:电源 变压器整流滤波器稳压电路输入电压U1输出电压U2图4.1 电源设计框图4.1.1电源电路各部分简介 电源变压器电源变压器作用是将电网220V的变流电压V1变换成整流滤波电路所需的变流电压V2。变压器副边与原边的功率比P2/P1=,式中为变压器的效率。整流滤波电路整流电路将交流电压变成单向脉动的直流电压;滤波电路用来滤除整流后单向脉动电压中的交流成份,合之成为平滑的直流电压。常用的整流电路有全波整流电路、单相半流整流电路、桥式整流电路、及倍压整流电路。小功率直流电源因功率比较小,通常采用单相交流供电。由于桥式整流电路克服了半波整流的缺点,在桥式整流电路中,由于每两只二极管只导通半个周期,故流过每个二极管的平均电流仅为负载电流的一半,与半波整流电路相比较,其输出电压提高,脉动成分减小了。整流电路将交流电变为脉动直流电,但其中含有大量的交流成分(称为纹波电压)。为了获得平滑的直流电压,应在整流电路的后面加接滤波电路,以滤去交流成分。滤波电路常见的有电容滤波电路、电感滤波电路及型滤波电路。本设计采用电容滤波电路。电容滤波电路主要利用电容两端电压不能突变的特性,使负载电压波形平滑,故电容应与负载并联。桥式整流电路带电阻负载时的输出直流电压U0=0.9V,接上电容滤波后,空载时的输出直流电压U0=UC=U2。所以,接上负载时的桥式整流电容滤波电路的输出电压介于上述两者之间,其大小与放电时间常数RLC有关,RLC越大,U0越大。稳压电路稳压电路的作用是当输入交流电源电压波动、负载和温度变化时,维持输出直流电压的稳定。由于三端式稳压器只有三个引出端子,具有应用时外接元件少、使用方便、性能稳定、价格低廉等优点,因而广泛应用。三端式稳压器有两种,一种称为固定输出三端稳压器,另一种称为可调输出三端稳压器。它们的基本组成及工作原理都相同,均采用串联型稳压电路。三端固定输出集成稳压器通用产品有CW7800T系列和CW7900系列。正压系列:CW7800系列,该系列稳压块有过流、过热和调整管工作保护,以防过载而损坏。一般不需要接元件即可工作,有时为改善性能也加少量元件。负压系列:CW7800系列与CW7900系列相比,除了输出电压极性、引脚定义不同外,其他特点都相同。稳压电源的技术指标分为两种:一是特性指标:包括允许的输入电压、输出电压、输出电流及输出电压调节范围等;另一种是质量指标,用来衡量输出直流电压的稳定程度,包括稳压系数(或电压调整流器率)、输出电阻(或电流调整率)、温度系数及纹波电压等。4.1.2电源的设计图4.1.2电源电路图电源的原理如下图4.1.2所示直流稳压电源设计的主要内容是根据性能指标,选择合适的电源变压器、集成稳压器、整流二极管及滤波电容。我们在设计过程中所用到的电源有12V和+5V,12V的电源所用到的集成稳压器为W7812与W7912,其它原器件与+5V相类似,因此这里只介绍输出为+5V的电源,至于12V的双电源原理一样。根据要求V0=+5V,稳压系数在0.2%,故可先用集成稳压(W7805)。W7805的稳压差为U1U22V,所以根据公式U1=(23)+U2,现在为了留有余量,取3V,其输入电压为U1=5+3=8V。稳压器的输入电流即为整流滤波电路的负载电流,故I1=I0(max)+ID=300+8=308mA。由变压器副边电压:U1=U2/12=8V/12=6.7V 令取U2=7VRL=1.2U2/IL=27.3整流二极管和滤波电参数确定:正向平均电流: 最大反向电压: URMUR(max)=2U2=10V所以整流二极管选用其耐压值为50V,最大整电流为1A的整流器流管IN4004。滤波电容的参数计算:取C=1000 F电容的耐压 :取UCM25V,故滤波电容参数为C:1000 F/25V副边电流有效值:0IZ=(1.52)IL=(1.52)308=462616mA取IZ为500 mA副边容量:P2=U2I2=70.5=3.5VA原边的容量: 取T=0.6 故平均容量为: 因此取P=10VA.4.1.3电源电路器件的介绍电源变压器的作用是220V的交流电压变换成桥式整流电路所需要的交流电压U1=10V整流滤波电路的作用是交流电压U1转换成波动直流电压。再经过滤波电容滤除纹波,输出直流电流。三端集成稳压器的作用是将脉动的直流电流稳定在5V。二极管的作用是保护稳压器。在输出端接负载的情况下,如果其中一路电源稳压器输入端开路,则另一端输出则可通过负载反作用于输入端开路的芯片,极有可能损坏该稳压芯片;加入二极管后,由于二极管的限幅,电源在理论上要直接与地完全连接,从而大大降低落在集成芯片上的反压,保护芯片不被击穿。4.2复位电路复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这上状态开始工作。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键。通常单片机复位操作有上电复位、信号复位、运行监视复位,运行监视有程序运行监视和电源监视。上电复位。上电复位是单片机上电时复位操作,保证单片机上电后立即进入规定的复位状态。信号复位。信号复位是在单片机正常供电情况下,在复位引脚端加以复位信号而产生的复位。根据不同情况有按键操作复位、唤醒复位、控制复位等。系统运行监视复位。系统监视复位是系统出现非正常情况下复位,通常有电源监测复位和程序运行监视复位。电源监测复位是在电源下降到一定电平状态或电源未到达额定电平要求时的系统复位;程序运行监视复位则是程序运行失常时的系统复位。在此设计中,采用了按键复位电路。4.2.1 复位电路图复位电路图如图4.2.1所示图4.2.1 复位电路图4.2.2复位电路工作原理上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作。所以本设计选用第二种上电复位与按键均有效的各单位电路。4.3 时钟电路 时钟电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。4.3.1时钟振荡电路图 时钟振荡电路图如图4.3.1所示图4.3.1 时钟振荡电路图4.3.2时钟信号的产生单片机内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。只要在单片机的XTAL1和XTAL2引脚外接晶体振荡器就构成了自激振荡器并在单片机内部产生时钟脉冲信号。电容器C1和C2的作用是稳定频率和快速起振,电容值在530pF,典型值为30pF。外部时钟方式是把外部已有的时钟信号引入到单片机内。此方式常用于多片单片机同时工作,以便于各单片机的同步。外部信号高电平的持续时间大于20ns,且为频率低于12MHz的方波。4.4键盘、显示电路4.4.1键盘电路与通用单片机键盘相比,单片机应用系统中的键盘种类很多,键盘中按键数量设置依系统操作要求而定。这次多功能电子表设计采用独立式按键。独立式按键是直接用I/O口线构成的单个按键电路. 其特点是每个按键占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态 其结构如图4.4.1所示。图4.4.1 键盘电路图独立式按键电路硬件简单,各按键之间相互独立,但占用I/O口较多,动态扫描方式需占用CPU较多的时间,在单片没有太多实时测控任务的情况下可以采用。因本系统按键较少,此方式硬件电路较简单,所以本系统采用此种方式,按键输入均采用低电平有效,此外,上拉电阻保证了按键断开时,I/O口线有确定的高电平. 独立式按键的软件常采用查询式结构,先逐位查询每根I/O口线的输入状态,如某一跟I/O口线输入为低电平,则可确定该口线所对应的按键已按下,然后,再转向该键的功能处理程序。独立式键盘中,每个按键占用一根I/O口线,每个按键电路相对独立。I/O口通过按键与地相连,I/O口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。I/O口内部有上拉电阻时,外部可不接上拉电阻。4.4.2显示电路常所说的LED显示器由七个发光二极管组成,因此也称之为七段LED显示器,此外,显示器中还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七段发光二极管的不同组合,可以显示多种数字、字母或者其他符号,多功能电子表的LED显示器中的发光二极管连接方法如图4.4.2所示:共阴极符号与引角图4.4.2段LED显示器这种连接为共阴极接法,发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。七段发光二极管,再加上一个小数点,共计8段。因此提供给LED显示器的字型代码正好一个字节。采用LED显示器。LED显示器由七个发光二极管组成,本设计采用共阴级接法。显示方式采用动态显示方式。原因在于:静态显示方式要求口线多,占用资源多,成本就高,而动态显示方式,电路简单、节省口线、成本低。多功能电子表采用动态显示,所谓动态显示就是一位一位地轮流点亮显示器的各个位(扫描)。对于显示器的每一位而言,每隔一段时间点亮一次。虽然在同一时刻只有一位显示器在工作(点亮),但由于人眼的视觉暂留效应和发光二极管熄灭时的余辉,我们看到的动是多个字符“同时”显示。显示器亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关。4.5 AT89C52芯片图4.5 AT89C52芯片AT89C52是标准的40引脚双列直插式集成电路芯片,引脚排列如图4.5所示.AT89C52 是一种低功耗、高性能的CMOS 8位单片机。它带有8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和82C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。AT89C52提供了8K字节Flash ,256字节RAM,32线I/O口,3个16位定时器/计数器,6向量两极中断,一个双工串行口,片内根据振荡器和始终电路等标准功能。此外,AT89C52设有静态逻辑,并支持软件选择的两种节电运行方式、空闲方式使CPU停止工作,而允许RAM、定时器/计数器、串行口和中断系统继续工作。掉电方式下,片内振荡器停止工作,由于之中被冻结,一切能都停止,只有片内RAM的内容被保存,直到硬件复位才恢复正常工作。4.5.1 AT89C52单片机的特点与MCS-51产品相兼容;具有8KB可改写的Flash 内部程序存储器,可写/擦1000次;全静态操作:0HZ-24MHZ;三级程序存储器加密;256字节内部RAM;32根可编程I/O口;3个16位定时器/计数器。8个中断源;可编程中串行口;低功耗空闲和掉电方式。4.5.2 AT89C52的结构框图AT89C52结构框图(如图4.5.2所示):图4.5.2 AT89C52结构框图 时钟电路ROMRAM定时/计数器CPU并行接口串行接口中断系统P0P1P2P3TXDRXD/INT0/INT1T0T1T2复位电路复位电路4.5.3 管脚、引线与功能引脚信号介绍P00P07 P0口8位双向口线P10P17 P0口8位双向口线P20P27 P0口8位双向口线P30P37 P0口8位双向口线ALE地址锁存控制信号在系统扩展时,ALE用于控制把P0口输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。此外由于ALE是以晶振六分之一的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲作用。/PSEN外部程序储器读选取通信号在读外部ROM时/PSEN有效(低电平),以实现外部ROM单元的读操作。/EA访问程序存储器控制信号当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;而当/EA信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。RST 复位信号当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作。XTAL1和XTAL2外接晶体引线端当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电空;当使用外部时钟时,用于拉外部的时钟脉冲信号。VSS:地线VCC:+5V电源信号引脚的第二功能由于工艺及标准化等原因,芯片的引脚数目是有限制的,例如MCS51系列把芯片引脚数目限定为40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了需要与可能的矛盾。因此,给一些信号引脚赋以双重功能。 P3口的线的第二功能:P3的8条口线都定义有第二功能 ,详见表4.5表4.5 P3口线第二功能引脚第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2INT0外部中断0申请P3.3INT1外部中断1申请P3.4T0定时/计数器0的外部输入P3.5T1定时/计数器1的外部输入P3.6WR外部RAM写选通P3.7RD外部RAM读选通4.6 74LS244芯片74LS244芯片是标准的18引脚双列直插式集成电路芯片,引脚排列如图4.6.1所示.74LS244是一种三态输出的八缓冲器和线驱动器。1671A1 1Y11A2 1Y21A3 1Y31A4 1Y42A1 2Y12A2 2Y22A3 2Y32A4 2Y41G2GU0图4.6.1 74LS244芯片11917151311864218141295374LS244缓冲器主要用于三态输出的存储地址驱动器、时钟驱动器和总线定向接收器等。74LS244是三态输出的八缓冲器,由2组、每组四路输入、输出构成。每组有一个控制端,由控制端的高或低电平决定该组数据被接通还是断开,功能表如下表所示:输 入输出 GAYLLLLHHHXX表4.6 74LS244功能H高电平 L低电平A高阻X任意4.7 CW7805集成稳压器CW7805集成稳压器如下图4.7所示,它具有体积小、性能稳定、价格便宜等优点,特别是集成三端稳压器,只有输入端、输出端和公共端三个引脚,使用方便,目前已基本上取代了分立元件的稳压电路。三端稳压器的选择依据是输出电压、负载电流、电压调整率、输出电阻等性能指标。CW7805Vin VoutGND图4.7 集成稳压器使用集成稳压器的注意事项:a.不要接错引脚线,对于多端稳压器,接错引线会造成永久性损坏,对于三端稳压器输入和输出接反,当两端电压差超过7伏时,有可能使稳压器损坏。b.输入电压不能过低,输入电压Ui不能低于输出电压Uo和调整管的最小压差(UiUo)min以及输入端交流分量峰值电压Up三者之和,即UiUo(UiUo)minUp,否则稳压器的性能将降低,纹波增大。c.输入电压也不可过高,不要超过Uimax,防止集成稳压器损坏。d.功耗不要超过额定值,对于多端可调稳压器,若输出电压调到较低电压时,防止调整管上压降过大而超过额定功耗,为此在输出低电压时最好同时降低输入电压。e.防止瞬时过电压,对于三端稳压器,如果瞬时过电压超过输入电压的最大值且具有足够的能量时,将会损坏稳压器。当输入端离整流滤波电容较远时,可在输入端与公共端之间加1个电容器(如0.33F)。f.防止输入端短路,如果输出电容CO较大,又有一定的输出电压,一旦输入端短路,由于输出端的电容存储电荷较多,将通过调整管泄放,有可能损坏调整管,所以要在输入与输出端之间连接1个保护二极管,正极连输出端,负极连输入端。防止负载短路,尤其对未加保护措施的稳压器而言更要注意。5.多功能电子表软件设计5.1、多功能电子表资源的分配、使用情况31H(定时器T0计数8次的存放单元) 32H-34H(为时间比较数值存放单元)35H(年的十个位存储单元) 36H(月的存储单元) 37H(日的存储单元) 38H(时的存储单元) 39H(分的存储单元) 3AH(秒的存储单元) 3BH(闹钟的时存储单元) 3CH(闹钟的分存储单元) 3DH(闹钟的秒存储单元) 3EH(秒表的分存储单元) 3FH(秒表的秒存储单元) 40H(秒表的百十毫秒存储单元)41H(星期的存储单元) 内部RAM42H,43H,44H,45H,46H,47H作LED5-LED0的显示缓冲存储单元48H(A按下的次数) 49H(存放位控值)5.2 多功能电子表软件流程根据多功能电子表的工作流程,软件的设计可分为以下几个功能模块:(1)主程序:初始化与键盘监控。(2)计时:为定时器0中断服务子程序,完成刷新计时缓冲区的功能。(3)时间设置与报警设置:由键盘输入设置当前时间与定时报警时间。(4)显示:完成6位动态显示。(5)键盘扫描:判断是否有键按下,并求取键号。(6)定时比较:判断报警时间是否到?如时间到,则启动蜂鸣器鸣叫。(7)其它辅助功能子程序,如键盘设置,拆字,合字,时间合法性检测等。6.多功能电子表工作流程图6.1主程序流程图YY1开始程序初始化P送显示缓冲单元调显示子程序电子表运行D键按下否调显示子程序A键按下否47H单元加1NYN时间设置日期设置闹钟设置进入秒表功能星期设置图6.1电子表主程序流程图把此时的时分秒值送比较单元D键按下否A按下二次A按下一次A按下三次A按下四次A按下五次N入口2入口5入口4入口3入口16.2时间设置流程图秒加1C键按下B键按下三次时加1C键按下B键按下二次B键按下一次C键按下2分加1入口1把48H单元清0显示时分秒Y秒满60否秒显示缓冲区清0N时满24否N时显示缓冲区清0Y调显示子程序分满60否分显示缓冲区清0NYD键按下否12N图6.2时间设置流程图Y6.3日期设置流程图 日加1C键按下B键按下三次年加1C键按下B键按下二次B键按下一次C键按下2月加1入口2把48H单元清0显示年月日 Y日满32否日显示缓冲区清0N年满百否N年显示缓冲区清0Y调显示子程序月满13否月显示缓冲区清0NYD键按下否12N图6.3日期设置流程图Y闹钟秒加1C键按下B键按下三次闹钟时加1C键按下B键按下二次B键按下一次C键按下2闹钟分加1入口3把48H单元清0显示闹钟时分秒Y秒满60否闹钟秒显示缓冲区清0N时满24否N闹钟时显示缓冲区清0Y调显示子程序分满60否闹钟分显示缓冲区清0NYD键按下否12N图6.4闹钟设置流程图Y6.4闹钟设置流程图6.5秒表功能流程图入口4把48单元清0B键按下秒表运行调显示子程序B键按下秒表停止显示秒表各单元值调显示子程序B键按下秒表各单元清0D键按下否1NY图6.5 秒表功能流程图6.6星期设置流程图入口5把48单元清0B键按下一次显示星期各单元值图6.6 星期设置流程图星期加1调显示子程序星期各显示缓冲单元清0D键按下否1NY星期满八否C键按下YN6.7中断服务程序流程图时显示缓冲单元清011中断次数满8否保护现场重置计数初值中断次数减1秒加1秒满60否秒显示缓冲单元清0分加1分满60否分显示缓冲区清0时加1时满24否NNNN112YYY3时加1满24否时显示缓冲单元清0星期加1星期满7否星期置1日加1是2月否是6月否是9月否是11月否日满31否日满32否是润年否日满30否日满29否NNNNNNY11 N NNN111NYYY1111YNYYYYYY2图6.7中断服务程序流程图3年显示缓冲单元清0Y恢复现场返回1日置1月加1月满13否否月置1年加1年满100否YNN116.8 定时/计数器1中断服务程序流程图Y保护现场重置定时/计数器1初值中断次数减1百分秒加1秒加1分加1秒表显示缓冲单元清0中断次数满1否满60否满100否满60否返 回恢复现场图6.8 定时/计数器1中断服务程序流程图NNNNYYY6.9十进制加一子程序流程图开 始取十位十位存入A高半字节取个位个位存入A低半字节A加1十进制调整屏蔽高半字节重取A值个位送入显示缓冲单元屏蔽底半字节A中高低字节交换十位送入显示缓冲单元返 回图6.9 十进制加1子程序6.10显示子程序流程图显示子程序保护现场显示初始化查表取字行码段码送P0位码送P2.0P2.5延时显示保护现场六位显示扫描完否返回N图6.10 显示子程序流程图6.11键扫子程序流程图 开始调显示去抖延时扫描键盘调键处理子程序有键按下否返回图6.11 键扫子程序流程图YN求取键号 6.12 定时比较程序流程图 Y保护现场定时时间与当前时间秒单元相等否定时时间与当前时间分单元相等否定时时间与当前时间时单元相等否蜂鸣器鸣叫恢复现场返回NYNN图6.12定时比较程序流程图Y7、程序设计7.1、程序设定及说明;堆栈设定-;栈底内部RAM 60H;子程序功能表-;DIR(显示子程序);DELAY(延时1毫秒子程序);功能程序-;SHIADD1(时加1);LIUSHIADD1(60进制加1子程序);NIANADD1(年加1);YUEADD1(月加1);RIADD1(日加1);XINGQIADD1(星期加1);中断服务程序功能表-;PIT0(定时器/计数器0中断服务程序);PIT1(定时器/计数器1中断服务程序);功能程序入口表首地址-;第一功能程序入口表首地址(MIAOB);第二功能程序入口表首地址(SHI);第三功能程序入口表首地址(NIAN);第四功能程序入口表首地址(CLOCK);第五功能程序入口表首地址(XINGQI);常数、表格首地址-;散转地址表(TAB1);显示字符段选码表(共阳极代码首地址TAB2)7.2、程序清单NIANSGW EQU 35H ;年的十个位存储单元YUESGW EQU 36H ;月的存储单元RISGW EQU 37H ;日的存储单元SHISGW EQU 38H ;时的存储单元FENSGW EQU 39H ;分的存储单元MIAOSGW EQU 3AH ;秒的存储单元CLOCKS EQU 3BH ;闹钟的时存储单元CLOCKF EQU 3CH ;闹钟的分存储单元CLOCKM EQU 3DH ;闹钟的秒存储单元MIAOBFEN EQU 3EH ;秒表的分存储单MIAOBMW EQU 3FH ;秒表的秒存储单元MIAOBBS EQU 40H ;秒表的百时存储单元XINGQISGEW EQU 41H ;星期的存储单元DIRONE EQU 42H ;显示第一位存储单元DIRSECOND EQU 43H ;显示第二位存储单元DIRTHIRD EQU 44H ;显示第三位存储单元DIRFOUR EQU 45H ;显示第四位存储单元DIRFIVE EQU 46H ;显示第五位存储单元DIRSIX EQU 47H ;显示第六位存储单元程序开始 ORG 0000HSTART: LJMP MAIN ORG 000BH ;定时器T0中断入口 LJMP PIT0 ORG 001BH ;定时器T1中断入口 LJMP PIT1 ORG 00B0H ;主程序开始 MAIN: MOV SP , #60H ;设置堆栈地址 SETB EA ;允许中断定 MOV TMOD, #01H ;定义定时器工作方式 MOV TL0, #0DCH ; 设置定时器初值 MOV TH0, #0BH MOV TL1, #18H MOV TH1, #63H MOV R0, #30H ;清零开始地址 MOV R1, #7FH MOV A, #00H S0: MOV R0, A INC R0 DJNZ R1, S0 MOV SHISGW, #0BAH ;显示p.字符值送时分秒单元 MOV FENSGW, #0AAH MOV MIAOSGW, #0AAH S1: MOV R0, #SHISGW; 调显示 LCALL DIR JB P1.3, S1 ;D键按下则启动T0没有则调显示 LCALL DELAY ;去抖动 JB P1.3, S1 ;再去判键 S2: MOV R0, #SHISGW LCALL DIR JNB P1.3, S2 ;等键释放 MOV SHISGW, #00H ;时分秒各单元清零 MOV FENSGW, #00H MOV MIAOSGW, #00H SETB TR0 ;启动定时器T0 SETB ET0 ;允许定时器中断 MOV 30H, #08H ;设置计数次数 MOV 47H, #00H S3: MOV R0, #SHISG ;显示时钟 LCALL DIR S4: JB P1.0, S6 ;A键按下就向47H单元加1 LCALL DELAY JB P1.0, S6 S5: MOV R0, #SHISGW LCALL DIR JNB P1.0, S5 MOV A, 47H ADD A, #01H MOV 47H, A S6: JB P1.3, S3 ;D键按下就执行散转程序 LCALL DELAY JB P1.3, S3 S7: MOV R0, #SHISGW LCALL DIR JNB P1.3, S7 MOV R4, #01H CLR C MOV A, 47H DEC A JC S3 MOV B, #03H MUL AB MOV DPTR, #TAB1 JMP A+DPTR TAB1: LJMP MIAOB ;执行秒表功能程序 LJMP SHI ;执行表时分秒调整功能程序 LJMP NIAN ;执行年月日调整功能程序 LJMP CLOCK ;执行闹钟时分秒调整功能程序 LJMP XINGQI ;执行表星期调整功能程序;-功能程序区-; 秒表子程序 MIAOB: MOV 48H, #00H ;清48H单元 MOV R5, #0FFH M1: MOV R0, #MIAOBFEN LCALL DIR JNB P1.1, M1 AJMP M3 ;B键按下就去起动定时器T1 M2: MOV R0, #MIAOBFEN LCALL DIR DJNZ R5, M1 DJNZ R4, MIAOB LJMP M12 M3: SETB TR1 SETB ET1 M4: MOV R0, #MIAOBFEN;显示秒表 LCALL DIR JB P1.1, M4 ;B键没有按下就继续显示秒表 LCALL DELAY ;按下就停止T1 JB P1.1, M4 M5: MOV R0, #MIAOBFEN LCALL DIR JNB P1.1, M6 M6: CLR TR1 CLR ET1 MOV R0, #MIAOBFEN LCALL DIR JB P1.2, M7 ;C键按下就把秒表各单元清零 LCALL DELAY ;没有就继续显示秒表 JB P1.2, M7 M7: MOV R0, #MIAOBFEN LCALL DIR JNB P1.2, M8 MOV A, #00H MOV MIAOBFEN, A MOV MIAOBMW, A MOV MIAOBBS, A M8: MOV R0, #MIAOBFEN LCALL DIR JB P1.1, M11 ;再去判别B键是否按下 LCALL DELAY JB P1.1, M11 M9: MOV R0, #MIAOBFEN LCALL DIR JNB P1.1, M10 AJMP M4 ;B按下说明再去当秒表用 M10: JB P1.3, M9 ;D键没有按下返回去判B是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, M9 M11: MOV R0, #MIAOBFEN LCALL DIR JNB P1.3, M11M12: LJMP S3 ;返回到判A键是否按下;表时分秒调整子程序 SHI: MOV 48H, #00H ;清48H单元 SHI1: MOV R0, #SHISGW LCALL DIR JNB P1.1, SHI1 AJMP SHI4 ;B键按下就去判C键是否按下 SHI2: MOV R0, #SHISGW LCALL DIR DJNZ R5, SHI1 DJNZ R4, SHI LJMP SHI21 SHI3: CLR TR0 CLR ET0 JB P1.2, SHI5 ;C键按下就执行时加1 LCALL DELAY ;没有按下就移动到分调整 JB P1.2, SHI5 SHI4: MOV R0, #SHISGW LCALL DIR JNB P1.2, SHI4 MOV R0, #SHISGW LCALL SHIADD1 SHI5: MOV R0, #SHISGW LCALL DIR JB P1.3, SHI7 ;D键没有按下返回去判B是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, SHI7 SHI6: MOV R0, #SHISGW LCALL DIR JNB P1.3, SHI6 AJMP SHI21 SHI7: JB P1.1, SHI3 LCALL DELAY JB P1.1, SHI4 SHI8: MOV R0, #SHISGW LCALL DIR JNB P1.1, SHI8 SHI9: JB P1.2, SHI11 ;c键按下就执行分加1 LCALL DELAY ;没有按下就移动到秒调整 JB P1.2, SHI11 SHI10: MOV R0, #SHISGW LCALL DIR JNB P1.2, SHI10 MOV R0, #FENSGW LCALL LIUSHIADD1 SHI11: MOV R0, #SHISGW LCALL DIR JB P1.3, SHI13 ;D键没有按下返回去判B是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, SHI13 SHI12: MOV R0, #SHISGW LCALL DIR JNB P1.3, SHI12 AJMP SHI19 SHI13: JB P1.1, SHI9 LCALL DELAY JB P1.1, SHI10 SHI14: MOV R0, #SHISGW LCALL DIR JNB P1.1, SHI14 SHI15: JB P1.2, SHI17 ;c键按下就执行秒加1 LCALL DELAY ;没有按下就移动到就去判是否需要退出此功能 JB P1.2, SHI17 SHI16: MOV R0, #SHISGW LCALL DIR JNB P1.2, SHI16 MOV R0, #MIAOSGW LCALL LIUSHIADD1 SHI17: MOV R0, #SHISGW LCALL DIR JB P1.3, SHI15 ;D键没有按下返回去判C是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, SHI15 SHI18: MOV R0, #SHISGW LCALL DIR JNB P1.3, SHI18 SHI19: SETB TR0 SETB ET0 SHI20: MOV 47H, #00H LJMP S3;年月日调整子程序 NIAN: MOV 48H, #00H ;清48H单元 MOV R5, #0FFH NIAN1: MOV R0, #NIANSGW LCALL DIR JNB P1.1, NIAN1 AJMP NIAN3 NIAN2: MOV R0, #NIANSGW LCALL DIR DJNZ R5, NIAN1 DJNZ R4, NIAN1 LJMP NIAN19 NIAN3: JB P1.2, NIAN5 ;c键按下就执行年加1 LCALL DELAY ;没有按下就移动到月调整 JB P1.2, NIAN5 NIAN4: MOV R0, #NIANSGW LCALL DIR JNB P1.2, NIAN4 LCALL NIANADD1 NIAN5: MOV R0, #NIANSGW LCALL DIR JB P1.3, NIAN7 ;D键没有按下返回去判B是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, NIAN7 NIAN6: MOV R0, #SHISGW LCALL DIR JNB P1.3, NIAN6 AJMP NIAN19 NIAN7: JB P1.1, NIAN3 ;B键按下说明进行月调整 LCALL DELAY ;B键没有按下就去判年是否还需要加1 JB P1.1, NIAN3 NIAN8: MOV R0, #NIANSGW LCALL DIR JNB P1.1, NIAN9 NIAN9: JB P1.2, NIAN11 ;c键按下就执行月加1 LCALL DELAY ;没有按下就移动到日调整 JB P1.2, NIAN11 NIAN10: MOV R0, #NIANSGW LCALL DIR JNB P1.2 , NIAN10 LCALL YUEADD1 NIAN11: MOV R0, #NIANSGW LCALL DIR JB P1.3, NIAN13;D键没有按下返回去判B是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, NIAN13 NIAN12: MOV R0, #SHISGW LCALL DIR JNB P1.3, NIAN12 AJMP NIAN19 NIAN13: JB P1.1, NIAN9 ;B键按下说明进行日调整 LCALL DELAY ;B键没有按下就去判月是否还需要加1 JB P1.1, NIAN9 NIAN14: MOV R0, #NIANSGW LCALL DIR JNB P1.1, NIAN14 NIAN15: JB P1.2, NIAN17 ;c键按下就执行日加1 LCALL DELAY ;没有按下就移动到去判是否需要退出此功能 JB P1.2, NIAN17 NIAN16: MOV R0, #NIANSGW LCALL DIR JNB P1.2, NIAN16 LCALL RIADD1 NIAN17: MOV R0, #NIANSGW LCALL DIR JB P1.3, NIAN15 ;D键没有按下返回去判C是否按下即日还需要加1 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, NIAN15 NIAN18: MOV R0, #NIANSGW LCALL DIR JNB P1.3, NIAN18 NIAN19: LJMP S3;闹钟时分秒调整子程序 CLOCK: MOV 48H, #00H ;清48H单元 MOV R5, #0FFH C1: MOV R0, #CLOCKS LCALL DIR JNB P1.1, C1 AJMP C3 ;B键按下就去判是否C键按下 C2: MOV R0, #CLOCKS LCALL DIR DJNZ R5, C1 DJNZ R4, CLOCK LJMP C19 C3: JB P1.2, C5 ;c键按下就执行闹时加1 LCALL DELAY ;没有按下就移动到闹分调整 JB P1.2, C5 C4: MOV R0, #CLOCKS LCALL DIR JNB P1.2 ,C4 MOV R0, #CLOCKS LCALL SHIADD1 C5: MOV R0, #CLOCKS LCALL DIR JB P1.3, C7 ;D键没有按下返回去判C是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, C7 C6: MOV R0, #SHISGW LCALL DIR JNB P1.3, C6 AJMP C19 C7: JB P1.1, C3 LCALL DELAY JB P1.1, C3 C8: MOV R0, #CLOCKS LCALL DIR JNB P1.1, C8 C9: JB P1.2, C11 ;c键按下就执行闹分加1 LCALL DELAY ;没有按下就移动到闹秒调整 JB P1.2, C11 C10: MOV R0, #CLOCKS LCALL DIR JNB P1.2, C10 MOV R0, #CLOCKF LCALL LIUSHIADD1 C11: MOV R0, #CLOCKS LCALL DIR JB P1.3, C13 ;D键没有按下返回去判C是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, C13 C12: MOV R0, #SHISGW LCALL DIR JNB P1.3, C12 AJMP C19 C13: JB P1.1, C9 LCALL DELAY JB P1.1, C9 C14: MOV R0, #CLOCKS LCALL DIR JNB P1.1, C14 C15: JB P1.2, C17 ;c键按下就执行闹秒加1 LCALL DELAY ;没有按下就移动到去判是否需要退出此功能 JB P1.2, C17 C16: MOV R0, #CLOCKS LCALL DIR JNB P1.2, C16 MOV R0, #CLOCKM LCALL LIUSHIADD1 C17: MOV R0, #CLOCKS LCALL DIR JB P1.3, C15 ;D键没有按下返回去判C是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, C15 C18: MOV R0, #CLOCKS LCALL DIR JNB P1.3, C18 C19: MOV 47H, #00H LJMP S3;星期状态调整子程序 XINGQI: MOV 48H, #00H ;清48H单元 XINGQI1:MOV R0, # XINGQISGW LCALL DIR JNB P1.1, XINGQI 1 AJMP XINGQI4 ;B键按下就去判C键是否按下 XINGQI2: MOV R0, # XINGQISGW LCALL DIR DJNZ R5, XINGQI 1 DJNZ R4, XINGQI LJMP XINGQI 8 XINGQI3: CLR TR0 CLR ET0 JB P1.2, XINGQI 5 ;C键按下就执行时加1 LCALL DELAY JB P1.2, XINGQI 1XINGQI4: MOV R0, # XINGQISGW LCALL DIR JNB P1.2, XINGQI4 MOV R0, # XINGQISGW LCALL SHIADD1XINGQI5: MOV R0, # XINGQISGW LCALL DIR JB P1.3, XINGQI1 ;D键没有按下返回去判B是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, XINGQI1 XINGQI6: MOV R0, # XINGQISGW LCALL DIR JB P1.3, XINGQI4 ;D键没有按下返回去判C是否按下 LCALL DELAY ;D键按下返回到判A键是否按下 JB P1.3, XINGQI4 XINGQI7: MOV R0, # XINGQISGW LCALL DIR JNB P1.3, XINGQI7XINGQI8: MOV 47H, #00H LJMP S3;-子程序区-;时加1子程序SHIADD1: MOV A, R0 ADD A, #01H DA A MOV R0 , A XRL A, #24H JNZ FM0 MOV R0 , #00H FM0: RET;60进制加1子程序LIUSHIADD1:MOV A, R0 ADD A, #01H DA A MOV R0, A XRL A, #60H JNZ F1 MOV R0, #00H F1: RET;年加1子程序NIANADD1:MOV A, NIANSGW ADD A, #01H DA A MOV NIANSGW , A MOV A, NIANQBW ADDC A, #00H DA A MOV NIANQBW, A RET;月加1子程序 YUEADD1: MOV A, YUESGW ADD A, #01H DA A MOV YUESGW, A XRL A, #13H JNZ F2 MOV YUESGW , #01H F2: RET;星期加1子程序XINGQIADD1:MOV A, R0 ADD A, #01H DA A MOV R0 , A XRL A, #08H JNZ FM0 MOV R0 , #00H F3: RET;日加1子程序 RIADD1: MOV A, YUESGW CJNE A, #02H, RI4 MOV A, NIANSGW ;是2月的则来判是否为闰年 ANL A, #13H ;是适用于的千百位被4整除的 JB ACC.4, RI1 JNZ RI3 AJMP RI2 RI1: ANL A, #03H XRL A, #02H JNZ RI3 RI2: MOV A, RISGW ;是闰年 INC A DA A MOV RISGW , A XRL A, #30H ;判日为29天 JNZ RI7 MOV RISGW, #01H AJMP RI7 RI3: MOV A, RISGW ;不为闰年 INC A DA A MOV RISGW, A XRL A, #29H ;判日为28天 JNZ RI7 MOV RISGW, #01H AJMP RI7 RI4: MOV A, YUESGW ;不是2月的日加一 INC A MOVC A, A+PC SJMP RI5 DB 31H, 28H, 31H DB 30H, 31H, 30H DB 31H, 31H, 30H DB 00H, 00H, 00H DB 00H, 00H, 00H DB 31H, 30H, 31H RI5: CJNE A, RISGW ,RI6 ;为查表得的天数一至吗 MOV RISGW, #01H ;相同时日单元变一 AJMP RI7 ;不相同日单元加一 RI6: MOV A, RISGW INC A DA A MOV RISGW, A RI7: RET;显示子程序 DIR: MOV R1, #DIRONE ;显示首位送R1 MOV R2, #03H ; 计数次数送R2 MOV 48H, #20H ;送位选码 D1: MOV A, R0 ;把显示内容送A ANL A, #0F0H ;执行拆字 SWAP A MOV R1, A MOV A, R0 ANL A, #0FH INC R1 MOV R1, A INC R0 INC R1 DJNZ R2, D1 MOV R1, #DIRONE D2: MOV A, R1 ;把显示单元的内容送P0口 MOV DPTR, #TAB2 MOVC A, A+DPTR MOV P0, A MOV A , 48H MOV P2 , A ;把显示的位控码送P2口 LCALL DELAY JB ACC.0,D3 ;判是否把所有的显示内容送入了P0口 RR A MOV 48H, A INC R1 AJMP D2 D3: RET TAB2: DB 0C0H, 0F9H, 0A4H, 0B0H DB 99H , 92H, 82H, 0F8H DB 80H, 90H, 0FFH, 0CH;1ms廷时子程序 DELAY: MOV R6, #02H DE1: MOV R7, #0FFH DE2: DJNZ R7, DE2 DJNZ R6, DE1 RET;-中断服务程序区-;定时器T0中断服务子程序 PIT0: PUSH PSW PUSH ACC SETB PSW.3 MOV TL0, #0DCH MOV TH0, #0BH MOV A, 30H DEC A MOV 30H, A JNZ PT MOV 30H, #08H MOV R0, #MIAOSGW MOV A, R0 ADD A, #01H DA A MOV R0, A XRL A, #60H JNZ PT MOV R0, #00H DEC R0 MOV A, R0 ADD A, #01H DA A MOV R0, A XRL A, #60H JNZ PT MOV R0, #00H DEC R0 MOV A, R0 ADD A, #01H DA A MOV R0, A XRL A, #24H JNZ PT MOV R0, #00H AJMP PG00 PT: CLR P1.7 LJMP PG7 PG00: MOV A, YUESGW CJNE A, #02H, PG3 MOV A, NIANSGW ;是2月的则来判是否为闰年 ANL A, #13H ;是适用于的千百位被4整除的 JB ACC.4, PG0 JNZ PG2 AJMP PG1 PG0: ANL A, #03H XRL A, #02H JNZ PG2 PG1: MOV A, RISGW ;是闰年 INC A DA A MOV RISGW , A XRL A, #30H ;判日为29天 JNZ RET0 MOV RISGW, #01H AJMP PG6 PG2: MOV A, RISGW ;不为闰年 INC A DA A MOV RISGW, A XRL A, #29H ;判日为28天 JNZ RET0 MOV RISGW, #01H AJMP PG6 PG3: MOV A, YUESGW ;不是2月的日加一 INC A MOVC A, A+PC SJMP PG4 DB 31H, 28H, 31H DB 30H, 31H, 30H DB 31H, 31H, 30H DB 00H, 00H, 00H DB 00H, 00H, 00H DB 31H, 30H, 31H PG4: CJNE A, RISGW ,PG5 ;为查表得的天数一至吗 MOV RISGW, #01H ;相同时日单元变一 AJMP PG6 ;不相同日单元加一 PG5: MOV A, RISGW INC A DA A MOV RISGW, A AJMP RET0 PG6: MOV R0, #YUESGW MOV A, R0 ADD A, #01H DA A MOV R0, A XRL A, #13H JNZ RET0 MOV R0, #01H DEC R0 MOV A, R0 ADD A, #01H DA A MOV R0, A DEC R0 MOV A, R0 ADDC A, #00H DA A MOV R0, A PG7: MOV R1, #CLOCKS MOV R0, #SHISGW MOV A, R0 XRL A, R1 JNZ RET0 INC R0 INC R1 MOV A, R0 XRL A, R1 JNZ RET0 I
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:毕业设计91多功能电子表课程设计
链接地址:https://www.renrendoc.com/p-545586.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!