智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2713|回复: 4
打印 上一主题 下一主题

[其他] 跪求赛道计时系统

[复制链接]

10

主题

46

帖子

0

精华

高级会员

Rank: 4

积分
939
QQ
威望
527
贡献
268
兑换币
28
注册时间
2010-9-7
在线时间
72 小时
跳转到指定楼层
1#
发表于 2011-3-4 22:37:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5贡献
各位帮帮忙啊

最佳答案

查看完整内容

可以参考我用51做的。有不明白的可以加我QQ350100546 #include unsigned char Seg[10]={ //共阴数码管 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 ...

12

主题

328

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1532
QQ
威望
708
贡献
426
兑换币
22
注册时间
2010-5-8
在线时间
199 小时
2#
发表于 2011-3-4 22:37:04 | 只看该作者
可以参考我用51做的。有不明白的可以加我QQ350100546

#include<REG51.H>
unsigned char Seg[10]={                        //共阴数码管
                        0x3F,        // 0
                        0x06,        // 1
                        0x5B,        // 2
                        0x4F,        // 3
                        0x66,        // 4
                        0x6D,        // 5
                        0x7D,        // 6
                        0x07,        // 7
                        0x7F,        // 8
                        0x6F        // 9
                    };
unsigned char Sel[4]={
                        0x38,        // 第1个数码管
                        0x58,        // 第2个数码管
                        0x68,        // 第3个数码管
                        0x70        // 第4个数码管
                    };
static int num_1=0,num_2=0,num_3=0,num_4=0;
static int NN=0,nnum=0,ljys=0;
unsigned char n=0;
unsigned int lj=0;//累加数
sbit xinhao=P1^0; //信号口,用光电对管
bit zd_flag=0,js_flag=0,ljys_flag=0;


//主程序***********************************************************************
void main(void)
{
        TMOD=0x11;         //定时,方式1
        TH0 = 0xDC;        //10ms进入一次中断
    TL0 = 0x00;
        ET0=1;                //允许T0中断
        TR0=1;                //启动T0
    EA=1;                //开总中断
    TF0=1;

        while(1)
        {       
                if(xinhao==0)
                {
                        if(nnum==0)
                        {
                                nnum++;//第一次通过起跑线后,此时为1吧
                                js_flag=1;//计时标志位为1,开始计时
                                ljys_flag=1;//开始在主函数累加延时,累加延时的结果是在一定时间内不管有没有信号都继续计时
                        }
                        if(zd_flag==1)                 //终点标志位为1时,当有信号则认为是车辆到达终点,停止计时
                        {
                                nnum++;
                                js_flag=0;//计时结束
                        }
                }
                if(ljys_flag==1)
                {
                        ljys++;         //第一次检测到信号后,累加延时标志位为1,在此函数达到累加延时的目的,累加延时的结果是在一定时间内不管有没有信号都继续计时
                }
                if(ljys>300)
                {
                        ljys_flag=0;//取消累加延时
                        zd_flag=1; //将终点信号置为1,此后若有车通过则停止计时
                }
                for(n=0;n<4;)
                {
                        P3=Sel[n];
                        if(n==0)
                        {
                                P2=Seg[num_1];
                        }
                        if(n==1)
                        {
                                P2=Seg[num_2];
                        }
                        if(n==2)
                        {
                                P2=Seg[num_3];
                        }
                        if(n==3)
                        {
                                P2=Seg[num_4];
                        }
                        NN++;
                        if(NN>100)
                        {       
                                NN=0;
                                n++;
                        }
                }
        }
}
//中断服务程序*************************************************************
void timer0() interrupt 1 using 1  //这部分不用解释了吧
{
        TH0 = 0xDC;           //10ms进入一次中断
    TL0 = 0x00;
        if(js_flag==1) //计时标志位
        {
                num_4++;
                if(num_4>9)
                {
                        num_4=0;
                        num_3++;
                        if(num_3>9)
                        {
                                num_3=0;
                                num_2++;
                                if(num_2>9)
                                {
                                        num_2=0;
                                        num_1++;
                                        if(num_1>5)
                                        {
                                                num_1=0;
                                                num_2=0;
                                                num_3=0;
                                                num_4=0;
                                        }               
                                }
                        }
                }
           }
        else
        {
                num_1=num_1;
                num_2=num_2;
                num_3=num_3;
                num_4=num_4;       
        }
}
回复

使用道具 举报

49

主题

3751

帖子

1

精华

顶级版主

Rank: 11Rank: 11Rank: 11Rank: 11

积分
27953

资源大师奖章论坛骨干奖章推广达人奖章优秀版主奖章热心会员奖章论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章技术大牛奖章

威望
10635
贡献
10966
兑换币
4566
注册时间
2010-11-23
在线时间
3176 小时
3#
发表于 2011-3-4 23:38:18 | 只看该作者
我不信一个能做小车的做不出来一个计时装置。
回复

使用道具 举报

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
126
威望
177
贡献
39
兑换币
0
注册时间
2011-3-8
在线时间
0 小时
4#
发表于 2011-3-8 15:03:15 | 只看该作者
赛车计时计圈系统采用美国csl射频识别系统和先进的RFID 技术,当赛车带着射频识别卡经过计时线圈时,计算机即得到赛车的有关信息,并使用专用软件对信息作一系列处理。通过电脑232 串口实时采集从读卡器收到的卡片信息,由系统软件将采集到的卡片信息与相应车辆信息对应,统计比赛情况。


北京中意  段先生 13520636073   QQ442363991
回复

使用道具 举报

56

主题

4914

帖子

3

精华

顶级版主

北京科技大学智能汽车队公共主页管理员

Rank: 11Rank: 11Rank: 11Rank: 11

积分
56131

特殊贡献奖章资源大师奖章论坛骨干奖章推广达人奖章优秀版主奖章热心会员奖章论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章

威望
19568
贡献
13933
兑换币
3365
注册时间
2010-7-22
在线时间
11315 小时
5#
发表于 2011-3-8 16:05:38 | 只看该作者
回复 4# JOYI


   用不着如此大型的系统
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 14:51 , Processed in 0.057680 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表