基于单片机的数字电子钟单片机课程设计_第1页
基于单片机的数字电子钟单片机课程设计_第2页
基于单片机的数字电子钟单片机课程设计_第3页
基于单片机的数字电子钟单片机课程设计_第4页
基于单片机的数字电子钟单片机课程设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 序列号 46 论文题目: 基于单片机的数字电子钟 课程名称: 单片机原理机接口技术 目录11 设计任务书2 个性化电子钟功能描述3 单片机系统原理图及工作原理描述4 程序模块框图5 程序清单6 设计或调试过程中碰到的问题及决计方法7 测试数据,误差分析,补偿方法,补偿前后精度比较8 收获及意见9 附录(完整电路图)目录2目录12目录23一、课程设计任务书41)基本要求42)设计报告要求:43)课程设计验收标准:5二、个性化电子钟功能描述51.基本计时功能:52.校准功能53.闹钟模式6三、单片机系统原理图及工作原理描述61.各模块介绍62.单片机系统总图9四、程序模块框图91.功能框图92.

2、程序框图10五、程序清单11;变量定义11;初始化12;主要执行程序12;按键检测程序13;显示模式选择程序13; 中断服务程序14;闹钟显示及转码程序16;检测闹钟程序18; 显示时分秒程序18; 显示年月日的程序22;年月日校准程序26;按键检测程序28;功能小程序34六、设计或调试过程中碰到的问题及解决方法371.存储错乱372.工作区的选择383.闹钟响的时间384.按键紊乱39七、测试数据,误差分析,补偿方法,补偿前后精度比较39a)未考虑月份不同天数39b)中断服务程序造成的时间延迟39八、收获及意见40九、附录(完整电路图)40一、 课程设计任务书1) 基本要求根据单片机原理及接

3、口技术所学的内容及其他相关课程的知识,结合各生的基础,充分发挥个人的特长,设计个性化数字电子钟。具体要求以下:1 基本电路AT89S51CPU,12MHZ时钟,常规上电和手动复位电路。2 数码管显示模式4位LED数码显示器(带钟点),分别显示“小时:分钟”或“分钟:秒”3 独立按键3个独立试按键,具体功能描述如下:MODE模式转换键,具有“正常小时(校准)分钟(校准)小时(闹铃)分钟(闹铃)”等5种模式,每按一次,转换一种模式。假设当前处于正常模式,按一下此键,“小时”闪烁,表示进入“小时”调校模式,再按一次,转入分钟模式,如此类推,正常模式下不闪烁。 UP加“1”键,按下此键,被选中的项目加

4、“1” DOWN减“1”键,按下此键,被选中的项目减“1”4 蜂鸣器设计1路蜂鸣器输出驱动电路,用于报警或按键声5 电源电路电源:9V交流输入,全波整流,滤波,7805稳压电路,输出5V直流电源共给单片机系统。6 软件编写数字电字钟的所有软件,包括主程序,定时器中断计时程序,定时器中断扫描显示程序,键盘扫描及功能程序,BCD码转换程序,“二翻十拆字转码”程序,闹铃程序等等。将这些程序整合成一个完整的电子钟程序,在软件模拟器上调试,在MCS51学习机上调试,并测试其功能及性能。在设计软件时,学生可充分发挥自己的特长和想象力,自行扩充功能,如“秒表”功能,通信功能,钟控功能等。7 精度分析在程序调

5、试通过后,测试计时精度,分析误差来源,提出补偿方法。2) 设计报告要求:每人一份设计报告,要求独立完成,用统一的封面装订,设计报告的内容包括以下部分:1 设计任务书2 个性化电子钟功能要求3 单片机系统原理图及工作原理描述4 程序模块框图5 程序清单6 设计或调试过程中碰到的问题及决计方法7 测试数据,误差分析,补偿方法,补偿前后精度比较8 完成课程设计后的收获或体会,对单片机课程设计提出改进意见。3) 课程设计验收标准:本次课程设计的成绩由大部分组成:即硬件设计软件设计和课程设计报告。硬件设计主要是电路图设计(可以用手工画或计算机辅助设计)。软件部分在答辩时验收,并结合答辩情况进行评定。1

6、电路原理图设计(20%),包括以下知识点:CPU及时钟,复位电路显示接口电路键盘接口电路蜂鸣器驱动电路电源部分2 软件设计及答辩(60%),包括以下知识点:主程序及初始化程序定时中断及计时程序定时中断及显示程序键盘程序闹铃程序按键声程序3 课程设计报告(20%),具体要求见上面所述.4) 基础较好的学生可以结合实际应用自拟题目,题目和具体设计内容定好后由指导老师比准。 指导老师:乐金松2014,12,28二、 个性化电子钟功能描述1. 基本计时功能:. 上电显示时钟、分钟、秒,时钟和分钟显示小数点以做区分. 当P3.7键按下,显示年月日,因为比较方便观察,并没有设置小数点以作区分。2. 校准功

7、能. 上电显示为时分秒或年月日. 当P3.4按下一次,校准时钟位,时钟位闪烁. 当P3.4按下两次,校准分钟位,分钟位闪烁. 当P3.4按下三次,校准秒位,秒位闪烁,注意,此时若是显示年月日模式,调整无效,数码管熄灭. 当P3.4按下四次,校准年的高位,年的高位闪烁. 当P3.4按下五次,校准年的低位,年的低位闪烁. 当P3.4按下六次,校准月份位,月份位闪烁. 当P3.4按下七次,校准日位,日位闪烁,此时若是显示时分秒模式,调整无效,数码管熄灭,其中,若P3.5键按下,加1,若P3.6键按下,减1. 当P3.4按下八次或九次,为闹钟校准模式. 当P3.4按到十次,恢复显示年月日或者时分秒3.

8、 闹钟模式. 当P3.4按到八次,时钟和分钟位显示初始时间(12:00),设置小时闹钟。若P3.5键按下,加1,若P3.6键按下,减1. 当P3.4按到九次,设置分钟闹钟,若P3.5键按下,加1,若P3.6键按下,减1. 即使没有设置闹钟,在时间为12:00时,也会启动闹钟,闹钟声音为十次简短的鸣声。三、 单片机系统原理图及工作原理描述1. 各模块介绍a) CPU及时钟,复位电路i. 复位电路功能描述:上电时,单片机会自动复位,按下S1按键时,手动复位,该电子钟系统会从0开始计时。ii. 时钟此电路系统配置的是12MHZ的晶振,拥有这个晶振,电路才会计时、中断系统才会溢出。iii. CPU此电

9、子钟系统采用的是STC公司的89C52单片机,本电路主要使用其P0口(数码管)、P3口(按键)、和P1口(蜂鸣器),该单片机内部含有运算器、存储器、控制器、输入输出设备等。b) 显示接口电路这个开发板需要两个锁存器分别控制位选和断选,只有位选控制端置一,才能送位选信号,同理,断选控制端置一,才能送段选信号。c) 键盘接口电路此按键,按下为0,松开为1。d) 蜂鸣器驱动电路蜂鸣器送逻辑1的时候才能发出声音。e) 电源部分此电源用LM317芯片进行整流,进行滤波和稳压后,通过调节电位器,可以把输入的9V电压转变成5V的电压。2. 单片机系统总图(详见附录)四、 程序模块框图正常显示模式时间校准模式

10、闹钟模式 模式1:时分秒 模式2:年月日 模式123:校准时分秒 模式4567:校准年月日 模式8:设置小时 模式9:设置分钟1. 功能框图 程序初始化主执行程序MODE2检测1,MODE检测MODE等于8或90,MODE检测MODE不等于8或9闹钟BCD程序MODE2=0BCD1程序闹钟显示程序MODE=,显示时分秒MODE检测MODE2=1BCD2程序MODE检测MODE=1、2、3,校准时分秒MODE=4、5、6、7,校准时分秒MODE=,显示年月日时分秒显示程序年月日校准显示程序时分秒校准显示程序时分秒校准显示程序闪烁LED闪烁中断溢出Key_scan程序重新赋值调整时间返回主执行程序

11、MODE=9,设置分钟MODE检测MODE=8,设置小时闹钟检测程序:闹钟声程序检测是否到达时间2. 程序框图 五、 程序清单;变量定义LED1EQU7FHLED2EQU7EHLED3EQU7DHLED4EQU7CHLED5EQU7BHLED6EQU7AHLED1_2EQU6CHLED2_2EQU6BHLED3_2EQU6AHLED4_2EQU69HLED5_2EQU68HLED6_2EQU67HLED7_2EQU66HLED8_2EQU65HSCAN_COUNT2EQU64HMODE2EQU60HSCAN_COUNT3EQU5FHSCAN_COUNT4EQU5EHLED1_CLOCK_HOU

12、R EQU5DHLED2_CLOCK_HOUREQU5CHLED1_CLOCK_MIN EQU5BHLED2_CLOCK_MINEQU5AHH_MEM_CLOCKEQU59HM_MEM_CLOCKEQU58HSCAN_COUNT5EQU57HSCAN_COUNTEQU77H;扫描显示计数器TEMP1EQU76HTEMP2EQU75HTEMP3EQU74HH_MEMEQU73HM_MEMEQU72HS_MEMEQU71HD_MEMEQU6DHMON_MEMEQU63HY_MEM_1EQU62HY_MEM_2EQU61HMODE_REGEQU6FHTIMER_COUNTEQU6EH ;定时器中断次

13、数软件计数器MODEEQU70H ;TEMP4EQU6CHFLASH_FLAGEQU20H.0;定义闪烁标志位;初始化ORG0000HLJMPMAINORG0003H;外部中断0的标志RETI;中断标志ORG000BH;定时器中断0的标志LJMPT0_INTORG0013H;外部中断1RETI;-ORG0030H;好像一般都有这一句MAIN:MOVSP,#2FHMOVTL0,#(65536-4608)MOD 256;MOD是取余数,初始化时间常数MOVTH0,#(65536-4608)/256MOVTMOD,#00000001B;G=0,C/T取T(定时器),模式为模式1(16位定时器或计数器

14、方式)SETBET0;T0(定时器0中断)中断允许 SETBTR0;定时器0控制位,置1SETBEA;CPU中断允许总开关LCALL CLR_MEMMOVMON_MEM,#1MOVD_MEM,#1;-MOVH_MEM_CLOCK,#12;主要执行程序;-WAIT:;LCALLCLOCK_CHOOSE;LCALLDELAY_1SLCALLKEY4_SCANLCALLCHOOSELCALLCHECK_TIMESJMPWAIT;-显示模式的选择程序-;-等待按键按下-KEY4_SCAN:NOKEY_4:MOVC,P3.7 CPLCJNCGATE4;CY为0跳转,没有按键,执行display程序MOV

15、TEMP4,CLCALLDELAY_10MSORLC,TEMP4JNCK4;按下跳转;没按下,返回GATE4:RETK4:LCALLSOUNDINCMODE2MOVA,MODE2CJNEA,#2,K41 ;mode只能为0或者1 mode为1执行display2程序MOVMODE2,#0K41:JNBP3.7,$RET ;显示模式选择程序;-无论如何都要选择一个模式-CHOOSE:MOVA,MODE2CJNEA,#0,NOT_CLOCK0; MODE2为1,判断是模式8还是模式9MOVA,MODE ;MODE2为0, 判断是否为8或者9CJNEA,#8,NOT_CLOCK3;MODE2=0的情

16、况下,不为模式8,判断是否为模式9LCALLCONVERT_BCD3;为模式8,调用displayclock程序LCALLCLOCK_DISPLAY ;为模式8RETNOT_CLOCK3:CJNEA,#9,NOT_CLOCK4;判断是否为模式9LCALLCONVERT_BCD3 LJMPCLOCK_DISPLAYRETNOT_CLOCK4:LCALLCONVERT_BCD1 ;不为模式9,调用显示程序1LCALLCHOOSE_DISPLAY1RETNOT_CLOCK0:MOVA,MODECJNEA,#8,NOT_CLOCK1;MODE2为1时,不为模式8,判断是否为模式9LCALLCONVER

17、T_BCD3;为模式8,调用displayclock程序LCALLCLOCK_DISPLAYRETNOT_CLOCK1:CJNEA,#9,NOT_CLOCK2;不为模式9,显示mode2=0下的display程序LCALLCONVERT_BCD3 ;为模式9,调用clockdisplay程序LCALLCLOCK_DISPLAYRETNOT_CLOCK2:LCALLCONVERT_BCD2; 此时为mode2模式为1的,选择闪烁模式,对DISPLAY程序经行选择LCALLCHOOSE_DISPLAY2;模式0,display程序RET;-显示模式选择函数-CHOOSE_DISPLAY1:MOVA

18、,MODECJNEA,#0,CH_1LCALLDISPLAY1 ;模式为0,调用正常的显示程序RETCH_1:LCALLDISPLAY1_2RETCHOOSE_DISPLAY2:MOVA,MODECJNEA,#0,CH_2LCALLDISPLAY2 ;模式为0,调用正常的显示程序RETCH_2:LCALLDISPLAY2_2RET; 中断服务程序;-中断服务程序-T0_INT:PUSHACC;保护现场开始,保护A累加器PUSHPSW;保护程序状态字存储器PUSH DPL;数据地址指针(低8位)PUSHDPHSETBRS1;选择2区工作存储单元MOVTL0,#(65536-5000)MOD 25

19、6;恢复时间常数MOVTH0,#(65536-5000)/256LCALLKEY_SCANINCTIMER_COUNTMOVA,TIMER_COUNTCJNEA,#100,T0_INT1;如果A不等于100,跳到TO_INT1MOVTIMER_COUNT,#0CPLFLASH_FLAG;每5MS*100=500MS取反闪烁标志位;LCALLFLASH;CPL:Converse Position Logical 位取反JNBFLASH_FLAG,T0_INT1;为0跳到TO_INT1INCS_MEMMOVA,S_MEMCJNEA,#60,T0_INT1;秒位MOVS_MEM,#0INC M_ME

20、MMOVA,M_MEMCJNEA,#60,T0_INT1 ;分位MOVM_MEM,#0INC H_MEMMOVA,H_MEMCJNEA,#24,T0_INT1MOVH_MEM,#0 ;时位INCD_MEMMOVA,D_MEMCJNEA,#32,T0_INT1MOVD_MEM,#1 ;天INCMON_MEMMOVA,MON_MEMCJNEA,#13,T0_INT1MOVMON_MEM,#1;月INCY_MEM_1MOVA,Y_MEM_1CJNEA,#100,T0_INT1MOVY_MEM_1,#0 ;低位年INCY_MEM_2MOVA,Y_MEM_2CJNEA,#100,T0_INT1MOVY_

21、MEM_2,#0;高位年T0_INT1:POPDPHPOPDPLPOPPSWPOPACCRETI ;出栈;闹钟显示及转码程序;闹钟显示程序;-时钟的显示函数-CLOCK_DISPLAY:;SETBCLOCK_FLASHMOVP0,#11111111BNOPNOPMOVA,SCAN_COUNT5ADDA,ACCMOVR1,ALCALLFLASH3 ;在flash函数中选择调用哪个表;MOVDPTR,#LED_SCAN_TABLEMOVA,R1MOVCA,A+DPTRSETBP2.7;位锁存MOVP0,ACLRP2.7 MOVA,SCAN_COUNT5ADDA,ACCINCAMOVCA,A+DPT

22、RMOVR0,AMOVA,R0MOVP0,A;LCALLDELAY_1S ;调试用CLRP2.6 ;DB3FH,06H,5BH,04FH,66H,6DH,7DH,07H ;DB7FH,6FH,77H,7CH,39H,5EH,79H,71H,0FFH INCSCAN_COUNT5MOVA,SCAN_COUNT5 CJNEA,#4,DONE5MOVSCAN_COUNT5,#0DONE5: RET;闹钟闪烁及模式选择程序;-时钟闪烁模式选择程序-FLASH3:JNBFLASH_FLAG,F31;若标志位位为0,显示闪烁程序,否则显示正常模式;LCALLLIGHT_OFFLJMP FLASH3F31:

23、MOVA,MODECJNEA,#8,F32LJMPH_F_CLOCK;模式8,校准小时F32:;CJNEA,#0,F34;模式为0,则返回?LJMPM_F_CLOCK;模式9,校准分钟F34:RET; ;-闪烁程序-H_F_CLOCK:MOVDPTR,#LED_SCAN_TABLE_CLOCK_1RETM_F_CLOCK:MOVDPTR,#LED_SCAN_TABLE_CLOCK_2RET;闹钟BCD转码程序;-为闹钟做BCD转码-CONVERT_BCD3:;第一个数码管MOVR3,H_MEM_CLOCKMOVR2,#0LCALLBTIDMOVA,R6ANLA,#0FH;保留低四位MOVDPT

24、R,#LED_CODEMOVCA,A+DPTRMOVLED1_CLOCK_HOUR,A;第二个数码管MOVA,R6ANLA,#0F0H;保留高四位SWAPAMOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED2_CLOCK_HOUR,A;第三个数码管MOVR3,M_MEM_CLOCKMOVR2,#0LCALLBTIDMOVA,R6ANLA,#0FHMOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED1_CLOCK_MIN,A;第四个数码管MOVA,R6ANLA,#0F0HSWAPA;MOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED2_C

25、LOCK_MIN,ARET;检测闹钟程序;-检测是否到达闹钟时间-CHECK_TIME:MOVA,H_MEM_CLOCKCJNEA,H_MEM,OVER2CHECK_NEXT:MOVA,M_MEM_CLOCKCJNEA,M_MEM,OVER2MOVA,S_MEM;为了防止整一分钟都会叫,只在一秒的时候判断一次CJNEA,#0,OVER2LCALLCLOCK_SOUNDRETOVER2:RET; 显示时分秒程序;时分秒显示程序;-显示时分秒程序-DISPLAY1:MOVP0,#11111111BNOPNOP;MOVP0,#0FFHMOVA,SCAN_COUNT;之前定义过:SCAN_COUNTE

26、QU7BHADDA,ACCMOVDPTR,#LED_SCAN_TABLEMOVCA,A+DPTRSETBP2.7;位锁存MOVP0,ACLRP2.7 MOVA,SCAN_COUNTADDA,ACCINCAMOVCA,A+DPTRMOVR0,AMOVA,R0MOVR0,SCAN_COUNTDOT:CJNER0,#2,NOACT1ORLA,#80HMOVP0,ASETBP0.7 ;调试用SJMPGO_ONNOACT1: CJNER0,#4,NOACT2SJMPACTMOVP0,A CLRP2.6 ;DB3FH,06H,5BH,04FH,66H,6DH,7DH,07H ;DB7FH,6FH,77H,

27、7CH,39H,5EH,79H,71H,0FFH GO_ON:INCSCAN_COUNTMOVA,SCAN_COUNT CJNEA,#6,DONEMOVSCAN_COUNT,#0DONE: RET;时分秒BCD程序;-CONVERT_BCD1:;第一个数码管MOVR3,S_MEMMOVR2,#0LCALLBTIDMOVA,R6ANLA,#0FH;保留低四位MOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED1,A;第二个数码管MOVA,R6ANLA,#0F0H;保留高四位SWAPAMOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED2,A;第三个数码管MOV

28、R3,M_MEMMOVR2,#0LCALLBTIDMOVA,R6ANLA,#0FHMOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED3,A;第四个数码管MOVA,R6ANLA,#0F0HSWAPA;MOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED4,A ;第五个数码管MOVR3,H_MEMMOVR2,#0LCALLBTIDMOVA,R6ANLA,#0FHMOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED5,A ;第六个数码管MOVA,R6ANLA,#0F0HSWAPAMOVCA,A+DPTRMOVLED6,ARET;二翻十程序;-二

29、翻十程序-BTID:CLRAMOVR4,AMOVR5,AMOVR6,AMOVR7,#16IBTL:CLRCMOVA,R3RLCA;带进位循环左移,与LC指令的区别?MOVR3,AMOVA,R2RLCAMOVR2,AMOVA,R6ADDCA,R6DAA;DA:十进制调整指令,将二进制结果;调整为十进制数MOVR6,AMOVA,R5ADDCA,R5DAAMOVR5,AMOVA,R4ADDCA,R4;在进行A+R4前,A的值是多少DAAMOVR4,ADJNZR7,IBTL ;减1为1跳转RET; 显示年月日的程序;年月日显示程序;-显示年月日的程序-DISPLAY2:MOVP0,#11111111B

30、NOPNOP;MOVP0,#0FFHMOVA,SCAN_COUNT2;之前定义过:SCAN_COUNTEQU7BHADDA,ACCMOVDPTR,#LED_SCAN_TABLE2MOVCA,A+DPTRSETBP2.7;位锁存MOVP0,ACLRP2.7 MOVA,SCAN_COUNT2ADDA,ACCINCAMOVCA,A+DPTRMOVR0,AMOVA,R0MOVP0,A;LCALLDELAY_1SCLRP2.6 INCSCAN_COUNT2MOVA,SCAN_COUNT2 CJNEA,#8,DONE2MOVSCAN_COUNT2,#0DONE2: RET;年月日BCD转码程序;-启用第二

31、段转码程序-CONVERT_BCD2:;第1_2个数码管MOVR3,D_MEMMOVR2,#0LCALLBTIDMOVA,R6ANLA,#0FH;保留低四位MOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED1_2,A;第2_2个数码管MOVA,R6ANLA,#0F0H;保留高四位SWAPAMOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED2_2,A;第3_2个数码管MOVR3,MON_MEMMOVR2,#0LCALLBTIDMOVA,R6ANLA,#0FHMOVDPTR,#LED_CODEMOVCA,A+DPTRJNBFLASH_FLAG,MODE0_B

32、CD1 ;FLASH_FLAG为0跳到MODE0_BCD1MODE0_BCD1:MOVLED3_2,A;第4_2个数码管MOVA,R6ANLA,#0F0HSWAPAMOVCA,A+DPTRMOVLED4_2,A ;第5_2个数码管MOVR3,Y_MEM_1MOVR2,#0LCALLBTIDMOVA,R6ANLA,#0FHMOVDPTR,#LED_CODEMOVCA,A+DPTRJNBFLASH_FLAG,MODE0_BCD2 ;FLASH_FLAG为0跳到MODE0_BCD1MODE0_BCD2:MOVLED5_2,A ;第6_2个数码管MOVA,R6ANLA,#0F0HSWAPAMOVCA,

33、A+DPTRMOVLED6_2,A ;第7_2个数码管MOVR3,Y_MEM_2MOVR2,#0LCALLBTIDMOVA,R6ANLA,#0FHMOVDPTR,#LED_CODEMOVCA,A+DPTRMOVLED7_2,A ;第8_2个数码管MOVA,R6ANLA,#0F0HSWAPAMOVCA,A+DPTRMOVLED8_2,ARET;显示时分秒校准程序;时分秒校准显示程序;-第三个display函数,专门校准闪烁时用,节省内存-DISPLAY1_2:MOVP0,#11111111BNOPNOPMOVA,SCAN_COUNT3;之前定义过:SCAN_COUNTEQU7BHADDA,ACC

34、MOVR1,ALCALLFLASH1 ;在flash函数中选择调用哪个表;MOVDPTR,#LED_SCAN_TABLEMOVA,R1MOVCA,A+DPTRSETBP2.7;位锁存MOVP0,ACLRP2.7 MOVA,SCAN_COUNT3ADDA,ACCINCAMOVCA,A+DPTRMOVR0,AMOVA,R0MOVP0,A;LCALLDELAY_1S ;调试用CLRP2.6 ;DB3FH,06H,5BH,04FH,66H,6DH,7DH,07H ;DB7FH,6FH,77H,7CH,39H,5EH,79H,71H,0FFH INCSCAN_COUNT3MOVA,SCAN_COUNT3

35、 CJNEA,#2,DONE3MOVSCAN_COUNT3,#0DONE3: RET;时分秒闪烁模式选择程序;-判断闪烁模式-;-时分秒闪烁模式选择程序-FLASH1:JNBFLASH_FLAG,F1;若标志位位为0,显示闪烁程序,否则显示正常模式;LCALLLIGHT_OFFSJMP FLASH1F1:MOVA,MODECJNEA,#1,F2LJMPH_F;模式1,校准小时F2:CJNEA,#2,F7LJMPM_F;模式2,校准分钟F7: CJNEA,#3,F8;如果不等于3,也应该正常显示LJMPS_F ;模式3,校准秒数F8:CJNEA,#0,F10;如果变回模式0RETF10:;SJM

36、PFLASH1RET ;-闪烁程序-H_F:MOVDPTR,#LED_SCAN_TABLE_1RETM_F:MOVDPTR,#LED_SCAN_TABLE_2RETS_F:MOVDPTR,#LED_SCAN_TABLE_3RET;年月日校准程序;年月日校准显示程序;-第四个display函数,专门校准闪烁时用(年月日),节省内存-DISPLAY2_2:MOVP0,#11111111BNOPNOP;MOVP0,#0FFHMOVA,SCAN_COUNT4;之前定义过:SCAN_COUNTEQU7BHADDA,ACCMOVR1,ALCALLFLASH2 ;在flash函数中选择调用哪个表;MOVDP

37、TR,#LED_SCAN_TABLEMOVA,R1MOVCA,A+DPTRSETBP2.7;位锁存MOVP0,ACLRP2.7 MOVA,SCAN_COUNT4ADDA,ACCINCAMOVCA,A+DPTRMOVR0,AMOVA,R0MOVP0,A;LCALLDELAY_1S ;调试用CLRP2.6 ;DB3FH,06H,5BH,04FH,66H,6DH,7DH,07H ;DB7FH,6FH,77H,7CH,39H,5EH,79H,71H,0FFH INCSCAN_COUNT4MOVA,SCAN_COUNT4 CJNEA,#2,DONE4MOVSCAN_COUNT4,#0DONE4: RET

38、; 年月日闪烁模式选择程序;-年月日闪烁模式选择程序-FLASH2:JNBFLASH_FLAG,F3;若标志位位为0,显示闪烁程序,否则显示正常模式SJMPFLASH2F3:MOVA,MODE;CJNEA,#1,F12;CJNEA,#2,F12;CJNEA,#3,F12CJNEA,#4,F4;模式4,校准 天数LJMPD_FF4:CJNEA,#5,F5;模式5,校准月份LJMPMON_FF5:CJNEA,#6,F6;模式6,校准低位年LJMPY_F1F6:CJNEA,#7,F9LJMPY_F2;模式7,校准 高位年F9:CJNEA,#0,F11;如果变回模式0,返回RETF11:;SJMPFLASH2RET;-闪烁程序-D_F:MOVDPTR,#LED_SCAN_TABLE21RETMON_F:MOVDPTR,#LED_SCAN_TABLE22RETY_F1:MOVDPTR,#LED_SCA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论