资源描述
河南理工大学河南理工大学河南理工大学单片机课程设计报告单片机课程设计报告程序,加程序,加 153893706定时闹钟定时闹钟姓 名: 学 号: 专业班级: 电气工程 044 指导老师: 所在学院:电气工程与自动化学院2007 年 6 月 30 日摘要摘要1本设计是用单片机原理及其相关硬件的运用实现的定时闹钟。数字电子钟设计与制作可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计与制作中采用单片机AT89C51,它是低功耗、高性能的 CMOS 型 8 位单片机。片内带有 4KB 的 Flash存储器,且允许在系统内改写或用编程器编程。另外, AT89C51 的指令系统和引脚与 8051 完全兼容,片内有 128B 的 RAM、32 条 I/O 口线、2 个 16 位定时计数器、5 个中断源、一个全双工串行口等。显示部分采用六位一体的共阳极数码管,运用同相三态双向总线收发器 74LS245 作为输出驱动显示部件的元件。在编写程序的过程采用了定时程序和时间调整程序对称的编写方法。并且在时间的调整或设置过程中本设计采用了长按进行调时或调分的选择,短按是进行在选择后进行加 1,每短按一次,该单位加 1.调整完毕以后再次长按原设置键即可跳出设置循环,显示部分共阳极数码管显示正常走时的时间。但是该程序在硬件的仿真过程中有点瑕疵。在仿真开始时警示灯直接亮,必须通过闹钟定时键 K2 的闹钟设置以后时间才可以正常走时。之后可以进行时间的调整或闹钟的重新调整。 目录目录21 1 概述概述.3 31.1 设计任务 .31.2 设计要求 .31.3 设计意义 .32 2 系统总体方案与硬件选择设计系统总体方案与硬件选择设计.4 42.1 系统总体方案 .42.2 硬件选择设计 .43 3 软件设计软件设计.9 93.1 程序流程图 .93.2 程序模块 .104 4 PROTEUSPROTEUS 软件仿真软件仿真 .17175 5 课程设计体会课程设计体会.1919参考文献参考文献.1919附附 1 1:源程序代码:源程序代码 .2121附附 2 2:系统原理图:系统原理图 .333331 1 概述概述1.1 设计任务在熟练掌握单片机及其仿真系统的使用方法的基础上,综合应用单片机原理,微机原理,微机接口技术等专业知识,设计采用一个 AT89C51 单片机控制的定时闹钟。1.2 设计要求1)能够显示时时分分秒秒。2)设定定时时间、修改定时时间。3)定时时间到能发出报警声或者启动继电器,从而控制电器的启停。在此设计中该定时闹钟的报警启动继电器的动作用 LED 灯的变化来显示。1.3 设计意义通过利用 MCS-51 单片机制作定时闹钟,可以更加深刻的理解单片机在自动化仪表中的作用以及掌握单片机的编程方法;从而进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤;通过设计定时数字闹钟数字输出输入及扫描显示模拟系统,熟练掌握单片机仿真软件Proteus 的使用方法。 42 2 系统总体方案与硬件选择设计系统总体方案与硬件选择设计 2.1 系统总体方案定时闹钟的系统可分为四个环节,分别是单片机控制系统、时间显示模块、控制键模块和闹铃模块。通过若干模块的协调工作就可以完成相应的时间调整和定时闹钟的相应功能以及显示功能。模块的相互连接如下图(图 1)所示: 单片机控制系统模块 图 12.2 硬件选择设计1 单片机控制系统与相关附件XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51 可编程可擦除只读存储器 AT89C51 ( 如图 2 ) 图 2(1) 简介 该元件由 CPU、振荡器与时序电路、4KB 的 ROM、256B 的 RAM、两个 16 位的定时器/计数器 T0 和 T1、4 个 8 位的 I/O 端口闹铃模块时间显示模块控制键模块5(P0、P1、P2、P3) 、串行口等组成。其中振荡器时序电路与外时钟组成了定时控制部件。(2) CPU 的主要功能是产生各种控制信号,控制存储器、输入/输出接口的数据传送、数据的算术运算、逻辑运算以及位操作处理等。它是单片机的头脑。(3) CPU 从功能上可以分为运算器和控制器两部分。其中运算器由算术逻辑运算部件 ALU、累加器、暂存器、程序状态字寄存器、BCD 码运算调整电路等组成。为了提高数据处理和位操作能力,片内增加了一个通用寄存器 B 和一些专用寄存器,还增加了位处理逻辑电路的功能。主要完成对数据进行算术四则运算和逻辑运算、移位操作、位操作等。控制器由程序计数器、指令寄存器、指令译码器、定时控制与条件转移逻辑电路等组成。主要功能是对来自存储器中的指令进行译码,通过定时控制电路,在规定的时刻发出各种操作所需的全部内部和外部控制信号,协调各功能元件的工作,完成指令所规定的功能。而控制器中的定时控制部件与时序是在规定时刻发出各种操作所需的全部内部和外部控制信号,使各功能元件能够协调工作,完成指令所规定动作的功能。主要任务是产生一个工作时序,其工作需要时钟电路提供一个工作频率。(4) 管脚说明 VCC:供电电压 GND:接地 P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高祖输入.P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位.在 FLASH 编程时,P0 口作为原码输入口,当 FLASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接受输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用做输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故.在FLASH 编程和校验时,P1 口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 缓冲器可接收输出 4 个 TTL 门电流,当 P2 口被写 1 时,其管脚被内部上拉电阻拉高,且作为输6入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流.这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口作为地址的高 8 位。在给出地址 1 时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个TTL 门电流,当 P3 口写入 1 后,它们被内部上拉为高电平,并用作输入.作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。 2 系统时钟电路 如图 3XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C210uX1CRYSTALC110uR110kR210kR310k图 3MCS-51 内部有一个用于构成振荡器的高增益反相放大器,此放大器的输入和输出端分别是引脚 XTAL1 和 XTAL2,在 XTAL1 和 XTAL2 上外接时钟源即可构成时钟电路。单片机的生产工艺不同,时钟的产生方式也不同,有内部和外部两种时钟产生方式。根据该设计的需要,采取了内部方式。(1)HMOS 型 MCS-51 外部时钟源的接法。内部时钟产生方式:XTAL1 和 XTAL2 两端跨接晶体或陶瓷振谐器,与内部反相器构成稳定的自激振荡器。其发出的时钟脉冲直接送入片内定时控制部件。C1、C2 对频率有微调作用。(2)CHMOS 型的外部时钟源的接法与 HMOS 型的单片机内部时钟电路不同:(2.1)内部时钟信号取自反相放大器的输入端。 (2.2)振荡器的工作可编程控制。即当相应的部件进入掉电保护,系统进入低功耗运行。因内部时钟发生器的信号取自放大器的输入端,故采用外部时钟源时,接线方法与 HMOS 型的单片机有所不同。73 同相三态双向总线收发器 74LS245 如图 4XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C210uX1CRYSTALC110uR110kR210kR310kA02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B711CE19AB/BA1U274LS245D1LED-GREEN图 4 用来驱动 LED 或其他的设备,可双向传输数据.还具有三态功能,既可以输出,也可以输入数据。当 8051 单片机的 P0 口总线负载达到或超过 P0 口负载能力时,必须接入 74LS245 等总线驱动器。(2)控制键模块(如图 5)R110kR210kD1LED-YELLOWK1K2图 5K1 键为时间设置和正常走时的设置键。第一次长按该键即可进行分钟的设置状态,调整的部分为闪烁状态,之后短按该键每按下一次即可在要设置的分钟上加 1。设置完成以后再次长按该键即可进入小时的设置,分钟的显示位置8不再闪烁。而小时的显示位置为闪烁状态,之后短按该键每按下一次即可在要设置的小时上加 1。设置完成之后再次长按该键(显示部分无闪烁状态) ,即可显示设置时间后的正常走时。K2 键为闹钟设置键和正常走时的调整键。调整的过程与时间的设置过程类似。第一次长按该键即可进行分钟的调整状态,调整的部分为闪烁状态,之后短按该键每按下一次即可在要设置的分钟上加 1。设置完成以后再次长按该键即可进入小时的设置,分钟的显示位置不再闪烁。而小时的显示位置为闪烁状态,之后短按该键每按下一次即可在要调整的小时上加 1。调整完成以后长按该键(显示部分无闪烁状态) ,即可显示正常走时。须注意:该定时闹钟在定时之后才可以正常走时。( 3 )时间显示模块显示部分(如图 6) 图 6 显示部分采用六位一体共阳数码管,自左到右分别显示时时分分秒秒。在进行时间的闹钟设置和时间的调整过程中相应的设置或调整的单元部分为闪烁状态。(4)闹铃模块(如图 7) D1LED-GREEN图 7警示灯,定时时间输出低电平,LED 灯两端存在电位差即灯亮。93 3 软件设计软件设计 3.1 程序流程图10初次设置闹铃间CPU 等初始化设定闹铃时间启动走时有关量的初始化启动闹铃定时设置程序判断分时变化调时调分判断 1S 到否再次设置闹铃否闹铃时间到否显示刷新 3.2 程序模块;11; 主 程 序 ;START: MOV R0 , #70HMOV R7, #0BHMOV 20H, #00HCLEARDISP: MOV R0, #00HINC R0DJNZ R7,CLEARDISP ; 给显示缓冲单元 7075H 赋初值MOV 7AH,#0AHMOV 3AH,#0AHMOV R0, #30HMOV R7, #0BHMOV 20H, #00HCLEARdDISP: MOV R0, #00HINC R0DJNZ R7,CLEARdDISPMOV 3AH,#0AHMOV TMOD,#11H;定时器等状态初始化MOV TL0, #0B0HMOV TH0, #3CHMOV TL1, #0B0HMOV TH1, #3CHSETB EA;开中断SETB ET0SETB TR0;T0 开始工作MOV R4,#14Hstart1: LCALL DISPLAYJNB P3.2,SETMM1JNB P3.3,DSETMM1SJMP Start1SETMM1: LJMP SETMMDSETMM1:LJMP DSETMM程序开始先调用调整与正常走时显示程序,判断 K1 键是否按下,若按下择调用时钟调整程序,若无按下则判断 K2 是否按下,若按下则调用闹钟设置程序。若无键按下则返回主程序继续循环当定时器计数满溢出时,调用计时秒进位程序,时钟每增加一秒,通过以下语句:CJNE a,70H,yyy12MOV a,31HCJNE a,71H,yyyMOV a,32HCJNE a,72H,yyyMOV a,33HCJNE a,73H,yyyMOV A,34HCJNE A,74H,yyyMOV A,35HCJNE A,75H,yyy判断定时时间是否到,若没有则返回主程序,若有则调用闹钟服务子程序。由于定时设置时的初值和正常走时的初值全部为 00H,所以在刚开始运行时灯直接亮。之后可以通过长按 k2 键设置定时闹钟的时间进而实现该闹钟的正常走时。;计时秒进位程序 ;INTT0: PUSH ACCPUSH PSWCLR ET0CLR TR0MOV A,#0B7H ;中断同步修正ADD A,TL0MOV TL0,AMOV A,#3CHADD A,TH0MOV TH0,ASETB TR0DJNZ R4, OUTT0ADDSS: MOV R4,#14HMOV R0,#71HACALL ADD1 ;加 1 程序MOV A,R3CLR CCJNE A,#60H,ADDMMADDMM: JC OUTT0ACALL CLR0MOV R0,#77HACALL ADD113MOV A,R3CLR CCJNE A,#60H,ADDHHADDHH: JC OUTT0ACALL CLR0MOV R0,#79HACALL ADD1MOV A,R3CLR CCJNE A,#24H,HOURHOUR: JC OUTT0ACALL CLR0OUTT0: MOV 72H,76HMOV 73H,77HMOV 74H,78HMOV 75H,79HMOV A,30HCJNE A,70HyyyMOV A,31HCJNE A,71H,yyyMOV A,32HCJNE A,72H,yyyMOV A,33HCJNE A,73H,yyyMOV A,34HCJNE A,74H,yyyMOV A,35HCJNE A,75H,yyyCLR p1.0LCALL ALARMPROCESSyyy:POP PSWPOP ACCSETB ET0RETI; 时钟调整程序 ;14;SETMM: cLR ET0CLR TR0LCALL DL1SJB P3.2,CLOSEDISMOV R2,#06HSETB ET1SETB TR1SET2: JNB P3.2,SET1SETB 00HSET4: JB P3.2,SET3LCALL DL05SJNB P3.2,SETHHMOV R0,#77H ;加 1 分程序LCALL ADD1MOV A,R3CLR CCJNE A,#60H,HHHHHH: JC SET4LCALL CLR0CLR CAJMP SET4CLOSEDIS: SETB ET0SETB TR0CLOSE: JB P3.2,CLOSELCALL DISPLAYJB P3.2,CLOSEWAITH: JNB P3.2,WAITHLJMP START1SETHH: CLR 00HSETHH1: JNB P3.2,SET5SETB 01HSET6: JB P3.2,SET7LCALL DL05SJNB P3.2,SETOUTMOV R0,#79HLCALL ADD1MOV A,R315CLR CCJNE A,#24H,HOUUHOUU: JC SET6LCALL CLR0AJMP SET6SETOUT: JNB P3.2,SETOUT1LCALL DISPLAYJNB P3.2,SETOUTCLR 01HCLR 00HCLR 02HCLR TR1CLR ET1SETB TR0SETB ET0LJMP START1SET1: LCALL DISPLAYAJMP SET2SET3: LCALL DISPLAYAJMP SET4SET5: LCALL DISPLAYAJMP SETHH1SET7: LCALL DISPLAYAJMP SET6SETOUT1: LCALL DISPLAYAJMP SETOUT;调整通过判断按键按下时间的长短来判断是调小时还是调分,通过调用闪烁程序可以判断当前状态是调整小时或是调整分钟。; 闹铃时钟调整程序 ;DSETMM: CLR ET0CLR TR0SETB 04HLCALL DDL1SJB P3.3,DCLOSEDISMOV R2,#06H16SETB ET1SETB TR1DSET2: JNB P3.3,DSET1SETB 03HDSET4: JB P3.3,DSET3LCALL DDL05SJNB P3.3,DSETHHMOV R0,#37H ;加 1 分程序LCALL ADD1MOV A,R3CLR CCJNE A,#60H,DHHHDHHH: JC DSET4LCALL CLR0CLR CAJMP DSET4DCLOSEDIS: SETB ET0SETB TR0DCLOSE: JB P3.3,DCLOSELCALL DISPLAY2JB P3.3,DCLOSEDWAITH: JNB P3.3,DWAITHLJMP START1DSETHH: CLR 03HDSETHH1: JNB P3.3,DSET5SETB 06HDSET6: JB P3.3,DSET7LCALL DDL05SJNB P3.3,DSETOUTMOV R0,#39HLCALL ADD1MOV A,R3CLR CCJNE A,#24H,DHOUUDHOUU: JC DSET6LCALL CLR0AJMP DSET6DSETOUT: JNB P3.3,DSETOUT117LCALL DISPLAY2JNB P3.3,DSETOUTCLR 06HCLR 03HCLR 05HCLR 04HCLR TR1CLR ET1SETB TR0SETB ET0LJMP START1DSET1: LCALL DISPLAY2AJMP DSET2DSET3: LCALL DISPLAY2AJMP DSET4DSET5: LCALL DISPLAY2AJMP DSETHH1DSET7: LCALL DISPLAY2AJMP DSET6DSETOUT1: LCALL DISPLAY2AJMP DSETOUT设置通过判断按键按下时间的长短来判断是设置小时还是设置分钟,通过调用闪烁程序可以判断当前状态是设置小时或是设置分钟。4 4 ProteusProteus 软件仿真软件仿真正常走时的仿真图(如图 8)18XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427AT89C51C110uC210uR110kX1CRYSTALA02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B711CE19AB/BA1U374LS245R210kD1LED-YELLOW 图 8定时时间到灯亮时的仿真图(如图 9,图 10)XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427AT89C51C110uC210uR110kX1CRYSTALA02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B711CE19AB/BA1U374LS245R210kD1LED-YELLOW图 919XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427AT89C51C110uC210uR110kX1CRYSTALA02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B711CE19AB/BA1U374LS245R210kD1LED-YELLOW图 10205 5 课程设计体会课程设计体会当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。它在科学技术的发展与生活中的重要性随着时间的发展越来越显著。通过这次单片机课程设计我对常用的单片机的工作原理与设置应用有了具体的操作上的认识。对于程序中编程过程掌握欠缺的地方在此次单片机的课程设计中得到很大的提高。对于指令的认识与运用在这次课程设计中有了更多的认识。并且对 PROTEUS 软件与 WAVE 软件的应用得到了掌握。并且通过这次单片机课程设计我深刻的感受到自己在编程以及硬件上的差距。虽然实现了老师对这个课程设计的基本要求,但是对于编程过程中的许多细节上的东西处理的不好,以致在数码管的刚开始的显示中显示有点混乱,只有在若干次的按键才能正常显示。并且开始的正常走时必须在定时的前提下才能正常走时。我的这次课设存在瑕疵。通过这次课设让我更深刻的感受到单片机是与实践是紧密联系在一起的.因此我更要在以后的学习中注重对这方面能力的培养!为走向工作岗位增加自己的竞争力,也为更好的适应社会与时代的发展做准备!参考文献参考文献期刊论文期刊论文: :1金素华,张尉.单片机调试方法的讨论.电子世界,2004,25(4):34-652宋凤娟,廉文利,付云强.单片机 89C51 在调速系统中的应用.微计算机信息,2007,12(6):113-114书、专著:书、专著:1余发山. 单片机原理及应用技术. 中国矿业大学出版社, 2003,21302何立民编著.单片机中级教程(原理与应用).北京:北京航天大学出版社,2000.78-1003张迎新编著.单片微型计算机原理应用及接口技术.北京:国防工业出版社,1993.67-89电子文献:电子文献:1步步鱼.单片机 AT89C51 介绍.21http:/ 同相三态双向总线收发器 74LS245 简介.http:/ 1:源程序代码;显示缓冲单元在 70H75H,70H71H 显示秒,72H73H 显示分,74H75H 显示时;定时缓冲单元在 30H35H,30H-31H 显示秒,32H-33H 显示分,34H-35H 显示小时;时间计数单元在 70H71H(秒)、76H77H(分)、78H79H(时),7AH 单元放熄;灭符(#0AH);计数单元采用 BCD 码计数,定时器 T0 设置为 50MS 溢出中断,为秒计数用,定时器 T1;为调整时闪烁用;P3.2 为调整按钮,P1 口为字符输出口,采用共阳显示管。; 中断入口程序 ;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHLJMP INTT0ORG 0013HRETIORG 001BHLJMP INTT1ORG 0023HRETIORG 002BHRETI; 主 程 序 ;START: MOV R0, #70HMOV R7, #0BHMOV 20H, #00HCLEARDISP: MOV R0, #00HINC R0DJNZ R7,CLEARDISPMOV 7AH,#0AHMOV 3AH,#0AHMOV TMOD,#11H23MOV TL0, #0B0HMOV TH0, #3CHMOV TL1, #0B0HMOV TH1, #3CHSETB EASETB ET0SETB TR0MOV R4,#14Hstart1: LCALL DISPLAYJNB P3.2,SETMM1JNB P3.3,DSETMM1SJMP Start1SETMM1: LJMP SETMMDSETMM1:LJMP DSETMM;计时秒进位程序 ;INTT0: PUSH ACCPUSH PSWCLR ET0CLR TR0MOV A,#0B7H ;中断同步修正ADD A,TL0MOV TL0,AMOV A,#3CHADD A,TH0MOV TH0,ASETB TR0DJNZ R4, OUTT0ADDSS: MOV R4,#14HMOV R0,#71HACALL ADD1 ;加 1 程序MOV A,R3CLR CCJNE A,#60H,ADDMMADDMM: JC OUTT0ACALL CLR024MOV R0,#77HACALL ADD1MOV A,R3CLR CCJNE A,#60H,ADDHHADDHH: JC OUTT0ACALL CLR0MOV R0,#79HACALL ADD1MOV A,R3CLR CCJNE A,#24H,HOURHOUR: JC OUTT0ACALL CLR0OUTT0: MOV 72H,76HMOV 73H,77HMOV 74H,78HMOV 75H,79HMOV A,30HCJNE A,70H,yyyMOV A,31HCJNE A,71H,yyyMOV A,32HCJNE A,72H,yyyMOV A,33HCJNE A,73H,yyyMOV A,34HCJNE A,74H,yyyMOV A,35HCJNE A,75H,yyyCLR p1.0LCALL ALARMPROCESSyyy:POP PSWPOP ACCSETB ET0RETI;25;*; 闹时服务子程序;*ALARMPROCESS: clr p1.0; jb p3.3,$ setb p1.0ALARMRETURN: RET; 闪动调时程 序 ;INTT1: PUSH ACCPUSH PSWMOV TL1, #0B0HMOV TH1, #3CHDJNZ R2,INTT1OUT MOV R2,#06HJB 04H,DFLASHCPL 02HJB 02H,FLASH1MOV 72H,76HMOV 73H,77HMOV 74H,78HMOV 75H,79HINTT1OUT: POP PSW POP ACCRETIFLASH1: JB 01H,FLASH2 MOV 72H,7AHMOV 73H,7AHMOV 74H,78HMOV 75H,79HAJMP INTT1OUTFLASH2: MOV 72H,76HMOV 73H,77HMOV 74H,7AHMOV 75H,7AH26AJMP INTT1OUT; 定时闪动调时程序 ;DFLASH:CPL 05HJB 05H,FLASH3MOV 32H,36HMOV 33H,37HMOV 34H,38HMOV 35H,39HAJMP INTT1OUTFLASH3: JB 06H,FLASH4MOV 32H,3AHMOV 33H,3AHMOV 34H,38HMOV 35H,39HAJMP INTT1OUTFLASH4: MOV 32H,36HMOV 33H,37HMOV 34H,3AHMOV 35H,3AHAJMP INTT1OUT; 加 1 程序 ;ADD1: MOV A,R0DEC R0SWAP AORL A,R0ADD A,#01HDA AMOV R3,AANL A,#0FHMOV R0,AMOV A,R3INC R0SWAP A27ANL A,#0FHMOV R0,ARET; 清零程序 ;CLR0: CLR AMOV R0,ADEC R0MOV R0,ARET; 时钟调整程序 ;SETMM: cLR ET0CLR TR0LCALL DL1SJB P3.2,CLOSEDISMOV R2,#06HSETB ET1SETB TR1SET2: JNB P3.2,SET1SETB 00HSET4: JB P3.2,SET3LCALL DL05SJNB P3.2,SETHHMOV R0,#77H ;加 1 分程序LCALL ADD1MOV A,R3CLR CCJNE A,#60H,HHHHHH: JC SET4LCALL CLR0CLR CAJMP SET4CLOSEDIS: SETB ET0SETB TR0CLOSE: JB P3.2,CLOSE28LCALL DISPLAYJB P3.2,CLOSEWAITH: JNB P3.2,WAITHLJMP START1SETHH: CLR 00HSETHH1: JNB P3.2,SET5SETB 01HSET6: JB P3.2,SET7LCALL DL05SJNB P3.2,SETOUTMOV R0,#79HLCALL ADD1MOV A,R3CLR CCJNE A,#24H,HOUUHOUU: JC SET6LCALL CLR0AJMP SET6SETOUT: JNB P3.2,SETOUT1LCALL DISPLAYJNB P3.2,SETOUTCLR 01HCLR 00HCLR 02HCLR TR1CLR ET1SETB TR0SETB ET0LJMP START1SET1: LCALL DISPLAYAJMP SET2SET3: LCALL DISPLAYAJMP SET4SET5: LCALL DISPLAYAJMP SETHH1SET7: LCALL DISPLAYAJMP SET6SETOUT1: LCALL DISPLAY29AJMP SETOUT; 闹铃时钟调整程序 ;DSETMM: CLR ET0CLR TR0SETB 04HLCALL DDL1SJB P3.3,DCLOSEDISMOV R2,#06HSETB ET1SETB TR1DSET2: JNB P3.3,DSET1SETB 03HDSET4: JB P3.3,DSET3LCALL DDL05SJNB P3.3,DSETHHMOV R0,#37H ;加 1 分程序LCALL ADD1MOV A,R3CLR CCJNE A,#60H,DHHHDHHH: JC DSET4LCALL CLR0CLR CAJMP DSET4DCLOSEDIS: SETB ET0SETB TR0DCLOSE: JB P3.3,DCLOSELCALL DISPLAY2JB P3.3,DCLOSEDWAITH: JNB P3.3,DWAITHLJMP START1DSETHH: CLR 03HDSETHH1: JNB P3.3,DSET5SETB 06HDSET6: JB P3.3,DSET7LCALL DDL05S30JNB P3.3,DSETOUTMOV R0,#39HLCALL ADD1MOV A,R3CLR CCJNE A,#24H,DHOUUDHOUU: JC DSET6LCALL CLR0AJMP DSET6DSETOUT: JNB P3.3,DSETOUT1LCALL DISPLAY2JNB P3.3,DSETOUTCLR 06HCLR 03HCLR 05HCLR 04HCLR TR1CLR ET1SETB TR0SETB ET0LJMP START1DSET1: LCALL DISPLAY2AJMP DSET2DSET3: LCALL DISPLAY2AJMP DSET4DSET5: LCALL DISPLAY2AJMP DSETHH1DSET7: LCALL DISPLAY2AJMP DSET6DSETOUT1: LCALL DISPLAY2AJMP DSETOUT; 显示程序 ;DISPLAY: MOV R1,#70HMOV R5,#7FHPLAY: MOV A,R5MOV P2,A31MOV A,R1MOV DPTR,#TABMOVC A,A+DPTRMOV P0,ALCALL DDL1MSINC R1MOV A,R5JNB ACC.0,ENDOUTRR AMOV R5,AAJMP PLAYENDOUT: SETB P2.1MOV P0,#0FFHRET TAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH; 闹铃显示程序 ;DISPLAY2: MOV R1,#30HMOV R5,#7FHPLAY2: MOV A,R5MOV P2,AMOV A,R1MOV DPTR,#TAB2MOVC A,A+DPTRMOV P0,ALCALL DDL1MSINC R1MOV A,R5JNB ACC.0,ENDOUT2RR AMOV R5,AAJMP PLAY2ENDOUT2: SETB P2.1MOV P0,#0FFHRET TAB2: DB 3FH,06H,5BH,4FH,66H32 DB 6DH,7DH,07H,7FH,6FH; 延时程序 ;DL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RETDS20MS: ACALL DISPLAYACALL DISPLAYACALL DISPLAYRETDL1S: LCALL DL05SLCALL DL05SRETDL05S: MOV R3,#20HDL05S1: LCALL DISPLAYDJNZ R3,DL05S1RET; 延时程序 ;DDL1MS: MOV R6,#14HDDL1: MOV R7,#19HDDL2: DJNZ R7,DDL2DJNZ R6,DDL1RETDDS20MS: ACALL DISPLAY2ACALL DISPLAY2ACALL DISPLAY2RETDDL1S: LCALL DDL05SLCALL DDL05SRETDDL05S: MOV R3,#20HDDL05S1: LCALL DISPLAY2DJNZ R3,DDL05S133RETEND34附 2:系统原理图XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427AT89C51C110uC210uR110kX1CRYSTALA02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B711CE19AB/BA1U374LS245R210kD1LED-YELLOWK1K2
展开阅读全文