导航:首页 > 操作系统 > 52单片机多人跑步秒表设计

52单片机多人跑步秒表设计

发布时间:2023-12-09 06:50:49

‘壹’ 单片机课程设计 秒表设计

#include<reg51.h>#include<stdio.h>#define dat P0
#define uchar unsigned char#define uint unsigned int
sbit seg1 = P2^0;sbit seg2 = P2^1;sbit seg3 = P2^2;sbit seg4 = P2^3;
uchar a,b,c,d;uint timeout=0,us=0,ms=0;uchar code table[]={0xC0,0xF9,0xA4,0xB0, 0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83, 0xC6,0xA1,0x86,0x8E}; //共阳
/*uchar code table[]={0x3f,0x06,0x5b,0x4f, //0~3 0x66,0x6d,0x7d,0x07, //4~7 0x7f,0x6f,0x77,0x7c, //8~b 0x39,0x5e,0x79,0x71}; //共阴 */
void delay(uint z){while(z--);}
void display(){ dat = table[a]; seg1 = 0; delay(1000); seg1 = 1; dat = 0xff; dat = table[b]-0x80; seg2 = 0; delay(1000); seg2 = 1; dat = 0xff; dat = table[c]; seg3 = 0; delay(1000); seg3 = 1; dat = 0xff; dat = table[d]; seg4 = 0; delay(1000); seg4 = 1; dat = 0xff; }
void InitTimer0(void){ TMOD = 0x01; TH0 = (65536-10000)/256; TL0 = (65536-10000)%256; EA = 1; ET0 = 1; TR0 = 1;}
void main(void){ InitTimer0(); while(1) { d = us%10; c = us/10; b = ms%10; a = ms/10; display(); }}
void Timer0Interrupt(void) interrupt 1{ TH0 = (65536-10000)/256; TL0 = (65536-10000)%256; //add your code here! timeout++; if(timeout==1) { timeout = 0; us++; if(us==100) { us = 0; ms++; { if(ms==100) { ms = 0; } } } }}

‘贰’ 52单片机不用定时中断如何实现60S秒表功能

#include<reg52.h>

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

sbit K1=P3^2;
sbit K2=P3^5;
sbit K3=P3^7;

int s,m;
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
void YS(int x); //延迟函数声明
void XS(int d); //显示函数声明

void main()
{
s=m=0;
TMOD=0x01;//设置定时器工作方式
TH0=(65536-1000)/256;//1毫秒
TL0=(65536-1000)%256;//定时器装初始值
EA=1;//开总中断
ET0=1;//开定时器 0 的中断
while(1)
{
XS(s); //显示

if(K1==0){ TR0=1; }//开启定时侍哗者器,开始计时
if(K2==0){ TR0=0; }//关闭定时器,暂停计时
if(K3==0){ s=m=0; }//清空数据
}
}

void YS(int x) //延迟子函数
{
int y;
for(;x>0;x--)
for(y=100;y>0;y--);
}

void XS(int d) //显老薯示子函数
{
char d1,d2,d3,d4;
d4=d%10; //取个位 %求余
d3=(d/10)%10; //取十芦春位
d2=(d/100)%10;
d1=(d/1000)%10;

P2=table[d4]; AA=0; YS(1); AA=1;//个位显示
P2=table[d3]; BB=0; YS(1); BB=1;//十位显示
P2=table[d2]; CC=0; YS(1); CC=1;//百位显示
P2=table[d1]; DD=0; YS(1); DD=1;//千位显示
}

void timer() interrupt 1 //中断处理子函数
{
TH0=(65536-922)/256;//1毫秒
TL0=(65536-922)%256;

m++;
if(m>=10) //判断定时是否到达1s 即 1000 ms
{ m=0; s++; }

if(s>=9999) //判断定时是否到达1s 即 1000 ms
{ s=0; }
}
绝对可用的,你试试吧,可能我的程序端口与你的不一样,自己改一下就可以了

‘叁’ 52单片机制作秒表问题

‘肆’ 单片机 秒表的设计

显示部分由于硬件连接状态不明,无法提供程序,有些硬件方案要求一次发送所有的显示内容,这种可以直接参考我下面的部分。有些硬件方案可以分别更改每一位的显示内容,这样可以利用DispFlag的不同位代表不同的显示字符位置,并且在相应计数部分程序中置位,送入主程序显示,当然显示执行完毕后清零相关位是必须的。否则主程序会不断的运行,出问题了。

unsigned char DOT,SEC,MIN,HOU,DispFlag;

//T0中断服务程序
{
//计数部分
DOT++;
if (DOT == 9) {
SEC++;
DOT=0;
}
if (SEC == 59) {
MIN++;
SEC=0;
}
if (MIN == 59) {
HOU++;
MIN=0;
}
if (HOU == 100) {
DOT=0;
SEC=0;
MIN=0;
HOU=0;
}
//置位显示标志
DispFlag = 1;
}

//主程序部分
int main(void) {
//初始化端口
//启动定时器
//开中断
while (1) {
if (DispFlag) {
//显示函数
DispFlag = 0;
}
}
}

阅读全文

与52单片机多人跑步秒表设计相关的资料

热点内容
幼儿编程教育培训多少钱 浏览:401
经常生气有什么东西能解压 浏览:900
代理服务器地址和端口可以怎么填 浏览:62
unity5手游编译模型 浏览:264
安卓无人机app源码 浏览:808
pl1编程语言 浏览:800
台达plc编程换算指令大全 浏览:174
手机上的编程游戏 浏览:108
服务器密码机有什么用 浏览:477
dos磁盘命令 浏览:955
单片机cpu52的功能 浏览:691
opc服务器怎么开发 浏览:373
觅喜是个什么app 浏览:402
加密cd机 浏览:946
社保用什么app缴纳 浏览:313
nodevlinux 浏览:582
腾讯tt服务器怎么登录密码 浏览:898
windows命令提示符 浏览:352
win7管理员权限命令 浏览:729
地图app哪个适合老年人用 浏览:74