单片机定时闹钟资料.doc

单片机定时闹钟资料

收藏

资源目录
跳过导航链接。
单片机定时闹钟资料.zip
单片机定时闹钟资料
单片机定时闹钟资料.doc---(点击预览)
单片机定时闹钟资料.JPG
电路图.bmp
压缩包内文档预览:(预览前20页/共22页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:6180850    类型:共享资源    大小:117.55KB    格式:ZIP    上传时间:2017-12-05 上传人:超****计 IP属地:浙江
3.6
积分
关 键 词:
单片机 定时 闹钟 资料
资源描述:
单片机定时闹钟资料,单片机,定时,闹钟,资料
内容简介:
单片机定时闹钟一 、 电路概述 该时钟电路主要以单片机 AT89S52 为核心而设计的,通过单片机对信息的分析与处理控制外围设备。电路整体设计思想是想把它做成一个实用的器件,所以在题目要求的前提下,我们又加入了星期程序,温度程序,年、月、日程序以及时间的 1224 转换程序。关键字 :单片机 数码显示 温度传感器 光识电路二 、 题目分析与方案论证 按照系统设计功能的要求,初步确定设计系统由复位模块、时钟模块、温度模块、音乐模块、光识模块及显示模块共五个模块组成,后来在时钟模块的基础上又加载了日历、星期的模块从单片机 AT89S52 入手,通过使用 AT89S52 的内部的可编程定时器/计数器,结合对外接晶振的调节来确定一个合适的振荡周期,从而确定出内部的机器周期。再通过对内部中断程序的设置来设计出时钟程序,即设计出了电子时钟的核心。根据题目的要求,我们设计了以下方案:方案一 设计中加载了年、月、日的设计,刚开始时打算用 18 个共阳数码管,考虑到数码管太多是毕会给硬件电路带来麻烦,经过考虑后,决定把年、月、日与时间设置到一组数码管上来,即六个数码管即能显示时间又能显示年、月、日,这样一来就方便了硬件电路;方案二 主控芯片使用 51 系列 AT89S52 单片机设计时温度模块设计温度元件用 AD590,利用 AD590 以及接口电路把温度转换成模拟电压,经由 ADC0804转换成数字信号,然后经 AT89S52 处理显示温度。但由于 AD590 价钱比较贵,且只能转换成模拟电压,这样一来硬件就要增加更多的器件且又不经济,经查找发现 18B20 温度传感器价钱便宜且可以直接把温度转换成数字量测温范围为-55125 度,最大分辨率可达 0.0625 度,采用 3 线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点,所以我们选择了 18B20 温度传感器。附 18B20 温度传感器工作原理:DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并可根据实际要求通过简单的编程实现 912 位的数字值读数方式。温度传感器 DS18B20 采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;,DS18B20 的性能特点如下:1、独特的单线接口仅需要一个引脚进行通信;2、多个 DS18B20 可以并联在唯一的三线上,实现多点组网功能;3、无须外部器件;4、可通过数据线供电,电压范围为 3.0-5.5V;5、零待机功耗; 6、温度以 9 或 12 位数字量读出;7、用户可定义的非易失性温度报警设置;8、报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;9、负电压特性,电源极性接反是,温度计不会因发热而烧毁,但不能正常工作。三、系统总体结构框图AT89S52主控模块光识电路温度电路 音乐电路显示电路 电路时钟电路复位电路按键功能 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 单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚 XTAL1 和 XTAL2 外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。内部振荡方式的外部电路如下图所示。图中,电容器 C01,C02 起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。晶振频率的典型值为 12MH2,采用 6MHz 的情况也比较多。内部振荡方式所得的时钟情号比较稳定,实用电路中使用较多。外部振荡方式是把外部已有的时钟信号引入单片机内。这种方式适宜用来使单片机的时钟与外部信号保持同步。外部振荡方式的外部电路如下图所示。如图所示:9V/5W50HZ 220VSpeakerSTB1 A2 B3 C21 D22 INH23Y011Y19 Y210Y38 Y47 Y56 Y65 Y74 Y818Y917Y1020Y1119Y1214Y1313Y1416Y1515VDD24GND12CD4515BCNBI/RBO4 RBI5 LT3 A07 A11 A22 A36a13 b12 c11 d10 e9 f15 g14VCC16GND8DM74LS47NVS6GND4GAIN8325BYP7GAIN1 LM386N-112 LED90129012901290129012Bridge30pF30pF104J3300UFIN13OUT2GNDL78051000UF104Jeicbafdjgh1 2CY12.000GNDP1.01 P1.1/T2EX2 P1.23 P1.34 P1.45 P1.56 P1.67 P1.78 RESET9 P3.0(RXD)10 P3.1(TXD)11 P3.2(/INT0)12 P3.3(/INT1)13 P3.4(T0)14 P3.5(T1)15 P3.6(/WR)16 P3.7(/WD)17 XTAL218 XTAL119 VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728/PSEN29ALE30/EA,VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VDD40 AT89S524.7k100gfedcba*gfedcba*+5V10k470GND GND0.0047U0.1U10U47UGNDGNDGND+5V+5V12 LED12 LED12 LED12 LED12 LED 12 LED 12 LED12 LED 12 LED 12 LED 12 LED 12 LED 12 LED 12 LED 12 LEDGND1K12318b20 4.7kGND12 LED2470+5v+5vGND1K8.2K106GNDGNDGNDgfedcba*9012901290129012901290129012各模块分析:显示模块显示模块电路先通过电源电路送出+5V 电压,单片机 AT89S52 通过74LS47 和 CD4515(416 译码器)驱动数码管显示数值, 显示部分采用普通共阳极数码管显示,采用动态扫描,以减少硬件电路。考虑到一次扫描 12 位数码管显示时会出现闪烁情况,设计时分两排显示,一排显示时间和年月日,一排显示星期和温度, 共阳极数码管中 8 个发光二极管的阳极(二极管正端)连在一起。通常,公共阳极接高电平(一般接电源) ,其它管脚接段驱动电路输出端。当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。采用动态显示方式,比较节省 I/O 口,硬件电路也较静态显示简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU 要依次扫描,占用CPU 较多时间。 为了提供共阳 LED 数码管的驱动电压,用三极管 9012 作电源驱动输出。采用12MHz 晶振,有利于提高秒计时的精确性。三极管采用 9012。数码管采用红色的共阳型 LED 数码管,亮度高些,因为是扫描的显示方式,所以各个数码管的abcdefg 各脚采用了总线并联,改动 510 欧姆的电阻可以改变显示亮度;时钟模块时钟模块利用芯片内部的振荡器,然后在引脚 XTAL1 和引脚 XTAL2 两端接晶体谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图外接晶振时,C1 和 C2 的值通常选择 30pF; C1、C2 对频率有微调作用,晶体谐振器的频率 12MHz。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。设置了1224 两种显示状态,调整计时的按键、设置定时的按键且定时设置了 3 次定时、还另加载了星期、年、月、日的调整及闰年的自动调整;温度模块温度模块主要由 18B20 通过单片机 AT89S52 中的温度程序不断的检测温度来显示温度温度传感器 DS18B20 采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;音乐模块音乐模块通过 LM386N-1 给扬声器信号来发出音乐,这个模块主要是为时钟定时到时发出音乐闹铃,而在软件部分设置了可以一次设置 3 次定时,每次定时到时,音乐程序中编了 6 种音乐,它可以自动选择 6 种音乐中的任一音乐响 1 分钟,如果中间不想让闹铃响可以按一按键,闹铃就立刻停止SpeakerVS6GND4 GAIN8325BYP7GAIN1LM386N-110k 470GNDGND0.0047U0.1U 10U47UGNDGNDGND+5V1KGNDAT89S52 P3.1;复位模块复位模块单片机复位电路是使 CPU 和系统中的其他功能部件都处在一个确定的初始状态,并从该状态开始工作,例如复位后 PC=0000H,使单片机从第一个单元取指令。无论是在单片机刚接上电源时,还是断电后或者发生故障后都要复位;单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC0000H,这表明程序从 0000H 地址单元开始执行。单片机冷启动后,片内 RAM 为随机值,运行中的复位操作不改变片内 RAM 区中的内容,21 个特殊功能寄存器复位后的状态为确定值,见下表。值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的韧始化部分是十分必要的。说明:表中符号*为随机状态;A00H ,表明累加器已被清零;特殊功能寄存器 初始状态 特殊功能寄存器 初始状态 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 PSW00H,表明选寄存器 0 组为工作寄存器组;SP07H ,表明堆栈指针指向片内 RAM 07H 字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到 08H 单元中;Po-P3FFH ,表明已向各端口线写入 1,此时,各端口既可用于输入又可用于输出;IP 00000B,表明各个中断源处于低优先级;IE000000B,表明各个中断均被关断;系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51 单片机的复位是由 RESET 引脚来控制的,此引脚与高电平相接超过 24 个振荡周期后,51 单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到 RESET 引脚转为低电平后,才检查 EA 引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。光识模块光识模块同样也是为定时服务的,只要定时到,组成心字的 18 只发光二极管就会按程序先做左移位,再全亮全灭 3 次,然后再右移,再全亮全灭 3 次如此循环 1 分钟;安全省电模式安全省电模式电源电路上装了保险管只要电流大于额定电流保险就断来保护电路,省电模式:不看时显示不亮,看时,按下一键显示就亮,尽量达到人性化。五、软件系统设计计时程序是实现电子时钟的核心内容,本程序用中断 time0 来控制,计时显示的单元从 50h 开始,50h=秒的个位,51h= 秒的十位,52h= 分的个位,53h=分的十位,54h= 时的个位, 55h=时的十位org 000bh jmp time0mov tmod,#00010001b mov ie,#10001010b mov ip,#00000010bmov th0,#(65536-2000)/256mov tl0,#low(65536-2000)mov 4fh,#02;两个中断 250 次为 1 秒定时报警程序 作用是判断时间是否与设置的闹钟时间相等,如相等则开启闹钟。 单片机内定时振铃开关使用软件开关,即用标志寄存器,且程序设置了 3 次定时,可见要使电子时钟定时打铃,必须同时具备两个条件,第一:定时振铃开;AT89S52P1第二:当前定时项数不为 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,#0CCHCALL WRITE 调写程序MOV A,#4EHCALL WRITEMOV A,#00HCALL WRITEMOV A,#00HCALL WRITEMOV A,#7FHCALL WRITECALL RESTMOV A,#0CCHCALL WRITEMOV A,#44HCALL WRITEMOV R0,#20LOOP5:MOV R1,#100LOOP6:MOV R2,#250DJNZ R2,$DJNZ R1,LOOP6DJNZ R0,LOOP5CALL RESTMOV A,#0CCHCALL WRITEMOV A,#0BEHCALL WRITECALL READ2;调读程序MOV A,#0ECHCALL WRITECALL HUANclr 20h.3ret开始系统初始化显示计时、温度值判断按键是否有按下年、月、日调整计时 调整定时 调整星期 12-24 转换省电模式*初始化* 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= 时,定时状态 =39horg 001bhjmp time1*主程序* main:mov r0,#00;等待djnz r0,$movsp,#6ah ;定时显示的单元从 60h 开始,60h=定时状态,61h=此时mov tmod,#00010001b ;定时状态的音乐种类,62h=分的个位,63h= 分的十位mov ie,#10001010b ;64h=时的个位,65h=时 的十位mov ip,#00000010bmov th0,#(65536-2000)/256mov 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,#00hmov 32h,#12hmov 56h,#01h;设置星期初值mov 33h,#00h;设置定时初值mov 34h,#01hmov 35h,#00hmov 36h,#02hmov 37h,#00hmov 38h,#03hmov 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 p1setb tr0*星期设置程序* start:jb p2.0,q1;调整星期call del;消除抖动mov a,56hadd a,#01hcjne a,#07h,z1mov 56h,#08hjmp a1z1:cjne a,#09h,z2mov 56h,#01hjmp a1z2:mov 56h,aa1:call deljnb p2.0,a1jmp start*设置 12-24 小时转换程序* q1:jb p2.1,q2;12,24 小时制转换call del; 消除抖动jnb 20h.0,b1jnb p3.0,b2;将 12 小时制转换为24 小时制jmp a2b2:mov a,32hadd a,#12hda acjne a,#24h,b3mov 32h,#00hsetb p3.0jmp a2b3:mov 32h,asetb p3.0jmp a2b1:mov a,32h;将 24 小时制转换为12 小时制cjne a,#00h,b7mov 32h,#12hclr p3.0jmp a2b7:cjne a,#20h,b8mov 32h,#08hclr p3.0jmp a2b8:cjne a,#21h,b9mov 32h,#09hclr p3.0jmp a2b9:cjne a,#12h,b4jmp a2b4:jnc b5jmp a2b5:subb a,#12hmov 32h,aclr p3.0a2:cpl 20h.0b6:call deljnb p2.1,b6jmp start*定时计时调整程序* q2:jb p2.2,q3;定时,计时转换call del;cpl 20h.1a3:call deljnb p2.2,a3jmp startq3:jb p2.3,q4;调整定时,计时的时,年call del;消除抖动jnb 20h.6,c00call yearyearjmp a4 c00:jnb 20h.1,c1jb 20h.0,c2;计时调整mov a,32hadd a,#01hda acjne a,#24h,c3mov 32h,#00hjmp a4c3:mov 32h,ajmp a4c2:mov a,32hadd a,#01hda amov 32h,acjne a,#13h,c4mov 32h,#01hcpl p3.0jmp a4c4:mov 32h,ajmp a4 c1:mov a,39h;定时调整cjne a,#01h,c5mov r0,#34hjmp c10c5:cjne a,#02h,c6mov r0,#36hjmp c10c6:mov r0,#38hc10:jb 20h.0,c7mov a,r0add a,#01hda acjne a,#24h,c8mov r0,#00hjmp a4c8:mov r0,ajmp a4c7:mov a,r0add a,#01hda acjne a,#13h,c9mov r0,#01hjmp a4c9:mov r0,aa4:call deljnb p2.3,a4jmp startq4:jb p2.4,q5;调整定时,计时的分,月call deljnb 20h.6,d00call yueyuejmp a5d00:jnb 20h.1,d1mov a,31h;计时分调整add a,#01hda acjne a,#60h,d2mov 31h,#00hjmp a5d2:mov 31h,ajmp a5d1:mov a,39h ;定时分调整cjne a,#01h,d3mov r0,#33hjmp d5d3:cjne a,#02h,d4mov r0,#35hjmp d5d4:mov r0,#37hd5:mov a,r0add a,#01hda acjne a,#60h,d6mov r0,#00hjmp a5d6:mov r0,aa5:call deljnb p2.4,a5jmp startq5:jb p2.5,q6;调整计时的秒和定时的状态,日call deljnb 20h.6,e00call rijmp a6e00:jnb 20h.1,e1mov a,30h;调整计时的秒add a,#01hda acjne a,#60h,e2mov 30h,#00hjmp a6e2:mov 30h,ajmp a6e1:mov a,39h;调整定时状态add a,#01hda acjne a,#04h,e3mov 39h,#01hjmp a6e3:mov 39h,aa6:call deljnb p2.5,a6jmp start*调整定时的报警音乐,省电模式*q6:jb p2.6,q7call deljnb 20h.1,ghcpl p3.4jmp i3gh:mov a,39hcjne a,#01h,i1mov a,3ahadd a,#01hmov 3ah,acjne a,#07h,i3mov 3ah,#01hjmp i3i1:cjne a,#02h,i2mov a,3bhadd a,#01Hmov 3bh,acjne a,#07h,i3mov 3bh,#01hjmp i3i2:mov a,3chadd a,#01hmov 3ch,acjne a,#07h,i3mov 3ch,#01hi3:call deljnb p2.6,i3jmp start*定时报警* q7:jnb 20h.2,q8call yinyuejmp startq8:jnb 20h.3,q9call wendu;检测温度jmp startq9:jb p3.6,q10cpl 20h.6q11:call deljnb p3.6,q11q10:jmp start*闰年判断* nian:mov a,21hcjne a,#00h,nian0jmp yearnian0:cjne a,#04h,nian1jmp yearnian1:cjne a,#08h,nian2jmp yearnian2:cjne a,#12h,nian3jmp yearnian3:cjne a,#16h,nian4jmp yearnian4:cjne a,#20h,nian5jmp yearnian5:cjne a,#24h,nian6jmp yearnian6:cjne a,#28h,nian7jmp yearnian7:cjne a,#32h,nian8jmp yearnian8:cjne a,#36h,nian9jmp yearnian9:cjne a,#40h,nian10jmp yearnian10:cjne a,#44h,nian11jmp yearnian11:cjne a,#48h,nian12jmp yearnian12:cjne a,#52h,nian13jmp yearnian13:cjne a,#56h,nian14jmp yearnian14:cjne a,#60h,nian15jmp yearnian15:cjne a,#64h,nian16jmp yearnian16:cjne a,#68h,nian17jmp yearnian17:cjne a,#72h,nian18jmp yearnian18:cjne a,#76h,nian19jmp yearnian19:cjne a,#80h,nian20jmp year nian20:cjne a,#84h,nian21jmp yearnian21:cjne a,#88h,nian22jmp yearnian22:cjne a,#92h,nian23jmp yearnian23:cjne a,#96h,nian24year:setb 20h.4jmp year1nian24:clr 20h.4year1:retyue:mov a,22h;大月 31 天,小月 30 天cjne a,#04h,yue0jmp yue4yue0:cjne a,#06h,yue1jmp yue4yue1:cjne a,#09h,yue2jmp yue4yue2:cjne a,#11h,yue3yue4:clr 20h.5jmp yue5yue3:setb 20h.5yue5:retyearyear:mov a,21h;年加 1add a,#01hda amov 21h,aretyueyue:mov a,22h;月加 1add a,#01hda amov 22h,acjne a,#13h,yueyue0mov 22h,#01hyueyuye0:retri:mov a,23h;日加 1add a,#01hda amov 23h,acjne a,#29h,ri0mov a,22hcjne a,#02h,ri1call nianjb 20h.4,ri1mov 23h,#01hjmp ri1ri0:cjne a,#31h,ri2call yuejb 20h.5,ri1mov 23h,#01hjmp ri1ri2:cjne a,#32h,ri1mov 23h,#01hri1:ret*计时子程序* jishi:mov a,30h;秒加一 add a,#01hda amov 30h,acjne a,#60h,f4mov 30h,#00hsetb 20h.3;允许检测温度mov a,31h;分加一add a,#01hda amov 31h,acjne a,#60h,f4mov 31h,#00hmov a,32h;时加一add a,#01hda amov 32h,ajb 20h.0,f1cjne a,#24h,f4mov 32h,#00hjmp f2f1:cjne a,#13h,f4mov 32h,#01hcpl p3.0jnb p3.0,f4f2:mov a,56h; 星期加一add a,#01hmov 56h,acjne a,#07h,f3mov 56h,#08hjmp f4f3:cjne a,#09h,f4 mov 56h,#01hf4:call day;更新年月日jb p2.7,f7;定时到否子程序段mov a,31hcjne a,33h,f5mov a,32hcjne a,34h,f8setb 20h.2mov a,3ahmov 2ch,ajmp a7f8:mov a,31hf5:cjne a,35h,f6mov a,32hcjne a,36h,f9setb 20h.2mov a,3bhmov 2ch,ajmp a7f9:mov a,31hf6:cjne a,37h,f7mov a,32hcjne a,38h,f7setb 20h.2mov a,3chmov 2ch,ajmp a7f7:clr 20h.2a7:retday:mov a,23h;日加 1add a,#01hda amov 23h,acjne a,#29h,rri0mov a,22hcjne a,#02h,wancall nianjb 20h.4,wanmov 23h,#01hjmp yueyrri0:cjne a,#31h,rri2call yuejb 20h.5,wanmov 23h,#01hjmp yueyrri2:cjne a,#32h,wanmov 23h,#01hyuey:mov a,22h;月加 1add a,#01hda amov 22h,acjne a,#13h,wanmov 22h,#01hmov a,21h;年加 1add a,#01hda amov 21h,awan:ret*计时扫描子程序* scan1:mov r0,#2fhinc r0cjne r0,#0ch,g1mov r0,#00hg1:mov a,r0add a,#50hmov r1,amov a,r0swap aorl a,r1mov p0,aret*定时扫描子程序* scan2:mov r0,#2ehinc r0cjne r0,#06h,g2mov r0,#00hg2:mov a,r0add a,#60hmov r1,amov a,r0swap aorl a,r1mov p0,aretscan3:mov r0,#24h;定时扫描子程序inc r0 cjne r0,#06h,gg2mov r0,#00hgg2:mov a,r0add a,#40hmov r1,amov a,r0swap aorl a,r1mov p0,aret*计时显示子程序* xianshi1:mov r1,#50hmov a,30hmov b,#10hdiv abmov r1,binc r1mov r1,ainc r1mov a,31hmov b,#10hdiv abmov r1,binc r1mov r1,ainc r1mov a,32hmov b,#10hdiv abmov r1,binc r1mov r1,aret*定时显示子程序* xianshi2: mov a,39hmov 60h,acjne a,#01h,h1mov a,3ahmov 61h,amov r1,#62hmov a,33hmov b,#10hdiv abmov r1,binc r1mov r1,ainc r1mov a,34hmov b,#10hdiv abmov r1,binc r1mov r1,ajmp h3h1:cjne a,#02h,h2mov a,3bhmov 61h,amov r1,#62hmov a,35hmov b,#10hdiv abmov r1,binc r1mov r1,ainc r1mov a,36hmov b,#10hdiv abmov r1,binc r1mov r1,ajmp h3h2:mov a,3chmov 61h,amov r1,#62hmov a,37hmov b,#10hdiv abmov r1,binc r1mov r1,ainc r1mov a,38hmov b,#10hdiv abmov r1,binc r1 mov r1,ah3:retxianshi3:mov r1,#40h;计时显示子程序mov a,21hmov b,#10hdiv abmov r1,binc r1mov r1,ainc r1mov a,22hmov b,#10hdiv abmov r1,binc r1mov r1,ainc r1mov a,23hmov b,#10hdiv abmov r1,binc r1mov r1,arettime0:mov th0,#(65536-2000)/256mov tl0,#low(65536-2000)push apush pswsetb rs0clr rs1djnz 2dh,h4mov 2dh,#250djnz 4fh,h4mov 4fh,#02call jishih4:jnb 20h.6,hh4call xianshi3call scan3jmp h6hh4:jb 20h.1,h5call xianshi2call scan2jmp h6h5:call xianshi1call scan1h6:pop pswpop aretidel:mov r6,#40j1:mov r5,#248djnz r5,$djnz r6,j1ret*音乐程序* yinyue:push apush pswsetb rs1clr rs0main1:mov 2bh,#00hm:mov a,2chcjne a,#01,qmov dptr,#song1jmp puq:cjne a,#02,wmov dptr,#song2jmp puw:cjne a,#03,emov dptr,#song3jmp pue:cjne a,#04,rmov dptr,#song4jmp pur:cjne a,#05,tmov dptr,#song5jmp put:mov dptr,#song6pu:jnb 20h.2,jjmov a,2bhmovc a,a+dptrmov r0,ajz end0anl a,#0fhmov r7,amov a,r0swap a anl a,#0fhjnz singclr tr1jmp dd1sing:dec amov 2ah,amov dptr,#table1movc a,a+dptrmov 29h,amov th1,amov a,2ahmov dptr,#table2movc a,a+dptrmov 28h,amov tl1,asetb tr1dd1:call yanshiinc 2bhinc 4ehmov a,4ehcjne a,#60,www;?mov 4eh,#00www:mov dptr,#table3mov a,4ehmovc a,a+dptrmov p1,ajmp mend0:clr tr1jmp main1yanshi:mov r6,#02dd2:mov r5,#125dd3:mov r4,#248djnz r4,$djnz r5,dd3djnz r6,dd2djnz r7,yanshiretjj:jmp mmmtime1:push apush pswcpl p3.1mov th1,29hmov tl1,28hpop pswpop aretisong1:db 42h,42h,42h,52h,64h,04hdb 62h,62h,62h,72h,84h,04hdb 92h,92h,82h,72h,64h,04hdb 82h,82h,52h,62h,44h,04hdb 42h,42h,42h,52h,64h,04hdb 62h,62h,62h,72h,84h,04hdb 92h,92h,82h,72h,64h,04hdb 82h,82h,52h,62h,44h,04hdb 00hsong2:db 82h,01h,81h,94h,84hdb 0b4h,0a4h,04hdb 82h,01h,81h,94h,84hdb 0c4h,0b4h,04hdb 82h,01h,81h,0f4h,0d4hdb 0b4h,0a4h,94hdb 0e2h,01h,0e1h,0d4h,0b4hdb 0c4h,0b4h,04hdb 00hsong3:db 84h,94h,88hdb 64h
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:单片机定时闹钟资料
链接地址:https://www.renrendoc.com/p-6180850.html

官方联系方式

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

网站客服QQ:2881952447     

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

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

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