最低位,是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,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char code Bit[] = {8, 4, 2, 1};
unsigned char i, j;
for (i = 0; i < 4; i++) {
P0 = Tab[m[i]]; if (i == 2) P0 &= 127;
P2 = Bit[i]; for(; j > 0; j++); P2 = 0;
}
}
void wait_key()
{
while( P3_5) display();
while(!P3_5) display();
}
main()
{
TMOD = 0x02;
IE = 0x82;
while(1) {
wait_key(); TR0 = 1; TH0 = TL0 = 6;
wait_key(); TR0 = 0;
wait_key(); m[0] = m[1] = m[2] = m[3] = 0;
}
}
void time0() interrupt 1
{
counet++;
counet %= 40;
if(!counet) {
m[0]++; m[0] %= 10;
if(!m[0]) {
m[1]++; m[1] %= 10;
if(!m[1]) {
m[2]++; m[2] %= 10;
if(!m[2]) {
m[3]++; m[3] %= 10;
}}}}
}
#include<reg52.h>
sbit LED1=P2^0;
sbit LED2=P2^1;
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;s--);
}
void display()
{
P0=Tab[msecond%10];
LED4=1;
delay(5);
LED4=0;
P0=Tab[second%10]+0x80;
LED3=1;
delay(5);
LED3=0;
P0=Tab[second/10];
LED2=1;
delay(5);
LED2=0;
P0=Tab[minute%10];
LED1=1;
delay(5);
LED1=0;
}
main()
{
unsigned char i,j;
P0=0xff;
P1=0xff;
TMOD=0x01;
// TH0=0x3c;
// TL0=0xb0;
EA=1;
ET0=1;
// TR0=1;
while(1)
{
display();
if(P3_5==0)
{
for(i=20;i>0;i--)
for(j=248;j>0;j--);
if(P3_5==0)
{
keycnt++;
switch(keycnt)
{
case 1:
TH0=0x3c;
TL0=0xb0;
TR0=1;
break;
case 2:
TR0=0;
break;
case 3:
second=0;
msecond=0;
minute=0;
keycnt=0;
break;
}
while(P3_5==0);
}
}
}
}
void time0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
counet++;
if(counet==2)
{
counet=0;
msecond++;
if(msecond==10)
{
msecond=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==10)
{
minute=0;
}
}
}
}
}
只能实现显示的时间基本单位是0.1秒,不是0.01秒(不知道怎么改啊)
本回答被网友采纳用定时器
我是做单片机的
利用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单片机设计一个秒表,计时范围从00:00-59:59.
disdat[2]=sec\/10;disdat[1]=min%10;disdat[0]=min\/10;}void ext0() interrupt 0{key++;key%=3;}void t0isr() interrupt 1\/\/秒计时{TH0=0x3c;TL0=0xb0;time++;if(time==20){time=0;sec++;if(sec>59){sec=0;min++;if(min>59)...
51单片机 秒表设计
sbit D1=P3^0;sbit D2=P3^1;sbit D3=P3^2;sbit D4=P3^3;sbit key=P3^5;sbit key1=P3^7;bit j;uint y;void main(){ TMOD=0x01;TH0=(65536-10000)\/256;TL0=(65536-10000)%256;EA=1;ET0=1;TR0=1;bai=0;shi=0;while(1){ if(key==0){ j=0;} if(key1==0){...
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单片机实现秒表,要求16进制进位
51单片机实现秒表, 0~9、A、b、C、d、E、F,16进制秒表。include<reg52.h> define uint unsigned int define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar bai,shi;uint a1,a2;sbit D1...
51单片机数字秒表的程序 1、能实现0.0到9.9的计数 2、使用数码管显示计...
LED1=1;delay(5);LED1=0;} main(){ unsigned char i,j;P0=0xff;P1=0xff;TMOD=0x01;\/\/TH0=0x3c;\/\/TL0=0xb0;EA=1;ET0=1;\/\/TR0=1;while(1){ display();if(P3_5==0){ for(i=20;i>0;i--)for(j=248;j>0;j--);if(P3_5==0){ keycnt++;switch(keycnt){ case ...
基于51单片机的秒表计时怎么这么快
基于51单片机的秒表计时快是因为精度高。51单片机的定时器0的方式1计时,结果用4位数码管显示,分别为秒十位,秒个位,毫秒百位,毫秒十位。所以总共最大计时为1分钟,精确到了0.01秒。
51单片机设计一个秒表,用两个数码管(任意相邻的两个)显示。
DB 60H;"1"01H DB 0DAH;"2"02H DB 0F2H;"3"03H DB 66H;"4"04H DB 0B6H;"5"05H DB 0BEH;"6"06H DB 0E0H;"7"07H DB 0FEH;"8"08H DB 0F6H;"9"09H DB 0EEH;"A"0AH DB 3EH;"B"0BH DB 9CH;"C"0CH DB 7AH;"D"0DH DB 9EH;"E"0EH DB 8EH;"F"0FH DB...
求高手为下面的仿真图设计一个51单片机实现秒表的程序,要求:2位数码...
EA=1;ET0=1;} void T0INT() interrupt 1 \/\/定时器T0中断 方式1 { uchar time;TH0=0x3c;TL0=0xb0;time++;if(time==20) \/\/20X50ms=1s { time=0;ge++;} } void main(){ t0intinit( );while(1){ while(!KS){delay(10);if(KS)TR0=1;} while(!KP){ delay(10);if...
51单片机中用数码管做秒表时怎么用一个独立按键控制开始和暂停,即第一...
其实,控制秒表的启动和停止,很简单。要做秒表,一定要用定时器吧,假如用T0,那开始初始化时,不写TR0=1,先不启动。\\x0d\\x0a当按一下键,再启动,TR0=1,就开始计时了。\\x0d\\x0a再 按一下键,就停止,TR0=0,就不计时了。\\x0d\\x0a程序好写,先 定义一个按键\\x0d\\x0asbit ...