单片机电子秒表程序设计.docx
- 文档编号:24711312
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:30
- 大小:57.66KB
单片机电子秒表程序设计.docx
《单片机电子秒表程序设计.docx》由会员分享,可在线阅读,更多相关《单片机电子秒表程序设计.docx(30页珍藏版)》请在冰豆网上搜索。
单片机电子秒表程序设计
沈阳工程学院
课程设计
设计题目:
电子秒表程序设计
系别自动控制工程系班级测控本091
学生姓名吕平学号2009308129
指导教师吕勇军职称教授
起止日期:
2011年12月31日起—20112年01月13止日
沈阳工程学院
课程设计任务书
课程设计题目:
电子秒表程序设计
系别自控系班级测控本091
学生姓名吕平学号2009308129
指导教师吕勇军职称教授
课程设计进行地点:
F430
任务下达时间:
12年1月2日
起止日期:
12年1月2日起——至12年1月13日止
教研室主任年月日批准
电子秒表程序设计
1.设计主要内容及要求:
要求:
1)具有秒表基本功能。
2)显示最小数为0.1秒。
3)能够进行多路计数并分别显示。
2.对设计论文撰写内容、格式、字数的要求:
(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。
(2).学生应撰写的内容为:
中文摘要和关键词、目录、正文、参考文献等。
课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
(3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。
(4).课程设计论文装订顺序为:
封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。
3.时间进度安排;
顺序
阶段日期
计划完成内容
备注
1
1月2日
教师讲解题目,学生查阅相关资料
2
1月3日
查阅相关资料、进行方案论证
3
1月4日
确定多路计数和显示方法
4
1月5、6、9日
编写程序
5
1月10、11日
调试程序
6
1月12日
撰写论文
7
1月13日
论文答辩
沈阳工程学院
单片机课程设计成绩评定表
系(部):
自控系班级:
测控本091班学生姓名:
吕平
指导教师评审意见
评价
内容
具体要求
权重
评分
加权分
调研
论证
能独立查阅文献,收集资料;能制定课程设计方案和日程安排。
0.1
5
4
3
2
工作能力
态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
0.2
5
4
3
2
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
0.2
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.5
5
4
3
2
指导教师评审成绩
(加权分合计乘以12)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
评价
内容
具体要求
权重
评分
加权分
查阅
文献
查阅文献有一定广泛性;有综合归纳资料的能力
0.2
5
4
3
2
工作量
工作量饱满,难度适中。
0.5
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.3
5
4
3
2
评阅教师评审成绩
(加权分合计乘以8)
分
加权分合计
评阅教师签名:
年月日
课程设计总评成绩
分
摘要
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
本次课程设计的核心是C8051F020单片机。
自20世纪70年代末诞生至今,经历了单片微型计算机SCM、微控制器MCU及片上系统SoC三大阶段,前两个阶段分别以MCS-51和80C51为代表。
随着在嵌入式领域中对单片机的性能和功能要求越来越高,以往的单片机无论是运行速度还是系统集成度等多方面都不能满足新的设计需要,这时SiliconLabs公司推出了C8051F系列单片机,成为SoC的典型代表。
传统的秒表可以分为机械停表和电子秒表。
其中,电子秒表在我们日常生活中随处可见,它不仅应用在体育计时中,而且还与工业计时有着重要的联系。
这次电子秒表设计通过对一个基于C8051F020单片机的功能实现电子秒表工作的设计学习,详细介绍了单片机应用中的数据转换显示,液晶显示原理,单片机的定时中断原理。
从而达到学习、了解单片机相关指令在各方面的应用。
设计初衷是为了能够后实现电子秒表的基本功能,分组计时,多组(两组以上)存储数据,分组提取数据等。
并且结合液晶显示原理,可以方便的存储与读取,以达到设计的最初目的,从而实现秒表功能。
关键词C8051F020单片机,电子秒表,LCD液晶显示,
目录
课程设计I
单片机课程设计成绩评定表IV
摘要V
目录I
1设计任务描述-1-
1.1设计课题-1-
1.2设计目的-1-
1.3基本要求-1-
2设计思路-2-
3设计框图-3-
4各部分程序设计及参数计算-4-
4.1定时器T0设计-4-
4.2存储时间设计-5-
4.3调出时间设计-7-
4.4转换成ASCII码程序设计-8-
4.5液晶显示程序设计-9-
5工作过程分析-11-
6元器件清单-12-
7主要元器件介绍-13-
7.1C8051f020单片机-13-
7.1.1管脚图-13-
7.1.2简介-13-
总结-14-
致谢-15-
参考文献-16-
源程序清单-17-
1设计任务描述
1.1设计课题
电子秒表程序设计
1.2设计目的
①掌握定时器工作原理,会使用定时器。
②利用C8051F单片机并行I/O的输入和输出使用。
③通过液晶显示器接口电路的设计与编程,掌握液晶显示器的原理使用方法,使用液晶显示器并把它嵌入到便携式电子产品中。
④灵活的运用中断程序。
1.3基本要求
①具有秒表的基本功能
②显示最小数为0.1秒
③能够进行多路计数并分别显示
2设计思路
电子秒表程序,首先参照的是赛跑用的秒表。
启动秒表时,开始计时,当每按一次键时,能够将数据存储起来,同时保证不影响秒表的计时。
按另一个键时,能够调出之前存储的时间。
此外,秒表还有清零,重新计时的功能。
所以,设计的电子秒表程序包含T0计数器,外部中断6和外部中断7,以及液晶显示三个部分。
运行程序时,打开外部中断6,开始计时,再每按一次中断6时,存储数据。
启动外部中断7,停止计时,每按一次中断7时,调出数据。
其中,计数部分,是将分存在32H里,秒存在31H里,毫秒存在30H里。
为了更精确,我将秒表精确到0.01秒。
还有显示部分,显示是在LED液晶显示器里显示的,而液晶显示器只识别ASCII码,所以要将32H、31H、30H里所存储的十六进制数转换成ASCII码。
3设计框图
KEY3计时
KYE4
4各部分程序设计及参数计算
4.1定时器T0设计
选择时钟源:
f=12MHz,12分频
CKC0N=00H
计数方式:
方式1;16位定时\计数器
初值计算:
定时周期为10ms
T=2^16-10000=55536=D8F0H
定时器程序:
T0:
MOVTL0,#0F0H;初值
MOVTH0,#0D8H
INC30H
MOVA,30H
CJNEA,#100,LV
MOV30H,#00H
INC31H
MOVA,31H
CJNEA,#60,LV
MOV31H,#00H
INC32H
MOVA,32H
CJNEA,#60,LV
MOV30H,#00H
MOV31H,#00H
MOV32H,#00H
LV:
RETI
4.2存储时间设计
30H,31H,32H中的数为十六进制数,液晶显示器无法直接显示其中的数值,因此必须将十六进制转化为液晶显示器是别的ASCII码。
即将32H中的十六进制数放在累加器A中。
把10放在寄存器B中,执行DIVAB此时A、B中都是BCD数,而LCD只能识别ASCII码,所以要分别将A和B中的数加30H转化成ASCII码33H和34H中,再由33H,34H送给P7口输出。
中断6程序:
KEY3:
CLR00H
SETBTR0
MOVR0,#43H
MOVR1,#00H
MOV7FH,#00H
MOVA,R6
CJNEA,#00H,LOP1
INCA
MOVR6,A
MOVR1,#00H
LJMPLOP6
LOP1:
MOVA,R6
CJNEA,#01H,LOP2
INCA
MOVR6,A
MOV43H,30H
MOV44H,31H
MOV45H,32H
LJMPLOP6
LOP2:
MOVA,R6
CJNEA,#02H,LOP3
INCA
MOVR6,A
MOV46H,30H
MOV47H,31H
MOV48H,32H
LJMPLOP6
LOP3:
MOVA,R6
CJNEA,#03H,LOP4
INCA
MOVR6,A
MOV49H,30H
MOV4AH,31H
MOV4BH,32H
LJMPLOP6
LOP4:
MOVA,R6
CJNEA,#04H,LOP5
INCA
MOVR6,A
MOV4CH,30H
MOV4DH,31H
MOV4EH,32H
LJMPLOP6
LOP5:
MOVA,R6
CJNEA,#05H,LOP6
MOV4FH,30H
MOV50H,31H
MOV51H,32H
INCA
MOVR6,A
CLRTR0
LOP6:
MOVP3IF,#00H
RETI
4.3调出时间设计
程序如下:
KEY4:
JB00H,LOOP1;位1跳转
CLRTR0
MOV7FH,#01H
DJNZR6,LOOP2
LOOP1:
MOV30H,#00H
MOV31H,#00H
MOV32H,#00H
MOVR6,#00H
MOVR1,#00H
SETB00H
LJMPLOOP3
LOOP2:
INCR1
MOVA,@R0
MOV30H,A
NCR0
MOVA,@R0
MOV31H,A
INCR0
MOVA,@R0
MOV32H,A
INCR0
LOOP3:
MOVP3IF,#00H
RETI
4.4转换成ASCII码程序设计
程序如下:
ASCII:
MOVA,32H;把32H(分)单元中数送到累加器A中
MOVB,#10
DIVAB;除法,十位给A,个位给B
ADDA,#30H;将A的数转换成ASCII码
MOV33H,A
MOVA,B
ADDA,#30H;将B的数转换成ASCII码
MOVB,A
MOV34H,B
MOVA,31H;把31H(秒)中数送到累加器A中
MOVB,#10
DIVAB
ADDA,#30H
MOV35H,A
MOVA,B
ADDA,#30H
MOVB,A
MOV36H,B
MOVA,30H;把30H(毫秒)中数送到累加器A中
MOVB,#10
DIVAB
ADDA,#30H
MOV37H,A
MOVA,B
ADDA,#30H
MOV38H,A
4.5液晶显示程序设计
用LCD模块的3条信号线RSR/W和E控制LCD的读写操作,RS为寄存器选择位,RS=1,选择数据寄存器;RS=0,选择指令寄存器;E为使能信号,下降沿解发;R/W反为读/写信号,R/W反=1,读;R/W反=0,写;D0-D7是8位数据总路线;将P6.0线与E端相连,P6.1线与R/W端相连,P6.2线与RS端相连可利用I/O线P6.2,P6.1和P6.0代替RS,R/W反和E实现读/写操作。
程序一如下:
MOVP7,#38H;两行显示5*7点阵
MOVP6,#01H;写命令
MOVP6,#00H;结束写命令
LCALLDELAY
MOVP7,#0EH;开显示,开光标,字符不闪烁
MOVP6,#01H;写命令
MOVP6,#00H;结束写命令
LCALLDELAY
MOVP7,#06H;I/D=1,AC自动增一,S=0整体显示不移动
MOVP6,#01H;写命令
MOVP6,#00H;结束写命令
LCALLDELAY
MOVP7,#01H;清除DDRAM,置AC=0
MOVP6,#01H;写命令
MOVP6,#00H;结束写命令
LCALLDELAY
MOV30H,#00H;清零
MOV31H,#00H
MOV32H,#00H
程序二:
MOVP7,33H;液晶显示分的十位
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
MOVP7,34H;液晶显示分的个位
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
MOVP7,#':
';液晶显示“:
”
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
MOVP7,35H;液晶显示秒的十位
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
MOVP7,36H;液晶显示秒的个位
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
MOVP7,#':
';液晶显示“:
”
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
MOVP7,37H;液晶显示毫秒的十位
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
MOVP7,38H;液晶显示毫秒的个位
MOVP6,#05H
MOVP6,#04H
LCALLDELAY
5工作过程分析
首先确定定时器的周期为10ms,这刚好满足精确到0.01S。
开始时时间显示为00:
00:
00,当毫秒到100时,进位,秒加1;秒到60时,进位,分加1。
外部按键是KEY3和KEY4,即外部中断6和外部中断7.当第一次按KEY3时,开始计时,第二次按时存储第一组时间,第三次按时存储第二组时间,以此类推。
当第一次按KEY4时,显示第一组时间,第二次按时显示第二组时间,以此类推。
具体内容如下,运行主程序时,显示00:
00:
00,按KEY3时,开始计时,再按时时间存储在43H,44H,45H中,再按时计时不会发生改变,同时将时间存储在46H,47H,48H中。
按KEY4时,通过转换程序将十六进制的数据转换成ASCII码,在液晶显示屏中显示第一组时间。
6元器件清单
名称
数量
C8051F020综合教学仪
1台
USB电缆
1条
计算机
1台
7主要元器件介绍
7.1C8051f020单片机
7.1.1管脚图
图7.1c8051f020引脚图
7.1.2简介
MCS-51系列单片机有100个引脚,正电源和地线两根,外置石英振荡器的时钟线两根,8组8位共64个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:
RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24V以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。
8051的复位方式可以是自动复位,也可以是手动复位。
此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。
而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。
总结
怎么说呢,这两周的时间说长也不长,说短也不短,但这段时间里学的东西还是很多的。
首先,以前也做了好几个单片机实验,只是那些比较简单,根据课堂上老师讲解的例题,基本上可以做个大概。
这次的课程设计,涉及的知识很多,还要自己上网查资料,并且去图书馆找相应的书籍。
自己懂的东西太少了,好多东西也看不懂,本以为单片机很容易,但还是被很多东西所纠结。
通过这次课程设计,我发现自己要学的东西还有好多。
此外,让我感到很神奇,应该是很厉害,单片机的功能太强大了,通过编写程序可以实现好多显示中的东西,电子秒表程序就是一个例子。
还有,我曾经想了好几个方案,但是实现起来好麻烦,暂时不会做,所以只能做点基本的功能,其他发挥功能就不会做了。
本来理论和实践是两个完全不同的概念,理论上能实现,但实际未必能实现。
但是以后我一定要实际也能实现,即时熬夜也要把它做出来。
现在编程都要参考别人的程序,感觉好落伍,但晚上想想,说不上自己能做出个更好的,别人做的都没自己改的好。
所以,我以后要多参考别人的,多总结,全部弄懂,弄明白其中的原理,然后想想自己有没有更好得方法。
还有,多向同学学习,多向老师请教。
致谢
在这里,我要感谢各位同学的帮助,没有他们的帮忙我就不能这么顺利。
在这次课设里遇见了好多的问题,例如我设计的秒表精确到0.01s,但计时的时候末两位是11,22,33这样计数,而不是01,02,03的累加计数。
还有就是调出时间有问题,它不显示时间,乱码了。
有时同学为了帮我们解决问题,连午饭也不吃,真的很感激。
虽然大家都是早上随便吃了一点点,要到下午3点多才走,大家都饿着肚子一起研究,但是在一起工作的热情还是让自己很欣慰的。
在这里再次感谢大家的帮助。
参考文献
1.《C8051F单片机原理及应用》鲍可进主编,中国电力出版社
2.《手把手教你单片机》周兴华主编,北京航空航天大学出版社
3.《8051单片机课程设计实训教材》陈明荧主著,清华大学大学出版社
源程序清单
$INCLUDE(C8051F020.INC)
ORG00H
LJMPMAIN
ORG0BH
LJMPT0
ORG93H
LJMPKEY3
ORG9BH
LJMPKEY4
ORG100H
MAIN:
MOVWDTCN,#0DEH;关看门狗
MOVWDTCN,#0ADH
MOVOSCXCN,#67H;晶体振荡器方式,f=12MHz
LOP:
MOVA,OSCXCN
JNBACC.7,LOP;判断晶体振荡器稳定工作
MOVOSCICN,#08H;选择外部振荡器作为系统时钟
MOVCKCON,#00H;定时器按系统时钟的12分频计数
MOVTMOD,#01H;T0方式,16位定时/计数器
MOVTL0,#0F0H;初值
MOVTH0,#0D8H
MOVP3IF,#00H
MOVEIE2,#30H;允许外部中断6和外部中断7
MOVXBR2,#40H;交叉开关使能
LCALLDELAY
MOVP7,#38H;两行显示5*7点阵
MOVP6,#01H;写命令
MOVP6,#00H;结束写命令
LCALLDELAY
MOVP7,#0EH;开显示,开光标,字符不闪烁
MOVP6,#01H;写命令
MOVP6,#00H;结束写命令
LCALLDELAY
MOVP7,#06H;I/D=1,AC自动增一,S=0整体显示不移动
MOVP6,#01H;写命令
MOVP6,#00H;结束写命令
LCALLDELAY
MOVP7,#01H;清除DDRAM,置AC=0
MOVP6,#01H;写命令
MOVP6,#00H;结束写命令
LCALLDELAY
MOV30H,#00H;清零
MOV31H,#00H
MOV32H,#00H
MOVR6,#00H
MOVR2,#02H
MOVR1,#00H
SETBET0
SETBEA
ASCII:
MOVA,32H;把32H(分)单元中数送到累加器A中
MOVB,#10
DIVAB;除法,十位给A,个位给B
ADDA,#30H;将A的数转换成ASCII码
MOV33H,A
MOVA,B
ADDA,#30H;将B的数转换成ASCII码
MOVB,A
MOV34H,B
MOVA,31H;把31H(秒)单元中数送到累加器A中
MOVB,#10
DIVAB
ADDA,#30H
MOV35H,A
MOVA,B
ADDA,#30H
MOVB,A
MOV36H,B
MOVA,30H;把30H(毫秒)单元中数送到累加器A中
MOVB,#10
DIVAB
ADDA,#30H
MOV37H,A
MOVA,B
ADDA,#30H
MOV38H,A
LCALLDELAY
MOVP7,#01H;清屏
MOVP6,#01H
MOVP6,#00H
LCALLDELAY
MOVA,7FH
CJNEA,#01H,LM;判断显示R1还是R6,7FH为1时显示R1
MOVA,R1
ADDA,#30H;转换ASCII码
MOVP7,A
MOVP6,#05H;写数据操作
MOVP6,#04H;结束写数据
AJMPLN
LM:
LCALLDELAY
MOVA,R6
ADDA,#30H
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子 秒表 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)