技术文档

单片机 秒表计时器 单片机秒表实例

小编 2025-06-22 技术文档 23 0

单片机秒表实例

下面是用单片机来实现秒表功能的一个例子, 该源程序已在实验板上调试通过,可直接引用,并可利用软件编程的灵活性,加以拓展,实现更为复杂的功能。

#include <pic.h>

#include <math.h>

//此程序实现计时秒表功能,时钟显示范围 00.00~95.99 秒,分辨度:0.01 秒

unsigned char s0,s1,s2,s3;

//定义 0.01 秒、0.1 秒、1 秒、10 秒计时器

unsigned char s[4];

unsigned char k ,data ,sreg;

unsigned int i;

const table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90};

//不带小数点的显示段码表

const table0[10]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};

//带小数点的显示段码表//TMR0 初始化子程序

void tmint()

{

T0CS=0;//TMR0 工作于定时器方式

PSA=1;//TMR0 不用分频

T0IF=0;//清除 TMR0 的中断标志

T0IE=1;//TMR0 中断允许

}

//spi 显示初始化子程序

void SPIINIT()

{

PIR1=0;

SSPCON=0x30;

SSPSTAT=0xC0;

//设置 SPI 的控制方式,允许 SSP 方式,并且时钟下降沿发送。与"74HC595,当其//SCLK 从低到高跳变时,串行输入寄存器"的特点相对应

TRISC=0xD7;//SDO 引脚为输出,SCK 引脚为输出

TRISA5=0;//RA5 引脚置为输出,输出显示锁存信号

}

//系统其它部分初始化子程序

void initial()

{

TRISB1=0;

TRISB2=0;

TRISB4=1;

TRISB5=1;//设置与键盘有关的各口的输入输出方式

RB1=0;

RB2=0;//建立键盘扫描的初始条件

}

//SPI 传输数据子程序

void SPILED(data)

{

SSPBUF=data;//启动发送

do {

}while(SSPIF==0);

SSPIF=0;

}

//显示子程序,显示 4 位数

void dispaly()

{

RA5=0;//准备锁存

for(k=4;k>0;k--)

{

data=s[k-1];

if(k==3) data=table0[data];//第二位需要显示小数点

else data=table[data];

SPILED(data);//发送显示段码

}

for(k=0;k<4;k++)

{

data=0xFF;

SPILED(data);//连续发送 4 个 DARK,使显示好看一些

}

RA5=1;//最后给锁存信号,代表显示任务完成

}

//软件延时子程序

void DELAY()

{

for(i = 3553;--i ;) continue;

}

//键扫描子程序

void KEYSCAN()

{

while(1){

while(1)

{

dispaly();//调用一次显示子程序

if ((RB5==0)||(RB4==0)) break;

}

DELAY();//若有键按下,则软件延时

if ((RB5==0)||(RB4==0)) break;

//若还有键按下,则终止循环扫描,返回

}

}

//等键松开子程序

void keyrelax()

{

while(1){

dispaly();//调用一次显示子程序

if ((RB5==1)&&(RB4==1)) break;

} //为防止按键过于灵敏,每次等键松开才返回

}

//系统赋值初始化子程序

void inizhi()

{

s0=0x00;

s[0]=s0;

s1=0x00;

s[1]=s1;

s2=0x00;

s[2]=s2;

s3=0x00;

s[3]=s3;//s0=s1=s2=s3=0,并放入显示缓冲数组中

sreg=0x00;//tmr0 中断次数寄存器清 0

}

//中断服务程序

void interrupt clkint(void)

{

TMR0=0X13;

//对 TMR0 写入一个调整值。因为写入 TMR0 后接着的

//两个周期不能增量,中断需要 3 个周期的响应时间,

//以及 C 语言自动进行现场保护要消耗周期

T0IF=0;//清除中断标志

CLRWDT();

sreg=sreg+1;//中断计数器加 1

if(sreg==40) //中断次数为 40 后,才对 S0,S1,S2,S3 操作

{

sreg=0;

s0=s0+1;

if(s0==10){

s0=0 ;

s1=s1+1;

if(s1==10){

s1=0 ;

s2=s2+1;

if(s2==10){

s2=0;

s3=s3+1;

if(s3==10) s3=0 ;

}

}

}

}

s[0]=s0;

s[1]=s1;

s[2]=s2;

s[3]=s3;

}

//主程序

main()

{

OPTION=0XFF;

tmint();//TMR0 初始化

SPIINIT();//spi 显示初始化

initial();//系统其它部分初始化

di();//总中断禁止

while(1) {

inizhi();//系统赋值初始化

KEYSCAN();//键扫描,直到开始键按下

keyrelax();//等键松开

ei();//总中断允许

KEYSCAN();//键扫描直到停止键按下,在键扫描时有显示

keyrelax() ;//等键松开

di();//总中断禁止

KEYSCAN();//键扫描到清 0 键按下,在键扫描时有显示

keyrelax() ;//等键松开

}

}

用九齐单片机开发的电子计时器方案

电子计时器是一种新型的电子读数工具,有时候又叫做秒表。在日常生活工作学习中,能够非常有效地帮助我们更好的进行时间管理。通过电子计时器来记录运动员的数据也十分方便,特别是在各种田径赛场,电子计时器能够帮助裁判精确地记录每一位运动员的时间。芯岭技术也有一种基于九齐单片机开发的电子计时器方案 ,下文是相关说明。

一、电子计时器方案的开发原理:

电子计时器的核心是电子振荡器,工作原理是由电子振荡器的频率确定时间基数,在此基础上实现数字显示或者指针运动。振荡器的频率的精度决定计时精度,而常用的电子振荡器是晶体振荡器。

二、电子计时器方案功能:

芯岭技术工程师设计开发的电子计时器方案,主控芯片采用九齐单片机NY8A系列小家电单片机,封装型号是8引脚SOP,通过设计电路,可以实现如下功能:

1、按钮控制:按下计时键就开始计时,可以正计时和倒计时,倒计时固定以8小时计算。2、06:00---22:00为正常计算自然时间1秒钟计时器也按1秒钟计。3、可以跨两种模式计算,即从20:00---23:00,这就是相当于4个小时倒计时。4、22:00---06为加倍计算时间,即自然时间1秒钟计时器按2秒钟计。深圳市芯岭技术有限公司 是一家创新的物联网整体应用解决方案商,从事芯片代理、方案开发、物联网产品研发、生产、销售,同时为众多企业提供物联网应用解决方案服务。公司具备智能家电、智能家居、智能硬件、智能门店、智慧农业等物联网解决方案,公司一直致力于物联网技术及市场推进。

相关问答

单片机 秒和分钟的进位是如何实现的?

在单片机中,秒和分钟的进位通常通过计时器中断来实现。计时器会以固定的时间间隔触发中断,比如每秒触发一次。当计时器中断触发时,单片机会执行中断服务程序,...

单片机 不同 计时器 工作互相影响么?

定时器都是在中断方式下使用,多个定时器同时使用没有任何问题。使用它们时各有各的中断地址,互不影响。要用3个定时器,要看选的单片机有没有那么多,一般的最...

单片机 定时的时间怎么改变?

同理,我在只要在单片机当中设置计数的最大值即可。到达此值再加1溢出,置位定时计数器中断标记。四,对于长定时的处理由于定时计数器的位数一定,最大定时时...

单片机 如何用按钮实现 计时器 的暂停?

单片机要实现按钮对计时器的暂停,可以用置位程序,然后输出到计时器暂停信号端,如果须复位的话,先复位置位程序,停止置位,恢复计时。单片机要实现按钮对计时器...

51 单片机 0.1ms定时器怎么设置?

在51单片机中,要设置一个0.1毫秒的定时器,您可以按照以下步骤进行:1.确定定时器模式:选择合适的定时器模式。在51单片机中,常用的定时器模式是定时器/计数...

51 单片机计时器 溢出后是不是就自动重新从零开始计时了?

标准的51单片机,不管LZ是否说错,不管计数、还是计时,所谓溢出,都是指计数值从FF→00的跳变,既然是跳到00了,自然就是从0开始计时了。不过,现在增强型的...

响指 计时器 怎么用?

1、选择功能状态。计时器通电后自动进入功能选择状态,并自动选择功能,这时可根据实验需要选择功能每按动“选择或复位”键一次,即可更换一种功能。显示的功能...

c51 单片机 编程 计时器 时为什么要停止计时?

如果不停止计时,会出现死循环。如果不停止计时,会出现死循环。

有没有 用51 单片机 做电子钟,自动校时方面最简单的能用什么方法?

[回答]我有一个显示时分秒的,可以调校。至于闹钟和秒表自己改一下就可以了。发给你了。程序只发了c文件,自己编译一下就可以农历转换需要以个数据库,我赠...

51 单片机 中定时器的四种工作方式的各自定时范围?

工作方式013位计数模式最大范围0-8191工作方式116位计数模式最大范围0-65535工作方式28位自动重装计数模式0-255工作模式3(只有T0)TL0和TH0将被分割...

猜你喜欢