这是我大三做的51单片机实时秒表的设计,除了实物不是我焊的,其余部分都是我做的,谁让我当时那么喜欢呢,结果也没能找到相关的实习。不收费,要借鉴的请随意,但是不能据为己有,很讨厌!!!!!汇编语言写的,觉得太低级可以忽略。
为了实习在整理一些以前的校内实践项目,步骤图难以一一对应,可观察附录一的完整硬件电路图。

课 程 设 计 任 务 书

一、目的任务
《电子系统综合设计I》是《模拟电子技术》、《数字电子技术》、《单片机原理及应用》等课程完成后的一个综合实训;设计题目应尽量包括键盘、显示、接口扩展、中断技术等方面的内容;通过一个单片机应用课题的设计使学生熟悉单片机型号及外围接口芯片的选择,熟悉程序设计的一般方法;熟悉单片机内部硬件资源的综合应用,培养和提高学生的软、硬件设计能力,编程能力和查阅有关技术资料的能力。并能初步运用所学的理论知识去观察,分析和处理实际调试过程中的常见问题,进一步促进理论与实际的结合,培养学生的动手能力。为学生以后的毕业设计和从事实际工作奠定坚实的基础。
二、设计内容
基本功能要求:

  1. 在4个数码管上显示秒、百分之一秒。
  2. 具有启动、暂停和清0的功能。
    扩展功能:
  3. 增加2个显示模块,对分钟计时。
  4. 增加定时器的功能,可进行定时时间设置,时间到输出报警。
    三、时间安排
    时间安排为一周,由于任务较紧,提前一周布置题目利用课余时间进行程序设计,设计周完成仿真调试和实物制作。
    四、设计工作要求
    时间安排为二周,第一周完成设计题目选择,硬件设计及软件设计,第二周完成软件及硬件的仿真调试和实物制作。
    五、成绩评定
    成绩的评定由4部分组成:考勤10%,仿真30%、实物30%,报告30%。
    六、参考文献
    [1]张毅刚《单片机原理及接口技术》第二版,人民邮电出版社出版,2015年。
    [2]何宾《STC单片机原理及应用》,清华大学出版社 2015年。
    [3]刘娟 《智能电子产品设计与制作》 机械工业出版社 2011年。

目 录

任务设计书……………………………………………………3
秒表设计报告正文……………………………………………5
附录1…………………………………………………………15
附录2…………………………………………………………16

实时秒表设计

一、选题背景
实时秒表设计共以下几个问题,数码管的动态扫描,定时初值的输入,秒表脉冲的设置。根据课题设计任务书,应达到的技术要求为实现秒表计数暂停功能,定时功能,及定时到的报警功能。对本设计的指导思想为,以尽量简单的硬件电路实现以上所有功能。
二、方案论证(设计理念)
本着以简单的硬件电路实现所有功能的思想,故,对于外部开关设计方面有如表1:
表1
I/O口 作用
P3.2 秒表清零
P1.0 定时/秒表功能选择
P1.2 定时功能中外部输入与定时开始选择
P1.4 外部输入加1键
P1.6 外部输入减1键
P1.5 输入时分/秒选择开关
P1.7 秒表启动/暂停开关
表2 共阴极七段码表
显示字符 共阴极字型码 显示字符 共阴极字型码
0 3FH 8 6FH
1 06H 9 77H
2 5BH A 7CH
3 4FH B 39H
4 66H C 5EH
5 6DH D 79H
6 7DH E 71H
7 07H F 73H

P2口做显示口,P0口做关显示,P3中断运用于程序的各个地方。这样选择是为了符合芯片本身各引脚的分布,便于焊接,并且便于使用。线和线之间少了很多交叉,使得功能更加稳定,使用中会少很多未知的问题。
三、硬件设计
硬件设计思路,硬件组成方框图,各个单元电路设计原理图及说明。
1.硬件组成框图
复位电路,晶振电路,显示电路,按键接口
2.各单元硬件电路图及说明:
如复位电路,如图1所示,采用有极性电容和两电阻分压作用,容值参考《单片机与接口技术》,为22uf,阻值分别为220,1k

图1
晶振电路,如图2所示,由晶振及两个无极性电容组成,参考《单片机与接口技术》,容值统一为30pF,晶振选用12MHZ。

图2
显示电路,如图3所示,P0做关显示口,P2做数位代码口,与实物引脚对应,便于焊接:

图3
按键接口:P1.4(加1),P1.6(减1),说明如下,P1.0按下,选择定时功能,开始按键输入,P1.4按下放开一次加1并显示,P1.6为减1,同样的减1并显示,P1.5未按下对分位进行设置,按下设置秒。P1.2按下开始定时。
总电路图见附录1
四、软件设计

  1. 软件设计思路
    写代码的基础是硬件设计,各端口功能都由硬件设计决定。对于程序部分我的思考是采用模块化的设计,多用子程序,让代码更简洁明了。

  2. 主流程图及文字说明
    百分之一秒产生脉冲主程序,百分之一秒为一个脉冲,故每0.005秒方波求反一次。如图4

       图4
    

其他功能实现流程图如图5明如下:
H为高电平,L为低电平。
T0脉冲在运行过程中一直开启。
秒表:计数到100时,说明一秒到,进位,60秒到分进位。
定时:分为两部分,一是外部输入,外部按键对定时初值进行设置。二是倒计时开始,对分秒进行倒计时。在T1中断中设置两个地址对分和秒进行倒计时,当分秒都为0时,点亮LED。

图5
3. 各个子流程图及文字说明
流程图如图4:
设置T0初值F63CH,16位定时。在主程序中启动,在程序运行中一直运行。
流程图如图5:
P1.0为高电平,进入秒表程序,读TL1,拆字,显示。
P1.0为低电平,进入定时程序,P1.2为高电平时,设置定时初值,P1.5为高电平设置分初值,P1.5为低电平,设置秒初值,设置完毕,闭合P1.2开始定时。直到P1.0恢复高电平,跳入秒表程序。
完整程序及注释(附录2)
五、仿真调试
KEIL运行结果如下:

图6
运行Protues,闭合P1.7运行秒表功能,结果如下图7:

图7
闭合P1.0,运行定时功能,结果输入如图8,闭合P1.2,定时结果如图9:

图8

图9
六、实物制作及调试
安装图绘制如图10,元器件清单如图11,硬件结果如图12,13:

图10

图11

图12

图13
结果分析
结果如预期结果,但因未焊接LED,故最后报警结果未实现。
八、课程设计总结
第一周,设计阶段,我遇到的问题是扩展功能中的外部输入功能,最先的想法是只实现秒的倒计时,运用两个开关对秒的十位个位进行设置,而后听取老师建议,设置两个开关进行加1和减1设置,再加一个开关对分秒设置进行选择。虽然思考过程比较缓慢,但想通之后,对按键的编码有了更深的理解。并且这个设计的过程让我对单片机原理与接口技术这门课有了更深的理解。比如中断的运用。仿真调试过程中发现动态扫描的过程中延时太长会让数码管一个一个的显示。
第二周,硬件实现周,因设计部分大多由我做,故第二周大多由组员实现。我参与了最后的调试过程,在调试过程中,数码管并未全部点亮,还有一个数码管未亮。我们找到了未亮的线由哪根线控制,以及未亮数码管由哪根线控制,进行检查,焊接。最终试运行结果如预期。

参考文献
[1]张毅刚《单片机原理及接口技术》第二版,人民邮电出版社出版,2015年。
[2]何宾《STC单片机原理及应用》,清华大学出版社 2015年。
[3]刘娟 《智能电子产品设计与制作》 机械工业出版社 2011年。

附录1

仿真图

附录2
代码
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP SS
ORG 001BH
LJMP MI
ORG 0013H
LJMP CL
ORG 0100H
MAIN: MOV TMOD,#61H ;T016位定时,T18位计数方式
MOV TH0,#0F6H
MOV TL0,#3CH
MOV TH1,#9BH
MOV TL1,#9BH
SETB EX1
SETB TR0
SETB ET0
SETB EA
SETB ET1
MOV 67H,#00H
MOV 66H,#00H ;倒计时数值存放点
MOV 87H,#00H
MOV P2,#00H
MOV P1,#0FFH
MOV P3,#0FFH
MOV 77H,#00H
MOV 99H,#00H
;菜单选择
KEY_CAIDAN:
JB P1.0,KEY ;P1.0为1计数,为零定时
MOV 87H,#00H ;控制中断中程序,保证不影响计数
JNB P1.2,DING ;定时功能选择输入与倒计时,1 INPUT
SJMP IO
DING: SJMP PT
KEY: MOV 77H,#00H ;定时结束,标志位清零
MOV 61H,#00H
MOV 62H,#00H
MOV 63H,#00H
MOV 64H,#00H ;定时输入位清零
MOV 87H,#01H
CLR TR1
JB P1.7,KEY1 ;启动/暂停开关
SETB TR1
KEY1: SETB IT1
JB P3.3,RDD ;清零开关
CLR IT1
RDD: MOV A,R6 ;读分
LCALL CZ2
MOV A,R7 ;读秒
LCALL CZ
MOV A,TL1
LCALL CZ1
MOV 50H,#30H
MOV 51H,#0DFH
LCALL LK
SJMP KEY_CAIDAN
;定时
PT: MOV A,77H
CJNE A,#00H,SPK
MOV R1,#61H
MOV R0,#66H ;分位
LCALL PRO
MOV R1,#63H
MOV R0,#67H ;秒位
LCALL PRO
INC 77H
SPK: SETB TR1
MOV 50H,#40H
MOV 51H,#0DFH
MOV A,66H ;分
LCALL CZ3
MOV A,TL1 ;
LCALL CZ5
MOV A,67H ;秒
LCALL CZ4
LCALL LK
SJMP KEY_CAIDAN
;外部输入
IO:
MOV R3,#0FFH
JNB P1.5,MIAO ;分秒选择开关,闭合读秒
MOV R1,#61H ;十位
MOV R0,#62H
SJMP ENTER
MIAO: MOV R1,#63H
MOV R0,#64H
ENTER:LCALL IN ;每一次调用都会刷新61H到64H单元的值
MOV 50H,#61H
MOV 51H,#0DFH
LCALL LK
GO: JNB P1.2,WAI
SJMP SRT
WAI: DJNZ R3,WAI ;消抖
JNB P1.2,SRT
SJMP IO
SRT: LJMP KEY_CAIDAN
;拆字子程
CZ: MOV B,#0AH
DIV AB
MOV 32H,A ;TEN
MOV 33H,B ;GE
RET
CZ1: SUBB A,#9BH
MOV B,#0AH ;C秒
DIV AB
MOV 34H,A ;TEN
MOV 35H,B ;GE
RET
CZ2: MOV B,#0AH
DIV AB
MOV 30H,A ;TEN
MOV 31H,B ;GE
RET
CZ3: MOV B,#0AH
DIV AB
MOV 40H,A ;TEN
MOV 41H,B ;GE
RET
CZ4: MOV B,#0AH
DIV AB
MOV 42H,A ;TEN
MOV 43H,B ;GE
RET
CZ5: SUBB A,#9BH
MOV B,#0AH ;C秒
DIV AB
MOV 44H,A ;TEN
MOV 45H,B ;GE
RET
;显示子程
LK: MOV R3,#0FFH ;延时不能太短会出错
MOV R0,50H
MOV R2,51H
MOV A,#0FFH
LP3: MOV P0,A
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,A
MOV A,R2
MOV P0,A
LP2: DJNZ R3,LP2
INC R0
MOV A,R2
RR A
MOV R2,A
JB ACC.7,LP3
MOV R0,#00H
MOV R2,#00H
MOV R3,#00H
RET
;T0中断
SS: CPL P3.0
MOV TH0,#0F6H
MOV TL0,#3CH
RETI
;INT0中断做清零开关
CL: MOV TL1,#9BH ;百分之一秒清零
MOV R7,#00H
MOV R6,#00H
RETI
;T1中断
MI:
MOV A,67H
CJNE A,#00H,JJ
MOV A,66H
CJNE A,#00H,JIAN
CPL P1.3
SJMP LOPT
JIAN: MOV 67H,#3CH
DEC 66H
JJ: DEC 67H
LOPT: INC R7
CJNE R7,#3CH,LOOP
MOV R7,#00H ;R7为60,R7清零,进位
INC R6
LOOP: RETI
PRO: MOV A,@R1
MOV B,#0AH
MUL AB
INC R1
ADD A,@R1
MOV @R0,A
MOV R0,#00H
MOV R1,#00H
RET
;外部输入:功能:将计数存入R0,R0所指单元
IN:
L5: SETB P1.1
KEY_CHECk:
MOV R3,#0FFH
JB P1.4,ST ;加位
W2: DJNZ R3,W2
JB P1.4,ST ;确实有键按下
W: JNB P1.4,W ;键抬起算一次
INC @R0
CJNE @R0,#0AH,ST
INC @R1
MOV @R0,#00H
CJNE @R1,#06H,ST
MOV @R1,#00H
ST:
MOV R3,#0FFH
JB P1.6,L1
W3: DJNZ R3,W3
JB P1.6,L1
W1: JNB P1.6,W1 ;键未抬起,等待
DEC @R0
CJNE @R0,#0FFH,L1
DEC @R1
MOV @R0,#09H
L1: CPL P1.1
L7:
MOV R0,#00H
MOV R1,#00H
MOV R3,#00H
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,40H,0F3H
END

51单片机之实时秒表相关推荐

  1. 基于微型计算机系统的实时时钟设计,基于51单片机的实时时钟设计报告.doc

    基于51单片机的实时时钟设计报告 PAGE PAGE 24 课程设计(论文)任务书 信息工程 学 院 信息工程 专 业 (2) 班 一.课程设计(论文)题目 嵌入式课程设计 二.课程设计(论文)工作自 ...

  2. 利用51单片机制作一个秒表的详细过程

    利用51单片机制作一个秒表的详细过程 前面的话: 和很多朋友一样,在学51单片机的过程中我们肯定会涉及到制作一个秒表,牵涉到把单片机的多个部分组合起来使用,这对于我们初学者来说可能显得有些困难,我同大 ...

  3. 基于51单片机的电子秒表

    基于51单片机的电子秒表 电子秒表 基于51单片机的电子秒表 摘要 1 引言 段数码管以及按键的使用 2 总体设计方案 2.1 设计思路 2.2 设计方框图 3 设计原理分析 3.1 时钟电路的设计 ...

  4. 51单片机8255扩展c语言,参阅:基于51单片机的实时时钟的设计与开发8255扩展io口1V0.1...

    <基于51单片机的实时时钟的设计与开发(8255扩展io口) (1).doc>由会员分享,可免费在线阅读全文,更多与<基于51单片机的实时时钟的设计与开发(8255扩展io口) (1 ...

  5. 基于51单片机的倒计时秒表proteus仿真设计

    目录 一.设计背景 二.实现功能 三.仿真演示 四.源程序 一.设计背景 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入.本文阐述了基于单片机的数字电子秒表倒计时设计,倒计时精度达0.05s ...

  6. 51单片机c语言秒表,C51单片机秒表计时(C语言).doc

    C51单片机秒表计时(C语言).doc 南开大学滨海学院C51嵌入式软件设计(C语言) 题目计时秒表 l 功能描述本设计实现在99秒内的秒表计时,一个按键实现开始.暂停.复位.l 原理概述P1接四位七 ...

  7. 51单片机DS1302实时时钟

    一.DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片.它可以对年.月.日.周.时.分.秒进行计时,且具有闰年补偿等多种功能.        RTC( ...

  8. 51单片机ADC0808实时转换电压十进制形式数码管显示

    文章目录 介绍 Proteus仿真效果运行图 源程序 主函数 介绍 ADC0808实时转换电压 以十进制显示在数码管上 Proteus仿真效果运行图 源程序 主函数 #include<reg52 ...

  9. 4.7 51单片机-DS1302 实时时钟芯片

    4.7 DS1302 实时时钟芯片 4.7.1 原理图介绍 图4-7-1 图4-7-2 驱动DS1302之前,实验板上需要将JP595跳线帽和J11跳线帽断开.JP1302跳线帽接上. 4.7.2 D ...

  10. 基于51单片机—多功能秒表

    学校要求的课程设计,花了两天时间终于做出来了,分享一下. 功能介绍: 1. 三位数码管显示数据00.0~99.9 2.一次计时中可记录4个数据(按一下存一次数据),存在EEPROM中(若按了五下,则会 ...

最新文章

  1. java设计模式之九外观模式(Facade)
  2. 学习笔记(十六)——MySQL(约束与关系)
  3. linux查找并删除进程,linux中查找并kill一个名为server的进程
  4. XML NameSpace
  5. 无限法则无法连接服务器内容,无限法则链接不了服务器
  6. 拳王虚拟项目公社:2020主流的虚拟资源项目,最新最全自动化系统玩法
  7. 【codevs1026】逃跑的拉尔夫
  8. Kelvin云层效果Ps笔刷
  9. 安卓能硬改的手机机型_这款iPhone手机专属特效AR相机,我真的爱了
  10. Python 源码剖析 目录
  11. 二分类模型评价指标-Python实现
  12. Java的LocalDateTime与mysq的datatime数据类型匹配不了
  13. net-java-php-python-社会福利保障系统计算机毕业设计程序
  14. matlab批量修改指定像素
  15. JavaScript高级程序设计(第4版)学习随笔【第三章】
  16. 19-10-15(msgbox、inputbox、注释)
  17. excel上传+解析
  18. TypeScript从入门到放弃
  19. mysql实现增量备份
  20. ArcGIS 常见拓扑错误的修改方法

热门文章

  1. IOS逆向学习-加壳、脱壳
  2. 51单片机蓝牙小车程序详解
  3. NMF(非负矩阵分解)
  4. linux ahci 驱动下载,linux ahci驱动分析 SylixOS中AHCI驱动框架分析
  5. struct termios
  6. python装饰器讲解_Python装饰器讲解的不能再通俗易懂了(建议收藏)
  7. 2022DIY电脑配置入门篇(包含各cpu显卡天梯图对比)
  8. servlet中session的使用
  9. python矩阵操作_python矩阵操作
  10. iphone用计算机显示器,如何将iPhone屏幕投射到电脑上