学位论文基于单片机的9h定时器设计课程设计Word文件下载.docx
《学位论文基于单片机的9h定时器设计课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《学位论文基于单片机的9h定时器设计课程设计Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
![学位论文基于单片机的9h定时器设计课程设计Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-2/1/3c411ef8-cffa-43f7-8a32-61078f00c62c/3c411ef8-cffa-43f7-8a32-61078f00c62c1.gif)
数字单片机的技术进步反映在内部结构、功率消耗、外部电压等级以及制造工艺上。
在这几方面,较为典型地说明了数字单片机的水平。
在目前,用户对单片机的需要越来越多,但是,要求也越来越高。
下面分别就这几个方面说明单片机的技术进步状况。
第2章设计内容
利用单片机的定时/计数器,中断系统,以及键盘和LED显示器进行设计。
在数码管显示器上实现电子时钟,显示格式为00-00-00,实现从0-9h的长时间定时,并且能进行设置时间和整点提示、提示功能使能控制。
第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:
重新赋初值,定时50ms
SETBEA
RETI
DISPLAY:
LCALLTIME
INCR5
MOVDPTR,#TABLE
MOVA,20H
MOVCA,@A+DPTR
MOVP1,A
CLRP2.0
LCALLDELAY
SETBP2.0;
显示秒个位
MOVA,21H
CLRP2.1
SETBP2.1;
显示秒十位
MOVA,22H
CLRP2.3
SETBP2.3;
显示分个位
MOVA,23H
CLRP2.4
SETBP2.4;
显示分十位
MOVP1,#0BFH
CLRP2.2
SETBP2.2
CLRP2.5
SETBP2.5
MOVA,24H
CLRP2.6
SETBP2.6;
显示时个位
MOVDPTR,#TABLE;
该位使用TABLE1以消除前置0
MOVA,25H
CLRP2.7
SETBP2.7;
显示时十位
MOVA,31H
CJNEA,30H,CONTINUE
JNBFLAG,COMPARE;
如果蜂鸣器正在响则比较
PTF:
CJNER5,#80,DISPLAY;
当R5到4时,扫描按键
MOVR5,#0
LJMPKEY_SCAN
COMPARE:
SUBBA,33H
JZCONTINUE1
MOV33H,20H
CPLP0.0
CONTINUE1:
SUBBA,32H
CJNEA,#3,PTF
SETBFLAG
CLRP0.0
LJMPPTF
CONTINUE:
JNBMODE,NRS
SETBP0.0
SETBFLAG1
CLRFLAG;
设置标志位为0
MOV32H,21H
NRS:
CJNER5,#80,EXIT0;
KEY_SCAN:
JNBK1,ADD_HOUR
JNBK2,ADD_MIN
JNBK3,CLEAR
JNBK4,STOP
LJMPDISPLAY;
无键按下,跳至走时
EXIT0:
ADD_HOUR:
INC24H;
小时加1
更新
ADD_MIN:
INC22H;
分钟加1
CLEAR:
;
MOV20H,#00H
MOV21H,#00H
STOP:
JBFLAG,OFF
CLRP0.0;
SETBFLAG;
OFF:
JNBMODE,OPEN
CLRMODE;
清除报时控制位
MOVR0,#0EFH
LOOP1:
MOVR1,#03H
LOOP11:
MOVP1,#0C0H
SETBP2.5
MOVP1,#8EH
SETBP2.4
SETBP2.3
DJNZR1,LOOP11
DJNZR0,LOOP1
OPEN:
SETBMODE
LOOP2:
LOOP21:
MOVP1,#0C8H
DJNZR1,LOOP21
DJNZR0,LOOP2
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:
CJNEA,#0,LOOP;
如果时十位等于0,检查时个位
CJNEA,#9,EXIT;
如果时个位等于9,清零
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章设计总结
虽然课程设计内容繁多,过程繁琐但我的收获却更加丰富。
通过这次对长定时器的设计,我摆脱了单纯的理论知识学习状态,和实际操作的结合锻炼了我。
综合运用了所学的专业基础知识,解决实际使用过程中存在的问题,同时也提高我查阅文献资料、设计规范以及电脑制图等其他专业能力水平。
通过整体的设计,局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,并且磨练了我的意志力,抗压能力及耐力也都得到了不同程度的提升。
通过对系统的分析与设计过程,我学到了许多新的知识,并且对我在这几年所学习模电和数电方面的知识进行巩固。
本次课程设计能顺利如期的完成给了我很大的信心,让我了解专业知识的同时也对本专业的发展前景充满信心。
张毅刚,彭喜元,彭宇.单片机原理及应用.2版.北京:
高等教育出版社
阎石.数字电子技术基础.5版.北京:
童诗白,华成英.模拟电子技术基础.4版.北京:
参考元器件清单:
单片机:
AT89C511片
74LS04非门:
8片
按键:
BUTTON4个
电阻:
RES1K若干
电容:
CAP30pF,10uF等若干
8连七段LED数码管:
共阳1个
电源:
POWER+5V2个
地:
GROUND1个
蜂鸣器:
SOUNDER1个