51单片机 秒表设计 怎么用按键控制开始 停止和清零?

如题所述

#include<reg52.h>

sbit AA=P3^4;//数码管显示用IO端口
sbit BB=P3^5;
sbit CC=P3^6;
sbit DD=P3^7;

sbit X=P2^7;//启动按钮
sbit Y=P2^6;//停止按钮
sbit Z=P2^5;//清零按钮

int aa,temp;
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极
//char table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极
void delay(int x); //延迟函数声明
void display(int d); //显示函数声明
/*******************************************************************************/
/*******************************************************************************/
void main()
{
temp=0;
TMOD=0x01;//设置定时器工作方式
TH0=(65536-922)/256;//1毫秒
TL0=(65536-922)%256;//定时器装初始值
EA=1;//开总中断
ET0=1;//开定时器 0 的中断
while(1)
{
if(X==0){TR0=1;}//开启定时器,开始计数
if(Y==0){TR0=0;}//关闭定时器,暂停计数
if(Z==0){temp=0;}//清零计数器
display(temp); //调用显示子函数
}
}
/*******************************************************************************/
/*******************************************************************************/
void delay(int x) //延迟子函数
{
int y;
for(;x>0;x--)
for(y=80;y>0;y--);
}
/*******************************************************************************/
/*******************************************************************************/
void display(int d) //显示子函数
{
char d1,d2,d3,d4;
d4=d%10; //取个位 %求余
d3=(d/10)%10; //取十位
d2=(d/100)%10; //取百位
d1=(d/1000)%10; //取千位

P1=table[d4]; AA=0; delay(1); AA=1;//个位显示
P1=table[d3]; BB=0; delay(1); BB=1;//十位显示
P1=table[d2]; CC=0; delay(1); CC=1;//百位显示
P1=table[d1]; DD=0; delay(1); DD=1;//千位显示
}
/*******************************************************************************/
/*******************************************************************************/
此程序本人编写的,绝对可用,只要你连接正确
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-10
//定义IO和变量
sbit start = P1^1;
sbit stop = P1^2;
sbit reset = P1^3;
bit flag_start;//计数标志位
uint sec;//秒
//按键功能
if(start==0)
flag_start=0;
if(stop==0)
flag_start=1;
if(reset==0)
{flag_start=0;sec=0;}
//计数程序
if(flag_start)
{sec++;}本回答被网友采纳

...数码管做秒表时怎么用一个独立按键控制开始和暂停,即第一次按下计 ...
\\x0d\\x0a当按一下键,再启动,TR0=1,就开始计时了。\\x0d\\x0a再 按一下键,就停止,TR0=0,就不计时了。\\x0d\\x0a程序好写,先 定义一个按键\\x0d\\x0asbit key=P1^1; \/\/具体是哪个 键,你自己改\\x0d\\x0a主程序中,判断按键和启动\/停止\\x0d\\x0aif(key==0)\\x0d\\...

51单片机怎么用三个按键控制分别为时钟,秒表,倒计时
在时钟状态下,用k2选择调节位,用于调时,分别选小时的十位,个位,分的十位,个位,开始计时这5个状态。k3调节位加一,只能按加一调节了。在秒表状态下,k2为计时和停止切换。k3为清0。在倒计时状态下,k2和k3作用与秒表相同。倒计时初始值只好固定的。

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单片机00.00~99.99秒表,K1开始和暂停,K2清零
\/\/开启总中断 ET0 = 1; \/\/开启定时器0中断 TR0 = 1; \/\/开启定时器0计数while(1){if(!K1) \/\/判断K1键{delay(10); \/\/按键去抖if(!K1){flag=~flag;while(!K1); \/\/等待按键弹起}}if(!K2) \/\/判断K2键{delay(10); \/\/按键去抖if(!K2){num=0;}}}void Time...

51单片机 秒表设计
\/\/ 51单片机 秒表,显示时间为0000—9999秒,启动、停止,(停止后再次启动复位)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...

单片机 按键秒表
秒表的设计程序 用89C51,外接晶振,复位电路,二个数码管,二个按键,做一个电子秒表,具体要求为用按键起停电子表,可用按键设计倒计时时间(如10S,20S,60S),并启动倒计时功能。能用按键选择以上两功能之一。三、程序代码:A_BIT EQU 20H ;数码管个位数存放内存位置 B_BIT EQU 21H ;数码管十...

单片机秒表实验原理
该秒表实验还具备开始、停止和复位功能,由按键直接控制。其中,一个按键负责启动计时、停止计时和清零功能。当按下该按键时,单片机会根据按键的状态改变计时器的工作模式,实现计时的开始或停止。而复位功能则通过清零计数器,使计时器回到初始状态,以便于进行新的计时。整个实验设计过程中,需要仔细考虑...

单片机秒表复位程序如何写???
复位就是对秒表的数据进行清零重置,这时就需要一个按键来进行人机交互功能了,这时候就要考虑有几个按键了,一般的秒表设计的时候有两个按键,一个进行启动停止,一个进行清零;1.启动和停止,启动停止的按键,就是按一下让标志位取反一次,bit flag =0;if(Key ==0){ delay(); \/\/延时10ms;...

利用51单片机设计一个秒表 (一定要按要求做到0.01秒)
停止时,才能看到稳定的数字。程序如下: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};u...

采用AT89C51单片机设计一只电子秒表,倒计时(60~1每间隔1秒倒数)?
硬件电路 有2位数码管可以显示秒表的时间 0~10秒 有3个按键 K1为开始计时 K2为停止计时 K3为清零 软件设计:K1按下则启动定时器定时 每到1秒 显示器缓冲单元内容加1 K2按下则停止定时器定时 K3按下则将显示器缓冲单元内容清零。

相似回答