做一个电子钟,利用六个数码管显示分、秒。
/******************************** siliang Pledge 2 008 -1 2 缓冲缓冲区MOV6 2 H,#00H; v6 3 h,#00h; 5 H; 等式6 6 H; 十位movdptr,#tbl; ov a,#0bhlCallisPlayMova,#00hlCallisPlayMova,#00hlCallisPlayMova,#0BHlCallisPlayMova,#00hlCallisPlayMova,#00hlcallisplaymova,#00hlcallisplaymovtmod,#00hlcallisplayMovtmod,#01 H; 使用计时器0,模式1 Timer1 :movflag,#01 H; 清除1 S标准设置为1 ,表明时间次数小于1 Stimer2 :movr7 ,#counting1 ; HADDA,#02 HJZSCAN1 ; 第二位单个位MOVR0,#07 HL CALLISPLAY1 MOVA,#0AH; 第二个十位黑屏MOVR0,#06 HLCALLISPLAY1 LCALLELLIS02 ; 第二; 扫描1 mova,keyseck2 :anla,#0ffhcjnea,#0fdh,seck3 ; K2 Print ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 如果英寸 mink1 ; K3 媒体,如果不是,请转到 MINK1 ; ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------- 2 mink1 :cjnea,#0feh,scan1 ; -------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- minllcallcmp1 0jzmin2 1 ljmpis003 min2 1 :movminl,#00hincminhmova,minhlcallcmp06 jzmin2 2 ljmpis004 min2 2 :movminh,movminh,#00hljmpis004 mink3 : 2 ; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------- 当Allis06 时,它再次出现lcalldellcallscan。---------------------------- 伙计! = 4 ,转到houul = 1 0? Scan3 1 :Mova,HouhlCallCMP02 JZSCAN3 2 ; houh = 2 ,转到Scan3 2 LJMPIS005 ; 吧! = 2 ,更新Scan3 2 :Movhoul,#00hmovhouh,#00HLJMPIS006 CM1 1 0:Mova,Houlcallcmp1 0jzscan3 3 ; K3 , if printed -------------------------------------------------------------------------------------------------------------------------------------------------------------- Scan3 4 :Movhoul,#09 HDechouhmova,Houhadda,#1 JZSCAN3 5 LJMPIS006 SCAN3 5 :MOVHOUL,#03 HMOVHOUH,#02 HLJMPIS006 EXITK1 :CJNEA:CJNEA,CJNEA,CJNEA,#0FEH,#0FEH,SESCAN3 // 时间// K1 第四次calldel; 1 s Display Dis: Mova, Flagjnzwait // Detection 1 s Flag of Flag Incsecl // Second 1 MOVA, Secllcallcmp1 1 jnzdis0001 //, if 0, the next step is processed. lcmp06 jnzdis0002 //如果是0,则下一步分为处理。
06 JnzDis00 04 //如果是0,将在下一步不是0时处理,当movminh,#00hinchoulmova,houlcallcmp04 jnzcm1 0 // maincm1 0:mova,mova,houlcallcmpmpmpmp1 0jn zdis0005 //是IT 1 0吗? Add Time Processing*/Movflag,#00hljmptimer2 Again1 : ljmpagaindis0001 : Lcallis01 ljmptimer1 dis0002 : Lcallis02 ljmptimer1 dis0003 : Lcallis03 ljmptimer1 dis0004 : Lcallis04 ljmPtimer1 is IS0005 : LCALLIS05 LJMPTIMER1 DIS0006 :LCALLIS06 LJMPTIMER1 ; ------------- Dis001 dis001 : Lcallis01 ljmpscan1 dis002 : Lcallis02 ljmpscan1 dis003 : Lcallis03 ljmpscan2 dis 004 : Lcalldis04 ljmpscan2 dis005 : Lcallmpscan3 dis006 : Lcallis06 ljmpscan3 ; ------------- Dis01 : lcallis1 retis02 : lcallis1 lcalldisridis03 : lcallis1 lcallis3 retis04 : lcallis1 lcallis4 rtis05 : lcallis2 lcalldis3 lcallis4 lcallis06 : LCALLIS1 LCALLIS2 LCALLIS4 LCALLIS4 LC ALLIS5 LCALLIS6 RETIS1 :MOVA,SECL //显示第二个Digit Movr0,#07 HlCallisPlay1 Ret1 Ret1 Ret --------------- #04 HLCALLISPlay1 ret; -------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------- -----------------------------莫达,houh // movr0的十位数字,#00hlcallisplay1 ret; ------------------------------屏幕://初始化屏幕Movca,@a+dptr //在外部存储表上检查A+DPTR,以发送AMOVP2 ,#8 0H // CITS 8 00000)发送到P2 端口,在代码之后从U2 转换,使U1 3 有效MOVX@R0,A // A // A // A // External Address Unit of R0, in order to display the relevant digital tube ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 外部R0存储地址单元,以便显示相应的数字管 ret; -------------------------------------------------------------------------------------------------------- 比较A中的数字是否等于5 ADDA,#0FBHRET; ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------- H,6 6 H; 01 2 3 4 DB6 DH,7 DH,07 H,7 FH,6 FH; --------------------------------
实现实时时钟在数码管上显示时间
该实验在与实时时钟模块DS1 3 02 的应用有关的数字管上执行实时时钟显示时间,这是一个带有系列的实时时钟芯片,其中包含日历功能。CHIP通过简单的串行接口与微处理器进行通信,并在几秒钟,几分钟,小时,每天,日期,每月和一年中提供信息。
该芯片旨在以低功耗以低功率运行,数据和时钟信息保留在1 μs之内。
DS1 3 02 芯片使用同步通信,只需要三行即可连接:CE(选择),I/O(数据线)和SCLK(串行手表线)。
数据可以一次传输1 个字节,也可以在爆炸中传输3 1 个字节。
该芯片具有用于主电源和备份的双电动引脚,小型充电器罐程序和7 个字节添加了临时内存。
蓝色芯片单元上的MO -DS1 3 02 的图表显示了其与电路的连接关系。
日历寄存器是学习的关键,需要精通每个位的含义。
在Blue Bridge Cup Chip单元竞赛中,该官员将提供数据包,包括日历登记册,您可以通过参考注册指南获得详细信息。
在电路中,X1 和X2 电线连接到标准的3 2 ,7 6 8 kHz石英晶体,内部振荡器与晶体一起运行。
DS1 3 02 摩西在竞争表上的工作电路图显示了主要组件的布局。
了解DS1 3 02 芯片的内部框图对于实际活动非常重要。
在学习过程中,您需要掌握主要技能,例如阅读时间,编写初始价值并转换公式。
BCD代码转换为十进制是另一个重要点。
BCD代码和十进制数字之间的熟练转换公式对于MO -DS1 3 02 的准确操作非常重要。
当DS1 3 02 芯片与蓝桥杯唯一的芯片单元竞争时,它将正式提供相应的驱动程序,包括DS1 3 02 .C和DS1 3 02 .H文件。
DS1 3 02 .C文件包含控制代码。
主要注意阅读真实时钟,写作,转换和其他活动。
在显示实时时钟时间的代码中,有必要遵循模块设计的原理并将函数分为多个模块,例如创建,阅读时间,显示时间,等。
各种模型-DS1 3 02 .C,DS1 3 02 .H和Text.c提供了部署详细信息。
最终运行结果显示了显示时间并验证代码有效性的功能。
简而言之,在实时DS1 3 02 时钟模块的数字管上显示显示时间的实现包括许多链接,例如芯片原理,注册活动,BCD代码和小数转换。
了解并掌握基本知识和细节此活动是实现此功能的关键。
通过实验和代码实施,我们可以更好地了解DS1 3 02 和它的应用程序,以后为更复杂的项目奠定了坚实的基础。