单片机定时器中断-秒表设计
单片机秒表设计 (2)

单片机综合实验报告题目: (项目四) 秒表班级:17班姓名:罗应武学号: K031241721一、实验内容应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时,一个“暂停”键,按下去时暂停计时,使秒表停留在原先的计时。
设计一个“复位”键,按下“复位”键后,秒表从0开始计时。
二、实验电路及功能说明⒈ 电源:⑴ VCC - 芯片电源,接+5V;⑵ VSS - 接地端;注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。
但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。
⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
⒊ 控制线:控制线共有4根,⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲① ALE功能:用来锁存P0口送出的低8位地址② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵ PSEN:外ROM读选通信号。
⑶ RST/VPD:复位/备用电源。
① RST(Reset)功能:复位信号输入端。
② VPD功能:在Vcc掉电情况下,接备用电源。
⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。
① EA功能:内外ROM选择端。
② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋ I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)5. P3口第二功能P30 RXD 串行输入口P31 TXD 串行输出口P32 INT0 外部中断0(低电平有效)P33 INT1 外部中断1(低电平有效)P34 T0 定时计数器0P35 T1 定时计数器1P36 WR 外部数据存储器写选通(低电平有效)P37 RD 外部数据存储器读选通(低电平有效)说明:P3^4,P3^5,P3^6三个引脚分别接清零开关,停止开关和复位开关,P0口和p2口跟七段数码管相连,用来向七段数码管来发送数据。
基于51单片机秒表的程序的设计[1]
![基于51单片机秒表的程序的设计[1]](https://img.taocdn.com/s3/m/2ebe8c8eed630b1c59eeb5fc.png)
基于51单片机秒表的程序设计1.设计目的:(1)利用单片机定时器中断和定时器计数方式实现秒、分定时。
(2)通过LED显示程序的调整,熟悉8155与8051,8155与LED的接口技术,熟悉LED动态显示的控制过程。
(3)通过键盘程序的调整,熟悉8155与矩阵式键盘的接口技术,熟悉键盘扫描原理。
(4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。
2.设计步骤与要求(1)要求:以8位LED右边2位显示秒,左边6位显示0,实现秒表计时显示。
以4×4矩阵键盘的KE0、KE1、KE2等3键分别实现启动、停止、清零等功能。
(2)方法:用单片机定时器T0中断方式,实现1秒定时;利用单片机定时器1方式3计数,实现60秒计数。
用动态显示方式实现秒表计时显示,用键盘扫描方式取得KE0、KE1、KE2的键值,用键盘处理程序实现秒表的启动、停止、清零等功能。
(3)软件设计:软件整体设计思路是以键盘扫描和键盘处理作为主程序,LED动态显示作为子程序。
二者间的联系是:主程序查询有无按键,无按键时,调用二次LED动态显示子程序(约延时8ms)后再回到按键查询状态,不断循环;有按键时,LED动态显示子程序作为按键防抖延时被连续调用二次(约延时16ms),待按键处理程序执行完后,再回到按键查询状态,同时兼顾了按键扫描取值的准确性和LED动态显示的稳定性。
秒定时采用定时器T0中断方式进行,60秒计数由定时器1采用方式3完成,中断及计数的开启与关闭受控于按键处理程序。
由上述设计思路可设计出软件流程图如图1.1所示。
(5)程序编制:编程时置KE0键为“启动”,置KE1键为“停止”,置KE2键为“清零”,因按键较少,在处理按键值时未采用散转指令“JMP”,而是采用条件转移指令“CJNE”,每条指令后紧跟着一条无条件跳转指令“AJMP”,转至相应的按键处理程序,如不是上述3个按键值则跳回按键查询状态。
单片机课程设计_基于单片机的数字秒表设计

单片机课程设计_基于单片机的数字秒表设计在当今科技迅速发展的时代,电子设备的应用无处不在,其中数字秒表作为一种常见的计时工具,具有广泛的应用场景,如体育比赛、科学实验、工业生产等。
本次课程设计旨在基于单片机技术实现一个数字秒表,通过对硬件电路的设计和软件程序的编写,掌握单片机系统的开发流程和方法,提高实践动手能力和解决问题的能力。
一、设计要求1、能够实现秒表的启动、暂停、复位功能。
2、计时精度达到 001 秒。
3、能够通过数码管显示计时结果。
二、系统方案设计1、硬件设计单片机选型:选用常见的 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。
显示模块:采用 8 位共阴极数码管作为显示器件,通过动态扫描的方式实现数字的显示。
按键模块:设置三个独立按键,分别用于启动、暂停和复位操作。
时钟模块:使用单片机内部的定时器/计数器产生精确的时钟信号,实现计时功能。
2、软件设计主程序:负责系统的初始化、按键扫描和计时处理等。
中断服务程序:利用定时器中断实现 001 秒的定时,更新计时数据。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振频率选择 12MHz,为单片机提供时钟信号。
复位电路采用上电复位和手动复位相结合的方式,确保系统能够可靠复位。
2、显示电路将 8 位数码管的段选引脚通过限流电阻连接到单片机的 P0 口,位选引脚通过三极管连接到单片机的 P2 口。
通过动态扫描的方式,依次点亮每个数码管,实现数字的显示。
3、按键电路三个按键分别连接到单片机的 P10、P11 和 P12 引脚,采用低电平有效。
当按键按下时,相应引脚的电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。
四、软件程序设计1、主程序流程系统初始化后,进入主循环。
在主循环中,不断扫描按键状态,如果检测到启动按键按下,则启动计时;如果检测到暂停按键按下,则暂停计时;如果检测到复位按键按下,则将计时数据清零。
单片机定时器中断-秒表设计

;选择定时器一 ;定时器赋初值
;一键启动,否转到 J2
;转到 J3 ;二键停止,否转到 J1 ;37H 传送到 A ;A 不等于 100 转到 J4 ;37H 清零 ;38H 传送到 A ;A 加 1 ;A 传送到 38H ;A 不等于 10 转到 J4 ;清零 38H ;调用显示程序 ;37H 加一 ;重装定时器
用 AT89C51 设计一个 3 位 LED 数码显示“秒表”,显示时间为 00~9990 毫秒,每 10 毫 秒自动加一。当按“开始”按键,开始计数,数码管显示从 00 开始每秒自动加一;按“暂 停”按键,系统暂停计数,数码管显示当时的计数;按“复位”按键,系统清零,数码管 显示 00。
利用 AT89S52 单片机的定时器,使其能精确计时。利用中断系统使其实现启动、暂停以 及复位清零的功能,P0 口输出段码数据,P1.0~P1.2 连上译码器作为位选,P1.7 和 P1.6 接 口的两个按钮分别实现启动暂停和复位功能。
5
一、实验目的
练习单片机汇编语言编程,学习按键和定时器的设计。
二、实验设备
LY5A-L2A 单片机开发板 1 套 PC 机 1 台
三、设计内容
1.按键的设计 2.设计一程序实现按 1 键启动或按 2 键停止数码管做精确的秒计数。(要求精度达到 0.1S) 3.在 proteus 中仿真设计
四、设计原理及步骤 总体思路:
N 是否为 100 Y
实验源程序:
ORG 0000H LJMP MAIN ORG 000BH
转到显示程序 变量一加一 设置变量二 (百位)
Y 是否为 10
N
显示程序
2
MAIN:
J1: J2: J3:
J4: TIMER: DISP:
单片机秒表课程设计 (3)

单片机秒表课程设计1. 引言秒表是一种常用的计时工具,可以用来测量时间的精确度。
在本课程设计中,我们将使用单片机来设计一个简单的秒表。
本文档将详细介绍该秒表的设计思路、硬件和软件实现以及测试结果。
2. 设计思路我们的设计目标是实现一个简单的秒表,包括计时、暂停和复位功能。
我们将采用基于单片机的设计,使用定时器和中断来实现计时。
具体的设计思路如下:•使用微控制器作为核心控制单元,我们选择XXXX型号的单片机。
•使用定时器模块来计时,通过设置定时器的计数频率来控制计时的精确度。
•使用外部中断按钮来控制计时的开始、暂停和复位操作。
•使用LED显示屏来显示计时结果。
3. 硬件设计3.1 硬件连接在硬件设计方面,我们需要将单片机与其他外部设备进行连接。
具体的连接方式如下:•将定时器模块的输出引脚连接到单片机的计时输入引脚。
•将外部中断按钮连接到单片机的中断输入引脚。
•将LED显示屏的控制引脚连接到单片机的输出引脚。
3.2 硬件组成本设计所需要的硬件组成如下:•单片机:XXXX型号微控制器•定时器模块•外部中断按钮•LED显示屏4. 软件设计4.1 主程序框架主程序的框架如下:#include <reg51.h>// 定义全局变量和标志位// 定时器中断函数// 外部中断中断函数// 主程序入口void main() {// 初始化定时器和中断// 循环检测按钮状态,并执行相应操作}4.2 定时器中断函数定时器中断函数用于实现计时功能,其主要逻辑如下:1.获取当前的计数值,并进行相关处理。
2.更新LED显示屏上的计时数据。
4.3 外部中断函数外部中断函数用于响应按钮的按压操作,其主要逻辑如下:1.判断按钮的按下类型,根据不同的按压类型执行相应的操作(开始、暂停或复位)。
2.根据操作类型更新相应的标志位。
4.4 功能函数除了定时器中断函数和外部中断函数之外,还可以编写一些功能函数来实现计时、暂停和复位等功能。
单片机秒表实验报告

单片机秒表实验报告
实验目的:
使用单片机设计并实现一个秒表,能够精确计时。
实验原理:
单片机秒表的设计采用外部中断的方式进行计时。
当按下计时开始按钮时,单片机开始计时,并将计时结果显示在数码管上。
当按下计时停止按钮时,单片机停止计时,并将计时结果保存下来。
实验材料:
1. 单片机开发板
2. 4位数码管
3. 开始按钮
4. 停止按钮
5. 连接线
实验步骤:
1. 将4位数码管连接到单片机的相应引脚上。
2. 将开始按钮连接到单片机的外部中断引脚上。
3. 将停止按钮连接到单片机的外部中断引脚上。
4. 编写程序,设置外部中断的中断服务函数。
5. 在中断服务函数中实现计时功能,将计时结果显示在数码管上。
6. 在主函数中初始化单片机,开始计时。
7. 测试实验是否正常工作。
实验结果:
经过测试,单片机秒表实验正常工作。
当按下开始按钮时,数码管开始计时,实时显示计时结果。
当按下停止按钮时,数码管停止计时,并将计时结果保存下来。
实验总结:
通过本实验,我掌握了使用单片机设计秒表的方法和步骤,加深了对单片机的理解和应用。
同时,我还学会了使用外部中断进行计时,并将计时结果显示在数码管上。
这对于我今后的学习和实践有着重要的指导意义。
单片机课程设计——秒表

单片机预习报告--------------秒表一、题目分析利用单片机内部定时/计数器和中断功能,实现分、秒、十分之一秒的正计时和倒计时功能,并将计时时间通过六位数码管实时动态显示出来。
倒计时模式中可通过键盘上的按键分别对分、秒进行定时设定,在计时过程中,可通过相应按钮进行暂停、开始,从而实现了六位倒计时秒表功能。
二.系统总体设计与框图系统框图如图下图所示。
该过程是:利用单片机8051实现计数功能,按键开关 K4按下,切换定时与计时。
定时范围在0到99分,计时范围在0到99.99.秒。
首先通过检测按键K4,来确定系统工作什么模式,计时模式有开始,暂停,复位3种功能,倒计时模式有,置数,开始,暂停,复位功能。
系统总体设计与框图三.解决方案:初始化为何种状态,开关是否按下,显示是定时状态还是计时状态。
若为定时状态,。
用6个共阴数码管LED显示起显示时间,采用动态显示的方法,P2.4、P2.5、P2.6、P2.7作为位选信号,P0口输出选段码。
键盘为独立式按键,分别接在P3.2、P3.3、P3.4、P3.5上。
K1为设置/启动功能键。
按下时,系统进入时间设置;再按下,系统启动。
K2为倒计时时间十位数设定键,按下时十位数字在0到9的范围。
K3倒计时个位数设定键,按下时,个位数字在0到9的范围。
K4为复位键。
K5为定时与计时的切换键,按下切换到计时状态,不按为定时状态。
P3.5连接发光二极管状态指示,系统时间设为定时状态熄灭,倒计时状态闪烁。
P3.6输出控制信号驱动蜂鸣器,倒计时时间到,蜂鸣器响。
开始正计时,正计时结束,蜂鸣器再响,程序结束。
四.各模块方案1.计时模式开始计时:利用外部中断1与定时中断1进行开始功能与计时功能暂停计时:利用外部中断关闭时实现暂停功能硬件复位:利用电容的冲电与放电特性实现硬件复位。
实现方法:用8051单片机做一个最小系统,计数器的复位功能通过单片机的硬件复位来实现。
秒表的显示用数码管显示,秒表的秒计数和循环通过程序控制单片机的输出来显示在数码管上。
定时器中断设计秒表

用定时器中断设计秒表用数码管显示用定时器中断设计秒表用数码管显示//此秒表有时分秒和毫秒位,最多可以记小时,有暂停和继续计时功能,独立键盘上key1为暂停和继续键,key3为复位和开始计时键//由于ms中断时间很短,所以如果中断和显示延迟关系处理不好,秒表走时不准,应注意#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar codetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef }; //时分秒的个位显示后带小数点uchar ms,s,m,h,count,count1;sbit k1=P3^0;sbit k3=P3^2;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void displays(uchar temp) //数码管动态显示秒位函数{uchar shi,ge,i;i=0;shi=temp/10;ge=temp;P0=0xef;P1=table[shi];delay(1); //必须要有延迟,动态扫描,为了不影响整个秒表八位数的扫描速率提高显示效果,延迟又不要太高,ms比较合适P0=0xdf;P1=table1[ge];i=0;delay(1);}void displayms(uchar temp) //数码管动态显示毫秒位函数{uchar shi,ge,i;i=0;shi=temp/10;ge=temp;P1=table[shi];delay(1);P0=0x7f;P1=table[ge];i=0;delay(1);}void displaym(uchar temp) //数码管动态显示分位函数{uchar shi,ge,i;i=0;shi=temp/10;ge=temp;P1=table[shi];delay(1);P0=0xf7;P1=table1[ge];i=0;delay(1);}void displayh(uchar temp) //数码管动态显示小时位函数{uchar shi,ge,i;i=0;shi=temp/10;ge=temp;P1=table[shi];delay(1);P0=0xfd;P1=table1[ge];i=0;delay(1);}void keyscan() //键盘扫描函数{if(k1==0){delay(5);if(k1==0) //检测k1确实被按下防抖动 {while(!k1); //检测松手delay(1); //检测确实松手while(!k1);if(count==1)TR0=0; //暂停定时器if(count==2){TR0=1; //定时器继续计时 count=0;}}}if(k3==0){delay(5);if(k3==0){count1++;while(!k3);delay(1);while(!k3);if(count1==1) //复位秒表{TR0=0;ms=0;s=0;m=0;h=0;}if(count1==2) //重新开始计时 {TR0=1;count1=0;}}}}void main(){TMOD=0x01;EA=1;ET0=1;TR0=1;TH0=(65536-10000)/256; //设定定时器初值TL0=(65536-10000)%6; //12M晶振时ms数为while(1){keyscan();displays(s); //数码管动态扫描秒位显示 displayms(ms); //数码管动态扫描毫秒位显示displaym(m); //数码管动态扫描秒分显示 displayh(h); //数码管动态扫描秒小时显示}}void timer0() interrupt 1 //中断服务程序{TH0=(65536-10000)/256;TL0=(65536-10000)%6;ms++;if(ms==100) //定时器中断次为s{ //把这部分放在中断中,能减少程序执行时间对中断时间的影响ms=0;s++;if(s==60){s=0;m++;}if(m==60){m=0;h++;}if(h==24) {h=0; }}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;选择定时器一 ;定时器赋初值
;一键启动,否转到 J2
;转到 J3 ;二键停止,否转到 J1 ;37H 传送到 A ;A 不等于 100 转到 J4 ;37H 清零 ;38H 传送到 A ;A 加 1 ;A 传送到 38H ;A 不等于 10 转到 J4 ;清零 38H ;调用显示程序 ;37H 加一 ;重装定时器
;显示程序结束
MOV R7,#10
;短暂的延时程序
DJNZ R7,$
RET
;延时程序结束
DB 0C0h,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H
END
编译连接后的结果:
Proteus 仿真效果图:
4
六、实验结论及体会
通过以上的分析,我们可知所设计的秒表计时器,可实现计时功能,既可以进行启动 计时,也可以通过同一个按键来实现暂停,并能通过复位清零键来使秒表记时器复位,以实 现重新记时,在记时到 9.99 秒时,秒表会自动清零,重新开始计数。
5
;显示程序,同实验五
3
DELAY: TABLE:
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
SETB P1.2
CLR P1.3
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
MOV P0,#0FFH
SETB P1.3
RET
本次课设要求我们定时器/计数器设计一个简单的秒表,能显示计时状态和结果。要求 进行电路实验或仿真,并使用汇编语言进行程序的开发。能力拓展训练使得我们又一次熟悉 了已学的汇编语言和先学的单片机的应用。通过这次能力拓展使我们的动手能得到了提升, 而且学会了独立完成一项任务。
这次设计充分检验了我自学的能力。这次的设计任务涉及到了许多软件方面的知识。 通过查阅资料,我不但巩固了所学的课本知识,而且学会了熟练使用许多软件。通过这次拓 展训练,我也意识到自己的不足,单片机方面的知识对我们工作和学习都非常重要,而我在 这方面还存在很多不足,以后还是要多多学习相关知识,虚心请教他人才能取得长足的进步, 是自己的专业知识技能更近一步,使自己在以后的学习工作有能力胜任相关的工作要求。
用 AT89C51 设计一个 3 位 LED 数码显示“秒表”,显示时间为 00~9990 毫秒,每 10 毫 秒自动加一。当按“开始”按键,开始计数,数码管显示从 00 开始每秒自动加一;按“暂 停”按键,系统暂停计数,数码管显示当时的计数;按“复位”按键,系统清零,数码管 显示 00。
利用 AT89S52 单片机的定时器,使其能精确计时。利用中断系统使其实现启动、暂停以 及复位清零的功能,P0 口输出段码数据,P1.0~P1.2 连上译码器作为位选,P1.7 和 P1.6 接 口的两个按钮分别实现启动暂停和复位功能。
N 是否为 100 Y
实验源程序:
ORG 0000H LJMP MAIN ORG 000BH
转到显示程序 变量一加一 设置变量二 (百位)
Y 是否为 10
N
显示程序
2
MAIN:
J1: J2: J3:
J4: TIMER: DISP:
LJMP TIMER ORG 0200H MOV TMOD,#01H MOV TH0,#0D8H MOV TL0,#0F0H MOV IE,#82H CLR TR0 CLR A MOV 37H,A MOV 38H,A JB P3.7,J2 CLR A MOV 37H,A MOV 38H,A SETB TR0 SJMP J3 JB P3.6,J3 CLR TR0 MOV A,37H CJNE A,#100,J4 MOV 37H,#0 MOV A,38H INC A MOV 38H,A CJNE A,#10,J4 MOV 38H,#0 LCALL DISP LJMP J1 INC 37H MOV TH0,#0D8H MOV TL0,#0F0H RETI MOV DPTR,#TABLE CLR P1.1 MOV A,38H MOVC A,@A+DPTR ANL A,#0X7F MOV P0,A LCALL DELAY MOV P0,#0FFH SETB P1.1 MOV A,37H MOV B,#10 DIV AB CLR P1.2
一、实验目的
练习单片机汇编语言编程,学习按键和定时器的设计。
二、实验设备
LY5A-L2A 单片机开发板 1 套 PC 机 1 台
三、设计内容
1.按键的设计 2.设计一程序实现按 1 键启动或按 2 键停止数码管做精确的秒计数。(要求精度达到 0.1S) 3.在 proteus 中仿真设计
四、设计原理及步骤 总体思路:
计时器采用 T0 中断实现,定时溢出中断周期为 10ms,当溢出中断后向 CPU 发出溢出中 断请求,每发出 100 次中断请求就对 1s 位(即最后一位)加一,以此类推,直到 9.99s 为 止。
五、设计程序
1
开始
选择定时器
定时器赋初值
设中断
按键一启动
按键二停止 选择定时器、调用
中断 设置变量一 (十位、个位)