单片机课程设计电子时钟AT89S52
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XX大学
XXX学院
单片机课程设计———电子时钟报
告
姓名:XXX
学号:XXXXX
班级:XXXXXX
1、课程设计的目的
该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及外围的按键和LED显示器等部件,设计一个单片机电子时钟。
设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。
2、课程设计具体要求
用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY(自己计算)。
形成定时时间为50ms。
用片内RAM的7BH单元对50ms 计数,计20次1秒钟到,然后对秒计数器78H单元加1,秒计数器加到60后向分进位,则分计数器79H单元加1而秒计数器78H单元清零;分计数器加到60后又向时进位,则时计数器7AH单元加1而分计数器79H单元清零;时计数器加到24则时计数器清零。
然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。
显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。
在处理过程中加上了按键判断程序,能对按键处理。
3、mcs-51单片机系统简介
MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片机,它包含51和52 两个子系列。
对于51子系列,主要有8031、8051、8751 三种机型,它们的指令系统与芯片引脚完全兼容,仅片内程序存储器有所不同,8031芯片不带ROM,8051芯片带4KB的ROM,8751芯片带4KB的EPROM。
51子系列单片机的主要特点如下。
对于52子系列,有8032、8052、8752 三种机型。
52子系列与51子系列相比大部分相同,不同之处在于:片内数据存储器增至256B;8032芯片不带ROM,8052芯片带8KB的ROM,8752芯片带8KB的EPROM;有3个16位定时器/计数器;6个中断源。
4、mcs-51单片机内部定时/计数器中断系统简介
1.MCS-51系列中51子系列有两个16位的可编程定时/计数器:定时/计数器T0和定时/计数器T1,52子系列有三个,还有一个定时/计数器T2。
2.每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。
3.每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有三种工作方式。
通过编程可设定工作于某种方式。
4.每一个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。
5、按键和LED数码管显示器简介
LED数码管:
本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位和时十位。
数码管显示的信息用8个内存单元存放,这8个内存单元称为显示缓冲区,其中秒个位和秒十位、分个位和分十位、时个位和时十位分别由秒数据、分数据和
小时数据分拆得到。
在本系统中数码管显示采用软件译码动态显示。
在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段码表中查出所显示的信息的字段码,从P0口输出,同时在P2口将对应的位选码输出选中显示的数码管,就能在相应的数码管上显示显示缓冲区的内容。
按键:
按键处理设置为:如没有按键,则时钟正常走时。
当按下K0按键时,进入调分状态,时钟停止走动;按K1可K2按键可进行加1或减1操作;继续按K0键可分别进行分和小时的调整;最后按K0键将退出调整状态,时钟开始计时运行。
6、基本原理
软时钟是利用单片机内部的定时器/计数器来实现,它的处理过程如下:首先设定单片机内部的一个定时器/计数器工作于定时方式,对机器周期计数形成基准时间(如10ms),然后用另一个定时器/计数器或软件计数的方法对基准时间计数形成秒(对10ms计数100次),秒计60次形成分,分计60次形成小时,小时计24次则计满一天。
然后通过数码管把它们的内容在相应位置显示出来即可。
7、硬件电路
8、软件程序流程及代码
流程:
代码(程序):
采用8位LED软件译码动态显示程序
使用AT89C51单片机,12MHZ晶振,P0输出字段码,P2口输出位选码,用共阳LED数码管,P1.0为调时位选择按键,P1.1为加1键,P1.2为减1键。
片内RAM的70H到77H单元为LED数码管的显示缓冲区
78H,79H,7AH分别为秒、分、小时计数单元
7BH为50ms计数器,7CH为调时按键计数器
ORG 0000H
LJMP START
ORG 000BH ;定时器/计数器T0中断程序入口
LJMP INTT0
;主程序
START:MOV R0,#70H
MOV R7,#0CH
INIT: MOV @R0,#00H ;存储单元清零
INC R0
DJNZ R7,INIT
MOV 72H,#10 ;时、分、秒之间的短横显示
MOV 75H,#10
MOV TMOD,#01H
MOV TL0,#0B0H ;50ms定时初值
MOV TH0,#03CH
SETB EA
SETB ET0
SETB TR0
START1: LCALL SCAN
LCALL KEYSCAN
SJMP START1
;延时1MS子程序
DL1MS: MOV R6,#14H
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
;延时20MS子程序
DL20MS: ACALL SCAN
ACALL SCAN
ACALL SCAN
RET
;数码管显示程序
SCAN: MOV A,78H ;秒计数值由二进制转十进制后
MOV B,#0AH ; 送入显示缓冲区相应位置
DIV AB
MOV 71H,A
MOV 70H,B
MOV A,79H ;分计数值由二进制转十进制后
MOV B,#0AH ; 送入显示缓冲区相应位置
DIV AB
MOV 74H,A
MOV 73H,B
MOV A,7AH ;时计数值由二进制转十进制后
MOV B,#0AH ; 送入显示缓冲区相应位置
DIV AB
MOV 77H,A
MOV 76H,B
MOV R1,#70H ;循环扫描显示
MOV R5,#80H ;显示秒个位的位码(LED共阳)
MOV R3,#08H
SCAN1: MOV A,R5
MOV P2,A ;位码从P2口送出
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A ;字段码从P0口送出
MOV A,R5
LCALL DL1MS ;延时1ms
INC R1
MOV A,R5
RR A
MOV R5,A
DJNZ R3,SCAN1
MOV P2,#00H
MOV P0,#0FFH
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH ;“0~9”,“-”的共阳极字段码
;定时器/计数器T0中断服务程序
INTT0: PUSH ACC
PUSH PSW
CLR ET0
CLR TR0
MOV TL0,#0B0H
MOV TH0,#03CH
SETB TR0
INC 7BH
MOV A,7BH
CJNE A,#14H,OUTT0
MOV 7BH,#00
INC 78H
MOV A,78H
CJNE A,#3CH,OUTT0
MOV 78H,#00
INC 79H
MOV A,79H
CJNE A,#3CH,OUTT0
MOV 79H,#00
INC 7AH
MOV A,7AH
CJNE A,#18H,OUTT0
MOV 7AH,#00
OUTT0:
SETB ET0
pop psw
pop acc
RETI
;按键处理程序
KEYSCAN: CLR EA
JNB P1.0,KEYSCAN0
JNB P1.1,KEYSCAN1
JNB P1.2,KEYSCAN2
KEYOUT: SETB EA
RET
KEYSCAN0: LCALL DL20MS
JB P1.0,KEYOUT
WAIT0: JNB P1.0,W AIT0
INC 7CH
MOV A,7CH
CLR TR0
CLR ET0
CJNE A,#03H,KEYOUT
MOV 7CH,#00
SETB TR0 ;K0按3次后又恢复走时
SETB ET0
SJMP KEYOUT
KEYSCAN1: LCALL DL20MS
JB P1.1,KEYOUT
WAIT1: JNB P1.1,W AIT1
MOV A,7CH
CJNE A,#02H,KSCAN11
INC 79H ;分计数器加1
MOV A,79H
CJNE A,#3CH,KEYOUT
MOV 79H,#00
SJMP KEYOUT
KSCAN11: INC 7AH ;时计数器加1
MOV A,7AH
CJNE A,#18H,KEYOUT
MOV 7AH,#00
SJMP KEYOUT
KEYSCAN2: LCALL DL20MS
JB P1.2,KEYOUT
WAIT2: JNB P1.2,W AIT2
MOV A,7CH
CJNE A,#02H,KSCAN21
DEC 79H
MOV A,79H
CJNE A,#0FFH,KEYOUT
MOV 79H,#3BH ;把59给分计数器
SJMP KEYOUT
KSCAN21: DEC 7AH
MOV A,7AH
CJNE A,#0FFH,KEYOUT
MOV 7AH,#17H ;把23给时计数器
SJMP KEYOUT
END
9、元件清单
单片机:80C52
按键:BUTTON
电阻:RES
电容:CAP
晶振:CRYSTAL
LED数码管:7SEG-MPX8-CA-BLUE(CA:共阳)
地:GROUND
电源:POWER
10、设计制作过程
一
1选中KEIL U VISION2IDE ,通过PROJECT→NEW PROJECT 创建项目文件2给项目添加程序文件
3编译、连接项目,形成目标文件
4多文件的处理
5仿真环境的设置
6运行调试观察结果
二
选中PROTEUS软件,完成以下步骤
1选择元器件
2放置元器件
3连线
4添加程序
5运行结果
10、总结
学习单片机技术这门实训课程,我能综合运用电子技术课程中的所学到的理论知识来完成数子电子钟的设计和分析电路,学会了在虚拟的环境下创建电路、计算与调整参数,用虚拟电子设备来测电路的仿真的结果,我能灵活的应用软件PROTEUS中的各个单元电路。
通过本次课程设计我还有以下几点收获:
1、有利于基础知识的理解
通过《初中信息技术》必修部分的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问题的基本态度与基本能力。
但是,学生对于程序、病毒的内涵,程序与文档、数据的区别,计算机运行的机理等知识内容的理解比较肤浅。
学生如果接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。
2、有利于逻辑思维的锻炼
在许多常规学科的日常教学中,我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。
写起作文来前言不搭后语,解起数学题来步骤混乱,这些都是缺乏思维训练的结果。
程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。
即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。
3、有利于与其他学科的整合
在程序设计中,我们可以解决其它学科有关问题,也利用其它课程的有关知识来解决信息技术中比较抽象很难理解的知识。
在信息技术课中整合其它学科的知识,发挥信息技术的优势。
例如,在编写“一元二次方程求解”程序时,就复习了数学的相关知识。
而在讲解逻辑运算的知识时,我们又可以利用物理中的电路知识进行讲解,起到意想不到的效果。
4、有利于治学态度的培养。
程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。
因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。
这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼
11、参考资料
1、单片机原理与应用及C51程序设计杨加国谢维成主编清华大学出版社出版
2、
11。