导航:首页 > 操作系统 > 秒表计时器单片机

秒表计时器单片机

发布时间:2023-12-27 02:34:16

单片机秒表复位程序如何写

秒表就是一个计时的工具,为了保证精确度,一般显示秒后面两位,就是10ms位,在单片机定时器中,赋初值1ms,变量不停的累加上去, 累加到10的时候,秒表加1,就是10ms了,
复位就是对秒表的数据进行清零重置,这时就需要一个按键来进行人机交互功能了,这时候就要考虑有几个按键了,一般的秒表设计的时候有两个按键,一个进行启动停止,一个进行清零;
1.启动和停止,启动停止的按键,就是按一下让标志位取反一次,
bit flag =0;
if(Key ==0)
{
delay(); //延时10ms;这个程序比较常见,就不写出来了

if(key == 0)

{
flag = !flag; //消抖后检测到按键还是按下状态,就把标志位取反;

while(!Key); //等待松手
}

}
同时在定时器中断里, 根据标志位对 及时变量进行累加
if(flag)

{
t++;

if(t >= 10)

{
t = 0;

ms++;

}

}

就这样 标志位就表示的秒表启动停止的,

2 。 复位,复位顾名思义就是 返回到初始状态,就是0 ; 一般复位是在秒表停止的状态对秒表进行清零;
先在主程序里检测按键

bit clc = 0;
if(key1 == 0)
{
delay(); // 延时10ms

if(Key1 == 0)

{
clc = 1;

while(!Key1); //等待松手

}
}

然后在定时器中断里进行对变量的数值进行清零
if(!flag ) //在停止状态
{
if(clc)

{
ms = 0;

clc = 0;
}
}
到此 秒表的启动停止 和复位就完成了 ,

⑵ 单片机秒表课程设计,急求!!!!

原理图如下,

程序如下:

;=================================================

;寄存器分配定义

;=================================================

LED_BUF EQU 50H ;显示数据首址

COUNTER_INT EQU 3BH ;中断计数器

SECOND EQU 3DH ;秒单元

;=================================================

;常数定义

;=================================================

CN_COUNT_INT EQU 100 ;10ms * 100 = 1S

SET_MODEL EQU 0FFH ;完全译码模式

SET_BRIGHT EQU 04H ;占空比为15/32;显示亮度;

SET_LIMIT EQU 01H ;2位显示方式;

SET_NORMAL EQU 01H ;测试模式

SET_START EQU 01H ;进入启动工作方式?

;=================================================

;管脚分配定义

;=================================================

m7219_DIN BIT P3.0

m7219_LOAD BIT P3.1

m7219_CLK BIT P3.2

KEYSTART BIT P1.0

KEYRESET BIT P1.1

;============================================

;模拟主程序

;===========================================


org 0000h

ajmp main

ORG 000BH

LJMP Timer0Interrupt

org 0030h

main:

mov sp,#70h


lcall Init_M7219

lcall InitTimer0

; MOV SECOND,#95H ;TEST

Loop:

CALL disp

key_reset:

SETB KEYRESET

JB KEYRESET,key_start

; DELAY

NOP

NOP

NOP

JB KEYRESET,key_start

JNB KEYRESET,$

CLR TR0

MOV A,#0

MOV SECOND,A

MOV led_buf,A

MOV LED_BUF+1,A

JMP key_SCAN_END

key_start:

SETB KEYSTART

JB KEYSTART,key_SCAN_END

; DELAY

NOP

NOP

NOP

JB KEYSTART,key_SCAN_END

JNB KEYSTART,$

SETB TR0

key_SCAN_END:


JMP loop

;===========================================

InitTimer0:;10ms一次中断

MOV TMOD,#01H

MOV TH0,#0D8H

MOV TL0,#0F0H

SETB EA

SETB ET0

RET

;===========================================

Timer0Interrupt:

PUSH DPH

PUSH DPL

PUSH ACC

MOV TH0,#0D8H

MOV TL0,#0F0H

;========================

INC COUNTER_INT

MOV A,COUNTER_INT ;10ms 计数值加1

CJNE A,#CN_COUNT_INT,Timer0Interrupt_EXIT

MOV COUNTER_INT,#0

MOV A,SECOND

CJNE A,#99H,Timer0Int_sec

CLR TR0;关闭计时

JMP Timer0Interrupt_EXIT

Timer0Int_sec:

ADD A,#01 ;秒加1

DA A

MOV SECOND,A

SWAP A

ANL A,#0fH

MOV led_buf,A

MOV A,SECOND

ANL A,#0FH

MOV LED_BUF+1,A

;========================

Timer0Interrupt_EXIT:

POP ACC

POP DPL

POP DPH

RETI

;====================================================

; function:Init_M7219 ;初始化max719

; input: ------------

; output: ----------

; usage: a,b

;====================================================

Init_M7219: ;初始化Max7219

MOV a,#0bh ;设置扫描界限

MOV b,#set_limit ;设置位数

lcall w_7219

MOV a,#09h ;设置译码模式

MOV b,#set_model ;00h非译码模式;ffh为BCD译码模式

lcall w_7219

MOV a,#0ah ;设置亮度

MOV b,#set_bright ;15/32亮度

lcall w_7219

MOV a,#0fh ;设置工作方式

MOV b,#set_normal ;正常工作方式

lcall w_7219

MOV a,#0ch ;进入启动工作方式

MOV b,#set_start

lcall w_7219

RET


;===================================================

; function:disp ;显示子程序

; input: r0

; output: -----------

; usage: r0,r3,r4,a,b

;===================================================

disp:

MOV r0,#led_buf

MOV r4,#01h

MOV r3,#set_limit

INC r3

disp1:

MOV a,@r0

MOV b,a

MOV a,r4

lcall w_7219

INC r0

INC r4

djnz r3,disp1

RET


;===================================================

; function:w_7219 ;显示驱动程序;

; input: a ;传送7219的地址

; b ;传送7219的数据

; output:-------------

; usage: a,r2

;====================================================

w_7219:

CLR M7219_clk

CLR M7219_din

CLR M7219_load ;置load=0

lcall sd_7219 ;传送7219的地址

MOV a,b

lcall sd_7219 ;传送数据

setb M7219_load ;数据装载

CLR M7219_din

RET

;=================================================

; function:sd_7219 ;向7219传送数据或地址子程序

; input: a

; output: max7219

; usage: a, r2

;==================================================

sd_7219: ;向7219送地址或数据

MOV r2,#08h

c_sd:

CLR C

CLR M7219_clk

RLC a

MOV M7219_din,c ;准备数据

NOP

setb M7219_clk ;上升沿将数据传入

NOP

NOP

CLR M7219_clk

djnz r2,c_sd

RET


⑶ 单片机设计制作9S倒计时器~

1.显示。2.启动/停止。3.重置30秒
中的第一个和第三个功能有的,至于第2个,程序里是一直倒计时,结束了
就再重置30,继续倒计时。
如果你需要键盘按键的话,只需要按键将中断关了或者开了,就可以。

#include <reg52.h>

code unsigned char tab[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//共阳数码管 0-9

unsigned char Dis_Shiwei;//定义十位
unsigned char Dis_Gewei; //定义个位
void delay(unsigned int cnt)
{
while(--cnt);
}

main()
{

TMOD |=0x01;//定时器设置 10ms in 12M crystal
TH0=0xd8; // 初值55536,计数10000次,每次1us,总计10ms
TL0=0xf0;
IE= 0x82; //打开中断
TR0=1; //启动计数器TR0

while(1)
{
P0=Dis_Shiwei;//显示十位
P2=0xFD; // P2=1111 1101
delay(300);//短暂延时
P0=Dis_Gewei; //显示个位
P2=0xFE; // P2=1111 1110
delay(300);
}

}
/********************************/
/* 定时中断 */
/********************************/
void tim(void) interrupt 1 using 1 //前1为定时中断TR0
{
static unsigned char second=30,count; //初值30
TH0=0xd8;//重新赋值
TL0=0xf0;
count++;
if (count==100)
{
count=0;
second--;//秒减1
if(second==0)
{ //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序
second=30; //减到0是重新赋值99
}
Dis_Shiwei=tab[second/10];//十位显示值处理
Dis_Gewei=tab[second%10]; //个位显示处理

}
}

⑷ 单片机计时器原理

单片机用一个振荡器(比如晶体振荡器)作为时间基准,和石英手表里面的振荡器差不多,振荡器每震荡一次的时间间隔是一样的,可以通过振荡器的参数算出来的,每次振荡会产生一个脉冲信号给单片机,单片机只要数数字就能计算时间了。

⑸ 单片机秒表功能实现的原理

利用单 片机内定时器,一次定时50ms,定义4 个变量,分别是时、 分、秒和中断次数,每中断一次中断次数变量加1,累积20次,即是1S,然后秒加1,够60秒后秒清0,分加1,60 分后,分清0,时加1,24小时后 ,小时清0,这些都在中断程序中完成,主程序中不断地显示时间,这就是一个时钟。在此基础上,增加按键控制,可以调整时间,设定闹钟,使功能更加完善。

阅读全文

与秒表计时器单片机相关的资料

热点内容
程序员三高 浏览:173
pythonfiddle 浏览:215
韩信分油总共有几种算法 浏览:941
程序员思维方案 浏览:970
编译环境要装c盘吗 浏览:648
单片机生成pwm 浏览:206
线上租车有什么app 浏览:908
php程序修改 浏览:684
下列能查找文件或文件夹的操作是 浏览:314
遥感科学与技术算法待遇 浏览:136
cad标注半径命令 浏览:367
打卡领购app邀请码怎么填 浏览:336
编程访问权限冲突 浏览:152
桌面运维如何转服务器运维 浏览:627
tomcat如何设置服务器 浏览:679
php编译支持mysql 浏览:817
mir4手游安卓版怎么玩国际服 浏览:23
服务器程序怎么删除 浏览:657
阿里年薪70万程序员名单照片 浏览:575
android定制输入法 浏览:758