如何设计这个单片机数字秒表程序?

如何设计这个单片机数字秒表程序?四位显示00.00,秒两位,0.1、0.01秒两位小数,按键k1为启动,k2为暂停,k3为清零(采用定时器0实现0.01秒计时,按键主程序查询)

根据以下程序稍做修改,就可以了 下面程序启动和暂停共用一个按键
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P1^0;
sbit key2=P1^1;
sbit wei1=P1^2;//四个个数码管的位驱动(阳极)
sbit wei2=P1^3;
sbit wei3=P1^4;
sbit wei4=P1^5;
uint a=0;
//共阴数码管七段码,转成共阳的需取反,程序中已这样做了
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
void Delay1ms(uint i) //1ms延时程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
void display(uint m)//4位显示子程序,第二位后面有个小数点
{
uchar a1,a2,a3,a4;
a1=m/1000;
a2=m/100%10;
a3=m/10%10;
a4=m%10;
P0=~(table[a1]);
wei1=0;
Delay1ms(2);
wei1=1;
P0=~(0x80|table[a2]);
wei2=0;
Delay1ms(2);
wei2=1;
P0=~(table[a3]);
wei3=0;
Delay1ms(2);
wei3=1;
P0=~(table[a4]);
wei4=0;
Delay1ms(2);
wei4=1;
}
void main(void )//主程序
{
TMOD=0x01;// 定时器1工作方式一
ET0=1;
EA=1;
TH0=(65536-10000)/256;//定时10ms
TL0=(65536-10000)%256;
TR0=0;//上电先不启动
while(1)
{
if(key1==0)//判断按键是否按下
{
Delay1ms(10);//延时消抖
if(key1==0)
{
while(key1==0);//等待按键抬起
TR0=!TR0;
}
}
if(key2==0&&TR0==0)//判断按键是否按下及是否在走时
{
Delay1ms(10);//延时消抖
if(key2==0)
{
while(key2==0);//等待按键抬起
a=0;
}
}
display(a);
}
}
//中断子程序
void Timer0(void) interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
a++;
if(a==60000) a=0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

单片机秒表实验原理
单片机秒表实验的设计原理基于定时器\/计数器的功能,通过精确控制时间的测量与显示,实现从00-99分钟的计时和显示。该实验利用单片机内置的定时器\/计数器模块,通过预设不同的定时值来控制计时的进行。当启动计时后,定时器开始计数,每经过一定时间间隔,计数器加1,以此来记录时间。与此同时,显示电路与LE...

利用51单片机设计一个秒表 (一定要按要求做到0.01秒)
最低位,是0.01s 变化一次,一秒钟,变化 100 次。这么快,人的眼睛,分辨不出来。只能看到一个 8。停止时,才能看到稳定的数字。程序如下:include<reg52.h> sbit P3_5 =P3^5;unsigned char counet, m[4] = {0,0,0,0};void display(){ unsigned char code Tab[] = { 0xc0,0xf9,...

基于51单片机,lcd1602怎么显示倒计时秒表? - 知乎
基于单片机的数字秒表设计,核心使用51系列的STC89C52单片机,结合LCD12864显示模块、语音播报模块及输入模块,实现功能如下:系统中控部分由STC89C52单片机负责,它接收输入信息并处理,控制输出。输入模块包括三个部分:DS1302时钟模块,用于获取时间、实现计时与倒计时;四个独立按键,用于设置时间、倒计时时间、控...

单片机秒表设计
用AT89C51设计一个2位的LED数码显示作为“秒表”,这应该是一个仿真题,可用两位一体的共阴数码管,用定时器T0定时,得到1秒计时。

单片机怎么设计一个0-9的一位数秒表,用定时器实现 c语言程序及其...
DisplaySecond(second);\/\/调用秒的显示子程序 } } \/\/ \/\/函数功能:定时器T0的中断服务程序 \/\/ void interserve(void ) interrupt 1 using 1 { TR0=0; \/\/关闭定时器T0 int_time ++; \/\/每来一次中断,中断次数int_time自加1 if(int_time==20) \/\/够20次中断,即1秒钟进行一次检测...

单片机如何用6个动态数码管设计一个秒表
单片机用6个动态数码管设计一个秒表定时器编写相应要求定时时间。初始化为工作模式1定时器定时时间为20ms,也就是定时器每溢出一次的时间为20ms,则溢出50次即为1秒钟。通过查询溢出标志位的值即可。

求单片机大神 写10s的秒表程序,用三个按键分别控制秒表启动、停止、清...
定时器中断子程序 ---*\/ void Timer0_isr(void) interrupt 1 { static unsigned char num;TH0=(65536-20000)\/256; \/\/重新赋值 20ms TL0=(65536-20000)%256;Display(0,8);if(GoFlag)

单片机编程制作电子秒表能显示分(0-99),秒(0-59)
、位选(决定多位数码管中哪一位显示)、段选(决定数码管显示的数字),另外还有锁存器(教材P36,可通过控制锁存端来改变数据输出的状态)。上周单片机实验课的内容是编一个秒表,在4位数码管中分别显示分和秒还有分秒,即最多可显示“9:59.9”。这里我用两个键实现了秒表的启动\/暂停和清零功能,...

51单片机的秒表计时器设计,求大神帮忙设计电路图和C语言程序!!
这个程序可以实现秒的计时,按键控制开始、暂停、清零功能,更多功能自己在看清程序的基础上进行改进。include <reg51.H>sbit P3_5 =P3^5;unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};unsigned char...

51单片机数字秒表的程序 1、能实现0.0到9.9的计数 2、使用数码管显示计...
sbit LED3=P2^2;sbit LED4=P2^3;sbit P3_5 =P3^5;unsigned char keycnt;unsigned char Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned int counet,second,msecond,minute;void delay(unsigned int m){ unsigned char s;for(;m>0;m--)for(s=124;s>0...

相似回答