基于单片机课程设计时钟已实现.docx
《基于单片机课程设计时钟已实现.docx》由会员分享,可在线阅读,更多相关《基于单片机课程设计时钟已实现.docx(18页珍藏版)》请在冰豆网上搜索。
基于单片机课程设计时钟已实现
湖南第一师范学院
课程设计
课程
单片机原理与应用
题目
基于单片机的数字钟设计
学生姓名
xxxx
学号
xxxx
指导教师
xxxx
系(部)
信息科学与工程系
专业班级
应用电子技术一班
完成时间
2011年12月26日
目录
第1章绪论2
第2章设计内容3
第3章MCS-51单片机系统简介3
第4章课程设计原理5
第5章课程设计代码7
第6章仿真与编译13
第7章设计总结15
参考文献:
15
附录:
16
基于LED的数字时钟设计
摘要:
近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
关键字:
单片机时钟设计MC51
第1章绪论
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快、单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习、应用,以AT89C51芯片为核心,加以辅助电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显示时间。
数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及我们每个人的日常生活中都发挥着重要的作用。
本系统是基于AT89C51单片机设计的一个具有四位数码管显示的数字时实时钟,该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。
数字单片机的技术进步反映在内部结构、功率消耗、外部电压等级以及制造工艺上。
在这几方面,较为典型地说明了数字单片机的水平。
在目前,用户对单片机的需要越来越多,但是,要求也越来越高。
下面分别就这几个方面说明单片机的技术进步状况。
第2章设计内容
利用单片机的定时/计数器,中断系统,以及键盘和LED显示器进行设计。
在数码管显示器上实现电子时钟,显示格式为00-00-00,并且能进行设置时间和整点提示、提示功能使能控制。
第3章MCS-51单片机系统简介
MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。
以后我们将用89C51、89S51来完成一系列的实验。
MCS-51系列单片机
MCS-51系列单片机分为两大系列,即51子系列与52子系列。
51子系列:
基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951
52子系列:
增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952
这两大系列单片机的主要硬件特性如下表:
上表中可以看到,8031、8031、8032、80C32片内是没有ROM的,对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位的,52系列的计数器为三个16位计数器。
51系列的中断源为5个,52系列的中断源为6个。
MCS-51单片机内部定时器/计数器中断系统简介
5个中断源的符号、名称及产生的条件如下。
INT0:
外部中断0,由P3.2端口线引入,低电平或下跳沿引起。
INT1:
外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
T0:
定时器/计数器0中断,由T0计满回零引起。
T1:
定时器/计数器l中断,由T1计满回零引起。
TI/RI:
串行I/O中断,串行端口完成一帧字符发送/接收后引起。
MCS-51单片机中断系统的结构
第4章课程设计原理
单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。
此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。
显示器件选用LED七段数码管。
在显示电路输出的驱动下,显示出清晰、直观的数字符号。
针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。
使用动态数码显示的方法,运用独立式按键识别过程,按“时”,“分”,“秒”数据送出显示处理方法,另外时钟还设置专门的针对于整点报时的按键,以时钟个位变化为标志当前后两位的值不相等时将蜂鸣器置高电平时蜂鸣器响。
具体硬件整体框图如下:
4.1数值时钟整体框图
软件设计框图如下:
4.2软件简单流程图
第5章课程设计代码
;简要说明:
实现24小时制电子钟,6位数码管显示,显示时分秒
;显示格式:
00-00-00
;P0口输出段选信号,P2口输出位选信号,到整点进行提示提示时间为30s
;P1.0为调时按钮,P1.1为调分按钮;P1.3为秒复位晶振12M
ORG0000H;程序入口地址
LJMPSTART
ORG000BH;定时器0中断入口地址
LJMPTIMER_0
K1BITP3.7;定义调时按键
K2BITP3.6;定义调分按键
K3BITP3.5;秒清零
K4BITP3.4;停止蜂鸣器
FLAGBIT37H;蜂鸣器响标志位1为蜂鸣器没有叫,0代表蜂鸣器正在叫
MODEBIT38H;报时使能位1为能够报时0为否
FLAG1BIT38H
START:
MOVTMOD,#01H;定时器0,工作模式1
MOVTH0,#03CH
MOVTL0,#0B0H;赋初值,定时50ms
SETBEA;开中断总开关
SETBTR0;开启定时器0
SETBET0;定时器0中断允许位
MOVR6,#0;用于控制走时的基准时钟源,计中断次数
MOVR5,#0;R5用于控制扫描按键的时间间隔
MOV20H,#0;秒个位寄存器清零
MOV21H,#0;秒十位寄存器清零
MOV22H,#0;分个位寄存器清零
MOV23H,#0;分十位寄存器清零
MOV24H,#0;时个位寄存器清零
MOV25H,#0;时十位寄存器清零
CLRP0.0;将蜂鸣器置0停止
SETBFLAG;将蜂鸣器响清零
SETBMODE;默认置为能够报时
MOV30H,24H
MOV31H,30H
LJMPDISPLAY
TIMER_0:
CLREA
INCR6
ADD_TIME:
CJNER6,#20,NEXT;定时器中断20次,1秒到
MOVR6,#0
INC20H
MOVA,20H
CJNEA,#10,NEXT;如果秒个位等于10,清零
MOV20H,#00H
INC21H
MOVA,21H
CJNEA,#6,NEXT;如果秒十位等于6,清零
MOV21H,#00H
INC22H
NEXT:
MOVTH0,#03CH
MOVTL0,#0B0H;重新赋初值,定时50ms
SETBEA
RETI
DISPLAY:
LCALLTIME
INCR5
MOVDPTR,#TABLE
MOVA,20H
MOVCA,@A+DPTR
MOVP1,A
CLRP2.0
LCALLDELAY
SETBP2.0;显示秒个位
MOVA,21H
MOVCA,@A+DPTR
MOVP1,A
CLRP2.1
LCALLDELAY
SETBP2.1;显示秒十位
MOVDPTR,#TABLE
MOVA,22H
MOVCA,@A+DPTR
MOVP1,A
CLRP2.3
LCALLDELAY
SETBP2.3;显示分个位
MOVDPTR,#TABLE
MOVA,23H
MOVCA,@A+DPTR
MOVP1,A
CLRP2.4
LCALLDELAY
SETBP2.4;显示分十位
MOVP1,#0BFH
CLRP2.2
LCALLDELAY
SETBP2.2
MOVP1,#0BFH
CLRP2.5
LCALLDELAY
SETBP2.5
MOVDPTR,#TABLE
MOVA,24H
MOVCA,@A+DPTR
MOVP1,A
CLRP2.6
LCALLDELAY
SETBP2.6;显示时个位
MOVDPTR,#TABLE;该位使用TABLE1以消除前置0
MOVA,25H
MOVCA,@A+DPTR
MOVP1,A
CLRP2.7
LCALLDELAY
SETBP2.7;显示时十位
MOVA,31H
CJNEA,30H,CONTINUE
JNBFLAG,COMPARE;如果蜂鸣器正在响则比较
PTF:
CJNER5,#80,DISPLAY;当R5到4时,扫描按键
MOVR5,#0
LJMPKEY_SCAN
COMPARE:
MOVA,20H
SUBBA,33H
JZCONTINUE1
MOV33H,20H
CPLP0.0
CONTINUE1:
MOVA,21H
SUBBA,32H
CJNEA,#3,PTF
SETBFLAG
CLRP0.0
LJMPPTF
CONTINUE:
JNBMODE,NRS
MOV31H,30H
MOV33H,20H
SETBP0.0
SETBFLAG1
CLRFLAG;设置标志位为0
MOV32H,21H
NRS:
CJNER5,#80,EXIT0;当R5到4时,扫描按键
MOVR5,#0
KEY_SCAN:
JNBK1,ADD_HOUR
JNBK2,ADD_MIN
JNBK3,CLEAR
JNBK4,STOP
LJMPDISPLAY;无键按下,跳至走时
EXIT0:
LJMPDISPLAY
ADD_HOUR:
INC24H;小时加1
LJMPDISPLAY;更新
ADD_MIN:
INC22H;分钟加1
LJMPDISPLAY;更新
CLEAR:
;秒清零
MOV20H,#00H
MOV21H,#00H
LJMPDISPLAY
STOP:
JBFLAG,OFF
CLRP0.0;
SETBFLAG;
LJMPDISPLAY
OFF:
JNBMODE,OPEN
CLRMODE;清除报时控制位
MOVR0,#0EFH
LOOP1:
MOVR1,#03H
LOOP11:
MOVP1,#0C0H
CLRP2.5
LCALLDELAY
SETBP2.5
MOVP1,#8EH
CLRP2.4
LCALLDELAY
MOVP1,#8EH
SETBP2.4
CLRP2.3
LCALLDELAY
SETBP2.3
DJNZR1,LOOP11
DJNZR0,LOOP1
LJMPDISPLAY
OPEN:
SETBMODE
MOVR0,#0EFH
LOOP2:
MOVR1,#03H
LOOP21:
MOVP1,#0C0H
CLRP2.4
LCALLDELAY
SETBP2.4
MOVP1,#0C8H
CLRP2.3
LCALLDELAY
SETBP2.3
DJNZR1,LOOP21
DJNZR0,LOOP2
LJMPDISPLAY
DELAY:
MOVR7,#150;扫描延时
DJNZR7,$
RET
TIME:
MIN:
MOVA,22H
CJNEA,#10,HOUR;如果分个位等于10,清零
MOV22H,#00H
INC23H
MOVA,23H
CJNEA,#6,HOUR;如果分十位等于6,清零
MOV23H,#00H
INC24H
MOV30H,24H
HOUR:
MOVA,25H
CJNEA,#2,LOOP;如果时十位等于2,检查时个位
MOVA,24H
CJNEA,#4,EXIT;如果时个位等于4,清零
MOV24H,#00H;清零时个位
MOV25H,#00H;清零时十位
LJMPEXIT
LOOP:
MOVA,24H
CJNEA,#10,EXIT;如果时个位等于10,清零
MOV24H,#00H
INC25H
LJMPEXIT
EXIT:
RET
TABLE:
;数码管字形显示编码表
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;字形显示编码
END;程序结束
第6章仿真与编译
编译
正常时仿真:
当需要关闭整点提示时显示器显示如下:
打开时显示如下:
第7章设计总结
虽然毕业设计内容繁多,过程繁琐但我的收获却更加丰富。
通过这次对数字钟的设计,我摆脱了单纯的理论知识学习状态,和实际操作的结合锻炼了我。
综合运用了所学的专业基础知识,解决实际使用过程中存在的问题,同时也提高我查阅文献资料、设计规范以及电脑制图等其他专业能力水平。
通过整体的设计,局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,并且磨练了我的意志力,抗压能力及耐力也都得到了不同程度的提升。
通过对系统的分析与设计过程,我学到了许多新的知识,并且对我在这几年所学习机电和电子方面的专业知识进行巩固。
本次毕业设计能顺利如期的完成给了我很大的信心,让我了解专业知识的同时也对本专业的发展前景充满信心。
参考文献:
《单片机原理及应用技术》李全利、《数字电子技术基础》杨建良、《模拟电子技术》胡宴如第二版。
附录:
参考元器件清单:
单片机:
80C521片
三极管9014NPN型1个
74ls04非门:
2片
按键:
BUTTON4个
电阻:
RES若干
电容:
CAP30pF,10uF等若干
晶振:
CRYSTAL12MHZ1个
8连七段LED数码管:
1个
电源:
POWER+5V