单片机秒表实例
下面是用单片机来实现秒表功能的一个例子, 该源程序已在实验板上调试通过,可直接引用,并可利用软件编程的灵活性,加以拓展,实现更为复杂的功能。
#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秒钟计。深圳市芯岭技术有限公司 是一家创新的物联网整体应用解决方案商,从事芯片代理、方案开发、物联网产品研发、生产、销售,同时为众多企业提供物联网应用解决方案服务。公司具备智能家电、智能家居、智能硬件、智能门店、智慧农业等物联网解决方案,公司一直致力于物联网技术及市场推进。
相关问答
单片机秒表 实验原理?利用单片机的定时器/计数器定时和记的原理,结合显示电路、LED数码管以及按键来设计计时器,具有00-99分钟计时及显示功能;具有开始、停止和复位功能,并由按键...
51 单片机 如何定义t0为 计时器 t1为计数器?常规方法测量脉冲的频率,利用51单片机的两个定时器来测量,一个定时器0来定时,一个定时器1作为计数方式voidTimer0Init()//2毫秒@12.000MHz{...2.在51单.....
单片机 不同 计时器 工作互相影响么?定时器都是在中断方式下使用,多个定时器同时使用没有任何问题。使用它们时各有各的中断地址,互不影响。要用3个定时器,要看选的单片机有没有那么多,一般的最...
单片机 T0T1T2和什么 计时器 定时器工作方式是什么关系?51系列都有T0T1也就是计数/定时器1计数/定时器2由TMOD设置溢出模式TCON控制做计数器还是定时器及其它设置,做计数器时接受的是外部脉冲,定时器时接受的是时钟...
单片机 为什么要复位?复位的主要作用是把单片机内部的特殊功能寄存器置于初始状态,使单片机硬件、软件从一个确定的、唯一的起点开始工作。开机时称为上电复位,工作中异常时可以手...
有没有 用51 单片机 做电子钟,自动校时方面最简单的能用什么方法?[回答]我有一个显示时分秒的,可以调校。至于闹钟和秒表自己改一下就可以了。发给你了。程序只发了c文件,自己编译一下就可以农历转换需要以个数据库,我赠...
如何快速学习和掌握 单片机 知识及应用?单片机的学习只要掌握相应的方法,而且你又一点点相应的基础是完全能够快速掌握的,你需要从下面几个方面进行切入。1.学会读单片机的数据手册,了解他的外设功...
什么是 单片机 ?它由哪几部分组成?什么是 单片机 应用系统?二者...单片机是一种路芯片,模集成电路技术把具有数处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱...
c语言中怎样设置 计时器 ?-ZOL问答cutCreatTimer(&timer);//创建计时器cutStartTimer(&timer);//开始计时//do...实用单片机电子钟的制作;主程序(MAIN),如...
帮忙解释下这 单片机 电子钟原理图,谢谢-ZOL问答这个电路估计是一个计时器,右边那三个按键是控制按键,可能控制计时器的开始...这是单片机最小系统2和4分别是电源正负电容作用是滤波7是复位管脚接的是手...