数码管对按键次数计数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河南理工大学
计算机科学与技术学院
课程设计报告
200 8 — 200 9 学年第 1 学期
课程名称单片机C语言应用程序设计
设计题目秒表
学生姓名郭兴层
学号310609010311
专业班级计算机06级3班
指导教师
2008 年12 月29 日
摘要
单片机自20世纪70年代问世以来,由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特优点,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。

而51单片机是各单片机中最为典型和最有代表性的一种。

本设计是设计一个用单片机控制的多功能秒表系统。

该秒表系统采用
AT80C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、电源电路、LED数码管以及键盘电路来设计计时器。

将软、硬件有机地结合起来,使得系统能够实现两位LED显示,显示时间为0.0~9.9秒,每100MS 自动加1,能正确地进行计时。

其中软件系统采用汇编语言编写程序,包括显示程序,加计数程序,中断,延时程序,并在WAVE中调试运行,并利用PROTEUS 作出仿真图仿真,简单且易于观察,在仿真中就可以观察到实际的工作状态。

通过这次设计让我更深入了解单片机基本电路、如何控制和定时器和中断编程的基本方法,从而锻炼了我学习、设计和开发软、硬件的能力。

目录
1概述 (3)
1.1设计任务 (3)
1.2设计要求 (3)
2 系统总体方案及硬件设计 (4)
2.1系统总体设计方案 (4)
2.2硬件设计 (4)
3软件设计 (8)
3.1主程序流程图 (8)
3.2子程序流程图 (9)
3.3子程序模块设计 (11)
4.proteus软件仿真 (14)
5课程设计体会 (16)
参考文献 (16)
附1:源程序代码 (17)
附2:系统原理图 (23)
1概述
1.1设计任务:
设计一个单片机控制的简单秒表计时系统。

利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计计时器。

将软、硬件有机地结合起来,使得系统能够用两个数码管来显示秒表数据,一个显示秒,另一个显示十分之一秒。

有一个按键来启动秒表的开始和结束。

1.2 设计要求:
基本要求
1.两位LED显示,显示时间为0.0~9.9秒。

2.每十分之一秒自动加1。

3.一个按键能够表示开始和结束。

2 系统总体方案及硬件设计
2.1系统总体设计方案
该简单秒表设计采用AT80C51单片机为中心器件,利用其定时器/计数器
定时和记数的原理,结合显示电路、电源电路、LED数码管以及键盘电路来设计
计时器。

将软、硬件有机地结合起来,使得系统能够实现两位LED显示,显示时
间为0.0~9.9秒,每十分之一秒自动加1,能正确地进行计时。

其中软件系统
采用汇编语言编写程序,包括显示程序,加减计数程序,快加快减程序,中断,
延时程序,按键消抖程序等,并在WAVE中调试运行,并利用PROTEUS作出仿真
图仿真,简单且易于观察,在仿真中就可以观察到实际的工作状态
2.2硬件设计:
设计的中心环节:单片机(80C51) 外围电路:
图2.1外围电路
1.晶体振荡电路
图2.2晶体振荡电路
通过XTAL1和XTAL2外接晶体振荡器构成内部振荡方式。

C1、C2对频率有微调作用,当外接晶振时,C1和C2通常选择10到30Pf。

选择震荡频率12MHz。

在设计印刷电路板时,晶体谐振器和电容应尽可能安装在单片机芯片附近,以减少寄生电容,保证震荡器稳定和可靠工作。

2电源电路:传统的电源
3显示电路: 我们采用的是动态的led数码管显示电路,其电路图如下:
图2.5显示电路
5键盘电路:
3软件设计:3.1主程序流程图:
图3.1 3.2子程序流程图
加1程序:
图3.2
(3)加1子程序
此程序只为简单的加1,并判断是否到100?到则从0开始,否则继续,另外将显示内存中的数个位十位分开,以便于动态显示。

JIA1: MOV A,20H ;
CLR C
INC A
CJNE A, #100, GO1;是否加到100?
MOV 20H, #00H
RET
GO1: MOV 20H, A;将个位十位分开显示
MOV B, #0AH
DIV AB
MOV 31H, A
MOV 30H, B
RET
定时1秒程序:
图.3.4
3.3子程序模块设计
(1)停止子程序
按键后,使秒表停止,即关闭定时器0,1,程序如下:
STOP: CLR TR0
CLR TR1;关闭定时器0,1
ACALL DISP;显示
(3)加1子程序
此程序只为简单的加1,并判断是否到100?到则从0开始,否则继续,另外将显示内存中的数个位十位分开,以便于动态显示。

JIA1: MOV A,20H ;
CLR C
INC A
CJNE A, #100, GO1;是否加到100?
MOV 20H, #00H
RET
GO1: MOV 20H, A;将个位十位分开显示
MOV B, #0AH
DIV AB
MOV 31H, A
MOV 30H, B
RET
4.proteus软件仿真
PROTEUS软件是我们在单片机学习过程中不可或缺的一个重要工具。

它能够快速,形象,方便,简单地把我们设计的程序思想反映在计算机模拟软件系统中。

经过proteus软件的仿真后,该程序不仅能够完整的实现老师所提出的基本要求,即能够记录四个相对独立的时间并分别显示,两位LED显示,并分别显示时间00~99秒,每秒自加一,一个“开始”按键,一个“复位”按键,一个“暂停”按键,一个“快加”按键(每10ms快速加一),一个“翻页”按键查看四个不同的计时值这几项功能外,还能实现老师所提出的提高要求中的一些功能,例如:通过“setup”按键实现不功能之间的转换,一个“拨位”按键分别实现加法和减法计数功能等提高要求的功能。

5课程设计体会
1、通过本次课程设计使我加深了对单片机课程的全面认识和掌握,对单片机课程的应用有了进一步的了解。

2、掌握定时器、外部中断的设置和编程原理。

3、通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

4.本实验利用单片机的定时器验。

/计数器定时和记数的原理,结合80C51单片机、LCD数码管以及按键来设计计时器。

将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。

其中本实验设计了四个开关按键:其中按键按下去时以0.1秒加一开始计时,即秒表开始键。

在按一下按键秒表停止工作。

5通过本次课程设计,也是我了解到在做课设之前一定要认真审题,看懂题目的要求.而且在做设计时要复习相关的知识,查询相关的资料,根据实验条件,找到适合的方案,选择合适的元器件。

7程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。

而且有些比较成熟的程序可以拿来借鉴,这样就可以节省许多时间。

8这次的单片机课程设计重点是理论与实际的相结合。

不再只是读书了,如果该设计从头到尾都自己参与,熟悉整个设计的过程,就能锻炼自己的能力,提高自己的综合素质。

参考文献
[1]马忠梅.单片机的C语言应用课程设计.北京航空航天大学版社
[2]杨凌霄. 微型计算机原理及应用.中国矿业大学出版社
附1.源程序代码
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIME1
ORG 0013H
LJMP ZHDUAN
ORG 001BH
LJMP TIME10
ORG 0100H
MAIN: MOV SP, #50H
MOV TMOD, #11H
MOV TH1,#0D8H ;定时10ms
MOV TL1, #0F0H
MOV TH0,#0D8H ;定时10ms
MOV TL0, #0F0H
MOV 20H, #00H ; BIN SECOND
MOV 30H, #00H ; SECOND
MOV 31H, #00H
MOV 40H, #100
MOV 71H,#00H ;记录暂存区
MOV 72H, #00H
MOV 73H, #00H
MOV 74H, #00H
MOV 50H, #04H
MOV 51H, #04H
MOV R1, #71H
SETB EA
SETB EX1
SETB ET1
SETB ET0
CLR PT0
CLR PT1
SETB PX1
SETB IT1
MOV P0, #0FFH
CLR TR0
CLR TR1
CLR 7FH
ML1: ACALL DISP
START: JB P1.0,L1 ; P1.0=0,停止
ACALL DELAY10
JB P1.0, L1
JNB P1.0, $
LJMP STOP
L1: JB P1.1,L2 ; P1.1=0,快减
ACALL DELAY10
JB P1.1, L2
JNB P1.1, $
LJMP KJIAN
L2: JB P1.2,L3 ; P1.2=0,快加
ACALL DELAY10
JB P1.2, L3
JNB P1.2, $
LJMP KJIA
L3: JB P1.3,L4 ; P1.3=0,暂停记录
JB P1.3, L4
JNB P1.3, $
LJMP JILU
L4: JB P1.4,L5 ; P1.4=0,下翻
ACALL DELAY10
JB P1.4, L5
JNB P1.4, $
LJMP XFAN
L5: JB P1.5,L ; P1.5=0,上翻ACALL DELAY10
JB P1.5, L
JNB P1.5, $
LJMP SHFAN
L: SJMP HERE
STOP: CLR TR0 ;停止程序CLR TR1
ACALL DISP
SJMP HERE
JILU : MOV A,20H ;暂停记录程序MOV @R1, A
INC R1
DJNZ 50H, HERE
MOV R1, #71H
MOV 50H, #04H
MOV 51H, #04H
SJMP STOP
XFAN: MOV A,@R1 ;下翻程序MOV 20H, A
MOV B, #0AH
DIV AB
MOV 31H, A
MOV 30H, B
INC R1
DJNZ 50H, HERE
MOV R1, #71H
MOV 50H, #04H
SJMP HERE
SHFAN: MOV A,@R1 ;上翻程序MOV 20H, A
MOV B, #0AH
DIV AB
MOV 31H, A
MOV 30H, B
LCALL DISP
DEC R1
DJNZ 50H, HERE
MOV R1, #74H
MOV 50H, #04H
SJMP HERE
KJIAN: SETB TR1 ;快减程序
CLR TR0
HEE1: JNB TF1, HEE1
CLR TF1
ACALL JIAN1
ACALL DISP
JNB P1.0, STOP
SJMP HEE1
KJIA: SETB TR1 ;快加程序
CLR TR0
HEE: JNB TF1, HEE
CLR TF1
ACALL JIA1
ACALL DISP
JNB P1.0, STOP
SJMP HEE
HERE: LJMP ML1
ZHDUAN: SETB TR0 ;启动定时器0 CLR TR1
RETI
TIME1: PUSH ACC ;定时1秒PUSH PSW
MOV TH0, #0D8H
MOV TL0, #0F0H
DJNZ 40H, RET0
LCALL JIA1
LCALL DISP
MOV 40H, #100
RET0: POP PSW
POP ACC
RETI
TIME10: PUSH ACC ;定时10毫秒PUSH PSW
MOV TH0, #0D8H
MOV TL0, #0F0H
RET1: POP PSW
POP ACC
RETI
JIA1: MOV A,20H ;加1
CLR C
INC A
CJNE A, #100, GO1
MOV 20H, #00H
RET
GO1: MOV 20H, A
MOV B, #0AH
DIV AB
MOV 31H, A
MOV 30H, B
RET
JIAN1: MOV A,20H ;减1
CLR C
DEC A
CJNE A, #00, GO2
MOV 20H, #99
RET
GO2: MOV 20H, A
MOV B, #0AH
DIV AB
MOV 31H, A
MOV 30H, B
RET
DISP: MOV R0,#30H ;显示
MOV R3, #0FEH
MOV A, R3
PLAY: MOV P2, A
MOV A,@R0
MOV DPTR, #DSEG1
MOVC A,@A+DPTR
MOV P0, A
LCALL DL1
MOV P2, #0FFH
MOV A, R3
RL A
JNB ACC.2, LD1
INC R0
MOV R3, A
LJMP PLAY
LD1: RET
DL1: MOV R7, #05H
DL: MOV R6, #0FFH
DL6: DJNZ R6, $
DJNZ R7, DL
RET
DELAY10:MOV R4,#14H ;延时10毫秒DL00: MOV R5, #0FFH
DL11: DJNZ R5, DL11
DJNZ R4, DL00
RET
DSEG1: DB 3FH, 06H, 5BH, 4FH, 66H DB 6DH, 7DH, 07H, 7FH, 6FH END
附2.系统原理图
系统原理图。

相关文档
最新文档