实时日历/时钟系统的实现
STM32-RTC实时时钟-毫秒计时实现
STM32-RTC实时时钟-毫秒计时实现OS:Windows 64Development kit:MDK5.14IDE:UV4MCU:STM32F103C8T61、RTC时钟简介 STM32 的实时时钟(RTC)是⼀个独⽴的定时器,在相应软件配置下,可提供时钟⽇历的功能。
详细资料请参考ALIENTEK的官⽅⽂档——《STM32F1开发指南(精英版-库函数版)》,以下为博主摘录要点:RTC 模块和时钟配置系统(RCC_BDCR 寄存器)在后备区域,系统复位后,会⾃动禁⽌访问后备寄存器和 RTC ,所以在要设置时间之前,先要取消备份区域(BKP)的写保护RTC 内核完全独⽴于 RTC APB1 接⼝,⽽软件是通过 APB1 接⼝访问 RTC 的预分频值、计数器值和闹钟值,因此需要等待时钟同步,寄存器同步标志位(RSF)会硬件置1RTC相关寄存器包括:控制寄存器(CRH、CRL)、预分频装载寄存器(PRLH、PRLL)、预分频器余数寄存器(DIVH、DIVL)、计数寄存器(CNTH、CNTL)、闹钟寄存器(ALRH、ALRL)STM32备份寄存器,存RTC校验值和⼀些重要参数,最⼤字节84,可由VBAT供电计数器时钟频率:RTCCLK频率/(预分频装载寄存器值+1)2、软硬件设计 由于RTC是STM32芯⽚⾃带的时钟资源,所以⾃主开发的时候只需要在设计时加上晶振电路和纽扣电池即可。
编程时在HARDWARE⽂件夹新建 rtc.c、rtc.h ⽂件。
3、时钟配置与函数编写 为了使⽤RTC时钟,需要进⾏配置和时间获取,基本上按照例程来写就可以了。
为避免零散,我将附上完整代码。
函数说明如下:rtc.c中需要编写的函数列表RTC_Init(void)配置时钟RTC_NVIC_Config(void)中断分组RTC_IRQHandler(void)秒中断处理RTC_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec)设置时间RTC_Alarm_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8sec)闹钟设置RTC_Get(void)获取时钟RTC_Get_Week(u16 year,u8 month,u8 day)星期计算Is_Leap_Year(u16 year)闰年判断 事实上,以上函数并不都要,闹钟没有⽤到的话就不要,秒中断也可以不作处理,看项⽬需求。
实时时钟电路DS1302芯片的原理及应用
实时时钟电路DS1302芯片的原理及应用DS1302是一种实时时钟(RTC)电路芯片,由Dallas Semiconductor (现被Maxim Integrated收购)设计和制造。
它提供了一个准确的时间和日期计时功能,适用于许多应用,例如电子设备、仪器仪表、通讯设备和计算机系统等。
DS1302芯片的原理如下:1.时钟发生器:DS1302芯片内部集成了一个时钟发生器电路,它使用外部XTAL晶体和一个频率分频器来产生准确的时钟信号。
晶体的频率通常为32.768kHz,这是由于此频率具有较好的稳定性。
2.电源管理:DS1302芯片可以使用3V到5.5V的电源供电。
它内部具有电源管理电路,可以自动切换到低功耗模式以延长电池寿命。
3.时间计数器:DS1302芯片内部包含一个时间计数器,用于计算并保存当前时间、日期和星期。
它采用24小时制,并提供了BCD编码的小时、分钟、秒、日、月和年信息。
4.控制和数据接口:DS1302芯片使用串行接口与外部器件进行通信,如微控制器或外部检测电路。
控制和数据信息通过三根线SCLK(串行时钟)、I/O(串行数据输入/输出)和CE(片选)进行传输。
5.电源备份:为了确保即使在电源中断的情况下仍能保持时间数据,DS1302芯片通过附带的外部电池来提供电源备份功能。
当主电源中断时,芯片会自动切换到电池供电模式,并将时间数据存储在内部RAM中。
DS1302芯片的应用包括但不限于以下几个方面:1.时钟和日历显示:DS1302芯片可以直接连接到LCD显示屏、LED显示器或数码管等设备,用于显示当前时间和日期。
2.定时控制:DS1302芯片可以用作定时器或闹钟,在特定的时间触发一些事件。
例如,可以使用它作为控制家庭设备的定时开关。
3.数据记录:由于DS1302芯片具有时间计数功能,它可以用于记录事件的时间戳,如数据采集、操作记录或系统状态记录。
4.电源失效保护:DS1302芯片的电源备份功能可确保即使在电源中断的情况下,时间数据也能被保存,以避免系统重新启动后时间重置的问题。
多功能电子钟毕业设计
多功能电子钟毕业设计本文主要介绍了一款多功能电子钟的设计方案,其中包括时钟、定时器、闹钟、日历、温度显示等多种功能。
通过硬件和软件的相结合,实现了这种多功能的电子钟,具有易操作、准确显示、功能多样等特点。
本设计可用于家庭、实验室、工作室等多种场合。
一、设计目标随着现代科技的发展,电子钟成为人们生活中不可缺少的一部分。
因此,本文设计了一款多功能电子钟,集时钟、定时器、闹钟、日历、温度显示等多种功能于一身,方便人们的日常生活。
二、设计原理该电子钟的各项功能均用单片机控制实现。
电子钟的控制部分是基于51单片机进行设计。
时钟的原理是通过一个晶振来控制芯片的工作频率,从而达到时钟的准确显示。
使用DS1302进行存储和控制时间。
定时器的原理是通过定时器中断进行实现,通过设定定时器的计数值即可实现定时器的功能。
闹钟的原理是通过设定一个“警报时间”来实现,当时间到达“警报时间”时,闹钟就会开始响铃。
日历的原理是通过读取DS1302中存储的日期信息进行实现。
温度显示的原理是通过使用DS18B20传感器实现对温度的检测。
三、硬件设计本设计的硬件主要由以下部分组成:显示部分、按键部分、计时器部分、DS1302时钟芯片、DS18B20温度传感器、单片机及其外设(如LCD12864液晶屏等)。
1.显示部分本设计采用LCD12864液晶屏进行显示。
2.按键部分本设计采用4个按键T1~T4,T1键用于切换时间制式;T2键用于设定时间和日期等;T3键用于设定闹钟;T4键用于定时器的设定。
3.计时器部分本设计采用计时器555进行固定时间的计时。
4. DS1302时钟芯片DS1302时钟芯片是一种用于实现实时时钟的芯片,本设计将其用于控制电子钟的时间。
5. DS18B20温度传感器DS18B20温度传感器是一种用于测量温度的芯片,本设计将其用于温度显示功能。
6. 单片机及其外设本设计采用AT89C52单片机进行控制,其外设包括LCD12864液晶屏、DS1302时钟芯片、DS18B20温度传感器等。
实时时钟,日历芯片-BM8563,兼容PCF8563,参考源代码
_nop_(); _nop_(); }
/******************************************************************** 函 数 名:Stop_I2C(void) 功 能:停止 I2C 总线的传输 说 明: 调 用: 入口参数:无 返 回 值:无 ***********************************************************************/ void Stop_I2C(void) { SCL=0; _nop_(); SCL=1; SomeNOP(); SDA=1; SomeNOP(); }
/******************************************************************** 函 数 名: GetBM8563(void) 功 能:从 BM8563 的内部寄存器(时间、状态、报警等寄存器)读取数据 说 明:该程序函数用来读取 BM8563 的内部寄存器,譬如时间,报警,状态等寄存器 采用页写的方式,设置数据的个数为 no,no 参数设置为 1 就是单字节方式 调 用:Start_I2C(),SendByte(),RcvByte(),Ack_I2C(),Stop_I2C() 入口参数:sla(BM8563 从地址) , suba(BM8563 内部寄存器地址) *s(设置读取数据存储的指针) , no(传输数据的个数) 返 回 值:有,返回布尔量(bit)用来鉴定传输成功否 ***********************************************************************/ bit GetBM8563(uchar sla,uchar suba,uchar *s,uchar no) { uchar i; Start_I2C(); SendByte(sla); if(ack==0)return(0); SendByte(suba); if(ack==0)return(0); Start_I2C(); SendByte(sla+1); if(ack==0)return(0); for (i=0;i<no-1;i++) { *s=RcvByte(); Ack_I2C(0); s++; } *s=RcvByte(); Ack_I2C(1); Stop_I2C();//除最后一个字节外,其他都要从 MASTER 发应答。 return(1); }
实时时钟电路DS1302芯片的原理及应用
实时时钟电路DS1302芯片的原理及应用DS1302芯片是一种低功耗的实时时钟(RTC)电路。
它包含了一个真正的时钟/日历芯片和31个静态RAM存储单元,用于存储时钟和日期信息。
DS1302芯片的工作电压范围为2.0V至5.5V,并且具有极低的功耗,非常适合于移动电子设备和电池供电的应用。
DS1302芯片的原理如下:1.时钟发生器:DS1302芯片内部具有一个实时时钟发生器,它通过晶振和电容电路生成稳定的振荡信号,用于计时。
2.时钟/计时电路:DS1302芯片内部的时钟/计时电路可以精确地计算并保持当前的时间和日期。
它具有秒、分钟、小时、日期、月份、星期和年份等不同的计时单元。
3.RAM存储单元:DS1302芯片包含31个静态RAM存储单元,用于存储时钟和日期信息。
这些存储单元可以通过SPI接口进行读写操作,并且在断电情况下也能够保持数据。
4.控制接口:DS1302芯片通过3线接口与微控制器通信,包括一个时钟线、一个数据线和一个使能线。
这种接口使得与微控制器的通信非常简单,并且能够高效地读写时钟和日期信息以及控制芯片的其他功能。
DS1302芯片的应用如下:1.实时时钟:DS1302芯片可以用作电子设备中的实时时钟。
例如,它可以用于计算机、嵌入式系统、电子游戏等设备中,以提供准确的时间和日期信息。
2.定时器:DS1302芯片的计时功能可以用于设计各种定时器应用。
例如,它可以用于计时器、倒计时器、定时开关等应用中,以实现定时功能。
3.时钟显示:DS1302芯片可以与显示模块结合使用,用于显示当前的时间和日期。
例如,它可以用于数字钟、计时器、时钟频率计等应用中。
4.能量管理:由于DS1302芯片具有低功耗特性,因此它可以用于电池供电的设备中,以实现节能的能量管理策略。
例如,它可以用于手持设备、无线传感器网络等应用中,以延长电池寿命。
综上所述,DS1302芯片是一种低功耗的实时时钟电路,具有精确计时、可靠存储和简单接口等优点,适用于计时、显示和能量管理等各种应用中。
题目:电子日历时钟系统程序设计
题目:电子日历时钟系统程序设计一、功能:1.可通过M键切换显示模式:日期(年、月、日)、时间(小时、分、秒)、秒表(小时、分、秒、1/100秒)、闹钟(小时、分、秒)。
2.在日期显示模式,可通过A键依次使年、月、日闪烁或变色,这时可通过I键加1调整。
3.在时间显示模式,可通过A键依次使小时、分、秒闪烁或变色,这时可通过I键加1调整。
4.在秒表显示模式,可通过I键切换(启动/暂停)计时,当暂停计时时可通过A键复位。
5.在闹钟显示模式,可通过A键依次使On/Off标志、小时、分、秒闪烁或变色,这时可通过I键切换On/Off标志或加1调整。
6.调整和秒表操作不影响日期和时间的准确性。
7.可通过Q键结束程序。
二、任务与要求:1.实现方案,流程图(20分)2.实现日期的显示和调整(15分)3.实现时间的显示和调整(15分)4.实现日期和时间的准确性(5分)5.实现程序正常结束(5分)6.实现秒表功能(20分)7.实现闹钟功能,发声10秒(20分)8.基本实现前5项要求,再实现其它扩展要求,视难度加分。
答辩中误导答辩教师(由答辩教师认定,如某些同学参考其它资料但坚持声称全是自己编写的情况),视情节扣分。
n组设计雷同(由答辩教师认定),第一组正常计分,其余n-1组不计分。
设计报告总体要求:①写出主要设计思路,工作原理;②画出硬件接线图;③调试出现的问题及解决方法;④提交程序清单。
三、编程提示:PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,频率f=1.1931816MHz。
定时器0输出方波的频率: f out=1.1931816/65536=18.2Hz输出方波的周期T out=1/18.2=54.945ms。
8253A每隔55ms引起一次中断,作为定时信号。
可用55945ms作基本计时单位。
用BIOS调用INT 1AH可以取得该定时单位。
例:1秒=18.2 (计时单位)。
主要利用PC机系统功能调用实现电子日历时钟。
实时日历时钟温度方案与实现
单片机原理及应用课程设计目录1.课程设计题目与要求1.1课程设计内容利用STC89C52RC单片机设计实现实时日历/时间/温度在LCD1602上的显示1.2主要设备与器材PC机一台,HOT51增强型单片机开发板,STC89C52RC单片机一块,LCD1602液晶屏,DS1302时钟芯片,DS18B20温度传感器等,其它器材任选。
1.3设计要求<1)在LCD1602上显示年月日,星期,时分秒,温度,通过3个独立按键修改时间。
<2)显示格式:LCD第一行:年-月-日星期LCD第二行:时-分-秒温度1.4 设计人员分工伍国豪:整体电路设计,焊接电路刘青梅、何盈财:软件设计2.课设所需软件简介2.1 Keil uVision4的简要介绍2009年2月发布Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。
新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
新版本支持更多最新的ARM芯片,还添加了一些其他新功能。
1. 系统概述Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
下面详细介绍Keil C51开发系统各部分功能和使用。
2. Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE>,可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.OBJ>。
桌面日历系统的设计与实现
桌面日历系统的设计与实现摘要自上个世纪以来,随着电脑的慢慢普及,人们的工作和生活愈来愈方便和快捷,也使愈来愈多的人依托于电脑办公。
而传统的日程记事本慢慢显现出在现今时期的不足和局限性,比如不便携带、不便查阅、不能自动提示等等,电脑桌面日历由此孕育而生。
专门快,桌面日历就以其方便的日期查询、个性化的日程安排、精准的闹钟提示与配套的日记系统、美观的界面设计,受到广大电脑办公者的喜爱。
本设计确实是针对当前网络上众多的桌面日历,综合其各项大体功能来开发一套属于自己的个性化日历日记系统。
本设计要紧采纳C#+SQL的C/S设计模式,来实现不同用户的登录、日程编辑、日程提示、日期查询、节假日治理等工作。
方便了利用者对每日行程的把握,也爱惜了各利用者之间的私人信息。
本设计依照功能模块分为用户登录模块、用户注册、日历和时刻模块、节假日模块、日程行程模块、自动提示模块、数据库模块。
本文详细地介绍了该日历日程系统的功能需求、系统设计和具体实现。
并简要介绍了系统开发采纳的进程及方式。
关键词:桌面日历;日程;多用户系统需求分析用户需求该系统的用户要紧分为三种:未登录用户、登录用户、治理员。
未登录用户只能查看日历主界面和注册模块,登录用户能够利用除删除用户和修改其他用户之外功能,治理员能够利用该桌面日历所有功能。
登录用户和系统治理员都是通过密码验证登录,当角色操作完成后点击“注销”或“退出”按钮退出登录状态。
功能需求系统功能模块要紧包括以下几个方面:1,用户注册模块;2,登录模块;3,日记提示模块;4,节假日模块;5,日历主模块;6,用户信息、节假日信息和日记信息都保留在数据库模块中.以下依照不同的用户对具体功能进行描述:未登录用户未登录用户运行该系统后进入日历主界面,能够查看日历信息,能够查看当前的系统时刻,当点击日历上某一天时能够查看该天是不是是已设置的节假日。
用户当点击“日记记录”或“节日设置”的时候,系统提示对话框显示“该用户为未登录用户”,点击确信按钮后进入登录界面,输入账号和密码后实现用户登录。
实时时钟设计试验报告
实时时钟设计试验报告一、实验目的本实验的目的是设计一个实时时钟系统,具有实时显示时间、日期和闹钟功能。
通过该实验,我们可以了解实时时钟的设计原理、硬件电路连接及软件程序编写方法。
二、实验原理实时时钟系统由时钟芯片、显示模块、按键模块和控制模块组成。
时钟芯片负责计时和日期的记录,显示模块用于显示时间和日期,按键模块用于设置时间和日期,控制模块用于控制各模块之间的协作。
三、实验器材1.STM32开发板2.DS3231时钟模块3.数码管显示模块4.按键模块5.连接线四、实验步骤1.连接硬件电路。
将STM32开发板与DS3231时钟模块、数码管显示模块和按键模块进行连接,确保电路连接正确无误。
2.编写程序。
使用C语言编写程序,通过读取DS3231时钟模块的寄存器获取时间和日期数据,并将其显示在数码管模块上。
同时,设置按键模块的功能,使其可以进行时间和日期的设置。
3.烧录程序。
使用烧录器将编写好的程序烧录到STM32开发板上,并进行调试。
4.运行实验。
接通电源,启动实时时钟系统,观察数码管是否正确显示时间和日期,按下按键模块进行时间和日期的设置,并观察设置是否生效。
五、实验结果经过实验,我们成功设计出了一个实时时钟系统。
系统能够实时地显示当前的时间和日期,并且可以通过按键进行时间和日期的设置。
在设置新的时间和日期后,系统能够正确地更新并显示。
六、实验总结通过本次实验,我们深入地了解了实时时钟系统的设计原理和实现方法。
我们熟悉了DS3231时钟模块的使用方法,并学会了通过C语言编写程序来实现实时时钟系统的功能。
同时,我们也发现了实时时钟系统的一些问题,并加以解决。
我们对实时时钟系统的稳定性和精确性进行了测试,发现系统的计时精度较高,能够达到亚秒级的准确度。
然而,在用户进行时间和日期的设置时,可能由于误操作导致时间和日期出错。
需要在后续的工作中进一步优化系统的操作界面,提高用户设置的便捷性和准确性。
总而言之,实时时钟系统是一种非常有实用价值的设计,可以广泛应用于各种计时需求的场合,如办公室、实验室、车载设备等。
PCF8563日历时钟芯片原理及应用设计
PCF8563日历时钟芯片原理及应用设计PCF8563是一款实时时钟芯片,用于保存日期、时间和闹钟功能,并在需要时提供准确的时间。
它集成有时钟芯片、电历寄存器和电压降器,可以通过I2C总线进行控制和通信。
下面将详细介绍PCF8563的原理以及应用设计。
一、PCF8563的工作原理二、PCF8563的应用设计1.实时时钟系统:PCF8563广泛应用于各种实时时钟系统,例如电子钟、温度计、保险柜等。
它可以提供准确的时间,并可以进行一定的时钟校准,以确保时间的准确性。
2.日历显示:PCF8563可以与液晶显示器或LED显示器等进行连接,实现日期和时间的显示。
通过读取芯片中的日期和时间寄存器,可以将日期和时间信息显示在屏幕上。
3.闹钟功能:PCF8563内置有闹钟功能,可以设置闹钟时间和日期,并在闹钟触发时发出中断信号。
通过与外部蜂鸣器或报警器等连接,可以实现闹铃功能。
4.计时器功能:PCF8563可以用作计时器,例如测量一些过程的时间。
通过读取和记录时钟寄存器中的时间值,可以实现计时功能,并根据需要进行时钟校准。
5.电池电量监测:PCF8563可以监测电池电量,并在电池电量低于一定阈值时发出警告信号。
这对于需要长时间运行的系统非常有用,可以在电池电量低时及时更换电池。
三、总结PCF8563是一款功能强大的实时时钟芯片,可以提供准确的日期和时间,并具有闹钟和计时功能等。
它可以与各种外部设备进行通信,实现多种应用设计。
无论是日历显示系统还是闹钟功能系统,PCF8563都能够提供稳定和准确的时间支持。
电子实时时钟万年日历系统-单片机课程设计(含电路图、流程图、汇编语言)
一、题目:电子实时时钟/万年日历系统二、功能要求:1.基本要求:⑴显示准确的北京时间(时、分、秒),可用24小时制式;⑵随时可以调校时间。
2.发挥要求:⑴增加公历日期显示功能(年、月、日),年号只显示最后两位;⑵随时可以调校年、月、日;⑶允许通过转换功能键转换显示时间或日期。
三、方案考虑:1、硬件方案:⑴显示器采用6位LED数码管(共阳),可分别显示时间或日期。
⑵显示器的驱动采用动态扫描电路形式,以达到简化电路的目的。
但要注意所需的驱动电流比静态驱动时要大,因此要增加驱动电路。
可采用74LS244或者晶体管;其中74ls244是用来驱动段选码,晶体管是驱动位选码。
⑶采用“一键多用方案”,以减少按键数目。
本方案采用了4按键。
⑷整体上要考虑:结构简单、布局美观、操作方便、成本低廉。
2、设计电路图如下:3、元件清单:(我们使用的是TX-1C开发板)⑴ 89C52 1个⑵IC座(40脚) 3个(其中1个用于接插89C51、2个用于接插LED段数码管)。
⑶ 74LS244 1个(用于驱动6个共阳的LED段数码管)。
⑷ IC座(20脚) 1个(用于接插74LS244)。
(5)显示器:LED_8段数码管(共阳型)6个三极管:(6)PNP(8550)6个(用于驱动6个共阳型LED段数码管)。
(7)微型开关:3个(其中1个用于复位电路、其它用于键盘)。
(8)晶体振荡器(12MHz):1个(用于振荡电路)。
(9)电阻器:⑴ 3KΩ 1个(用于系统复位电路)。
⑵ 1KΩ 6个(用作PNP三极管基极电阻)。
⑶ 100Ω 7个(驱动器用作74LS244输出限流电阻)。
(10)电容器:⑴ 10μF1个(用于系统复位电路)。
⑵ 30 pF 2个(用于系统振荡电路)。
(11)其它:⑴万能电路板(10×15):1块⑵焊锡条: 2米⑶带插头、座的电源端子: 1条⑷各种颜色外皮的导线:各1米(12)工具:1.电烙铁:1把2.剪钳:1把3.镊子:1把4.万用表:1个(13)设备:编程器(MEP300或TOP851)6个4、软件方案:(1)使用全汇编编写(2)时钟基准时间由单片机内部定时中断来提供,定时时间应该乘以一个整数得到,且不宜太长或太短,最长不能超过16位定时器的最长定时时间,最短不能少于定时中断服务程序的执行时间。
带日历时钟的实时温度检测系统设计
0 引言 电子万 年历的设计就是建立在 单片机的基 础 上, 它是一种应用非常广泛的 1常计时工具, 3 带实时 1 3 历时钟 的温度检测系统的研究方法是通过单片机 编写 C语言程序去控制 D 1C 8 、液晶、按键和 S2 87
D 1C 8 S2 87是美 国 D L A A L S公 司推 出的一 种 高性能、 低功耗 的实时时钟芯片, 它能够 自动产生世 纪、 月 、 、 分、 等时间信息, S2 87时 年、 1 时、 秒 3 D 1C 8 钟芯片 自带有 18 2 B的 R M,其 中 l 个用来存储 A 1 时间信息。设定好闹钟时间后, 当时间到达时, 可以
t heDS1 C8 7co kc i , ipa o uea o t teL 2 8 lc hp ds lym d l d p s h CD, n mp rtr s a o t t eDS 8 0tmp rtr a dt e ea et t d p s 1 B2 u e h e eau e
曩 时的 温 测统 钟 钟实 度 系 计 带 时检 设 的 时 历 日
D s g f a R a — i e T m e a u e D t c i n S s e ih C ln a l c e i n o e l tm e p r t r e e t 0 y t m w t a e d r 系统的一个应用 , 本设计 由硬件和软件两部分组成 , 硬件由主控器、 时钟电 路、温度检测电路 、显示电路 、键 盘接 口5个模块 组成,主控模块 用 A 8 C 2 T 9 5 、时钟电路用 时钟芯 片 D 1C 8 、 S 2 8 7 显示模块 用 L D、 C 温度检测采用 D 1B 0温度传感器、 S8 2 键盘接 口电路用普通按键完成 ; 软件利 用 c语言编程实现, 单片机通过时钟芯片 D 1C 8 获取 时间数据 , S 8 2 S2 87 D 1B 0采集温度信号送给单片机处
基于μPD78F0485单片机实验板的实时时钟程序设计与实现讲解
基于μPD78F0485单片机实验板的实时时钟程序设计与实现讲解实时时钟(Real-Time Clock,简称RTC)是一种能够实时记录时间的设备。
在嵌入式系统中,RTC广泛应用于各种需要时间标记的场景,比如日历、定时任务等等。
本文将基于μPD78F0485单片机实验板,讲解实时时钟程序的设计与实现。
一、硬件连接首先,我们需要正确连接硬件。
μPD78F0485单片机实验板上有一个RTC芯片DS1302,它能够实现实时时钟功能。
将μPD78F0485与DS1302芯片通过引脚连接起来即可。
具体的连接方式可以参照单片机实验板的电路图。
二、软件设计1.寄存器配置首先,我们需要配置单片机的相关寄存器,使其能够与RTC芯片进行通信。
具体操作如下:(1)配置I/O口:将单片机的SDA引脚和SCL引脚设置为输出模式。
(2)配置RTC芯片寄存器:使用I2C总线协议与RTC芯片通信,设置RTC芯片的相关寄存器,比如设置时间、日期、闹钟等。
2.时钟读取与显示接下来,我们需要编写代码读取RTC芯片的时钟数据,并将其显示出来。
具体操作如下:(1)使用I2C总线协议读取RTC芯片的时钟寄存器,包括秒、分、时、日、月、周、年等。
(2)将读取到的时钟数据存储在相应的变量中。
(3)将时钟数据通过数码管、LCD等显示设备进行显示。
3.时钟设置除了读取时钟数据外,我们还需要能够设置RTC芯片的时钟。
具体操作如下:(1)通过按键或者其他输入方式,获取用户设定的时间、日期等数据。
(2)使用I2C总线协议将用户设定的时钟数据写入到RTC芯片的相应寄存器中。
(3)将设定的时钟数据通过数码管、LCD等显示设备进行显示。
4.定时中断为了实时更新时钟数据,我们可以使用定时中断的方式。
具体操作如下:(1)配置定时器:设置定时器的工作模式、计数值等参数。
(2)启动定时器:使定时器开始工作。
(3)在定时中断中,读取RTC芯片的时钟数据,并更新显示。
5.闹钟功能RTC芯片通常也会具备闹钟功能,我们可以通过设置RTC芯片的闹钟寄存器,实现闹钟功能。
ds1302时钟芯片
ds1302时钟芯片DS1302时钟芯片是一种集成电路,用于实现实时时钟和日历功能。
它采用了低功耗设计,能够通过电池供电来保持时钟和日期的准确性。
下面将介绍DS1302时钟芯片的工作原理、特点、应用领域以及一些常见问题。
DS1302时钟芯片的工作原理是基于内部由31个静态单元组成的RAM,用于存储秒、分、时、日、月、星期、年等信息。
芯片内部还有一个温度传感器,可以实时监测环境温度。
DS1302还具有时钟使能和充电控制功能,可以使用独立的外部晶体振荡器。
DS1302的特点之一是低功耗设计。
它使用电池供电,平均电流消耗非常低,典型的工作电流为1.5μA。
这使得DS1302非常适合于那些需要长时间运行的应用,如计时器、时钟、日历等。
此外,DS1302还具有灵活的时钟输出选项,可以选择性地输出时钟信号,以适应不同的应用需求。
它还支持串行接口通信,可以通过单个数据线与微控制器、单片机等外部设备进行通信。
DS1302广泛应用于各种电子设备中,如电子钟、电子测量仪器、电子秤等。
它的低功耗设计和可靠性使其成为许多嵌入式系统的首选选择。
此外,DS1302还可以与其他外设配合使用,如液晶显示屏、按键、蜂鸣器等,实现更加复杂的功能。
DS1302时钟芯片常见问题解答:1. DS1302支持哪些时钟格式?DS1302支持24小时制和12小时制两种时钟格式,可以根据应用需求进行设置。
2. DS1302的温度传感器精度如何?DS1302的温度传感器精度为±3℃,可以满足大部分应用的需求。
3. DS1302的电池寿命是多久?DS1302使用CR2032型电池供电,寿命通常为3-5年。
寿命取决于电池的质量和使用环境。
4. DS1302如何与微控制器通信?DS1302支持串行接口通信,使用单个数据线与外部设备通信。
通信协议简单,易于掌握。
总结:DS1302时钟芯片是一种低功耗实时时钟芯片,具有灵活的时钟输出选项、温度传感器和充电控制功能。
电子实时时钟万年日历系统-单片机课程设计(含电路图、流程图、PCB图、汇编语言)
摘要围绕电子钟系统的设计与开发工作进行研究和实践,详细介绍了电子钟系统的整体结构、硬件设计、软件设计,系统方案以及其的开发和具体实现。
介绍一种基于在系统可编程技术和C51编译器配有集成开发的新型电子钟的设计方法,阐述了其工作原理和软硬件设计。
在硬件上,用KEIL公司的C51大规模集成芯片对其外围电路进行集成,用1片8051实现了几十片分离元件才能实现的功能,几乎将整个系统下载于同一芯片中,实现了所谓的片上系统,从而大大简化了系统结构,增强了系统的可靠性和性价比。
该电子钟特别适用于家庭、办公大楼、公共场所等。
关键词电子钟;单片机;硬件设计;软件设计ABSTRACTAround the electronic clock system design and development of the study and practice, details the electronic clock system overall, hardware design, software design, system solutions as well as the development and implementation. Introduction of a new technology based on in-system programming and C51 compiler equipped with an integrated development of new electronic clock design method, explains how it works and software and hardware design. In the hardware companies with KEIL C51 large-scale integrated circuit chip on its surrounding, to integrate 1 tablet 8051 implementation of scores of tablets separation components to implement functionality, almost the entire system for download on the same chip, implementation of the so-called SOC, thereby greatly simplifies system structure, enhances system reliability and high performance/price ratio. The electronic clock is particularly relevant for home, office buildings and public place, etc.Key words electronic clock; single-chip; hardware; software design目录1 系统总体设计方案 (4)1.1 设计课题任务 (4)1.2 功能要求说明 (4)1.3 总体方案介绍及工作原理 (4)2 硬件系统的设计 (6)2.1 系统各功能模块介绍 (6)2.2 系统电路图 (7)2.3 系统元器件清单 (7)3 软件系统的设计 (8)3.1设计使用单片机资源介绍 (8)3.2 软件系统各功能模块介绍 (8)3.3 软件系统程序流程框图 (9)3.4 软件系统的程序 (10)4 系统的仿真分析及结论 (11)4.1 系统设计的使用说明 (11)4.2 系统设计的仿真结果 (11)4.3 系统的误差分析 (12)4.4 设计体会 (12)4.5 教学建议 (13)参考文献 (14)致谢 (15)附录(1) (16)附录(2) (17)1 系统总体设计方案1.1 设计课题任务设计一个具有特定功能的电子钟。
PIC24系列单片机原理与开发 第12章 实时时钟日历
PIC24 系列单片机原理与开发 by Zeng
2012-6-13
第 12 章 实时时钟日历
12.1 概述
PIC24F 系列芯片内集成有一个实时时钟日历(Real-Time Clock and Calendar, RTCC) 模块外设,它能够向 CPU 提供秒、分、时、日、月、年和星期等实时时间信息。这为那些需 要实时时钟的的嵌入式应用提供了方便 ,可省去外接 DS1310、PCF8563 等专用日历时钟芯片 的硬件开销。PIC24F 系列芯片的 RTCC 模块具有如下特性:
12.2 RTCC 模块的寄存器
RTCC 模块的寄存器分为三类:控制寄存器(RCFGCAL,PADCFG1,ALCFGRPT);实时时 间日历的值寄存器字 RTCVAL,通过 RTCVAL 访问模块的 YEAR(年)、MTHDY(月日)、WKDYHR (星期时)和 MINSEC(分秒)单元;报警值寄存器 ALRMVAL,通过 ALRMVAL 访问模块的报 警设定单元 ALMTHDY(月日)、ALWDHR(日时)和 ALMINSEC(分秒)。
3. 引脚配置控制寄存器 PADCFG1
表 12-3 所列为引脚配置寄存器 PADCFG1 各位的功能定义。
表12-3:引脚配置控制寄存器PADCFG1各位功能定义
U-0 未用
bit 15 bit 7
[毕业设计]开题报告单片机应用系统开发——实时日历和时钟的显示[管理资料]
代的单片机等新电子技术以及现代的设计手段,系统地培养了综合设计、操
作调试、故障处理的能力,达到综合素质以及创新能力的提高。
二、课题主要内容
1设计要求
日历时钟由 LED 数码管显示,数码管初始时间显示的是年、月、日、星期、,
时间信息的调控,可以通过键盘调节显示日历时间为当前准确的数据 。课题
需要完成单片机与时钟芯片之间的通信,以及单片机对调时键盘的扫描,以
环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有
上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智
能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而 51 单片
机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学
习、应用,以 AT89S52 芯片为核心,辅以必要的电路,设计了一个简易的电
常工作的单片机系统电路板。
1-3 周:查阅相关资料,学习有线电话电路知识;学习单片机的基础知
识;完成开题报告。
时间安排
4-7 周:进行硬件电路设计、调试。 8-11 周:进行软件编程、调试。
12-13 周:软、硬件连试,电路改进、完善。
14-16 周:撰写论文,准备答辩。
指导教师 意见
参考文献:
签 名: 年月日
本科生毕业设计(论文)开题报告
学生姓名 题目名称 课题来源
年月日
学号
专业 机械设计制造及自动化
单片机应用系统开发——实时日历和时钟的显示
自选
一、课题的目的和意义
单片机自 20 世纪 70 年代问世以来,以其极高的性能价格比,受到人们的
重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东科技大学信电学院07级大神的课程设计代码,实时日历/时钟的设计及实现825982538255仅供学弟学妹参考,课程设计还要自己做。
.386Init macro op1,op2,op3,op4,op5,op6mov cx,00hmov dh,op1mov dl,op2op6:mov ah,02hmov bh,00hint 10hpush cxmov ah,0ahmov al,op3mov bh,00hmov cx,01hint 10hpop cxinc cxinc op4cmp cx,op5jne op6endmdata segmentshijian db 10 dup(':') ;存放时间riqi db 20 dup(' ') ;存放日期str1 db ' Welcome to use this clock ',0ah,0dhdb '* show time--t ',0ah,0dhdb '* set time--s ',0ah,0dh,'$'str2 db ' _ _ ',0ah,0dhdb ' ( ) ( )',0ah,0dhdb ' | |_| | ',0ah,0dhdb ' | _ | /^_` )( ^_`\ ( ^_`\ ( ) ( ) ',0ah,0dhdb ' | | | |( (_| || (_) )| (_) )| (_) | ',0ah,0dhdb ' (_) (_)`\__,_)| ,__/^| ,__/^`\__, | ',0ah,0dhdb ' | | | | ( )_| | ',0ah,0dhdb ' (_) (_) `\___/^ ',0ah,0dhdb ' _ _ _ _ ',0ah,0dhdb ' ( ) ( ) ( ) ( ) ',0ah,0dhdb ' | `\| | __ _ _ _ `\`\_/^/^__ _ _ _ __ ',0ah,0dhdb ' | , ` | /^__`\( ) ( ) ( ) `\ /^/^__`\ /^_` )( ^__) ',0ah,0dhdb ' |`\ | ( ___/| \_/ \_/ | | |( ___/( (_| || | ',0ah,0dhdb ' (_) (_)`\____)`\___x___/^ (_)`\____)`\__ _)(_) ',0ah,0dh,'$'str3 db ' change date--d',0ah,0dhdb ' change time--c',0ah,0dhdb ' time is right--r ',0ah,0dhdb ' return to menu--m ',0ah,0dhdb ' return to doc--o ',0ah,0dh,'$'year db 'please press a new year:',0ah,0dh,'$'month db 'please press a new month:',0ah,0dh,'$'day db 'please press a new day:',0ah,0dh,'$'hour db 'please press a new hour:',0ah,0dh,'$'minu db 'please press a new minute:',0ah,0dh,'$'seco db 'please press a new second:',0ah,0dh,'$'chag db 'Are you sure(y/n)?',0ah,0dh,'$'error db 'press error,please input right button:',0ah,0dh,'$'wrong db 'You have pressed the wrong button, press a new button:',0ah,0dh,'$'cant db 'cant change the time, please rechange:',0ah,0dh,'$'data endscode segment use16assume ds:data,cs:codestart:mov ax,datamov ds,axmov es,axmov ax,0700h ;清屏,al滚动行数mov bh,1ah ;背景、字体颜色mov cx,0 ;窗口左上角坐标mov dx,2479h ;窗口右下角坐标(Y'X)int 10hInit 00d,00d,0Dh,dl,80d,sign1Init 24d,00d,0Dh,dl,80d,sign2Init 00d,00d,2ah,dh,25d,sign3Init 00d,79d,2ah,dh,25d,sign4mov ah,02h ;设置光标位置(1)mov bh,00h ;显示页码mov dh,07h ;行坐标mov dl,02h ;列坐标int 10hlea dx,str1 ;显示提示字符串mov ah,09hint 21hinput:mov ah,01h ;键盘输入int 21hcmp al,'t'jz desk2 ;跳转下一页面cmp al,'s'jnz error1call chandate ;更改日期call chantime ;更改时间jmp desk2error1:call huilea dx,error ;提示输入错误mov ah,09hint 21hjmp inputmov ah,4chint 21hdesk2:call clear ;清屏mov ah,02h ;设置光标位置(2)mov bh,00h ;页码mov dh,0ah ;Y行坐标mov dl,00h ;列X坐标int 10hlea dx,str3 ;显示字符串2call yinmov ah,09hint 21hclear1:mov ah,1 ;查询键盘缓冲区,测试键盘是否有输入(不将字符读出,用于提前测试按键为何字符)int 16hjz shan ;缓冲区为空,zf=1无输入zf=0有输入xor ax,ax ;不为空则取出,清空int 16hjmp clear1shan:mov ah,02h ;设置光标位置(2)mov bh,00h ;页码mov dh,01h ;Y行坐标mov dl,00h ;列X坐标int 10hlea dx,str2 ;显示字符串2call yinmov ah,09hint 21hmov ah,2ch ;提取系统时间CH=时(0~23),CL=分(0~59),DH=秒(0~59),DL =百分秒(0~99)int 21hmov bl,dhcmp bl,30hjb kuangsub bl,12 ;59-2chkuang:Init 05d,42d,bl,dl,25d,sign9 ;横向Init 08d,42d,bl,dl,25d,sign10Init 05d,42d,bl,dh,04d,sign11 ;纵向Init 05d,67d,bl,dh,04d,sign12push axmov ah,00mov al,blmov bl,2div blInit 00d,00d,al,dh,25d,sign5inc alInit 24d,00d,al,dl,80d,sign6inc alInit 00d,79d,al,dh,25d,sign7inc alInit 00d,00d,al,dl,80d,sign8pop axmov si,0 ;清空后别的指令;读取日期mov ah,2ah ;CX=年,AL=星期DH=月,DL=日int 21hmov ax,cx ;年call ascyear ;年ASC码转换and ah,0 ;ah置零mov al,dh ;月call ascdate ;ASC码转换and ah,0mov al,dl ;日call ascdate ;ASC码转换lea bp,riqi ;显示日期ES:BP=显示字符串的地址mov dx,0632h ;DH,DL=起始行,列mov cx,10 ;CX=显示字符串长度mov bx,004eh ;BH=页码BL=属性(若AL=00H或01H)背景字体颜色mov ax,1301h ;AL=显示输出方式1——字符串中只含显示字符,其显示属性在BL 中。
显示后,光标位置改变int 10hmov si,0mov ah,2ch ;读取时间CH=时(0~23),CL=分(0~59),DH=秒(0~59),DL=百分秒(0~99)int 21hand ah,0mov al,ch ;时call asctime ;ASC码转换and ah,0mov al,cl ;分call asctimeand ah,0mov al,dh ;秒call asctimelea bp,shijian ;显示时间,bp显示时间的地址mov dx,0733hmov cx,8 ;字符串长度mov bx,005fh ;颜色mov ax,1301h ;视频中断(INT 10H)13H号功能:显示指定地址、指定长度的字符串int 10hmov ah,02h ;设置光标位置mov bh,00h ;页码mov dh,0fh ;y坐标mov dl,00h ;x坐标int 10hcall delay1 ;时间延迟mov ah,01h ;键盘中断int 16hcmp al,'o'jnz menujmp end1menu:cmp al,'m'jnz rightxor ax,axint 16hjmp startright:cmp al,'r'jnz date1call yin ;时间确定,隐藏光标call clear ;清除字符串2jmp shandate1:cmp al,'d'jnz time1call chandatejmp desk2time1:cmp al,'c'jnz clear1call chantimejmp desk2end1:mov ah,4ch ;主程序结束int 21h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; asctime proc ;时间asc码转换mov bl,10div bl ;al商ah余数add al,'0'mov shijian[si],alinc siadd ah,'0'mov shijian[si],ahinc siinc siretasctime endpascyear proc ;年asc码转换mov bl,100div bl ;al商ah余数push axand ah,0mov bl,10div bladd al,'0'mov riqi[si],alinc siadd ah,'0'mov riqi[si],ahinc sipop axmov al,ahand ah,0mov bl,10div bladd al,'0'mov riqi[si],alinc siadd ah,'0'mov riqi[si],ahinc siinc siretascyear endpascdate proc ;月日asc码转换mov bl,10div bladd al,'0'mov riqi[si],alinc siadd ah,'0'mov riqi[si],ahinc siinc siretascdate endpdelay1 proc ;精确延迟时间子程序mov dx,04ffh ;循环次数up: xor cx,cx ;空指令没有意义a: noploop adec dxjnz upretdelay1 endpchandate procmov ah,1 ;清空键盘缓冲区;查询键盘缓冲区int 16hjz c ;缓冲区为空xor ax,ax ;不为空则取出,清空int 16hc:call huichanyear:lea dx,year ;更改年mov ah,09hint 21hand cx,0 ;存放结果mov ah,01hint 21hcall ceshi ;第一个数字是否(0-9)sub al,30hand ah,0mov bx,1000mul bxadd cx,axmov ah,01hint 21hcall ceshi ;第二个数字sub al,30hand ah,0mov bl,100mul bladd cx,axmov ah,01hint 21hcall ceshi ;第三个数字sub al,30hand ah,0mov bl,10mul bladd cx,axmov ah,01hint 21hcall ceshi ;第四个数字sub al,30hand ah,0add cx,axpush cx ;保护年call huichanmonth:lea dx,month ;更改月mov ah,09hint 21hcall chan ;更改月日时分秒子程序返回bhcmp bh,1jae ocall cuojmp chanmontho:cmp bh,12jbe qcall cuojmp chanmonthq:mov dh,bhpush dx ;保护月call huipop dx ;退出保护月pop cx ;退出保护年call chanday ;闰年判断得出日的范围push cx ;重新保护年mov dl,bh ;日push dx ;保护月日call huilea dx,chagmov ah,09hint 21hpop dxpop cx ;退出保护年input2:mov ah,01hint 21hcmp al,'n'jz ccmp al,'y'jz judgepush dxcall huilea dx,wrongmov ah,09hint 21hpop dxjmp input2judge:mov ah,2bh ;CX=年(1980~2099),DH=月(1~12),DL=日(1~31) int 21hcmp al,0 ;测试更改是否成功,出口参数:AL=00H--设置成功,0FFH--设置失败jz returncall huilea dx,cantmov ah,09hint 21hjmp chanyearreturn:retchandate endpchantime proc ;更改时间mov ah,1 ;清空键盘缓冲区;查询键盘缓冲区int 16hjz we ;缓冲区为空xor ax,ax ;不为空则取出,清空int 16hwe:call huichanhour:lea dx,hour ;更改小时mov ah,09hint 21hcall chancmp bh,0jae rcall cuojmp chanhourr:cmp bh,23jbe scall cuojmp chanhours:;mov dh,bhmov ch,bh ;CH=时(0~23)call huichanmin:lea dx,minu ;更改分钟mov ah,09hint 21hcall chancmp bh,0jae wcall cuojmp chanminw:cmp bh,59jbe vcall cuojmp chanminv:;mov dh,bhmov cl,bh ;CL=分(0~59)call huichansec:lea dx,seco ;更改秒mov ah,09hint 21hcall chancmp bh,0jae xcall cuojmp chansecx:cmp bh,59jbe ycall cuojmp chansecy:mov dh,bh ;DH=秒(0~59),mov dl,00h ;定义1/100秒从0开始DL=百分秒(0~99) push cxpush dxcall huilea dx,chagmov ah,09hint 21hpop dxpop cxinput3:mov ah,01hint 21hcmp al,'n'jz wecmp al,'y'jz judge2push dxcall huilea dx,wrongmov ah,09hint 21hpop dxjmp input3judge2:mov ah,2dhint 21hcmp al,0 ;修改是否成功jz return1call huilea dx,cantmov ah,09hint 21hjmp chanhourreturn1:retchantime endphui proc ;光标换行mov dl,0ahmov ah,02hint 21hmov dl,0dhmov ah,02hint 21hrethui endpchan procg2:mov ah,01h ;更改月日时分秒子程序int 21hsub al,30hmov bl,10mul bljae g3 ;输入大于0跳转call huilea dx,errorint 21hjmp g2g3:mov bh,al ;bh出口参数mov ah,01h ;输入第二个数字int 21hsub al,30hadd bh,aljae g1 ;输入第二个数大于0call huilea dx,errormov ah,09hint 21hjmp g2g1:retchan endpclear proc ;清屏子程序mov ax,0600hmov bh,2eh ;背景,字体颜色mov cx,0mov dx,2479hint 10hretclear endpyin proc ;隐藏光标mov cx,2000hmov ah,01hint 10hretyin endpceshi proc ;测试输入数字cmp al,30hjae lcall huilea dx,errormov ah,09hint 21hjmp chanyearl:cmp al,39hjbe ncall huilea dx,errorint 21hjmp chanyearn:retceshi endpcuo proc ;显示错误call huilea dx,errormov ah,09hint 21hretcuo endpchanday procb2:push dx;月d:lea dx,day ;更改日mov ah,09hint 21hmov ah,01hint 21hsub al,30hmov bl,10mul bljae d1;al-30>=0跳到d1call huilea dx,errormov ah,09hint 21hjmp dd1:mov bh,almov ah,01hint 21hsub al,30hadd bh,aljae mcall huilea dx,errormov ah,09hint 21hjmp dm:pop dxcmp dh,1jz a1cmp dh,2jz a2jz a1cmp dh,4jz a3cmp dh,5jz a1cmp dh,6jz a3cmp dh,7jz a1cmp dh,8jz a1cmp dh,9jz a3cmp dh,10jz a1cmp dh,11jz a3cmp dh,12jz a1a1:cmp bh,1jae b1push dxcall cuopop dxjmp b2b1:cmp bh,31jbe b3push dxcall cuopop dxjmp b2a3:cmp bh,1jae c1push dxcall cuopop dxjmp b2c1:cmp bh,30jbe b3push dxcall cuopop dxjmp b2a2:mov ax,cxpush bxpush dxcwd ;扩展mov bx,4 ;DX.AX商:ax,DX.AX余数:dxdiv bxcmp dx,0pop dxpop bxjnz lab1;不等于零跳到lab1mov ax,cxmov bl,100div blcmp ah,0jnz lab2mov ax,cxpush bxpush dxcwdmov bx,400div bxcmp dx,0pop dxpop bxjz lab2lab1:cmp bh,1jae d2push dxcall cuopop dxjmp b2d2:cmp bh,28jbe b3push dxcall cuopop dxjmp b2lab2:cmp bh,1jae d3push dxcall cuopop dxjmp b2d3:cmp bh,29jbe b3push dxcall cuopop dxjmp b2b3:ret chanday endp code endsend start。