您好,欢迎访问三七文档
电脑时钟程序实验一、实验目的:⑴进一步掌握定时器/计数器的使用方法,⑵了解、熟悉80C51综合性程序的编程方法二、实验内容:设计一单片机控制的时钟电路显示时、分、秒,24小时进制,具有校时功能。三、实验步骤:1、硬件电路如下:2、编程提示如下:2.1.定时器/计数器T0中断服务程序定时器/计数器T0用于时间计时。选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把它们的值放到存储单元的指定位置。定时器/计数器T0中断服务程序流程图如下图:主程序流程图定时器/计数器T0中断服务程序流程图2.2按键处理模块按键处理设置为:如没有按键,则时钟正常走时。当按下K0按键时,进入调分状态,时钟停止走动;按K1可K2按键可进行加1或减1操作;继续按K0键可分别进行分和小时的调整;最后按K0键将退出调整状态,时钟开始计时运行。3、编写程序如下:ORG0000HLJMPSTARTORG000BH;定时器/计数器T0中断程序入口LJMPINTT0;主程序START:MOVR0,#70HMOVR7,#0CH开始显示单元清零T0、T1设为16位计数模式允许T0中断调用显示子程序进入功能程序按下键否?否是开始现场保护,重置初值启动下一个50ms50ms计数器加1秒单元加1,50ms计数器清0,秒写入秒个位和秒十位50ms计数器=20?否是分单元加1,秒单元清0,分写入分个位和分十位秒单元=60?时单元加1,分单元清0,时写入时个位和时十位分单元=60?时单元清0时单元=24?中断返回否否否是是是INIT:MOV@R0,#00HINCR0DJNZR7,INITMOV72H,#10MOV75H,#10MOVTMOD,#01HMOVTL0,#0B0HMOVTH0,#03CHSETBEASETBET0SETBTR0START1:LCALLSCANLCALLKEYSCANSJMPSTART1;延时1MS子程序DL1MS:MOVR6,#14HDL1:MOVR7,#19HDL:DJNZR7,DLDJNZR6,DL1RET;延时20MS子程序DL20MS:ACALLSCANACALLSCANACALLSCANRET;数码管显示程序SCAN:MOVA,78H;时间存入显示缓冲区相应位置MOVB,#0AHDIVABMOV71H,AMOV70H,BMOVA,79HMOVB,#0AHDIVABMOV74H,AMOV73H,BMOVA,7AHMOVB,#0AHDIVABMOV77H,AMOV76H,BMOVR1,#70H;循环扫描显示MOVR5,#80HMOVR3,#08HSCAN1:MOVA,R5MOVP2,AMOVA,@R1MOVDPTR,#TABMOVCA,@A+DPTRMOVP0,AMOVA,R5LCALLDL1MSINCR1MOVA,R5RRAMOVR5,ADJNZR3,SCAN1MOVP2,#00HMOVP0,#0FFHRETTAB:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90H,0BFH;0~9,-的共阳极字段码;定时器/计数器T0中断服务程序INTT0:PUSHACCPUSHPSWCLRET0CLRTR0MOVTL0,#0B0HMOVTH0,#03CHSETBTR0INC7BHMOVA,7BHCJNEA,#14H,OUTT0MOV7BH,#00INC78HMOVA,78HCJNEA,#3CH,OUTT0MOV78H,#00INC79HMOVA,79HCJNEA,#3CH,OUTT0MOV79H,#00INC7AHMOVA,7AHCJNEA,#18H,OUTT0MOV7AH,#00OUTT0:SETBET0POPPSWPOPACCRETIKEYSCAN:CLREA;按键处理程序JNBP1.0,KEYSCAN0JNBP1.1,KEYSCAN1JNBP1.2,KEYSCAN2KEYOUT:SETBEARETKEYSCAN0:LCALLDL20MSJBP1.0,KEYOUTWAIT0:JNBP1.0,WAIT0INC7CHMOVA,7CHCLRET0CLRTR0CJNEA,#03H,KEYOUTMOV7CH,#00SETBET0SETBTR0SJMPKEYOUTKEYSCAN1:LCALLDL20MSJBP1.1,KEYOUTWAIT1:JNBP1.1,WAIT1MOVA,7CHCJNEA,#02H,KSCAN11INC79HMOVA,79HCJNEA,#3CH,KEYOUTMOV79H,#00SJMPKEYOUTKSCAN11:INC7AHMOVA,7AHCJNEA,#18H,KEYOUTMOV7AH,#00SJMPKEYOUTKEYSCAN2:LCALLDL20MSJBP1.2,KEYOUTWAIT2:JNBP1.2,WAIT2MOVA,7CHCJNEA,#02H,KSCAN21DEC79HMOVA,79HCJNEA,#0FFH,KEYOUTMOV79H,#3BHSJMPKEYOUTKSCAN21:DEC7AHMOVA,7AHCJNEA,#0FFH,KEYOUTMOV7AH,#17HSJMPKEYOUTEND4、调试程序运行结果如下:按照要求先调小时为23点,再调分钟为59分,结果如下:在调一个时间如下:计时的状态如下:四、思考题:电子钟的走时精度和程序中那些常数有关?五、预习要求:⑴分析电脑时钟程序的设计思路,⑵写出74LS240、75452、LED引脚图7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛,它的外观如下:这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。那么,实际的数码管的引脚是怎样排列的呢?对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为1~10脚,左上角那个脚便是10脚了,上面两个图中的数字分别与这10个管脚一一对应。注意,3脚和8脚是连通的,这两个都是公共脚。还有一种比较常用的是四位数码管,内部的四个数码管共用a~dp这8根数据线,为人们的使用提供了方便,因为里面有四个数码管,所以它有四个公共端,加上a~dp,共有12个引脚,下面便是一个共阴的四位数码管的内部结构图(共阳的与之相反)。引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为1~12脚,下图中的数字与之一一对应。2、74LS240的管教图和功能表如下:这种八缓冲器和线驱动器是为提高三态输出存储地址驱动器、时钟驱动器和总线定向接收器和发射器的性能和集成度而特意设计的。此电路的特点是,扇出高,扇入好,噪声容限高(400mV)。可用来驱动小到133Ω的终端负载线。
本文标题:电子时钟
链接地址:https://www.777doc.com/doc-75652 .html