毕业设计45单片机定时闹钟资料.doc

毕业设计45单片机定时闹钟资料

收藏

压缩包内文档预览:(预览前20页/共22页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:546567    类型:共享资源    大小:97.09KB    格式:ZIP    上传时间:2015-12-01 上传人:QQ28****1120 IP属地:辽宁
6
积分
关 键 词:
电气电子毕业设计论文
资源描述:
毕业设计45单片机定时闹钟资料,电气电子毕业设计论文
内容简介:
单片机定时闹钟 一 、 电路概述 该时钟电路主要以单片机 AT89S52 为核心而设计的,通过单片机对信息的分析与处理控制外围设备。电路整体设计思想是想把它做成一个实用的器件,所以在题目要求的前提下,我们又加入了星期程序,温度程序,年、月、日程序以及时间的 12 24 转换程序。 关键字 :单片机 数码显示 温度传感器 光识电路 二 、 题目分析与方案 论证 按照系统设计功能的要求,初步确定设计系统由复位模块、 时钟模块、温度模块、音乐模块、光识模块及显示模块共五个模块组成,后来在时钟模块的基础上又 加载了日历、星期的模块 从单片机 AT89S52 入手,通过使用 AT89S52 的内部的可编程定时器 /计数器,结合对外接晶振的调节来确定一个合适的振荡周期,从而确定出内部的机器周期。再通过对内部中断程序的设置来设计出时钟程序,即设计出了电子时钟的核心。 根据题目的要求,我们设计了以下方案: 方案一 设计中加载了年、月、日的设计,刚开始时打算用 18 个共阳数码管,考虑到数码管太多是毕会给硬件电路带来麻烦,经过考虑后,决定把年、月、日与时间设置到一组数码管上来,即六个数码管即能显示时间又能显示年、月、日,这样一来就方 便了硬件电路; 方案二 主控芯片使用 51系列 AT89S52单片机设计时温度模块设计温度元件用AD590,利用 AD590 以及接口电路把温度转换成模拟电压,经由 ADC0804 转换成数字信号,然后经 AT89S52 处理显示温度。但由于 AD590 价钱比较贵,且只能转换成模拟电压,这样一来硬件就要增加更多的器件且又不经济,经查找发现18B20 温度传感器价钱便宜且可以直接把温度转换成数字量测温范围为 -55125 度,最大分辨率可达 0.0625 度,采用 3 线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点,所 以我们选择了 18B20 温度传感器。 附 18B20 温度传感器工作原理: DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并可根据实际要求通过简单的编程实现 9 12 位的数字值读数方式 。 温度传感器 DS18B20 采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储; , DS18B20 的性能特点如下: 1、独特的单线接口仅需要一个引脚进行通信; 2、多个 DS18B20 可以并联在唯一的三线上,实现多 点组网功能; 3、无须外部器件; 4、可通过数据线供电,电压范围为 3.0-5.5V; 5、零待机功耗; 6、温度以 9 或 12 位数字量读出; 7、用户可定义的非易失性温度报警设置; 8、报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; nts 9、负电压特性,电源极性接反是,温度计不会因发热而烧毁,但不能正常工作。 三 、 系统总体结构框图 按键功能 a 键: P2.1 口 12-24 转换 b 键: P2.3 口调整定时、计时的时、调整年 c 键: P2.5 口调整计时的秒和定时状态及日 d 键: P2.7 口判断定时到否 e 键: P2.0 口调整星期 f 键: P2.2 口定时、计时转换 g 键: P2.4 口调整定时、计时的秒和判断定时状态、调整日 h 键: P2.6 口调整定时的报警音乐、省电模式 i 键:复位键 j 键: P3.6 口年、月、日的显示 四 、 主要电路原理与设计 ( 1)系统硬件电路的设计: 电路是由控制部分和显示部分两大部分组成。利用单片机 程序进行控制 , 单片机以晶体振荡器的振荡周期 (或外部引入的时钟周期 )为最小的时序单位,片内的各种微操作都以此周期为时序基准。振荡频率二分频后形成状态周期或称 s 周期,所以, 1 个状态周期包含有 2 个振荡周期。振荡频率 foscl2 分频后形成机器周期 MC。所以, 1 个机器周期包含有 6 个状态周期或 12 个振荡周期。 1 个到 4个机器周期确定一条指令的执行时间,这个时间就是指令周期。 AT89S52 单片机指令系统中,各条指令的执行时间都在 1 个到 4 个机器周期之间。 AT89S52 主控模块 光识 电路 温度电路 音乐电路 显示电路 电路 时钟电路 复位电路 nts,并通过数码管进行显示 单片机普遍采用锁相环技术,使单片机的时钟频率可由程序控制。锁相环允许用户在片外使用频率较低的晶振,可以很大地减小板级噪声;而且,由于时钟频率可由程序控制,系统时钟可以在一个很宽的范围内调整,总线频率往往能升得很高。但是,使用锁相环也会带来额外的功率消耗。 单就时钟方案来讲,使用外部晶振且不使用锁相环是功率消耗最小的一种 。 AT89S52单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。 在引脚 XTAL1 和 XTAL2 外接晶体振荡器 (简称晶振 )或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激 振荡器并产生振荡时钟脉冲。内部振荡方式的外部电路如下图所示。 图中,电容器 C01, C02 起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。晶振频率的典型值为 12MH2,采用 6MHz 的情况也比较多。内部振荡方式所得的时钟情号比较稳定,实用电路中使用较多。 外部振荡方式是把外部已有的时钟信号引入单片机内。这种方式适宜用来使单片机的时钟与外部信号保持同步。外部振荡方式的外部电路如下图所示。 如图所示: nts9V / 5W50H Z 220VS pe a k e rSTB1A2B3C21D22INH23Y011Y19Y210Y38Y47Y56Y65Y74Y818Y917Y1020Y1119Y1214Y1313Y1416Y1515VDD24GND12C D 4515B C NBI/RBO4RBI5LT3A07A11A22A36a13b12c11d10e9f15g14VCC16GND8D M 74L S 47NVS6GND4GAIN8325BYP7GAIN1L M 386N - 112LED90129012901290129012B r i dge30pF30pF104J3300U FIN13OUT2GNDL 78051000U F104Jeicbafdjgh1 2C Y 12.000GNDP1.01P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78RESET9P3.0(RXD)10P3.1(TXD)11P3.2(/INT0)12P3.3(/INT1)13P3.4(T0)14P3.5(T1)15P3.6(/WR)16P3.7(/WD)17XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728/PSEN29ALE30/EA,VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VDD40A T 89S 524.7k100gfedcba*gfedcba*+ 5V10k470GNDGND0.0047U0.1U10U47UGNDGNDGND+ 5V+ 5V12LED12LED12LED12LED12LED12LED12LED12LED12LED12LED12LED12LED12LED12LED12LEDGND1K12318b204.7kGND12L E D 2470+ 5v+ 5vGND1K8.2K106GNDGNDGNDgfedcba*9012901290129012901290129012nts 各模块分析: 显显 示示 模模 块块 电路先通过电源电路送出 +5V 电压,单片机 AT89S52 通过 74LS47和 CD4515( 4 16 译码器)驱动数码管显示数值 , 显示部分采用普通共阳极数码管显示,采用动态扫描,以减少硬件电路。考虑到一次扫描 12 位数码管显示时会出现闪烁情况,设计时 分两排显示,一排显示时间和年月日,一排显示星期和温度, 共阳极数码管中 8 个发光二极管的阳极(二极管正端)连在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端 。当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。采用动态显示方式,比较节省 I/O 口,硬件电路也较静态显示简单,但其亮度不如静态显示方式,而且在显示位数较多时, CPU 要依次扫描,占用 CPU 较多时间。 为了提供共阳 LED 数码管的驱动电压,用三极管 9012 作电源驱动输出。采用12MHz 晶振,有利于提高秒计时的精确性。 三极管采用 9012。数码管采用红色的 共阳型 LED 数码管,亮度高些,因为是扫描的显示方式,所以各个数码管的abcdefg 各脚采用了总线并联 ,改动 510 欧姆的电阻可以改变显示亮度 ; 时时 钟钟 模模 块块 利用芯片内部的振荡器,然后在引脚 XTAL1 和引脚 XTAL2 两端接晶体谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图外接晶振时, C1 和 C2 的值通常选择 30pF; C1、 C2 对频率有微调作用,晶体谐振器的频率 12MHz。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。 设置了 12 24两种显示状态,调整计时的按键、设置定时的按键且定时设置了 3 次定时、还另nts加载了星期、年、月、日的调整及闰年的自动调整; 温温 度度 模模 块块 主要由 18B20 通过单片机 AT89S52 中的温度程序不断的检测温度来显示温度 温度传感器 DS18B20 采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储 ; 音音 乐乐 模模 块块 通过 LM386N-1 给扬声器信号来发出音乐,这个模块主要是为时钟定时到时发出音乐闹铃,而在软件部分设置了可以一次设置 3 次定时,每次定时到时,音乐程序中编了 6 种音乐,它可以自动选择 6 种音乐中的 任一音乐响 1分钟,如果中间不想让闹铃响可以按一按键,闹铃就立刻停止 ; 复复 位位 模模 块块 单片机复位电路是使 CPU 和系统中的其他功能部件都处在一个确定的初始状态,并从该状态开始工作,例如复位后 PC=0000H,使单片机从第一个单元取 指令。无论是在单片机刚接上电源时,还是断电后或者发生故障后都 要复 位 ; 单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器 PC 0000H,这表明程序从 0000H 地址单元开始执行。单片机冷启动后,片内 RAM 为随机值,运行中的 复位操作不改变片内 RAM 区中的内容, 21 个特殊功能寄存器复位后的状态为确定值,见下表。 值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的韧始化部分是十分必要的。 说明:表中符号 *为随机状态; A 00H,表明累加器已被清零; Speaker VS 6 GND 4 GAIN 8 3 2 5 BYP 7 GAIN 1 LM386N-1 10k 470 GND GND 0.0047U 0.1U 10U 47U GND GND GND +5V 1K GND AT89S52 P3.1 nts特殊功能寄存器 初始状态 特殊功能寄存器 初始状态 A 00H TMOD 00H B 00H TCON 00H PSW 00H TH0 00H SP 07H TL0 00H DPL 00H TH1 00H DPH 00H TL1 00H P0P3 FFH SBUF 不定 IP *00000B SCON 00H IE 0*00000B PCON 0*B PSW 00H,表明选寄存器 0 组为工作寄存器组; SP 07H,表明堆栈指针指向片内 RAM 07H 字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到 08H 单元中; Po-P3 FFH,表明已向各端口线写入 1,此时,各端口既可用于输入又可用于输出; IP 00000B,表明各个中断源处于低优先级; IE 000000B,表明各个中断均被关断; 系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。 51 单片机的复位是由 RESET 引脚来控制的,此引脚与高电平相接超过 24个振荡周期后, 51 单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到 RESET 引脚转为低电平后,才检查 EA 引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。 nts光光 识识 模模 块块 同样也是为定时服务的,只要定时到,组成心字的 18 只发光二极管就会 按程序先做左移位,再全亮全灭 3 次,然后再右移,再全亮全灭 3 次如此循环 1 分钟; 安安 全全 省省 电电 模模 式式 电源电路上装了保险管只要电流大于额定电流保险就断来保护电路,省电模式:不看时显示不亮,看时,按下一键显示就亮,尽量达到人性化。 五 、 软件系统设计 计时程序是实现电子时钟的核心内容 ,本程序用中断 time0 来控制,计时显示的单元从 50h 开始, 50h=秒的个位, 51h=秒的十位, 52h=分的个位, 53h=分的十位, 54h=时的个位, 55h=时的十位 org 000bh jmp time0 mov tmod,#00010001b mov ie,#10001010b mov ip,#00000010b mov th0,#(65536-2000)/256 mov tl0,#low(65536-2000) mov 4fh,#02;两个中断 250 次为 1 秒 定时报警 程序 作用是判断时间是否与设置的闹钟时间相等,如相等则 开启闹钟。 AT89S52 P1 nts单片机内定时振铃开关使用软件开关,即用标志寄存器, 且程序设置了 3 次定时,可见要使电子时钟定时打铃,必须同时具备两个条件,第一:定时振铃开;第二:当前定时项数不为 0 项。 因为要使电子时钟定时打铃,必须同时具备上述的两个条件,所以在单片机执行查询定时各项的程序之前,主程序会首先查询这两个条件是否同时满足,如果满足的话,则进行一轮查询,所谓一轮查询定时,即将当前时间与定时各项一一比较,看是否相符,如果查到某项相符,则调用 音乐 程序。每查完一项,寄存器中的值会自动减 1(即为定时时间的项数)。当定时时间的 项数值自动减为时,则表示这一轮查询定时时间完毕,只要条件允许(定时 音乐 开且定时项数不为),有可以进行一轮新的查询定时时间 。 定时 1: 33h=分, 34h=时,定时 2: 35h=分, 36h=时,定时 3: 37h=分, 38h=时,定时状态 =39h; 定时显示的单元从 60h 开始, 60h=定时状态, 61h=此时 ;定时状态的音乐种类, 62h=分的个位, 63h=分的十位 ;64h=时的个位 ,65h=时的十位 温度程序: 57h=温度的十位, 58h=温度的个位, wendu:CALL REST;调复位MOV A,#0CCH CALL WRITE调写程序 MOV A,#4EH CALL WRITE MOV A,#00H CALL WRITE MOV A,#00H CALL WRITE MOV A,#7FH CALL WRITE CALL REST MOV A,#0CCH CALL WRITE MOV A,#44H CALL WRITE MOV R0,#20 LOOP5:MOV R1,#100 LOOP6:MOV R2,#250 DJNZ R2,$ DJNZ R1,LOOP6 DJNZ R0,LOOP5 CALL REST MOV A,#0CCH CALL WRITE MOV A,#0BEH CALL WRITE CALL READ2;调读程序 MOV A,#0ECH CALL WRITE CALL HUAN clr 20h.3 ret nts * 初始化* org 0000h;计时显示的单元从 50h 开 始, 50h=秒的个位,51h=秒的十位, 52h= jmp main;分的个位,53h=分的十位, 54h=时的个位, 55h=时的十位, 56h= org 000bh;星期 ,57h=温度的十位, 58h=温度的个位, 30h=秒, 31h=分, 32h=时 ,定时 1: 33h=分,34h=时, jmp time0;定时 2:35h=分, 36h=时,定时 3: 37h=分,38h=时,定时状态 =39h org 001bh jmp time1 * 主程序* 开始 系统初始化 显示计时、温度值 判断按键是否有按下 年、月、日 调整计时 调整定时 调整星期 12-24 转换 省电模式 ntsmain:mov r0,#00;等待 djnz r0,$ movsp,#6ah ;定时显示的单元从 60h 开始, 60h=定时状态,61h=此时 mov tmod,#00010001b ;定时状态的音乐种类, 62h=分的个位,63h= 分的十位 mov ie,#10001010b ;64h=时的个位 ,65h= 时 的十位 mov ip,#00000010b mov th0,#(65536-2000)/256 mov tl0,#low(65536-2000) mov 4fh,#02;两个中断 250 次为1 秒 mov 4eh,#00;光报警 mov 2dh,#250;中断 250 次为 0.5秒 mov 2fh,#00h;设置计时显示数码管的编号 mov 2eh,#00h;设置定时显示数码管的编号 mov 24h,#00h;设置年月日显示数码管的编号 mov 30h,#00h;设置时间的初值 mov 31h,#00h mov 32h,#12h mov 56h,#01h; 设置星期初值 mov 33h,#00h; 设置定时初值 mov 34h,#01h mov 35h,#00h mov 36h,#02h mov 37h,#00h mov 38h,#03h mov 39h,#01h; 设置定时状态初始值 mov 3ah,#01h;设置定时状态 1 时音乐的初始值 mov 3bh,#02h;设置定时状态 2 时音乐的初始值 mov 3ch,#03h;设置定时状态 3 时音乐的初始值 mov 21h,#00h;设置年初值, 00 表示2000 年 mov 22h,#01h;设置月初值 mov 23h,#01h;设置日初值 setb 20h.0;12,24 标志位, 1 表示 12 小时制, 0 表示 24 小时制 setb 20h.1;定时,计时标志位, 1 表示计时, 0表示定时 clr 20h.2;定时到否标志位, 1 表示到, 0表示不到 setb 20h.3;是否允许检测温度标志位, 1表示允许 clr 20h.4; 年标志位, 1 表示闰年 setb 20h.5; 1 表示 31 天, 0 表示 30 天 clr 20h.6;1 表示显示年月日 setb p3.0;上下午标志位, 1 表示上午,0 表示下午 clr p1 setb tr0 * 星期设置程序* start: jb p2.0,q1;调整星期 call del;消除抖动 mov a,56h add a,#01h cjne a,#07h,z1 mov 56h,#08h jmp a1 ntsz1:cjne a,#09h,z2 mov 56h,#01h jmp a1 z2:mov 56h,a a1:call del jnb p2.0,a1 jmp start *设置 12-24 小时转换程序* q1:jb p2.1,q2; 12, 24 小时制转换 call del; 消除抖动 jnb 20h.0,b1 jnb p3.0,b2;将 12 小时制转换为24 小时制 jmp a2 b2:mov a,32h add a,#12h da a cjne a,#24h,b3 mov 32h,#00h setb p3.0 jmp a2 b3:mov 32h,a setb p3.0 jmp a2 b1:mov a,32h;将 24 小时制转换为12 小时制 cjne a,#00h,b7 mov 32h,#12h clr p3.0 jmp a2 b7:cjne a,#20h,b8 mov 32h,#08h clr p3.0 jmp a2 b8:cjne a,#21h,b9 mov 32h,#09h clr p3.0 jmp a2 b9:cjne a,#12h,b4 jmp a2 b4:jnc b5 jmp a2 b5:subb a,#12h mov 32h,a clr p3.0 a2:cpl 20h.0 b6:call del jnb p2.1,b6 jmp start *定时计时调整程序* q2:jb p2.2,q3;定时,计时转换 call del; cpl 20h.1 a3:call del jnb p2.2,a3 jmp start q3:jb p2.3,q4;调整定时,计时的时 ,年 call del;消除抖动 jnb 20h.6,c00 call yearyear jmp a4 c00:jnb 20h.1,c1 jb 20h.0,c2;计时调整 mov a,32h add a,#01h da a cjne a,#24h,c3 mov 32h,#00h jmp a4 c3:mov 32h,a jmp a4 c2:mov a,32h add a,#01h da a mov 32h,a cjne a,#13h,c4 mov 32h,#01h cpl p3.0 jmp a4 c4:mov 32h,a jmp a4 c1:mov a,39h;定时调整 nts cjne a,#01h,c5 mov r0,#34h jmp c10 c5:cjne a,#02h,c6 mov r0,#36h jmp c10 c6:mov r0,#38h c10:jb 20h.0,c7 mov a,r0 add a,#01h da a cjne a,#24h,c8 mov r0,#00h jmp a4 c8:mov r0,a jmp a4 c7:mov a,r0 add a,#01h da a cjne a,#13h,c9 mov r0,#01h jmp a4 c9:mov r0,a a4:call del jnb p2.3,a4 jmp start q4:jb p2.4,q5;调整定时,计时的分 ,月 call del jnb 20h.6,d00 call yueyue jmp a5 d00:jnb 20h.1,d1 mov a,31h;计时分调整 add a,#01h da a cjne a,#60h,d2 mov 31h,#00h jmp a5 d2:mov 31h,a jmp a5 d1:mov a,39h ;定时分调整 cjne a,#01h,d3 mov r0,#33h jmp d5 d3:cjne a,#02h,d4 mov r0,#35h jmp d5 d4:mov r0,#37h d5:mov a,r0 add a,#01h da a cjne a,#60h,d6 mov r0,#00h jmp a5 d6:mov r0,a a5:call del jnb p2.4,a5 jmp start q5:jb p2.5,q6;调整计时的秒和定时的状态 ,日 call del jnb 20h.6,e00 call ri jmp a6 e00:jnb 20h.1,e1 mov a,30h;调整计时的秒 add a,#01h da a cjne a,#60h,e2 mov 30h,#00h jmp a6 e2:mov 30h,a jmp a6 e1:mov a,39h;调整定时状态 add a,#01h da a cjne a,#04h,e3 mov 39h,#01h jmp a6 e3:mov 39h,a a6:call del jnb p2.5,a6 jmp start *调整定时的报警音乐 , 省 电 模 式* nts q6:jb p2.6,q7 call del jnb 20h.1,gh cpl p3.4 jmp i3 gh:mov a,39h cjne a,#01h,i1 mov a,3ah add a,#01h mov 3ah,a cjne a,#07h,i3 mov 3ah,#01h jmp i3 i1:cjne a,#02h,i2 mov a,3bh add a,#01H mov 3bh,a cjne a,#07h,i3 mov 3bh,#01h jmp i3 i2:mov a,3ch add a,#01h mov 3ch,a cjne a,#07h,i3 mov 3ch,#01h i3:call del jnb p2.6,i3 jmp start * 定时报警* q7:jnb 20h.2,q8 call yinyue jmp start q8:jnb 20h.3,q9 call wendu;检测温度 jmp start q9:jb p3.6,q10 cpl 20h.6 q11:call del jnb p3.6,q11 q10:jmp start * 闰年判断* nian:mov a,21h cjne a,#00h,nian0 jmp year nian0:cjne a,#04h,nian1 jmp year nian1:cjne a,#08h,nian2 jmp year nian2:cjne a,#12h,nian3 jmp year nian3:cjne a,#16h,nian4 jmp year nian4:cjne a,#20h,nian5 jmp year nian5:cjne a,#24h,nian6 jmp year nian6:cjne a,#28h,nian7 jmp year nian7:cjne a,#32h,nian8 jmp year nian8:cjne a,#36h,nian9 jmp year nian9:cjne a,#40h,nian10 jmp year nian10:cjne a,#44h,nian11 jmp year nian11:cjne a,#48h,nian12 jmp year nian12:cjne a,#52h,nian13 jmp year nian13:cjne a,#56h,nian14 jmp year nian14:cjne a,#60h,nian15 jmp year nian15:cjne a,#64h,nian16 jmp year nian16:cjne a,#68h,nian17 jmp year nian17:cjne a,#72h,nian18 jmp year nian18:cjne a,#76h,nian19 jmp year nian19:cjne a,#80h,nian20 jmp year nian20:cjne a,#84h,nian21 nts jmp year nian21:cjne a,#88h,nian22 jmp year nian22:cjne a,#92h,nian23 jmp year nian23:cjne a,#96h,nian24 year:setb 20h.4 jmp year1 nian24:clr 20h.4 year1:ret yue:mov a,22h;大月 31 天,小月 30 天 cjne a,#04h,yue0 jmp yue4 yue0:cjne a,#06h,yue1 jmp yue4 yue1:cjne a,#09h,yue2 jmp yue4 yue2:cjne a,#11h,yue3 yue4:clr 20h.5 jmp yue5 yue3:setb 20h.5 yue5:ret yearyear:mov a,21h;年加 1 add a,#01h da a mov 21h,a ret yueyue:mov a,22h;月加 1 add a,#01h da a mov 22h,a cjne a,#13h,yueyue0 mov 22h,#01h yueyuye0:ret ri:mov a,23h;日加 1 add a,#01h da a mov 23h,a cjne a,#29h,ri0 mov a,22h cjne a,#02h,ri1 call nian jb 20h.4,ri1 mov 23h,#01h jmp ri1 ri0:cjne a,#31h,ri2 call yue jb 20h.5,ri1 mov 23h,#01h jmp ri1 ri2:cjne a,#32h,ri1 mov 23h,#01h ri1:ret * 计时子程序* jishi:mov a,30h;秒加一 add a,#01h da a mov 30h,a cjne a,#60h,f4 mov 30h,#00h setb 20h.3;允许检测温度 mov a,31h;分加一 add a,#01h da a mov 31h,a cjne a,#60h,f4 mov 31h,#00h mov a,32h;时加一 add a,#01h da a mov 32h,a jb 20h.0,f1 cjne a,#24h,f4 mov 32h,#00h jmp f2 f1:cjne a,#13h,f4 mov 32h,#01h cpl p3.0 jnb p3.0,f4 f2:mov a,56h; 星期加一 add a,#01h mov 56h,a cjne a,#07h,f3 mov 56h,#08h jmp f4 f3:cjne a,#09h,f4 mov 56h,#01h nts f4:call day;更新年月日 jb p2.7,f7;定时到否子程序段 mov a,31h cjne a,33h,f5 mov a,32h cjne a,34h,f8 setb 20h.2 mov a,3ah mov 2ch,a jmp a7 f8:mov a,31h f5:cjne a,35h,f6 mov a,32h cjne a,36h,f9 setb 20h.2 mov a,3bh mov 2ch,a jmp a7 f9:mov a,31h f6:cjne a,37h,f7 mov a,32h cjne a,38h,f7 setb 20h.2 mov a,3ch mov 2ch,a jmp a7 f7:clr 20h.2 a7:ret day:mov a,23h;日加 1 add a,#01h da a mov 23h,a cjne a,#29h,rri0 mov a,22h cjne a,#02h,wan call nian jb 20h.4,wan mov 23h,#01h jmp yuey rri0:cjne a,#31h,rri2 call yue jb 20h.5,wan mov 23h,#01h jmp yuey rri2:cjne a,#32h,wan mov 23h,#01h yuey:mov a,22h;月加 1 add a,#01h da a mov 22h,a cjne a,#13h,wan mov 22h,#01h mov a,21h;年加 1 add a,#01h da a mov 21h,a wan:ret * 计时扫描子程序* scan1:mov r0,#2fh inc r0 cjne r0,#0ch,g1 mov r0,#00h g1:mov a,r0 add a,#50h mov r1,a mov a,r0 swap a orl a,r1 mov p0,a ret * 定 时 扫 描 子 程 序* scan2:mov r0,#2eh inc r0 cjne r0,#06h,g2 mov r0,#00h g2:mov a,r0 add a,#60h mov r1,a mov a,r0 swap a orl a,r1 mov p0,a ret scan3:mov r0,#24h;定时扫描子程序 inc r0 cjne r0,#06h,gg2 nts mov r0,#00h gg2:mov a,r0 add a,#40h mov r1,a mov a,r0 swap a orl a,r1 mov p0,a ret *计时显示子程序* xianshi1:mov r1,#50h mov a,30h mov b,#10h div ab mov r1,b inc r1 mov r1,a inc r1 mov a,31h mov b,#10h div ab mov r1,b inc r1 mov r1,a inc r1 mov a,32h mov b,#10h div ab mov r1,b inc r1 mov r1,a ret *定时显示子程序 * xianshi2: mov a,39h mov 60h,a cjne a,#01h,h1 mov a,3ah mov 61h,a mov r1,#62h mov a,33h mov b,#10h div ab mov r1,b inc r1 mov r1,a inc r1 mov a,34h mov b,#10h div ab mov r1,b inc r1 mov r1,a jmp h3 h1:cjne a,#02h,h2 mov a,3bh mov 61h,a mov r1,#62h mov a,35h mov b,#10h div ab mov r1,b inc r1 mov r1,a inc r1 mov a,36h mov b,#10h div ab mov r1,b inc r1 mov r1,a jmp h3 h2:mov a,3ch mov 61h,a mov r1,#62h mov a,37h mov b,#10h div ab mov r1,b inc r1 mov r1,a inc r1 mov a,38h mov b,#10h div ab mov r1,b inc r1 mov r1,a nts h3:ret xianshi3:mov r1,#40h;计时显示子程 序 mov a,21h mov b,#10h div ab mov r1,b inc r1 mov r1,a inc r1 mov a,22h mov b,#10h div ab mov r1,b inc r1 mov r1,a inc r1 mov a,23h mov b,#10h div ab mov r1,b inc r1 mov r1,a ret time0:mov th0,#(65536-2000)/256 mov tl0,#low(65536-2000) push a push psw setb rs0 clr rs1 djnz 2dh,h4 mov 2dh,#250 djnz 4fh,h4 mov 4fh,#02 call jishi h4:jnb 20h.6,hh4 call xianshi3 call scan3 jmp h6 hh4:jb 20h.1,h5 call xianshi2 call scan2 jmp h6 h5:call xianshi1 call scan1 h6:pop psw pop a reti del:mov r6,#40 j1:mov r5,#248 djnz r5,$ djnz r6,j1 ret *音乐程序 * yinyue:push a push psw setb rs1 clr rs0 main1:mov 2bh,#00h m:mov a,2ch cjne a,#01,q mov dptr,#song1 jmp pu q:cjne a,#02,w mov dptr,#song2 jmp pu w:cjne a,#03,e mov dptr,#song3 jmp pu e:cjne a,#04,r mov dptr,#song4 jmp pu r:c
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:毕业设计45单片机定时闹钟资料
链接地址:https://www.renrendoc.com/p-546567.html

官方联系方式

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

网站客服QQ:2881952447     

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

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

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