多功能秒表的设计.docx
- 文档编号:30159021
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:23
- 大小:795.16KB
多功能秒表的设计.docx
《多功能秒表的设计.docx》由会员分享,可在线阅读,更多相关《多功能秒表的设计.docx(23页珍藏版)》请在冰豆网上搜索。
多功能秒表的设计
单片机原理与应用技术
课程设计
题名:
多功能秒表的设计
系别:
计算机科学与技术
专业班级:
计科0402
姓名:
陈艳
学号:
2004111202
指导教师:
李经达
小组成员:
方杰、陈艳
摘要
MCS-51系列单片机具有体积小、功能全、价格低廉、面向控制、应用软件丰富、技术在不断更新、开发应用方便等优点,可以适应各个领域的不同需要,因而具有极强的竞争力,应用前景广阔。
对所学的专业知识能力更好的应用在实践方面。
本次课程设计主要利用这学期学习的单片机原理与应用技术的知识来设计并实现一个多功能秒表。
此设计主要通过单片机最小系统板(STC-89C52RC)上的六个数码管作为秒表计时时间的显示,从左至右依次显示分、秒、毫秒,三个按键D、E和F作为控制秒表的功能键。
主要实现过程如下:
刚开始是系统清零,六个数码管显示都显示0。
再用三个按键D、E和F来控制秒表功能的实现,启动D键开始计时,按下E键计时停止,F键复位。
主要功能即是键D、E和F控制秒表计时的启动、停止和清零。
为达到以上功能,多功能秒表分为以下几个模块:
键盘扫描功能模块,定时器中断模块和数码管显示模块。
这次课程设计是一次综合性比较强的实践过程,能从很多方面考察我们的能力,同时也是一次很好的锻炼机会。
第1章引言…………………………………………………………4
1.1设计的目的、意义、及应达到的技术要求……………4
1.1.1设计的目的……………………………………………………4
1.1.2设计的意义……………………………………………………4
1.1.3设计应达到的技术要求………………………………………4
1.2设计的基本思路………………………………………………4
1.3设计欲解决的主要问题………………………………………5
1.4解决此课题所需要的条件……………………………………5
1.4.1硬件条件…………………………………………………………5
1.4.2软件条件…………………………………………………………5
1.4.3知识要求…………………………………………………………5
1.5预备知识的介绍………………………………………………6
1.5.1MCS-51的指令系统……………………………………………7
1.5.2软件的使用………………………………………………………7
第2章设计部分………………………………………………………8
2.1硬件设计…………………………………………………………8
2.2软件设计…………………………………………………………11
第3章实现部分………………………………………………………15
3.1工程测试方法……………………………………………………15
3.2测试结果…………………………………………………………15
第4章多功能秒表的扩展功能…………………………………15
结论…………………………………………………………………………16
致谢…………………………………………………………………………17
参考文献………………………………………………………………………18
附录……………………………………………………………………………19
第1章引言
1.1设计的目的、意义、及应达到的技术要求
§1.1.1设计的目的
基于单片机的综合实验仪器,利用汇编语言来编写一个秒表计时器。
通过该课程设计进一步了解单片机硬件组成的目的以掌握它的整机工作原理,掌握单片机的中断系统,以便掌握对单片机随机事件的高效响应和处理手段。
通过秒表的计时进一步掌握定时∕计数器的4种工作方式以及在不同工作方式下的时间和计数器常数的设定方法,并掌握中断功能在定时计数器中的应用。
通过LED显示程序的调整,熟悉74LS164芯片与LED的接口技术,熟悉LED动态显示的控制过程。
通过键盘程序的调整,熟悉8155与矩阵式键盘的接口技术,熟悉键盘扫描原理。
通过阅读和调试秒表程序的整体过程,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。
§1.1.2设计的意义
把理论学习和实验教学阶段所掌握的知识通过一个设计实例,经历一次理论和实践结合、软件和硬件结合的综合训练,也是一次工程实践能力的检验。
§1.1.3设计应达到的技术要求
编写程序,在单片机上实现秒表的功能:
按键D按下后启动秒表、E停止计时并显示当前时间、F清零,这些现象都通过数码管正确显示。
其它键不影响数码管显示,无反应。
1.2设计的基本思路
软件整体设计思路是以键盘扫描、中断处理和数码管显示作为三大模块。
主程序调用键盘扫描子程序后检测键值,不断循环。
采用定时器T0中断方式1进行定时,中断及计数的开启与关闭受控于按键处理。
编程时置D键为“启动”,置E键为“停止”,置F键为“清零”,在处理按键值时采用散转指令“JMP”,转至相应的按键处理程序,如不是上述3个按键值则跳回按键查询状态。
6位LED显示的数据由显示缓冲区48H~4DH单元中的数据决定,顺序是从右至左。
1秒定时采用定时器T0方式1中断,每10ms中断一次,每100次为一个循环,计满100次,60秒计数单元计数1次。
计数脉冲采用软件置位、复位P3.0口的方法实现。
用32H单元做60秒计数单元,如定时器溢出,则32H单元被清零,32H单元的数据采用十进制计数,该数据被拆成个位和十位两个数据后分别送至显示缓冲区的4AH、4BH单元。
1.3设计欲解决的主要问题
✧通过汇编语言与单片机系统相结合设计控制秒表计时。
✧通过按键来控制秒表的功能。
✧如何实现键盘扫描程序的功能。
✧定时器中断的处理。
✧通过数码管来正确显示计时时间。
1.4解决此课题所需要的条件
§1.4.1硬件条件:
由系统运行环境可知需要条件为:
单片机最小系统板STC-89C52RC(图1.1)、串行口下载线、PC机。
§1.4.2软件条件:
Windows98、STC_ISP_V3.5下载环境(图1.2)、WAVE3.2集成调试软件模拟器。
§1.4.3知识要求:
熟悉单片机的综合实验仪系统与PC机联机操作,联机软件的使用和动态调试;熟练运用汇编语言设计、编写并在WAVE3.2集成调试软件模拟器调试和运行程序并将其自动生成的.hex文件通过STC_ISP_V3.5下载环境下载到单片机最小系统板STC-89C52RC中。
图1.1
图1.2
1.5预备知识的介绍。
§1.5.1MCS-51的指令系统
寻址方式的多少,直接反应了机器指令系统功能的强弱,寻址方式越多,其功能越强,灵活性越大。
MCS-51单片机共有7种寻址方式:
✧立即寻址;
✧直接寻址;
✧寄存器寻址;
✧寄存器间接寻址;
✧基址寄存器加变址寄存器的间接寻址;
✧相对寻址;
✧位寻址。
MCS-51单片机指令系统按操作功能分为5类:
✧数据传送类
✧算术运算类
✧逻辑运算类
✧控制转移类
✧布尔处理类
§1.5.2软件的使用
1.WAVE3.2集成调试软件模拟器的使用:
✧打开WAVE3.2,新建文件.ASM
✧保存、编译,自动生成.HEX文件
✧软件中包含仿真器、单步执行、跟踪等有利于程序的改写
2.STC_ISP_V3.5的使用:
✧选择单片机型号
✧打开文件
✧选择串行口、最高波特率
✧设置本框和窗口右下方的“选项”中的各项
✧下载,先点下载按钮,再给MCU上电
第2章设计部分
2.1硬件设计
定时/计数器的方式控制寄存器TMOD是一种可编程的特殊功能寄存器,字节地址为89H,不可位寻址。
其中低4位控制T0,高四位控制T1,其格式如图2.1。
图2.1
方式寄存器TMOD中M1M0=01时,计数器按16位工作,即TL、TH全部使用,构成16位计数器。
逻辑结构如图2.2。
图2.2
设计数器最大计数值为M,选择不同的工作方式,最大计数值不同。
方式1:
M=
=65536
在初始化过程中,置定时初值为X=10ms
则X=65536-(10000×
/
)=55536=D8F0H
74LS164与键值的连接电路图2.3、数码管显示电路图2.4以及实验中所使用的单片机最小系统板STC-89C52RC电路图图2.5如下:
图2.3
图2.4
图2.5
2.2软件设计
✧主程序设计流程图:
✧键盘扫描子程序流程图:
✧显示子程序流程图:
定时器中断子程序流程图:
第3章实现部分
3.1工程测试方法
在WAVE3.2集成调试软件模拟器调试和运行程序并将其自动生成的.hex文件通过STC_ISP_V3.5下载环境下载到单片机最小系统板STC-89C52RC中。
✧打开WAVE3.2,新建文件.ASM
✧保存、编译,自动生成.HEX文件
✧打开STC_ISP_V3.5
✧选择单片机型号
✧打开文件
✧选择串行口、最高波特率
✧设置本框和窗口右下方的“选项”中的各项
✧下载,先点下载按钮,再给MCU上电
3.2测试结果
D键:
计时开始;
E键:
计时停止;
F键:
清零;
0~C键:
无意义;
数码管显示计时值。
第4章多功能秒表的扩展功能
此设计只用到4×4键盘16个按键中的3个,因此,其功能还有较大的扩展空间。
将上述程序加以改动,如增加LED显示位数或将显示改为LCD显示模块,可实现年、月、周、日、时、分、秒显示。
该项目只实现基本的电子表功能—单次电子秒表功能,还可以增加多次电子秒表功能、倒计时电子秒表功能等。
结论
该设计在单片机系统上采用数码管显示,直观简洁;采用定时器中断,计时准确。
可随时启动、停止、清零。
设计、调试大型程序时,需先根据要求划分模块,优化结构;再根据各模块特点确定何为主程序,何为子程序,何为中断服务程序,相互间如何调用;再根据各模块性质和功能将各模块细化,设计出程序流程图;最后才根据各模块流程图编制具体程序。
调试时应先调主程序,实现最基本最主要的功能,在此基础上再将各模块功能往主程序上堆砌,直至各模块联调、统调,实现全部功能。
本例子将整个程序划分为键盘扫描程序子程序,显示子程序,定时器中断服务子程序三大模块。
三大模块运行协调一致,既保持了动态显示的稳定性,又保持了键盘的可靠性,还保持了秒计时的准确性,较好地实现了全部功能。
通过三周的设计学习,让我了解了设计电路的程序,以及电子秒表的原理与设计。
同时在软件设计编程上,让我了解到很多编程方面的技巧,并且使我对单片机的各个引脚的功能有更深入的了解,巩固了单片机的书面知识,发现了以往在学习中忽视的东西,明白了在实际的设计工作中只有书面知识是不足的,只有在自己的实践中才能发现问题并解决问题,从而不再犯眼高手低的错误。
在此次的设计过程中,更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。
在设计电路中,是先仿真后连接实物图,但有时候仿真和电路连接并不是完全一致的。
在使用WAVE3.2软件时运用其中一些自带的仿真软件包能很好的找出程序中的错误,例如当你单步调试时,打开CPU窗口,你能观察到各个寄存器,累加器等对应值。
总的来说,通过这次的设计实验更进一步地增强了实验的动手能力,提高组成系统、编程、调试的动手能力。
而且在此次设计中,我了解到了团队合作的重要性,对以后步入社会积累了很好的经验。
致谢
为期三周的单片机原理与应用技术课程设计,使我对单片机的认识又提高了一个层次,让我了解到很多编程方面的技巧,并且使我对单片机的各个引脚的功能有更深入的了解,巩固了单片机的书面知识。
在这特别的时间里,有那么多给我帮助的老师和同学,在这里,我对他们表示深深的感谢!
感谢我的导师李经达老师,从立定题纲到实验的完成,王老师倾注了大量的心血。
在我遇到困难的时候,李老师总是能够及时给于帮助,还为我提供相关资料,更提出一些新的观点拓宽了我的思路。
李老师严谨治学的态度,渊博的知识和对学生认真负责的精神为我以后的学习和工作树立了榜样!
感谢您,尊敬的王老师!
同时非常感谢给我大力支持的同学们,王敏、郏少英等,在这里,我对你们表示我最真诚的谢意!
参考文献
[1].万福君、潘松峰等.单片微机原理系统设计与应用.合肥:
中国科技大学出版社,2005年
[2].杨光友等.单片微型计算机原理与接口技术.北京:
水利水电出版社,2002年
[3].胡耀辉等.单片机系统开发实例经典.北京:
冶金工业出版社,2006年
[4].刘守义、杨宏丽等.单片机应用计术.西安:
西安电子科技大学出版社,2003年
[5].姜武中、姜春霞等.片机原理与接口技术.大连:
大连理工大学出版社,2002年
[6].张毅刚,彭喜元,孟升卫等.MCS-51单片机使用子程序设计.哈尔滨:
哈尔滨工业大学出版社,2003年
[7].李朝青.单片机原理及其接口技术.北京:
北京航空大学出版社,1998年
[8].肖玲妮,袁增贵.Protel99SE印刷电路板设计教程.北京:
清华大学出版社,2003年
[9].莫力.Protel电路设计.北京:
国防工业出版社,2005年
附录
源程序清单:
ORG0000H;主程序起始地址
LJMPSTART;跳至主程序
ORG000BH
LJMPCICT
START:
MOVSP,#55H;设置堆栈在55H
MOVP1,#0FFH
MOV33H,#00;“毫秒”计数单元初值为0
MOV32H,#00;“秒”寄存器值为0
MOV31H,#00;“分”寄存器值为0
LCALLDISP
MOVTMOD,#01H;置T0方式1定时
MOVTL0,#0F0H;计时中断为10ms
MOVTH0,#0D8H
TK:
LCALLKEY
MOVA,R7
CLRC
SUBBA,#13;键D前的键值都无意义
JCTK
MOVB,#3
MULAB
MOVDPTR,#DEF
JMP@A+DPTR
DEF:
LJMPFN1;"开始",按D键进入
LJMPFN2;"停止",按E键进入
LJMPFN3;"复位",按F键进入
FN1:
MOVIE,#82H;开中断
SETBTR0;启动T0
LJMPTK
FN2:
CLREA;关中断
CLRET0
LJMPSTART;也可以跳到TK
FN3:
CLREA
CLRET0
MOV33H,#00;“毫秒”计数单元初值为0
MOV32H,#00;“秒”寄存器值为0
MOV31H,#00;“分”寄存器值为0
LCALLWORD
LCALLDISP
LJMPSTART
;=============中断服务子程序===============
CICT:
PUSHPSW
PUSHACC
MOVTL0,#0F0H;计时中断为10ms
MOVTH0,#0D8H
SETBTR0
INC33H
MOVR3,33H
CJNER3,#100,LOP1
MOV33H,#00
INC32H;秒加1
MOVR3,32H
CJNER3,#60,LOP1;1分未到转LOP1
MOV32H,#00;秒记数单元清零
INC31H;分记数单元加1
LOP1:
LCALLDISP
LCALLWORD
POPACC
POPPSW
RETI
;=====键盘扫描子程序影响ACC,R6,R7=====
;一旦进入,必须有键按下才能返回
;返回的键值在ACC中或R7中
KEY:
PUSHACC
SETBP1.4;选通开关
CLRP1.5
SETBP1.6;初始化为1
SETBP1.7
MOVSBUF,#00H;开始发送
JNBTI,$;等待一帧发送完毕
KEY0:
JNBP1.6,KEY1;如果直接位不为1,表示有键按下
JNBP1.7,KEY1
SJMPKEY0;否则不断测试有无键按下
KEY1:
MOVSBUF,#7FH;向缓冲区中存入需测试的键值
JNBTI,$
CLRTI
SETBP3.0;数据位常置1
MOVR7,#00H
LCALLDLY
KEY2:
JNBP1.6,KEY3
NOP
NOP
JNBP1.7,KEY4
NOP
NOP
NOP
CLRP3.1
NOP
NOP
SETBP3.1
NOP
NOP
INCR7
CJNER7,#08H,KEY2
SJMPKEY1
KEY3:
MOVA,#00H
SJMPKEY5
KEY4:
MOVA,#08H
KEY5:
ADDA,R7
MOVR7,A
KEY6:
JNBP1.6,KEY6
JNBP1.7,KEY6
MOVSBUF,#0FFH
JNBTI,$
CLRTI
LCALLDLY
POPACC
RET
;===========================
WORD:
MOVA,31H
MOVB,#0AH
DIVAB
MOV4DH,A;拆字填入显示缓冲区
MOV4CH,B
MOVA,32H
MOVB,#0AH
DIVAB
MOV4BH,A;拆字填入显示缓冲区
MOV4AH,B
MOVA,33H
MOVB,#0AH
DIVAB
MOV49H,A;拆字填入显示缓冲区
MOV48H,B
RET
;延迟子程序,影响R6
DLY:
MOVR6,#00H
DJNZR6,$
RET
;=========显示子程序===========
DISP:
PUSHACC;A入栈保护
CLRP1.4;选通开关00接数码管
CLRP1.5
MOV4FH,#6;LED待显示位数送4FH
MOVR0,#48H
MOVDPTR,#TAB;取缓冲区首地址
DISP1:
MOVA,@R0
MOVCA,@A+DPTR
MOVSCON,#0;串行口控制方式0
MOVSBUF,A
JNBTI,$
INCR0
CLRTI
DJNZ4FH,DISP1
POPACC
SETBP1.4
NOP
NOP
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H;0~7的段码
DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH;8~F的段码
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能 秒表 设计