欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载
     

    单片机课程设计51单片机电子时钟.doc

    • 资源ID:4147500       资源大小:348.50KB        全文页数:18页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机课程设计51单片机电子时钟.doc

    课程设计课程名称 : 单片机课程设计 题目名称 : 单片机电子时钟 学 院 : 电 信 学 院 专 业 : 电 子 工 程 姓 名 : 学 号 : 指导教师 : 2010年11月7日 一、 课程设计名称:51单片机电子时钟二、 设计方案: 1、通过单片机内部的计数/定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。2、采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;软件编程简单,通常用在对时钟精度要求较高的场合。三、设计内容:这里采用应用广泛的AT89C52作为时钟控制芯片,利用单片机内部的定时/计数器T0 实现软时钟的目的。首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒,妙计60次形成分,分计60形成小时,小时计到12。最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。此外还要实现对时间的调整功能,89C52的P1.0、P1.1、P1.2外接三个独立按键,当按下P1.0按键时,系统进入调时间的状态或启动时间显示的功能;当按下P1.1按键时,对显示的数码管进行加一的功能;当按下P1.2按键时,对显示的数码管进行减一的功能,达到调整时间的目的。 四、系统软件程序设计1.主程序 先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。2、 数码管显示模块 本实验有8个数码管,从右到左为妙、横线、分、横线、时。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的断码,从P0端口输出,同时在P2端口进行数码管显示。 3、定时器/计数器T0中断服务程序 T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的指定位置。流程图如下:现场保护,重置初值,启动下一个50ms是开始显示单元清0T0、T1设为16位计数模式允许T0中断调用显示子程序进入功能程序按下键否开始中断返回50ms计数器加一秒单元加一,50ms计数器清0分单元加一,秒单元清0时单元加一,分单元清0时单元清050ms计数器=20?秒单元=60?分单元=60?时单元=24?主程序流程图T0中断服务程序NONONONO 4、按键处理模块 按键设置为:如果没有按键吗,则时钟正常走时。当按下K0键时,进入调分状态,时钟停止走动;按K1和K2按键可以进行加一和减一操作;继续按K0键可以分别进行分和小时的调整;最后按K0键启动计时。5、 汇编语言程序ORG 0000HLJMP STARTORG 000BHLJMP INIT0 START:MOV R0,#70H;主程序开始MOV R7,#0CH INIT:MOV R0,#00HINC R0DJN Z R7,INITMOV 72H,#10;对连字符进行装值MOV 75H,#10MOV TMOD,#01H;选择定时器/计数器T0的方式1MOV TL0,#0B0H;对低位赋初值MOV TH0,#03CH;高位赋初值SETB EASETB ET0SETB TR0 START1:LCALL SCANLCALL KEYSCANSJMP START1 DL1MS:MOV R6,#14H;延时1子程序 DL1:MOV R7,#19H DL2:DJNZ R7,DL2DJNZ R6,DL1RET DL20MS:ACALL SCAN;延时20ms子程序ACALL SCANACALL SCANRET ;数码管显示程序开始 SCAN:MOV A,78HMOV B,#0AHDIV AB ;时间秒的十位送给A,时间秒的个位送BMOV 71H,A;时间秒要显示的十位MOV 70H,B;时间秒要显示的个位MOV A,79HMOV B,#0AHDIV AB;时间分的十位送给A,时间分的个位送BMOV 74H,A;时间分要显示的十位送地址MOV 73H,B;时间分要显示的个位送地址MOV A,7AHMOV B,#0AHDIV AB;时间时的十位送给A,时间时的个位送BMOV 77H,A;时间时显示的十位送地址MOV 76H,B;时间时要显示的个位送地址MOV R1,#70HMOV R5,#0FEHMOV R3,#08H SCAN1:MOV A,R5;数码管的显示程序MOV P2,AMOV A,R1MOV DPTR,#TABMOVC A,A+DPTR;对字段表取值显示MOV P0,AMOV A,R5LCALL DL1MSINC R1MOV A,R5RL AMOV R5,ADJNZ R3,SCAN1MOV P2,#0FFHMOV P0,#0FFHRET ;"09"和"-"的字段表TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH ;定时/计数器T0中断程序 INIT0:PUSH ACCPUSH PSWCLR ET0CLR TR0MOV TL0,#0B0HMOV TH0,#03CHSETB TR0INC 7BHMOV A,7BHCJNE A,#14H,OUTT0;50ms是否到20次,没有到就继续执行50ms的延时MOV 7BH,#00INC 78HMOV A,78HCJNE A,#3CH,OUTT0;一秒的延时是否计到60次,没有就继续执行 MOV 78H,#00INC 79HMOV A,79HCJNE A,#3CH,OUTT0MOV 79H,#00INC 7AHMOV A,7AHCJNE A,#18H,OUTT0;60分钟的延时是否计到24次,没有就 继续执行程序MOV 7AH,#00 OUTT0:SETB ET0;启动定时器T0POP PSWPOP ACCRETI;按键处理程序 KEYSCAN:CLR EAJNB P1.0,KEYSCAN0;P1.0有按键按下则跳转到子程序JNB P1.1,KEYSCAN1;P1.1有按键按下则跳转到子程序JNB P1.2,KEYSCAN2;P1.2有按键按下则跳转到子程序 KEYOUT:SETB EARET KEYSCAN0:LCALL DL20MS;20ms的延时消抖JB P1.0,KEYOUT WAIT0:JNB P1.0,WAIT0;判断按键是否松手, 松手就往下执行程序INC 7CHMOV A,7CHCLR ET0CLR TR0CJNE A,#03H,KEYOUT;按下第一次和第二次对时、分选定MOV 7CH,#00;按下第三次时就启动计时SETB ET0SETB TR0SJMP KEYOUT KEYSCAN1:LCALL DL20MS;按键加一的程序JB P1.1,KEYOUT WAIT1:JNB P1.1,WAIT1MOV A,7CHCJNE A,#02H,KSCAN11;如果功能键按下则对时加一调整INC 79HCJNE A,#3CH,KEYOUT;如果加到60则清零MOV 79H,#00SJMP KEYOUT KSCAN11:INC 7AH;如果功能键是按下第 二次则对分进行加一调整MOV A,7AHCJNE A,#18H,KEYOUTMOV 7AH,#00SJMP KEYOUT KEYSCAN2:LCALL DL20MS;延时消抖程序JB P1.2,KEYOUT WAIT2:JNB P1.2,WAIT2;判断是否放开按键MOV A,7CHCJNE A,#02H,KSCAN21;如果功能键是按下第一次对时进行减一DEC 79HMOV A,79HCJNE A,#0FFH,KEYOUTMOV 79H,#3BHSJMP KEYOUT KSCAN21:DEC 7AH;如果功能键是按下第二次则对分进行减一CJNE A,#0FFH,KEYOUTMOV 7AH,#17HSJMP KEYOUTEND6、软件编译环境:Keil uVision2 确保生成 ". Hex"文件五、 系统硬件电路的设计系统的硬件主要包括单片机芯片,数码管显示,按键开关电路,它的硬件电路如下图所示,单片机采用广泛使用的AT89C52,系统时钟采用12MHz的晶振,八个数码管显示,小时与分钟与秒钟间用短横线,采用共阳极七段式数码管,P0口为段选码输出端,P2口为位选码输出端。硬件电路如图所示:六、 课程设计总结经过一周的时间以及对整本教材的知识总结,把课程设计分成了硬件和软件两大模块。 总的来说,硬件部分很好入手,电路也教简单,主要涉及的是简单的按键、电容、电阻、晶振和数码管。在软件部分,细分为了按键模块、显示模块、定时/计数模块,最后把几个模块整合在主程序模块中,使得程序简单明了。整个设计过程中遇到的最大问题是软件的编写,由于采用的是汇编语言,其间使用到的各种寄存器、存储器地址、变量很多,很难对程序的整体把握。通过电子钟的设计,对单片机的原理、结构、外围电路进一步的了解。在整个设计过程中学到了团体精神和独立解决问题的重要性。为以后的求职之路打下了基础。七、 参考资料 1单片机原理与应用 谢维成 杨加国 编著 2 单片机应用与仿真调试 严天峰 编著3模拟电子技术(第三版) 胡宴如 耿苏燕 编著4数字电子技术(第三版) 杨志忠 卫桦林 编著 ORG 0000HLJMP STARTORG 000BHLJMP INIT0 START:MOV R0,#70H;主程序开始MOV R7,#0CH INIT:MOV R0,#00HINC R0DJNZ R7,INITMOV 72H,#10;对连字符进行装值MOV 75H,#10MOV TMOD,#01H;选择定时器/计数器T0的方式1MOV TL0,#0B0H;对低位赋初值MOV TH0,#03CH;高位赋初值SETB EASETB ET0SETB TR0 START1:LCALL SCANLCALL KEYSCANSJMP START1 DL1MS:MOV R6,#14H;延时1子程序 DL1:MOV R7,#19H DL2:DJNZ R7,DL2DJNZ R6,DL1RET DL20MS:ACALL SCAN;延时20ms子程序ACALL SCANACALL SCANRET ;数码管显示程序开始 SCAN:MOV A,78HMOV B,#0AHDIV AB ;时间秒的十位送给A,时间秒的个位送BMOV 71H,A;时间秒要显示的十位MOV 70H,B;时间秒要显示的个位MOV A,79HMOV B,#0AHDIV AB;时间分的十位送给A,时间分的个位送BMOV 74H,A;时间分要显示的十位送地址MOV 73H,B;时间分要显示的个位送地址MOV A,7AHMOV B,#0AHDIV AB;时间时的十位送给A,时间时的个位送BMOV 77H,A;时间时显示的十位送地址MOV 76H,B;时间时要显示的个位送地址MOV R1,#70HMOV R5,#0FEHMOV R3,#08H SCAN1:MOV A,R5;数码管的显示程序MOV P2,AMOV A,R1MOV DPTR,#TABMOVC A,A+DPTR;对字段表取值显示MOV P0,AMOV A,R5LCALL DL1MSINC R1MOV A,R5RL AMOV R5,ADJNZ R3,SCAN1MOV P2,#0FFHMOV P0,#0FFHRET ;"09"和"-"的字段表TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH ;定时/计数器T0中断程序 INIT0:PUSH ACCPUSH PSWCLR ET0CLR TR0MOV TL0,#0B0HMOV TH0,#03CHSETB TR0INC 7BHMOV A,7BHCJNE A,#14H,OUTT0;50ms是否到20次,没有到就继续执行50ms的延时MOV 7BH,#00INC 78HMOV A,78HCJNE A,#3CH,OUTT0;一秒的延时是否计到60次,没有就继续执行 MOV 78H,#00INC 79HMOV A,79HCJNE A,#3CH,OUTT0MOV 79H,#00INC 7AHMOV A,7AHCJNE A,#18H,OUTT0;60分钟的延时是否计到24次,没有就 ;继续执行程序MOV 7AH,#00 OUTT0:SETB ET0;启动定时器T0POP PSWPOP ACCRETI;按键处理程序 KEYSCAN:CLR EAJNB P1.0,KEYSCAN0;P1.0有按键按下则跳转到子程序JNB P1.1,KEYSCAN1;P1.1有按键按下则跳转到子程序JNB P1.2,KEYSCAN2;P1.2有按键按下则跳转到子程序 KEYOUT:SETB EARET KEYSCAN0:LCALL DL20MS;20ms的延时消抖JB P1.0,KEYOUT WAIT0:JNB P1.0,WAIT0;判断按键是否松手, 松手就往下执行程序INC 7CHMOV A,7CHCLR ET0CLR TR0CJNE A,#03H,KEYOUT;按下第一次和第二次对时、分选定MOV 7CH,#00;按下第三次时就启动计时SETB ET0SETB TR0SJMP KEYOUT KEYSCAN1:LCALL DL20MS;按键加一的程序JB P1.1,KEYOUT WAIT1:JNB P1.1,WAIT1MOV A,7CHCJNE A,#02H,KSCAN11;如果功能键按下则对时加一调整INC 79HCJNE A,#3CH,KEYOUT;如果加到60则清零MOV 79H,#00SJMP KEYOUT KSCAN11:INC 7AH;如果功能键是按下第 ; 二次则对分进行加一调整MOV A,7AHCJNE A,#18H,KEYOUTMOV 7AH,#00SJMP KEYOUT KEYSCAN2:LCALL DL20MS;延时消抖程序JB P1.2,KEYOUT WAIT2:JNB P1.2,WAIT2;判断是否放开按键MOV A,7CHCJNE A,#02H,KSCAN21;如果功能键是按下第一次对时进行减一DEC 79HMOV A,79HCJNE A,#0FFH,KEYOUTMOV 79H,#3BHSJMP KEYOUT KSCAN21:DEC 7AH;如果功能键是按下第二次则对分进行减一CJNE A,#0FFH,KEYOUTMOV 7AH,#17HSJMP KEYOUTEND

    注意事项

    本文(单片机课程设计51单片机电子时钟.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开