

免费预览已结束,剩余33页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
论文课题:多功能电子钟 学生姓名:谢金廷 专 业: 电子信息工程学 号:09042331指导教师 : 朱兆优 2011年 12 月 26日基于单片机的电子时钟设计摘 要20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。数码管显示的时间简单明了而且读数快、时间准确显示到秒。而机械式的依赖于晶体震荡器,可能会导致误差。数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的精度、稳定度远远超过老式机械钟。在这次设计中,我们采用led数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12mhz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。关键字:数字电子钟 单片机目 录第一部分 整体设计方案1.1 课程设计任务1.2 单片机的选择1.3 单片机的基本结构第二部分 数字钟的硬件设计2.1 最小系统设计2.2 led显示电路第三部分 数字钟的软件设计3.1 系统软件设计流程图3.2主程序3.4 时钟设置子程序3.5 定时器中断子程序3.6 led显示子程序3.7 按键控制子程序第四部分 调试与功能说明4.1系统性能测试与功能说明4.2系统时钟误差分析4.3硬盘调试4.4软件调试问题及解决心得体会附件第一部分 整体方案的设计1.1 课程设计的任务:设计一个多功能数字时钟完成以下功能1、 走时(能实现时分秒,年月日的计时)2 、显示(分屏显示时分秒,年月日,修改定位闪烁显示)3、校时(能用按键修改和校准时钟)4、定时报警1.2 单片机的选择 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和i/o接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过1、2、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强i/o功能及较好的结构兼容性方向发展。其发展趋势不外乎以下几个方面:1、多功能 单片机中尽可能地把所需要的存储器和i/o口都集成在一块芯片上,使得单片机可以实现更多的功能。比如a/d、pwm、pca(可编程计数器阵列)、wdt(监视定时器-看家狗)、高速i/o口及计数器的捕获/比较逻辑等。 有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以51内核为核心,集成了usb控制器、smart card接口、mp3解码器、can或者i*i*c总线控制器等,led、lcd或vfd显示驱动器也开始集成在8位单片机中。2、高效率和高性能 为了提高执行速度和执行效率,单片机开始使用risc、流水线和dsp的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内rom(flash)和ram的容量都突破了以往的数量和限制。 由于系统资源和系统复杂程度的增加,开始使用高级语言(如c语言)来开发单片机的程序。使用高级语言可以降低开发 难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。3、低电压和低功耗 单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。由于cmos等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2v或0.9v),功耗已经降低到ua级。这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。4、低价格 单片机应用面广,使用数量大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。下面大致介绍一下单片机的主要应用领域和特点。(1)家用电器领域 用单片机控制系统取代传统的模拟和数字控制电路,使家用电器(如洗衣机、空调、冰箱、微波炉、和电视机等)功能更完善,更加智能化和易于使用。(2)办公自动化领域 单片机作为嵌入式系统广泛应用于现代办公设备,如计算机的键盘、磁盘驱动、打印机、复印机、电话机和传真机等。(3)商业应用领域 商业应用系统部分与家用和办公应用系统相似,但更加注重设备的稳定性、可靠性和安全性。商用系统中广泛使用的电子计量仪器、收款机、条形码阅读器、安全监测系统、空气调节系统和冷冻保鲜系统等,都采用了单片机构成的专用系统。与通用计算机相比,这些系统由于比较封闭,可以更有效地防止病毒和电磁干扰等,可靠性更高。(4)工业自动化 在工业控制和机电一体化控制系统中,除了采用工控计算机外,很多都是以单片机为核心的单片机和多机系统。(5)智能仪表与集成智能传感器 目前在各种电气测量仪表中普遍采用了单片机应用系统来代替传统的测量系统,使得测量系统具有存储、数据处理、查询及联网等智能功能。将单片机和传感器相结合,可以构成新一代的智能传感器。它将传感器变换后的物理量作进一步的变化和处理,使其成为数字信号,可以远距离传输并与计算机接口。(6)现代交通与航空航天领域 通常应用于电子综合显示系统、动力监控系统、自动驾驶系统、通信系统以及运行监视系统等。这些领域对体积、功耗、稳定性和实时性的要求往往比商用系统还要高,因此采用单片机系统更加重要。目前,我国生产很多型号的单片机,在此,我们采用型号为stc89c52的单片机。因为:/datasheet/atmel/at89c51.pdfstc89c52是一个低电压,高性能cmos 8位单片机,片内含4k bytes的可反复擦写的flash只读程序存储器和128 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-52指令系统,片内置通用8位中央处理器和flash存储单元,内置功能强大的微型计算机的at89c52提供了高性价比的解决方案。 stc89c52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,stc89c51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和flash存储器结合在一起,特别是可反复擦写的flash存储器可有效地降低开发成本。1.3 单片机的基本结构 stc89c-52单片机内部结构 stc89c-52单片机包含中央处理器、程序存储器(rom)、数据存储器(ram)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器:中央处理器(cpu)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,cpu负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(ram)stc89c-52内部有256个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的ram只有256个,可存放读写的数据,运算的中间结果或用户定义的字型表。程序存储器(rom):stc89c-52共有8192个8位掩膜rom,用于存放用户程序,原始数据或表格。定时/计数器(rom):stc89c-52有三个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。并行输入输出(i/o)口:stc89c-52共有4组8位i/o口(p0、 p1、p2或p3),用于对外部数据的传输。全双工串行口:stc89c-52内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:stc89c-52具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。时钟电路:stc89c-52内置最高频率达12mhz的时钟电路,用于产生整个单片机运行的脉冲时序,但stc89c-52单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(princeton)结构。intel的mcs-52系列单片机采用的是哈佛结构的形式,而后续产品16位的mcs-96系列单片机则采用普林斯顿结构。复位电路单片机的复位方式可以是自动复位,也可以是手动复位,见下图。此外,reset/vpd还是一复用脚,vcc掉电其间,此脚可接上备用电源,以保证单片机内部ram的数据不丢失。 上电自动和手动复位电路图图2-5 内部和外部时钟方式图 第二部分 数字钟的硬件设计2.1 最小系统设计 单片机的最小系统是由电源、复位、晶振、/ea=1组成,下面介绍一下每一个组成部分。1.电源引脚 vcc40电源端gnd20接地端工作电压为5v,另有at89lv51工作电压则是2.7-6v, 引脚功能一样。 2.外接晶体引脚图3-2 晶振连接的内部、外部方式图xtal119xtal218 xtal1是片内振荡器的反相放大器输入端,xtal2则是输出端,使用外部振荡器时,外部振荡信号应直接加到xtal1,而xtal2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12mhz,时钟频率就为6mhz。晶振的频率可以在1mhz-24mhz内选择。电容取30pf左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。at89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚xtal1和xtal2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容c1和c2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12mhz,电容应尽可能的选择陶瓷电容,电容值约为22f。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。3. 复位rst9在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后p0p3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器sfr全部清零。当复位脚由高电平变为低电平时,芯片为rom的00h处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚rst通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的s5p2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用6mhz时,c取22f,rs约为200,rk约为1k。复位操作不会对内部ram有所影响。常用的复位电路如下图所示:图3-3 常用复位电路图4.输入输出引脚(1) p0端口p0.0-p0.7 p0是一个8位漏极开路型双向i/o端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个ttl。对内部flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。在访问外部程序和外部数据存储器时,p0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。(2) p1端口p1.0p1.7 p1是一个带有内部上拉电阻的8位双向i/0端口。输出时可驱动4个ttl。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部flash程序存储器编程时,接收低8位地址信息。(3) p2端口p2.0p2.7 p2是一个带有内部上拉电阻的8位双向i/0端口。输出时可驱动4个ttl。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,p2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。(4) p3端口p3.0p3.7 p2是一个带有内部上拉电阻的8位双向i/0端口。输出时可驱动4个ttl。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部flash程序存储器编程时,接控制信息。除此之外p3端口还用于一些专门功能,具体请看下表。p3引脚兼用功能p3.0串行通讯输入(rxd)p3.1串行通讯输出(txd)p3.2外部中断0( int0)p3.3外部中断1(int1)p3.4定时器0输入(t0)p3.5定时器1输入(t1)p3.6外部数据存储器写选通wrp3.7外部数据存储器写选通rdp3端口引脚兼用功能表2.2 led显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管led显示器、液晶lcd显示器、crt显示器等。led显示器是现在最常用的显示器之一,如下图所示。led显示器的符号图发光二极管(led)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式led显示器件(半导体显示器)。分段式显示器(led数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。led数码管有共阳、共阴之分。图是共阳式、共阴式led数码管的原理图和符号.共阳式、共阴式led数码管的原理图和数码管的符号图显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管。采用动态显示方式显示时间,硬件连接如下图所示,时的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第三个和四五个数码管,秒的十位和个位分别显示在第五个和第六个数码管。led显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。对于多位led显示器,通常都是采用动态扫描的方法进行显示,其硬件连接方式如下图所示。数码管的硬件连接示意图数码管使用条件:a、段及小数点上加限流电阻 b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定c、使用电流:静态:总电流 80ma(每段 10ma);动态:平均电流 4-5ma 峰值电流 100ma数码管使用注意事项说明:()数码管表面不要用手触摸,不要用手去弄引角;()焊接温度:度;焊接时间:()表面有保护膜的产品,可以在使用前撕下来。第三部分 数字钟的软件设计系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的问题:(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调试、链接,又便于移植和修改;(3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;(4)绘制程序流程图;(5)合理分配系统资源;(6)为程序加入注释,提高可读性,实施软件工程;(7)注意软件的抗干扰设计,提高系统的可靠性。3.1软件设计流程图 这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。 主程序是先进行初始的设置,然后启动定时器计数器0,定时器启动后再进行按键检测,检测完后,在根据为各种显示设置的标志来判断显示时分秒,年月日或闹钟时间,若判断有按键则进入相应按键处理子程序进行操作。开始主程序初始化,启动定时器按键检测,有按键则进入按键子程序做处理根据设定的标志显示时间或日期或闹钟nynyny时加1显示时间退出开始秒闪烁,加1键按下?秒加1分闪烁,加1键按下?分加1时闪烁,加1键按下?按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。 按键处理流程图n24小时到?分单元清零,时单元加1nnnyy时单元清零时间显示中断返回开始中断20次?60秒时间到?60分钟到?秒单元加1秒单元清零,分单元加1yy采用定时器计数器0,工作在方式1下,每50毫秒中断一次,若计时中断每到20次则跳出中断继续计时,若到20次则秒存储单元加1,若秒不满60则跳出中断,满60则清零,分单元加1,分满60则清零,时单元加1,不满24退出中断,满则时单元清零,日单元加1,如此方式累次下去就完成时分秒,年月日的走时。定时器中断流程图nynyny时加1显示时间退出开始秒闪烁,加1键按下?秒加1分闪烁,加1键按下?分加1时闪烁,加1键按下? 闹钟设置流程图 数字电子钟的工作原理。工作原理 : 数字电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。因此,一个基本的数字钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。8个数码管的段选接到单片机的p0口,位选接到单片机的p2口。数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。“时单元”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”通过七段显示器显示出来。3.2设计主程序。(采用汇编语言编写程序)资源分配:p0.0-7口 为数码管段选,采用共阴显示管。;p2.0-5数码管位选30h-秒,31h-分,32h-时,40h-日,41h-月,42h-年闹钟:50h-秒,51h-分,52h-时60h,61h,调整定位计数单元38h-计数单元f0-切换标志,为1显示日期,为0显示时间psw.1为1显示闹钟定时单元,为0正常显示时间r7定时中断次数r5延时计数单元r2-扫描码初始单元 org 0000h ljmp main;跳入主程序初始化 org 000bh ;定时中断0入口地址 ljmp tm0 org 0030hmain: mov 60h,#00 ;时分秒定位计数 mov 61h,#00 ;闹钟定位计数 clr psw.1 clr f0 mov sp,#6fh ;堆栈指针初始化 mov 30h,#50h ;秒初始化 mov 31h,#36h ;分初始化 mov 32h,#14h ;时初始化 mov 40h,#22h ;日初始化 mov 41h,#12h ;月初始化 mov 42h,#11h ;年初始化 mov 50h,#00h mov 51h,#30h mov 52h,#14h mov r7,#20 ;50毫秒中断50次 mov scon,#00 mov dptr,#tab mov ie,#82h mov tmod,#01h mov th0,#3ch mov tl0,#0b0h setb tr0 ;启动计时loop1: acall dsp1 ;调用显示时分秒程序 acall cjdw ;查键 acall dsp2 ;调用显示年月日子程序 acall nzxx;闹钟显示acall nn;闹钟设定 ajmp loop1 dsp1: jb psw.1,exq0 ;psw.1为1跳出jb f0,exq0 ;f0为1跳出 mov r2,#0feh ;扫描码初始化 mov r6,#03 mov r0,#32h ;显示单元初始化 acall scan ;调用扫描子程序 ret dsp2: jb psw.1,exq0 jnb f0,exq0 mov r2,#0feh mov r6,#03 mov r0,#42h acall scan exq0: retscan: noploop2: mov a,r0 anl a,#0f0h ;取高位 swap a movc a,a+dptr ;查表 mov sbuf,a ;送入sbuf串行输出 jnb ti,$ clr ti mov a,r2 mov p2,a ;送位选码,选通数码管 rl a mov r2,a acall delay1ms ;单个数码管显示延时 mov a,r0 anl a,#0fh movc a,a+dptr mov sbuf,a jnb ti,$ clr ti mov a,r2 mov p2,a rl a mov r2,a dec r0 acall delay1ms djnz r6,loop2 ret delay1ms:mov r5,#02 ;延时1毫秒lp3: mov b,#250 djnz b,$ djnz r5,lp4 ret delay10ms:mov r5,#10 ;查键延时10毫秒(延时去抖)lp4: mov b,#250 djnz b,$ djnz r5,lp4 ret cjdw: nopk1: jb p1.4,k2 acall delay10ms jb p1.4,k2xh:jnbf0,sfmacalldsp2ajmp nextsfm: acalldsp1next: jnbp1.4,xh cpl f0 retk2: jb p1.5,k3 acall delay10ms jb p1.5,k3 mov a,60h add a,#01 mov 60h,a cjne a,#07,k3 clr f0jx1: mov r0,#32h mov r2,#0fehmov r6,#03 mov a,r0acall scan jnb p1.5,jx1exq1: mov 60h,#00 retk3: noptm: mov a,60h ;秒调整 cjne a,#01,tf;定位到秒? mov 38h,#160 ;循环显示160次loop3: mov r0,#32h ;闪烁,秒单元不显示 mov r2,#0feh ;扫描码初始化 mov r6,#02 ; 只显示时和分 mov a,r0 acall scan ;调用扫描子程序 djnz 38h,loop3 mov 38h,#01loop5: mov r0,#32h ;正常显示 mov r2,#0fehmov r6,#03 mov a,r0acall scan djnz 38,loop5 jb p1.6,exq2 ;判断是否按加1键 acall delay10ms ;延时10毫秒去抖 jb p1.6,exq2 mov a,30h ;秒加1 add a,#01h da a mov 30h,a cjne a,#60h,exq2 ;秒满60 mov 30h,#00h ;清零 ret ;返回主程序tf: cjne a,#02,ts ;调分 mov 38h,#160loop6: mov r0,#32h mov r2,#0feh mov r6,#01mov a,r0 acall scan mov r0,#30h mov r2,#0efh mov r6,#01mov a,r0 acall scan djnz 38h,loop6 mov 38h,#100loop7: mov r0,#32h mov r2,#0feh mov r6,#03mov a,r0acall scan djnz 38h,loop7 jb p1.6,exq2 acall delay10ms jb p1.6,exq2 mov a,31h add a,#01h da a mov 31h,a cjne a,#60h,exq2 mov 31h,#00h retexq2: retts: cjne a,#03,tr 调时 mov 38h,#160loop8: mov r0,#31h mov r2,#0fbh mov r6,#02mov a,r0 acall scan djnz 38h,loop8 mov 38h,#120loop9: mov r0,#32hmov r2,#0fehmov r6,#03 mov a,r0acall scan djnz 38h,loop9 jb p1.6,exq3 acall delay10ms jb p1.6,exq3 mov a,32h add a,#01h da a mov 32h,a cjne a,#24h,exq3 mov 32h,#00hexq3:rettr: ;调日 cjne a,#04,ty mov 38h,#120loop10: mov r0,#42h mov r2,#0feh mov r6,#02 mov a,r0 acall scan djnz 38h,loop10 mov 38h,#120loop11: mov r0,#42h mov r2,#0fehmov r6,#03mov a,r0 acall scan djnz 38h,loop11 jb p1.6,exq4 acall delay10ms jb p1.6,exq4 mov a,40h add a,#01h da a mov 40h,a cjne a,#31h,exq4 mov 40h,#00h retty: cjne a,#05,tn ;调月 mov 38h,#160loop12: mov r0,#42h mov r2,#0feh mov r6,#01 mov a,r0 acall scan mov r0,#40h mov r2,#0efh mov r6,#01mov a,r0 acall scan djnz 38h,loop12 mov 38h,#100loop13: mov r0,#42h mov r2,#0fehmov r6,#03 mov a,r0 acall scan djnz 38h,loop13 jb p1.6,exq4 acall delay10ms jb p1.6,exq4 mov a,41h add a,#01h da a mov 41h,a cjne a,#13h,exq4 mov 41h,#00h exq4: rettn: cjne a,#06,exq5 ;调整年 mov 38h,#160loop14: mov r0,#41h mov r2,#0fbh mov r6,#02 mov a,r0 acall scan djnz 38h,loop14 mov 38h,#120loop15: mov r0,#42h mov r2,#0fehmov r6,#03mov a,r0acall scan djnz 38h,loop15 jb p1.6,exq5 acall delay10ms jb p1.6,exq5 mov a,42h add a,#01h da a mov 42h,a cjne a,#99h,exq5 mov 42h,#00hexq5:retnn: jb p1.7,n0 ;p1.7闹钟定位 acall delay10ms ;延时去抖dd: jb p1.7,n0 setb psw.1 mov a,61h add a,#01 mov 61h,a cjne a,#04,n0 clr psw.1jx2: mov r0,#52h ;退出闹钟是正常显示时间待按键结束 mov r2,#0fehmov r6,#03 mov a,r0acall scanjnb p1.7,jx2 mov 61h,#00 retn0: mov a,61h cjne a,#01,n1 ;设定秒 mov 38h,#120dd1: mov r0,#52h mov r2,#0feh mov r6,#02 mov a,r0 acall scan djnz 38h,dd1 mov 38h,#120dd2: mov r0,#52h mov r2,#0feh mov r6,#03mov a,r0acall scan djnz 38h,dd2 jb p1.6,dd acall delay10ms jb p1.6,dd mov a,50h add a,#01h da a mov 50h,a cjne a,#60h,exit1 mov 50h,#00hexit0: retn1: cjne a,#02,n2 ;设定分 mov 38h,#120dd3: mov r0,#52h mov r2,#0feh mov r6,#01 mov a,r0 acall scan mov r0,#50h mov r2,#0efh mov r6,#01mov a,r0 acall scan djnz 38h,dd3 mov 38h,#120dd4: mov r0,#52h mov r2,#0fehmov r6,#03mov a,r0acall scan djnz 38h,dd4 jb p1.6,tc acall delay10ms jb p1.6,tc mov a,51h add a,#01h da a mov 51h,a cjne a,#60h,exit1 mov 51h,#00h retn2: cjne a,#03,exit1 ;设定时 mov 38h,#160dd5: mov r0,#51h mov r2,#0fbh mov r6,#02 mov a,r0 acall scan djnz 38h,dd5 mov 38h,#120dd6: mov r0,#52h mov r2,#0fehmov r6,#03mov a,r0 acall scan djnz 38h,dd6 jb p1.6,tc acall delay10ms jb p1.6,tc mov a,52h add a,#01h da a mov 52h,a cjne a,#12h,exit1 mov 52h,#00hexit1: rettc: ajmp ddnzxx: mov a,52h cjne a,32h,exit2 mov a,51h cjne a,31h,exit2ct: mov r0,#52h mov r2,#0feh mov r6,#03 mov a,r0 acall scan clr p3.5 acall delay1ms setb p3.5 acall delay1ms clr p3.5acall delay1ms jb p1.7,ct acall delay1ms jb p1.7,ct setb p3.5setb p3.5 clr psw.1 exit2: ret tm0: push psw ;定时中断程序 push acc mov
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖北-湖北检验员三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北房管员二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北地图绘制员一级(高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北公路养护工三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-海南-海南食品检验工四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-海南-海南理疗技术员二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-浙江-浙江管道工一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-浙江-浙江机械热加工一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-浙江-浙江堤灌维护工四级(中级工)历年参考题库含答案解析(5套)
- 2024版协议结婚协议书模板
- 监控中心改造方案
- 国家级紧急医学救援队伍建设规范
- GB 30254-2024高压三相笼型异步电动机能效限定值及能效等级
- (正式版)CB∕T 4548-2024 船舶行业企业相关方安全管理要求
- JT-T-4-2019公路桥梁板式橡胶支座
- 2023-2024学年青海省西宁市城西区小升初易错点数学检测卷含解析
- 中建高支模专家论证汇报材料
- 医疗器械经销商管理
- (高清版)WST 311-2023 医院隔离技术标准
- 非居民金融账户涉税信息尽职调查管理办法
- 普通地质学及地貌课件
评论
0/150
提交评论