技术文档

单片机秒表 用单片机设计秒表,需要的程序是什么?

小编 2024-11-24 技术文档 23 0

用单片机设计秒表,需要的程序是什么?

秒表

单片机也有中断功能,它也会中断单片机主程序正常运行。今天设计的秒表是利用单片机内部资源——定时/计数器中断,前面讲过延时1秒(s),是让单片机空耗一段时间,并且延时时间不是精确的,但是定时器中断获得时间单位就比较精确,精确程度与单片机外接晶振质量有关。

常见的单片机单片机一共有5个中断,即外部中断0、外部中断1、定时/计数中断0、定时/计数中断1、串口中断。

一、制作一个秒表

.程序设计

#include<reg52.h>//头文件

#define uchar unsigned char//宏定义

#define uint unsigned int

uchar table []={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴数码管数组

uchar num,num1,shi,ge;//定义变量

void delay(uchar a)//延时函数

{

uint i,j;

for(j=a;j>0;j--)

for(i=110;i>0;i--);

}

void display(uchar shi,uchar ge)//显示函数

{

P0=table[shi];

P1=0XFE;//1111 1110选中数码管第一位

delay(5);

P0=table[ge];

P1=0XFd;//1111 1101选中数码管第二位

delay(5);

}

void t0init()//初始化

{

TMOD=0X01;//0000 0001//定时器0工作方式1

TH0=0X3C;//装入初值,50毫秒

TL0=0XB0;//装入初值

EA=1;//打开总中断开关

ET0=1;//打开定时器0中断开关

TR0=1;//启动定时器0

}

void main()//主函数

{

t0init();

while(1)//无限循环

{

display(shi,ge);

}

}

void timer0()interrupt 1 //中断函数

{

TH0=0X3C;//装入初值

TL0=0XB0;//装入初值

num++;//变量累加

if(num==20)//1秒

{

num=0;

num1++;

shi=num1/10;//取十位

ge=num1%10;//取个位

if(num1==60)

{

num1=0;

}

}

}

3.程序解释

(1)采用定时器中断必要的语句。

TMOD=0X01;

TMOD是选择定时器工作方式。0X01是定时/计数中断0工作方式1,如果是0X10是定时/计数1工作方式1。

TH0=0X3C;//装入初值

TL0=0XB0;//装入初值

如果单片机外接晶振是12M,它的时钟周期是1/12μs(微妙),12个时钟周期是一个机器周期即1μs,定时/计数0工作方式1,最大值能定时65536μs(2的16次方),约等于65ms。如果需要定时50ms,也就是计数不是从0开始,而是从15536(65536-50000)开始,15536(十进制)换算为16进制为3CB0,即“TH0=0X3C;TL0=0XB0;”,需要计时1s,只需程序中断20次。

EA=1;//打开总中断开关

EA是总开关,好比总电闸。

ET0=1;//打开定时器0中断开关。它是定时器0的开关,好比客厅总电源开关。

TR0=1;//启动定时器0。启动定时器0好比客厅的吊灯开关。

以上语句需要写在主函数中,或者作为函数,在主函数中调用。

(2)void display(uchar shi,uchar ge)//显示函数显示部分用函数形式体现,在主函数循环调用。

(3)中断函数

既然中断产生了,那么中断以后做什么?

void timer0()interrupt 1 //中断函数

{

做什么工作;

}

“timer0”自己起的名字,代表定时/计数0中断,“interrupt”不能写错,关键是它后面的数字千万也不能搞错。中断源与序号如表3-14-1。需要注意,采用工作方式1,需要在中断函数中重新装入初值。

精确到0001秒的秒表,单片机程序设计控制实现

下面介绍如何在52单片机下做一个定时器控制秒表。

电子秒表

首先了解一下硬件部分。

秒表硬件主要的器件有:52单片机;8位数码管显示分别显示时、分、秒、毫秒;有三个按钮分别为清零、开始/停止、计数按钮。

电器连接图

秒表基本功能

可以在手机上了解一下秒表,当按下开始/停止按钮时,秒表开始计时,再按下此按钮时,秒表停止计时。

当秒表开始计时,按下清零按钮,计时不清零,按下计数按钮,计数器累加1。

当秒表停止计时,按下清零按钮,计时被清零,按下计数按钮,则为无效。

手机秒表

秒表单片机程序设计

1,需建立一个1毫秒的中断定时器如timer0()。

2,需建立一个全局变量毫秒变量,在中断里面累计计数,1毫秒加1一次。

3,需建立三个全局变量秒变量,分变量,时变量。

4,需做显示模块的处理。·

秒表开始工作时,毫秒变量在中断里面一直累计,在主循环里面做毫秒变量判断是否大于999 。如果大于999,秒变量加1,毫秒变量清零;如果秒变量大于59,分变量加1,秒变量清零;如果分变量大于59时,时变量加1,分变量清零。如果时变量大于23,时变量清零。秒表停止时,毫秒、秒、时、分变量不在累计。同时将这些变量送到数码管上显示。

相关问答

单片机秒表 怎么找?

用定时器加数码管做就可以了吧用定时器加数码管做就可以了吧

51 单片机秒表 程序

这个程序写的太乱了执行的顺序是先定义秒等一些寄存器,然后清零,并定义定时初值,开显示。再打开定时器中断,定时到,中断秒寄存器加1,加到10时清...

单片机秒表 程序 80C51-ZOL问答

单片机里面有程序存储器,还有数据存储器,数据存储器是用来存放大量数据的。。。程序存储器则是用来放程序的,都是可擦除的,至于执行的话,里面有相应的运算单...

单片机 ( 秒表 制作)?,制作 单片机 如何选??

[回答]单片机cpl指汇编指令,是一个逻辑运算指令,是单片机中直接寻址位取反的指令,作用是将存储器的指定数据中的每一位转变为逻辑反的数据。CPL为单片机Co...

求助!! 单片机 ( 秒表 制作)?,制作 单片机 费用高不高?

[回答]看什么样的舵机了,一般的小舵机不用驱动,直接接5V,GND和单片机IO口就可以了。服务热情,公司环境设备先进,价格合理品控做的不错,据说他们生意做的...

在座的大佬,请问一下!! 单片机 ( 秒表 制作)?,制作 单片机 服务...

[回答]我之前有在他们家设计的单片机,也去现场看过,用下还还算可以。可以去咨询看看服务热情,公司环境设备先进,价格合理品控做的不错,据说他们生意做的也...

关于MCS-51 单片机 、你们懂得!以下是是MCS-51 单片机 的数字时...

[最佳回答]51.h"unsignedcharcodedisptab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83...

0秒的定时器作用?

用于精确定时,如秒表,时钟。还有就是在单片机正常工作时,如果调用延时函数来延时的话,那么单片机在此期间就无法处理其他任务了,如探测其他的一些数据变化量...

投影仪清洁过滤网后,怎样把计时清零?-ZOL问答

能不能用单片机来做,如果能用单片机能做的话,我这里有程序和电路图。不过你想...1.设计一个数字秒表,要求从00:00秒开始计时,最大计时时间为99:99秒。并且具有...

我想问下电子表怎么设置闹钟_土巴兔装修问答

Light是灯,可以不用考虑。电子表一般有三个按键:上键:ST/SP;中键:MODE;下键:RESET1、设置闹钟:按二次MODE进入闹钟调整。按RESET更改选项,按ST/SP...

猜你喜欢