版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 单片机定时(dn sh)闹钟一、电路(dinl)概述该时钟电路主要以单片机AT89S52为核心而设计的,通过单片机对信息的分析与处理控制外围设备。电路整体设计思想是想把它做成一个实用的器件,所以在题目要求的前提下,我们又加入了星期程序(chngx),温度程序,年、月、日程序以及时间的1224转换程序。 关键字:单片机 数码显示 温度传感器 光识电路二、题目分析与方案论证按照系统设计功能的要求,初步确定设计系统由复位模块、时钟模块、温度模块、音乐模块、光识模块及显示模块共五个模块组成,后来在时钟模块的基础上又加载了日历、星期的模块从单片机AT89S52入手,通过使用AT89S52的内部的可编程
2、定时器/计数器,结合对外接晶振的调节来确定一个合适的振荡周期,从而确定出内部的机器周期。再通过对内部中断程序的设置来设计出时钟程序,即设计出了电子时钟的核心。根据题目的要求,我们设计了以下方案:方案一设计中加载了年、月、日的设计,刚开始时打算用18个共阳数码管,考虑到数码管太多是毕会给硬件电路带来麻烦,经过考虑后,决定把年、月、日与时间设置到一组数码管上来,即六个数码管即能显示时间又能显示年、月、日,这样一来就方便了硬件电路;方案二主控芯片使用51系列AT89S52单片机设计时温度模块设计温度元件用AD590,利用AD590以及接口电路把温度转换成模拟电压,经由ADC0804转换成数字信号,然
3、后经AT89S52处理显示温度。但由于AD590价钱比较贵,且只能转换成模拟电压,这样一来硬件就要增加更多的器件且又不经济,经查找发现18B20温度传感器价钱便宜且可以直接把温度转换成数字量测温范围为-55125度,最大分辨率可达0.0625度,采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点,所以我们选择了18B20温度传感器。附18B20温度传感器工作原理:DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并可根据实际要求通过简单的编程实现912位的数字值读数方式。温度传感器D
4、S18B20采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;,DS18B20的性能特点如下: 1、独特的单线接口仅需要一个引脚进行通信; 2、多个DS18B20可以并联在唯一的三线上,实现多点组网功能; 3、无须外部器件; 4、可通过数据线供电,电压范围为3.0-5.5V; 5、零待机功耗; 6、温度以9或12位数字量读出; 7、用户可定义的非易失性温度报警(bo jng)设置; 8、报警搜索命令识别并标志(biozh)超过程序限定温度(温度报警条件)的器件; 9、负电压特性(txng),电源极性接反是,温度计不会因发热而烧毁,但不能正常工作。三、系统总体结构框图AT
5、89S52主控模块光识电路温度电路音乐电路显示电路 电路时钟电路复位电路按键功能 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)系统硬件电路的设计:电路是由控制部分和显示部分两大部分组成。利用单片机程序进行控制,单片机以晶体振荡器的振荡周期(或外部引入的时钟周
6、期)为最小的时序单位,片内的各种微操作都以此周期为时序基准。振荡频率二分频后形成状态周期或称s周期,所以,1个状态周期包含有2个振荡周期。振荡频率foscl2分频后形成机器周期MC。所以,1个机器周期包含有6个状态周期或12个振荡周期。1个到4个机器周期确定一条指令的执行时间,这个时间就是指令周期。AT89S52单片机指令系统中,各条指令的执行时间都在1个到4个机器周期之间。,并通过数码管进行(jnxng)显示单片机普遍采用锁相环技术,使单片机的时钟频率可由程序控制。锁相环允许用户在片外使用频率较低的晶振,可以很大地减小板级噪声;而且,由于时钟频率可由程序控制,系统(xtng)时钟可以在一个很
7、宽的范围内调整,总线频率往往能升得很高。但是,使用锁相环也会带来额外的功率消耗。 单就时钟(shzhng)方案来讲,使用外部晶振且不使用锁相环是功率消耗最小的一种。AT89S52单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。内部振荡方式的外部电路如下图所示。图中,电容器C01,C02起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。晶振频率的典型值为12MH2,采用6MHz的情况也比较
8、多。内部振荡方式所得的时钟情号比较稳定,实用电路中使用较多。外部振荡方式是把外部已有的时钟信号引入单片机内。这种方式适宜用来使单片机的时钟与外部信号保持同步。外部振荡方式的外部电路如下图所示。如图所示:各模块(m kui)分析:显示(xinsh)模块电路先通过电源(dinyun)电路送出+5V电压,单片机AT89S52通过74LS47和CD4515(416译码器)驱动数码管显示数值, 显示部分采用普通共阳极数码管显示,采用动态扫描,以减少硬件电路。考虑到一次扫描12位数码管显示时会出现闪烁情况,设计时分两排显示,一排显示时间和年月日,一排显示星期和温度, 共阳极数码管中8个发光二极管的阳极(二
9、极管正端)连在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。采用动态显示方式,比较节省I/O口,硬件电路也较静态显示简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多时间。 为了提供共阳LED数码管的驱动电压,用三极管9012作电源驱动输出。采用12MHz晶振,有利于提高秒计时的精确性。三极管采用9012。数码管采用红色的共阳型L
10、ED数码管,亮度高些,因为是扫描的显示方式,所以各个数码管的abcdefg各脚采用了总线并联,改动510欧姆的电阻可以改变显示亮度;时钟模块利用芯片内部的振荡器,然后在引脚XTAL1和引脚XTAL2两端接晶体谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图外接晶振时,C1和C2的值通常选择30pF; C1、C2对频率有微调作用,晶体谐振器的频率12MHz。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。设置了1224两种显示状态,调整计时的按键、设置定时的按键且定时设置了3次定时、还另加载了星期、年、月、日的调整及闰年的
11、自动调整;温度(wnd)模块主要(zhyo)由18B20通过单片机AT89S52中的温度程序不断的检测温度来显示温度温度传感器DS18B20采集温度信号送该给单片机处理,存储器通过(tnggu)单片机对某些时间点的数据进行存储;音乐模块通过LM386N-1给扬声器信号来发出音乐,这个模块主要是为时钟定时到时发出音乐闹铃,而在软件部分设置了可以一次设置3次定时,每次定时到时,音乐程序中编了6种音乐,它可以自动选择6种音乐中的任一音乐响1分钟,如果中间不想让闹铃响可以按一按键,闹铃就立刻停止SpeakerVS6GND4GAIN8325BYP7GAIN1LM386N-110k470GNDGND0.0
12、047U0.1U10U47UGNDGNDGND+5V1KGND AT89S52 P3.1;复位模块单片机复位电路是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从该状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。无论是在单片机刚接上电源时,还是断电后或者发生故障后都要复位;单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见下表。值得指出的是,记住一些特殊功能寄存器复位后的主
13、要状态,对于了解单片机的初态,减少应用程序中的韧始化部分是十分必要的。说明:表中符号*为随机状态;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字节单元,根据堆栈操作的先
14、加后压法则,第一个被压入的内容写入到08H单元中;Po-P3FFH,表明已向各端口线写入1,此时,各端口既可用于输入(shr)又可用于输出;IP00000B,表明各个中断源处于低优先级;IE000000B,表明各个中断均被关断;系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部(nib)复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。 光识模块(m ku
15、i)同样也是为定时服务的,只要定时到,组成心字的18只发光二极管就会按程序先做左移位,再全亮全灭3次,然后(rnhu)再右移,再全亮全灭3次如此循环1分钟;AT89S52 P1安全(nqun)省电模式电源电路上装了保险管只要电流大于额定电流保险就断来保护电路,省电模式:不看时显示不亮,看时,按下一键显示就亮,尽量达到人性化。五、软件系统设计计时程序是实现电子时钟的核心内容,本程序用中断time0来控制,计时显示的单元从50h开始,50h=秒的个位,51h=秒的十位,52h=分的个位,53h=分的十位,54h=时的个位,55h=时的十位org 000bh jmp time0mov tmod,#0
16、0010001b mov ie,#10001010b mov ip,#00000010b mov th0,#(65536-2000)/256 mov tl0,#low(65536-2000) mov 4fh,#02;两个(lin )中断250次为1秒定时(dn sh)报警程序 作用是判断时间是否与设置的闹钟(nozhng)时间相等,如相等则开启闹钟。 单片机内定时振铃开关使用软件开关,即用标志寄存器,且程序设置了3次定时,可见要使电子时钟定时打铃,必须同时具备两个条件,第一:定时振铃开;第二:当前定时项数不为0项。 因为要使电子时钟定时打铃,必须同时具备上述的两个条件,所以在单片机执行查询定时
17、各项的程序之前,主程序会首先查询这两个条件是否同时满足,如果满足的话,则进行一轮查询,所谓一轮查询定时,即将当前时间与定时各项一一比较,看是否相符,如果查到某项相符,则调用音乐程序。每查完一项,寄存器中的值会自动减1(即为定时时间的项数)。当定时时间的项数值自动减为时,则表示这一轮查询定时时间完毕,只要条件允许(定时音乐开且定时项数不为),有可以进行一轮新的查询定时时间。定时1:33h=分,34h=时,定时2:35h=分,36h=时,定时3:37h=分,38h=时,定时状态=39h;定时显示的单元从60h开始,60h=定时状态,61h=此时;定时状态的音乐种类,62h=分的个位,63h=分的十
18、位;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,#20LOOP5:MOV R1,#100 LOOP6:MOV R2,#250 DJNZ R2,$ DJNZ R1,LO
19、OP6 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 开始系统初始化 显示计时、温度值判断按键是否有按下年、月、日调整计时调整定时调整星期12-24转换省电模式*初始化* org 0000h;计时显示的单元(dnyun)从50h开始,50h=秒的个位,51h=秒的十位,52h= jmp main;分的个位(gwi),53h=分的十位,54h=时的个位,55h=时的十位,56h=
20、 org 000bh;星期,57h=温度的十位,58h=温度的个位(gwi),30h=秒,31h=分,32h=时,定时1:33h=分,34h=时, jmp time0;定时2:35h=分,36h=时,定时3:37h=分,38h=时,定时状态=39h org 001bh jmp time1*主程序* main:mov r0,#00;等待 djnz r0,$ movsp,#6ah ;定时显示的单元从60h开始,60h=定时状态(zhungti),61h=此时 mov tmod,#00010001b ;定时(dn sh)状态的音乐种类,62h=分的个位,63h= 分的十位 mov ie,#10001
21、010b ;64h=时的个位(gwi),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,#0
22、1h;设置星期初值 mov 33h,#00h;设置定时初值 mov 34h,#01h mov 35h,#00hmov 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表示
23、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 *星期(xngq)设置程序* start:jb p2.0,q1;调整(tiozhng)星期 call del;消除(xioch)抖动 mov a,56h add a,#01h cjne a
24、,#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,b1 jnb p3.0,b2;将12小时制转换为24小时制 jmp a2 b2:mov a,32h add a,#12h da acjne a,#24h,b3mov 32h,#00hsetb p3.0jmp a2b3:mov 32h,asetb p3.0jm
25、p 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,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
26、 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
27、cjne a,#13h,c4 mov 32h,#01h cpl p3.0 jmp a4 c4:mov 32h,a jmp a4 c1:mov a,39h;定时(dn sh)调整 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 c
28、jne 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;调整(tiozhng)定时,计时的分,月 call del jnb 20h.6,d00 call yueyue jmp a5 d00:jnb 20h.1,d1 mov a,31h;计时分(shfn)调整 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
29、 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 cjn
30、e a,#60h,e2 mov 30h,#00h jmp a6 e2:mov 30h,a jmp a6 e1:mov a,39h;调整(tiozhng)定时状态 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 *调整定时的报警(bo jng)音乐,省电模式* 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,
31、#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 *定时(dn sh)报警* q7:jnb 20h.2,q8 call yinyue jmp start q8:jnb 20h.3,q9 ca
32、ll 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 ye
33、ar 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
34、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 jmp year nian21:cjne a,#88h,nian22 jmp year nian22:cjne
35、 a,#92h,nian23 jmp year nian23:cjne a,#96h,nian24 year:setb 20h.4 jmp year1 nian24:clr 20h.4 year1:retyue:mov a,22h;大月(dyu)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
36、: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 2
37、0h.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;允许(ynx)检测温度 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
38、 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; 星期(xngq)加一 add a,#01h mov 56h,a cjne a,#07h,f3 mov 56h,#08h jmp f4 f3:cjne a,#09h,f4 mov 56h,#01h f4:call day;更新(gngxn)年月日 jb p2.7,f7;定时(dn sh)到否子程序段 mov a,31h cjne a,33h,f5 mov a,32h cjne a,34h,f8 setb
39、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 mo
40、v 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 *计时扫描子程序*
41、 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 *定时(dn sh)扫描子程序* 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;定时(dn sh)扫描子程序 inc
42、 r0 cjne r0,#06h,gg2 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 *计时显示(xinsh)子程序* 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 i
43、nc 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
44、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 h3:ret xianshi3:mov r1,#40h;计时显示(xinsh)子程序 mov a,21h mov
45、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,#0
46、2 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,
47、#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:cjne a,#05,t mov dptr,#song5 jmp pu t:mov dptr,#song6 pu:jnb 20h.2,jj mov a,2bh movc a,a+dptr mov r0,a jz end0 anl a,#0fh mov r7,a mov a,r0 swap a anl a,#0
48、fh jnz sing clr tr1 jmp dd1 sing:dec a mov 2ah,a mov dptr,#table1 movc a,a+dptr mov 29h,a mov th1,a mov a,2ah mov dptr,#table2 movc a,a+dptr mov 28h,a mov tl1,a setb tr1 dd1:call yanshi inc 2bh inc 4eh mov a,4eh cjne a,#60,www;? mov 4eh,#00 www:mov dptr,#table3 mov a,4eh movc a,a+dptr mov p1,a jmp m
49、 end0:clr tr1 jmp main1 yanshi:mov r6,#02 dd2:mov r5,#125 dd3:mov r4,#248 djnz r4,$ djnz r5,dd3 djnz r6,dd2 djnz r7,yanshi ret jj:jmp mmm time1:push a push psw cpl p3.1 mov th1,29h mov tl1,28h pop psw pop a reti song1:db 42h,42h,42h,52h,64h,04h db 62h,62h,62h,72h,84h,04h db 92h,92h,82h,72h,64h,04h d
50、b 82h,82h,52h,62h,44h,04h db 42h,42h,42h,52h,64h,04h db 62h,62h,62h,72h,84h,04h db 92h,92h,82h,72h,64h,04h db 82h,82h,52h,62h,44h,04h db 00h song2:db 82h,01h,81h,94h,84h db 0b4h,0a4h,04h db 82h,01h,81h,94h,84h db 0c4h,0b4h,04h db 82h,01h,81h,0f4h,0d4h db 0b4h,0a4h,94h db 0e2h,01h,0e1h,0d4h,0b4h db 0
51、c4h,0b4h,04h db 00h song3:db 84h,94h,88h db 64h,54h,68h db 84h,64h,54h,44h db 62h,82h,42h,62h,58h db 84h,94h,88h db 64h,54h,68h db 84h,64h,54h,44h db 52h,42h,52h,62h,48h db 00h song4:db 84h,02h,82h,64h,54h db 64h,54h,48h, db 64h,02h,52h,44h,24h db 14h,24h,18h db 24h,02h,22h,42h,24h db 44h,54h,68h db
52、 54h,02h,52h,84h,84h db 54h,64h,48h db 00h song5:db 44h,54h,64h,44h db 44h,54h,64h,44h db 64h,74h,88h db 64h,74h,88h db 82h,92h,82h,72h,64h,44h db 82h,92h,82h,72h,64h,44h db 44h,84h,48h db 44h,14h,48h db 00h song6:db 62h,82h,82h,62h,98h db 92h,0b2h,0b2h,82h,98h db 62h,82h,82h,52h,68h db 92h,0b2h,0b2
53、h,82h,98h db 62h,82h,82h,62h,92h,92h,94h db 92h,0b2h,0b2h,92h,84h,94h db 0b8h,0b4h,04h db 00h table1: db 251,251,251,252 db 252,253,253,253 db 253,254,254,254 db 254,254,254 table2: db 004,144,248,068 db 172,009,052,130 db 200,006,034,086 db 131,154,193 table3: db 0feh,0fdh,0fbh,0f7h db 0efh,0dfh,0bfh,7fh db 00h,0ffh,00h,0ffh db 7fh,0bfh,0dfh,0efh db 0f7h,0fh,0fdh,0feh db 00h,0ffh,00h,0ffh db 81h,0c3h,0e7h,0ffh db 0e7h,0c3h,81h,00h db 81h,42h,24h,18h,00h mmm:clr tr1 clr p1 pop psw pop a ret *温度(wnd)程序* wendu:CALL REST MOV A,#0CCH CALL WRITE MO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省蚌埠市高三上学期第一次教学质量检查考试语文试题(含答案)
- 2025年家政服务合同期限约定
- 2025年媒体传媒服务合作协议
- 2025年企业商标使用转让合同
- 《氧气发生装置》课件
- 2025年商业综合体装修设计合同
- 2025年地铁站装修施工协议
- 二零二五年度美发店员工劳动合同续签及调整合同4篇
- 2025年冷库自动化控制系统销售及安装合同3篇
- 2024苏州工业园区建筑工程施工质量保修合同范本3篇
- 2024版塑料购销合同范本买卖
- JJF 2184-2025电子计价秤型式评价大纲(试行)
- GB/T 44890-2024行政许可工作规范
- 2024年安徽省中考数学试卷含答案
- 2025届山东省德州市物理高三第一学期期末调研模拟试题含解析
- 2024年沪教版一年级上学期语文期末复习习题
- 两人退股协议书范文合伙人签字
- 2024版【人教精通版】小学英语六年级下册全册教案
- 汽车喷漆劳务外包合同范本
- 2024年重庆南开(融侨)中学中考三模英语试题含答案
- 2023年最新的校长给教师春节祝福语
评论
0/150
提交评论