单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
单片机课程设计
单片机课程设计报告
——电子钟设计
专业:
计算机应用技术
班级:
计算机工程系0801班
学号:
计08080139
姓名:
吴蜜
时间:
2010年4月
摘要
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计以单片机8031芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。
与传统机械表相比,它具有走时精确,显示直观等特点。
它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能等特点。
该电子钟可以做到的功能:
上电或按键复位后能自动进入时钟准备状态,等待按下电子钟启动/调整键。
当第一次按下启动/调整键时,电子钟从0时0分0秒开始运行,进入时钟运行状态。
再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。
通过设置的复位键和启动键来调整运行,并且利用了6位LED显示时分秒。
此电子钟严格按照要求设计,最终达到预期的效果,能够正确显示时分秒时,算是一次比较成功的设计了。
关键词:
电子钟,单片机,汇编
目录
1、前言
单片机的应用介绍
2、课程设计的目的和要求
1.1、课程设计的目的
1.2、课程设计的基本要求
3、总体设计
2.1、基本工作原理总图
2.2、硬件总体设计
2.2.1、系统组成方案
2.2.2、扩展单元编址
2.2.3、键盘、显示功能的定义
2.3、软件总体设计
2.3.1、存储单元的分配、标志位的定义
2.3.2、主程序框图及清单(带有注释)
4、硬件设计
介绍本系统所选用的各种芯片的功能、引脚、相应的命令控制字格式等。
5、软件设计
介绍本系统的主要子程序、中断服务程序的框图及程序清单(带有注释)
6、系统操作说明
介绍本系统的操作使用方法
7、结束语
简述课程设计的收获、体会
8、参考文献
9、系统原理图
A3图纸绘制
前言
当前,计算机的应用已经渗透到国民经济与人们生活的各个角落,正在日益改变着传统的人类工作方式和生活方式。
而单片机技术作为计算机技术中的一个独立分支,有着性价比高、集成度高、体积小、可靠性高、控制功能强大、低功耗、低电压、便于生产、便于携带等特点,所以得到越来越广泛的应用,特别是在工业控制和仪表仪器智能化中起着极其重要的作用。
本文利用单片机强大的控制功能和内部定时器重要部件,设计了一款自行电子钟。
数字电子钟的设计方法有多种,其中,利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,既可用该电子钟发出各种控制信号,又可利用其精确度高等特点。
1、课程设计的目的和要求
1.1课程设计的目的
课程设计作为单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,培养解决工业控制、工业检测等领域具体问题的初步能力;学生还可以通过所做课题,“解剖麻雀”,熟悉单片微机应用系统开发、研制的过程,软硬件设计的工作方法、工作内容、工作步骤,同时也是对学生进行基本技能训练,例如组成系统、编程、调试、查阅资料、绘图、编写说明书等;使学生理论联系实际,提高动手能力和分析问题、解决问题的能力,通过单片机的课程设计还可以进一步激发学生再深一步学习的热情。
因此课程设计是必不少的,是非常必要的。
1.2课程设计的基本要求
为保证顺利完成课程设计的任务,应注意如下要求:
(1)认真阅读设计任务书,保质保量地完成任务书的规定的工作。
(2)在总体方面确定过程中,要求多想,多查资料。
(3)程序设计时,先画框图再编程,无论是自上而下,还是自下而上,必须一步一步调试,做到可读性好,主要语句一定要写注释。
(4)硬件图用A3绘制,必须符合国家有关标准的规定。
(5)说明书要求文字通顺,简炼。
不少于3000字(不算源程序)。
(6)设计的系统必须进行实验演示。
2、总体设计
2.1基本工作原理总图
(附一个简单的硬件原理图,即画出各芯片相连就可以了,不需要具体画出是怎相连的)
2.2、硬件总体设计
2.2.1、系统组成方案
以单片机8031芯片和LED数码管为核心,在8031最小系统的基础上,通过8155扩展I/O口构成键盘、显示器,利用单片机内部的定时/计数器功能,辅以必要的电路,构成了一个单片机电子时钟。
2.2.2、扩展单元编址
ROM的
RAM的
2.2.3、键盘、显示功能的定义
电子钟计时周期为24小时,采用6位LED数码管显示时分秒,显满刻度为“23时59分59秒”;键盘设定0——9十个数字键用来设置具体的时间,另外还有2个功能键:
复位键——使电子钟从运行状态进入校时状态;启动键——使电子钟从校时状态进入自动运行状态。
2.3、软件总体设计
2.3.1、存储单元的分配、标志位的定义
2.3.2、主程序框图
主程序的大致流程图如下:
Y
N
3、硬件设计
(附上详细的硬件电路图,并附上一定的说明文字)
4、软件设计
(附上系统每个子程序的流程图,及各部分功能性说明)
定时中断程序:
键盘扫描子程序:
动态显示子程序:
相关程序代码如下:
HOUREQU40H;存放时信息的单元
MINUTEEQU41H;存放分信息的单元
SECONDEQU42H;存放秒信息的单元
NUMEQU43H;存放T0溢出次数的单元
ORG0000H;程序入口
AJMPMAIN
ORG0030H;主程序入口
MAIN:
MOVSP,#60H;指定堆栈栈底
MOVHOUR,#00H
MOVMINUTE,#00H
MOVSECOND,#00H;将时、分、秒分别清零
MOVNUM,#0
MOVTMOD,#01H;设T0工作于方式1,用于定时
MOVTH0,#4CH;设置T0的初始值
MOVTL0,#00H
MOVIE,#00H;关中断
SETBTR0;开启定时器T0
LOOP:
NOP
NOP
ACALLDISPLAY;调用显示子程序
NOP
NOP
LOOP1:
JBTF0,TIME;等待定时溢出
LJMPLOOP1
TIME:
CLRTR0;关闭定时器
PUSHDPL;保护现场
PUSHDPH
PUSHACC
MOVTH0,#4CH;重新设置T0的值
MOVTL0,#00H
SETBTR0;开启T0
MOVA,NUM
INCA;溢出次数+1
MOVNUM,A
CJNEA,#0AH,TT1;检测键盘
MOVP1,#0FH;设键盘初值
MOVR0,#04H;延时消抖
LCALLDELAY
JNBP1.0,T0C1;为0表示P1.0按下,转T0C1调整秒
JNBP1.1,T0C2;为0表示P1.1按下,转T0C2调整分
JNBP1.2,T0C3;为0表示P1.2按下,转T0C3调整时
TT1:
CJNEA,#140,RR4
MOVNUM,#00H
T0C1:
MOVA,SECOND
INCA;秒单元内容加1
DAA;调整为BCD码
MOVSECOND,A
CJNEA,#60H,RR4;不为60秒继续等待
setbflag:
clrflag
RR1:
MOVSECOND,#00H;为60秒将秒单元清零
T0C2:
MOVA,MINUTE
INCA;分单元内容加1
DAA;调整为BCD码
MOVMINUTE,A
CJNEA,#60H,RR4;不为60分继续等待
RR2:
MOVMINUTE,#00H;为60分,分单元清零
T0C3:
MOVP1,#0F0H;1小时闪一次
LCALLDELAY;延时
MOVP1,#0FH
MOVA,HOUR
INCA;时单元内容加1
DAA;调整为BCD码
MOVHOUR,A
CJNEA,#24H,RR4;不为24小时继续等待
RR3:
MOVHOUR,#00H;为24小时,时单元清零
RR4:
POPACC;恢复现场
POPDPH
POPDPL
LJMPLOOP
DELAY:
MOVR1,#10H;延时子程序
DELAY1:
MOVR2,#20H
DJNZR2,$
DJNZR1,DELAY1
DJNZR0,DELAY
RET
DISPLAY:
MOVDPTR,#TAB;送表头基地址
MOVA,HOUR
ANLA,#0FH;屏蔽时高位
MOVCA,@A+DPTR;查时高位
MOVP0,A
CLRP2.6;开显示
MOVR0,#1;延时消除鬼影
LCALLDELAY
SETBP2.6;关显示
MOVA,HOUR
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVP0,A
CLRP2.7
MOVR0,#1
LCALLDELAY
SETBP2.7
MOVA,MINUTE
ANLA,#0FH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.4
MOVR0,#1
LCALLDELAY
SETBP2.4
MOVA,MINUTE
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVP0,A
CLRP2.5
MOVR0,#1
LCALLDELAY
SETBP2.5
MOVA,SECOND
ANLA,#0FH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.2
MOVR0,#1
LCALLDELAY
SETBP2.2
MOVA,SECOND
ANLA,#0F0H
SWAPA
MOVCA,@A+DPTR
MOVP0,A
CLRP2.3
MOVR0,#1
LCALLDELAY
SETBP2.3
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
5、系统操作说明
上电或按键复位后能自动进入时钟准备状态,若此时发现电子钟走时不准,则可以通过按相应的数字键进行校时,校时完毕后,等待按下电子钟启动键,当按下启动键时,电子钟从0时0分0秒开始运行,进入时钟运行状态。
6、结束语
回顾此次单片机课程设计,我感慨颇多,的确,从资料的搜集到定稿,从理论到实践,在整整几个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计,首先我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力;另外,虽然煞费苦心,终于完成了这次课题,但是我知道本次设计还是依然存在着许多的不足的,它太过简单,实现的功能很少,所以我更加明白要想作出真正市场上需求的单片机产品,现在就要更加努力,深入学习单片机方面的知识,不断提高自己的动手能力。
第一次做这样的课程设计,在设计过程中遇到困难,可以说得是数不胜数,同时还发现了自己的很多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说单片机各种芯片的相互连接,对单片机汇编语言掌握得不好……通过这次课程设计之后,我想应该要把以前所学过的知识重新温故。
实验原理:
;70H~73H存放分、时,74H~77H存放闹钟分、时
;P1.2接LED灯,每秒闪一次
;P1.7接蜂鸣器
;P3.3接开关调时钟分的个挝?
;P3.4接开关调时钟时的个位
;P3.2调时开关
;P3.4闹钟时间存储开关
ORG4000H
LJMPMAIN
MAIN:
MOV70H,#09H ;分的个位
MOV71H,#05H ;分的十位
MOV72H,#03H ;时的个位
MOV73H,#02H ;时的十位
SETBP1.2
SETBP1.7
MOVR2,#00H
MOVR3,#32H
MOVR1,#10H
DINGSHI1S:
MOVTMOD,#01H ;时钟定时,1秒定时的计数初?
MOVTL0,#60H ;4MS定时
MOVTH0,#0F0H
SETBEA
SETBET0
SETBTR0
WAIT:
JNBTF0,WAIT
DJNZR1,CONTIN
CPLP1.2 ;控制秒灯的闪动
MOVR1,#10H
CONTIN:
DJNZR3,NEXT0
MOVR3,#32H
INCR2
CJNER2,#3CH,NEXT0
MOVA,#01H ;60秒到,分的个位加1
ADDA,70H
MOV70H,A
MOVR2,#00H ;R0清零
CJNEA,#0AH,NEXT0
MOVA,#01H ;10分到,分的十位加1
ADDA,71H
MOV71H,A
MOV70H,#00H ;分的个位清
CJNEA,#06H,NEXT0
MOV71H,#00H
MOVA,#01H ;时的个位加1
ADDA,72H
MOV72H,A
CJNEA,#0AH,PANDUAN
MOV72H,#00H
MOVA,#01H ;10小时到,时的十位
ADDA,73H
MOV73H,A
PANDUAN:
MOVA,73H
SWAPA
ORLA,72H
CJNEA,#24H,NEXT0
MOV72H,#00H
MOV73H,#00H
NEXT0:
JBP3.2,SET1
JBP3.5,ALARM
MOVR0,#70H
ACALLDISPLAY
MOVTL0,#60H ;4MS定时
MOVTH0,#0F0H
CLRTF0
SJMPDINGSHI1S
RET
ALARM:
MOVR0,#74H
ACALLDISPLAY
JNBP3.5,NEXT0
AJMPALARM
SET1:
JNBP3.3,SET2
MOVA,#01H ;分的个位加1
ADDA,70H
MOV70H,A
CJNEA,#0AH,SET2
MOVR0,#70H
MOVA,#01H ;分的十位加1
ADDA,71H
MOV71H,A
MOV70H,#00H
CJNEA,#06H,SET2
MOV71H,#00H
SET2:
JNBP3.4,SET4
MOVA,#01H ;时的个位加1
ADDA,72H
MOV72H,A
CJNEA,#0AH,PANDUAN0
MOV72H,#00H
MOVA,#01H ;10小时到,时的十位加1
ADDA,73H
MOV73H,A
PANDUAN0:
MOVA,73H
SWAPA
ORLA,72H
CJNEA,#24H,SET4
MOV72H,#00H
MOV73H,#00H
SET4:
JNBP3.5,SET5 ;闹钟定时的时间存储
MOV74H,70H ;分的个位
MOV75H,71H ;分的十位
MOV76H,72H ;时的个位
MOV77H,73H ;时的十位
SET5:
MOVR0,#70H
ACALLDISPLAY
ACALLDELX
JNBP3.2,NEXT0
AJMPSET1
;显示部分
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
作者:
lull0815 2006-7-1200:
59 回复此发言
--------------------------------------------------------------------------------
3电子钟
DISPLAY:
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV R6,#08H
LED1:
RLC A ;带进位的左环移
MOVP1.0,C ;输入1位数据,高位在前
CLRP1.1 ;产生上升沿
SETBP1.1 ;数据移入移位寄存器
DJNZR6, LED1 ;8位数据数否全部移入
CLR P1.3 ;送位码,点亮第一位数码管
ACALLDEL
SETBP1.3
INCR0
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVR6,#08H
LED2:
RLCA ;带进位的左环移
MOVP1.0,C ;输入1位数据,高位在前
CLRP1.1 ;产生上升沿
SETBP1.1 ;数据移入移位寄存器
DJNZR6,LED2 ;8位数据数否全部移入
CLR P1.4 ;送位码,点亮第二位数码管
ACALLDEL
SETBP1.4
INCR0
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVR6,#08H
LED3:
RLCA ;带进位的左环移
MOVP1.0,C ;输入1位数据,高位在前
CLRP1.1 ;产生上升沿
SETBP1.1 ;数据移入移位寄存器
DJNZR6,LED3 ;8位数据数否全部移入
CLR P1.5 ;送位码,点亮第二位数码管
ACALLDEL
SETBP1.5
INCR0
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVR6,#08H
LED4:
RLCA ;带进位的左环移
MOVP1.0,C ;输入1位数据,高位在前
CLRP1.1 ;产生上升沿
SETBP1.1 ;数据移入移位寄存器
DJNZR6,LED4 ;8位数据数否全部移入
CLR P1.6 ;送位码,点亮第四位数码管
ACALLDEL
SETBP1.6
MOVA,73H
CJNEA,77H,CL0 ;闹钟时间判断,判断时的个位
MOVA,72H
CJNEA,76H,CL0 ;判断时的十位
MOVA,71H
CJNEA,75H,CL0 ;判断分的十位
MOVA,70H
CJNEA,74H,CL0 ;判断分的个位
CPLP1.7
C