沈 阳 工 程 学 院
课 程 设 计
设计
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
目: 电子秒表程序设计
系 别 自动控制工程系 班级 测控本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日
查阅相关资料、进行
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
论证
3
1月4日
确定多路计数和显示方法
4
1月5、6、9日
编写程序
5
1月10、11日
调试程序
6
1月12日
撰写论文
7
1月13日
论文答辩
沈 阳 工 程 学 院
单片机 课程设计成绩评定表
系(部): 自控系 班级: 测控本091班 学生姓名: 吕平
指 导 教 师 评 审 意 见
评价
LEC评价法下载LEC评价法下载评价量规免费下载学院评价表文档下载学院评价表文档下载
内容
具 体 要 求
权重
评 分
加权分
调研
论证
能独立查阅文献,收集资料;能制定课程设计方案和日程安排。
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为代表。随着在嵌入式领域中对单片机的性能和功能要求越来越高,以往的单片机无论是运行速度还是系统集成度等多方面都不能满足新的设计需要,这时Silicon Labs 公司推出了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.1 C8051f020单片机 - 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: MOV TL0,#0F0H ;初值
MOV TH0,#0D8H
INC 30H
MOV A,30H
CJNE A,#100,LV
MOV 30H,#00H
INC 31H
MOV A,31H
CJNE A,#60,LV
MOV 31H,#00H
INC 32H
MOV A,32H
CJNE A,#60,LV
MOV 30H,#00H
MOV 31H,#00H
MOV 32H,#00H
LV: RETI
4.2 存储时间设计
30H,31H,32H中的数为十六进制数,液晶显示器无法直接显示其中的数值,因此必须将十六进制转化为液晶显示器是别的ASCII码。即将32H中的十六进制数放在累加器A中。把10放在寄存器B中,执行DIV AB此时A、B中都是BCD数,而LCD只能识别ASCII码,所以要分别将A和B中的数加30H转化成ASCII码33H和34H中,再由33H,34H送给P7口输出。
中断6程序:
KEY3: CLR 00H
SETB TR0
MOV R0,#43H
MOV R1,#00H
MOV 7FH,#00H
MOV A,R6
CJNE A,#00H,LOP1
INC A
MOV R6,A
MOV R1,#00H
LJMP LOP6
LOP1: MOV A,R6
CJNE A,#01H,LOP2
INC A
MOV R6,A
MOV 43H,30H
MOV 44H,31H
MOV 45H,32H
LJMP LOP6
LOP2: MOV A,R6
CJNE A,#02H,LOP3
INC A
MOV R6,A
MOV 46H,30H
MOV 47H,31H
MOV 48H,32H
LJMP LOP6
LOP3: MOV A,R6
CJNE A,#03H,LOP4
INC A
MOV R6,A
MOV 49H,30H
MOV 4AH,31H
MOV 4BH,32H
LJMP LOP6
LOP4: MOV A,R6
CJNE A,#04H,LOP5
INC A
MOV R6,A
MOV 4CH,30H
MOV 4DH,31H
MOV 4EH,32H
LJMP LOP6
LOP5: MOV A,R6
CJNE A,#05H,LOP6
MOV 4FH,30H
MOV 50H,31H
MOV 51H,32H
INC A
MOV R6,A
CLR TR0
LOP6: MOV P3IF,#00H
RETI
4.3 调出时间设计
程序如下:
KEY4: JB 00H,LOOP1 ;位1跳转
CLR TR0
MOV 7FH,#01H
DJNZ R6,LOOP2
LOOP1: MOV 30H,#00H
MOV 31H,#00H
MOV 32H,#00H
MOV R6,#00H
MOV R1,#00H
SETB 00H
LJMP LOOP3
LOOP2: INC R1
MOV A,@R0
MOV 30H,A
NC R0
MOV A,@R0
MOV 31H,A
INC R0
MOV A,@R0
MOV 32H,A
INC R0
LOOP3: MOV P3IF,#00H
RETI
4.4 转换成ASCII码程序设计
程序如下:
ASCII: MOV A,32H;把32H(分)单元中数送到累加器A中
MOV B,#10
DIV AB ;除法,十位给A,个位给B
ADD A,#30H ;将A的数转换成ASCII码
MOV 33H,A
MOV A,B
ADD A,#30H ;将B的数转换成ASCII码
MOV B,A
MOV 34H,B
MOV A,31H ;把31H(秒)中数送到累加器A中
MOV B,#10
DIV AB
ADD A,#30H
MOV 35H,A
MOV A,B
ADD A,#30H
MOV B,A
MOV 36H,B
MOV A,30H; 把30H(毫秒)中数送到累加器A中
MOV B,#10
DIV AB
ADD A,#30H
MOV 37H,A
MOV A,B
ADD A,#30H
MOV 38H,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实现读/写操作。
程序一如下:
MOV P7,#38H ;两行显示5*7点阵
MOV P6,#01H ;写命令
MOV P6,#00H ;结束写命令
LCALL DELAY
MOV P7,#0EH ;开显示,开光标,字符不闪烁
MOV P6,#01H ;写命令
MOV P6,#00H ;结束写命令
LCALL DELAY
MOV P7,#06H;I/D=1,AC自动增一,S=0整体显示不移动
MOV P6,#01H ;写命令
MOV P6,#00H ;结束写命令
LCALL DELAY
MOV P7,#01H ;清除DDRAM,置AC=0
MOV P6,#01H ;写命令
MOV P6,#00H ;结束写命令
LCALL DELAY
MOV 30H,#00H ;清零
MOV 31H,#00H
MOV 32H,#00H
程序二:
MOV P7,33H ;液晶显示分的十位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,34H ;液晶显示分的个位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,#':' ;液晶显示“:”
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,35H ;液晶显示秒的十位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,36H ;液晶显示秒的个位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,#':' ;液晶显示“:”
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,37H ;液晶显示毫秒的十位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,38H ;液晶显示毫秒的个位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
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.1 C8051f020单片机
7.1.1管脚图
图7.1 c8051f020引脚图
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)
ORG 00H
LJMP MAIN
ORG 0BH
LJMP T0
ORG 93H
LJMP KEY3
ORG 9BH
LJMP KEY4
ORG 100H
MAIN: MOV WDTCN,#0DEH ;关看门狗
MOV WDTCN,#0ADH
MOV OSCXCN,#67H ;晶体振荡器方式,f=12MHz
LOP: MOV A,OSCXCN
JNB ACC.7,LOP ;判断晶体振荡器稳定工作
MOV OSCICN,#08H ;选择外部振荡器作为系统时钟
MOV CKCON,#00H ;定时器按系统时钟的12分频计数
MOV TMOD,#01H ;T0方式,16位定时/计数器
MOV TL0,#0F0H ;初值
MOV TH0,#0D8H
MOV P3IF,#00H
MOV EIE2,#30H ;允许外部中断6和外部中断7
MOV XBR2,#40H ;交叉开关使能
LCALL DELAY
MOV P7,#38H ;两行显示5*7点阵
MOV P6,#01H ;写命令
MOV P6,#00H ;结束写命令
LCALL DELAY
MOV P7,#0EH ;开显示,开光标,字符不闪烁
MOV P6,#01H ;写命令
MOV P6,#00H ;结束写命令
LCALL DELAY
MOV P7,#06H ;I/D=1,AC自动增一,S=0整体显示不移动
MOV P6,#01H ;写命令
MOV P6,#00H ;结束写命令
LCALL DELAY
MOV P7,#01H ;清除DDRAM,置AC=0
MOV P6,#01H ;写命令
MOV P6,#00H ;结束写命令
LCALL DELAY
MOV 30H,#00H ;清零
MOV 31H,#00H
MOV 32H,#00H
MOV R6,#00H
MOV R2,#02H
MOV R1,#00H
SETB ET0
SETB EA
ASCII: MOV A,32H ;把32H(分)单元中数送到累加器A中
MOV B,#10
DIV AB ;除法,十位给A,个位给B
ADD A,#30H ;将A的数转换成ASCII码
MOV 33H,A
MOV A,B
ADD A,#30H ;将B的数转换成ASCII码
MOV B,A
MOV 34H,B
MOV A,31H ;把31H(秒)单元中数送到累加器A中
MOV B,#10
DIV AB
ADD A,#30H
MOV 35H,A
MOV A,B
ADD A,#30H
MOV B,A
MOV 36H,B
MOV A,30H ;把30H(毫秒)单元中数送到累加器A中
MOV B,#10
DIV AB
ADD A,#30H
MOV 37H,A
MOV A,B
ADD A,#30H
MOV 38H,A
LCALL DELAY
MOV P7,#01H ;清屏
MOV P6,#01H
MOV P6,#00H
LCALL DELAY
MOV A,7FH
CJNE A,#01H,LM ;判断显示R1还是R6,7FH为1时显示R1
MOV A,R1
ADD A,#30H ;转换ASCII码
MOV P7,A
MOV P6,#05H ;写数据操作
MOV P6,#04H ;结束写数据
AJMP LN
LM : LCALL DELAY
MOV A,R6
ADD A,#30H
MOV P7,A
MOV P6,#05H
MOV P6,#04H
LN: LCALL DELAY
MOV P7,#20H
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,33H ;液晶显示分的十位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,34H ;液晶显示分的个位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,#':' ;液晶显示“:”
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,35H ;液晶显示秒的十位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,36H ;液晶显示秒的个位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,#':' ;液晶显示“:”
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,37H ;液晶显示毫秒的十位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
MOV P7,38H ;液晶显示毫秒的个位
MOV P6,#05H
MOV P6,#04H
LCALL DELAY
LJMP ASCII
T0: MOV TL0,#0F0H ;初值
MOV TH0,#0D8H
INC 30H
MOV A,30H
CJNE A,#100,LV
MOV 30H,#00H
INC 31H
MOV A,31H
CJNE A,#60,LV
MOV 31H,#00H
INC 32H
MOV A,32H
CJNE A,#60,LV
MOV 30H,#00H
MOV 31H,#00H
MOV 32H,#00H
LV: RETI
KEY3: CLR 00H
SETB TR0
MOV R0,#43H
MOV R1,#00H
MOV 7FH,#00H
MOV A,R6
CJNE A,#00H,LOP1
INC A
MOV R6,A
MOV R1,#00H
LJMP LOP6
LOP1: MOV A,R6
CJNE A,#01H,LOP2
INC A
MOV R6,A
MOV 43H,30H
MOV 44H,31H
MOV 45H,32H
LJMP LOP6
LOP2: MOV A,R6
CJNE A,#02H,LOP3
INC A
MOV R6,A
MOV 46H,30H
MOV 47H,31H
MOV 48H,32H
LJMP LOP6
LOP3: MOV A,R6
CJNE A,#03H,LOP4
INC A
MOV R6,A
MOV 49H,30H
MOV 4AH,31H
MOV 4BH,32H
LJMP LOP6
LOP4: MOV A,R6
CJNE A,#04H,LOP5
INC A
MOV R6,A
MOV 4CH,30H
MOV 4DH,31H
MOV 4EH,32H
LJMP LOP6