




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计课程名称 : 单片机课程设计 题目名称 : 单片机电子时钟 学 院 : 电 信 学 院 专 业 : 电 子 工 程 姓 名 : 学 号 : 指导教师 : 2010年11月7日 1、 课程设计名称:51单片机电子时钟2、 设计方案: 1、通过单片机内部的计数/定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。2、采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;软件编程简单,通常用在对时钟精度要求较高的场合。三、设计内容:这里采用应用广泛的at89c5
2、2作为时钟控制芯片,利用单片机内部的定时/计数器t0 实现软时钟的目的。首先将t0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器t1对基准时间计数形成秒,妙计60次形成分,分计60形成小时,小时计到12。最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。此外还要实现对时间的调整功能,89c52的p1.0、p1.1、p1.2外接三个独立按键,当按下p1.0按键时,系统进入调时间的状态或启动时间显示的功能;当按下p1.1按键时,对显示的数码管进行加一的功能;当按下p1.2按键时,对显示的数码管进行减一的功能,达到调整时间的目的。 四、系
3、统软件程序设计1.主程序 先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。2、 数码管显示模块 本实验有8个数码管,从右到左为妙、横线、分、横线、时。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的断码,从p0端口输出,同时在p2端口进行数码管显示。 3、定时器/计数器t0中断服务程序 t0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计2
4、0次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的指定位置。流程图如下:现场保护,重置初值,启动下一个50ms是开始显示单元清0t0、t1设为16位计数模式允许t0中断调用显示子程序进入功能程序按下键否开始中断返回50ms计数器加一秒单元加一,50ms计数器清0分单元加一,秒单元清0时单元加一,分单元清0时单元清050ms计数器=20?秒单元=60?分单元=60?时单元=24?主程序流程图t0中断服务程序nononono 4、按键处理模块
5、 按键设置为:如果没有按键吗,则时钟正常走时。当按下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 th
6、0,#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;时间秒要显示的个位
7、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,r5
8、lcall 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,#00i
9、nc 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有按
10、键按下则跳转到子程序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
11、,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,7chcjn
12、e 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文件5、 系统硬件电路的设计系统的硬件主要包括单片机芯片,数码管显示,按键开关电路,它的硬件电路如下图所示,单片机采用广泛使用的at89c52,系统时钟采用12mhz的晶振,八个数码管显示,
13、小时与分钟与秒钟间用短横线,采用共阳极七段式数码管,p0口为段选码输出端,p2口为位选码输出端。硬件电路如图所示:6、 课程设计总结经过一周的时间以及对整本教材的知识总结,把课程设计分成了硬件和软件两大模块。 总的来说,硬件部分很好入手,电路也教简单,主要涉及的是简单的按键、电容、电阻、晶振和数码管。在软件部分,细分为了按键模块、显示模块、定时/计数模块,最后把几个模块整合在主程序模块中,使得程序简单明了。整个设计过程中遇到的最大问题是软件的编写,由于采用的是汇编语言,其间使用到的各种寄存器、存储器地址、变量很多,很难对程序的整体把握。通过电子钟的设计,对单片机的原理、结构、外围电路进一步的了
14、解。在整个设计过程中学到了团体精神和独立解决问题的重要性。为以后的求职之路打下了基础。7、 参考资料 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;选择定时器/计数器
15、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 71
16、h,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
17、,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是否
18、到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 7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出租车行业劳动合同与租赁合同解析通则
- 标准劳动合同简易模板
- 吊篮采购合同参考范本
- Module 1 Unit 1 Hello!(教学设计)-2024-2025学年外研版(一起)英语一年级上册
- 企业股权转让法律合同
- 度购物中心户外广告牌制作安装合同
- 技术转让与许可合同样本
- 计划生育政策变动导致的劳动合同终止范本
- 交通建设合同转让协议书
- 9 明天要远足(教学设计)2024-2025学年-统编版语文一年级上册
- 认识颈动脉斑块护理课件
- 木工安全教育培训试题(附答案)
- 非结构化数据分析与应用 课件 第1章 非结构数据分析概述
- 2024年新年新气象
- 某建设总工程CI形象策划方案
- -6-35kV中压交联电缆产品基础知识培训
- 8款-组织架构图(可编辑)
- 高三二轮复习备考指导意见
- 卷内目录范例模板
- 浅谈钢琴即兴伴奏在教学中应用现状及提高方法 论文
- 2024届高考语文复习:小说阅读之叙事顺序与叙事节奏
评论
0/150
提交评论