电磁G-测速器-STC10F-简化版
jrcsh2010/01/28软件综合 IP:广东
#include<reg52.h>
#define uchar unsigned char
/*
STCF10
简化版本 利用狂加1来完成测速,省下一大堆的 各种记数补偿
这个板本是实时显现的,速度上还要慢一点
先作 12位的计时显示吧
(其实这个简化板用 汇编来写会更好更快更精准)
改进进位判断处理方法由并行if 改为串行if --方法是整出来的但是 这样作 平均值会出现 1/10的波动 还是不改革

// 数码管位 8  7  6  5  4  3   2   1
//     变量 ww10 ww9 ww8 ww7 ww6 ww5  ww4  ww3  ww2  ww1

*/
#define uint unsigned int
sbit w1=P2^7;
sbit w2=P2^6;
sbit w3=P2^5;
sbit w4=P2^4;
sbit d5=P0^5;

//sbit key1=P3^2;
sbit key2=P3^4;
sbit key3=P3^6;
sbit key4=P3^5;

void delay(uint z);
uchar aa,ww1,ww2,ww3,ww4,ww5,ww6,ww7,ww8,ww9,ww10,ww11,ww12,wc;
uchar code table[]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0,0xff};
void main()
{

EA=1;//????
EX0=1;//?????0
IT0=1;//?????0???
EX1=1;//?????1
IT1=1;//?????1???


w1=1;
w2=1;
w3=1;
w4=1;
aa=1;
ww1=0;
ww2=0;
ww3=0;
ww4=0;
ww5=0;
ww6=0;
ww7=0;
ww8=0;
ww9=0;
ww10=0;
ww11=0;
ww12=0;
wc=1;
//key1=1;
key2=1;
key3=1;
key4=1;

while(1)
{
//-------------------下--加检查aa是否=0 是着 加1
if (aa==0)
{
ww1++;
if (ww1==10)
{
ww1=0;
ww2++;
}

if (ww2==10)
{
ww2=0;
ww3++;
}

if (ww3==10)
{
ww3=0;
ww4++;
}
if (ww4==10)
{
ww4=0;
ww5++;
}
if (ww5==10)
{
ww5=0;
ww6++;
}
if (ww6==10)
{
ww6=0;
ww7++;
}
if (ww7==10)
{
ww7=0;
ww8++;
}
if (ww8==10)
{
ww8=0;
ww9++;
}
if (ww9==10)
{
ww9=0;
ww10++;
}
if (ww10==10)
{
ww10=0;
ww11++;
}
if (ww11==10)
{
ww11=0;
ww12++;
}
if (ww12==10)
{
ww12=0;

}

}

// -----------------向上--------------
//-----------向下 数码管显示----------

if(key3==0)
{
delay(4441);
wc++;
if (wc==5)
wc=4;
}

if(key4==0)
{
delay(4441);
wc--;
if (wc==0)
wc=1;
}



if(wc==1)
{

P0=table[ww1];
w4=0;
delay(1);
w4=1;

P0=table[ww2];
w3=0;
delay(1);
w3=1;
P0=0xff;

P0=table[ww3];
w2=0;
delay(1);
w2=1;

P0=table[ww4];
w1=0;
d5=0;
delay(1);
d5=1;
w1=1;
}



if(wc==2)
{

P0=table[ww5];
w4=0;
delay(1);
w4=1;

P0=table[ww6];
w3=0;
delay(1);
w3=1;

P0=table[ww7];
w2=0;
d5=0;
delay(1);
d5=1;
w2=1;

P0=table[ww8];
w1=0;
d5=0;
delay(1);
d5=1;
w1=1;

}
if(wc==3)
{

P0=table[ww9];
w4=0;
delay(1);
w4=1;

P0=table[ww10];
w3=0;
d5=0;
delay(1);
d5=1;
w3=1;

P0=table[ww11];
w2=0;
d5=0;
delay(1);
d5=1;
w2=1;

P0=table[ww12];
w1=0;
d5=0;
delay(1);
d5=1;
w1=1;
}

if(wc==4)
{

P0=table[ww4];
w4=0;
d5=0;
delay(1);
d5=1;
w4=1;

P0=table[ww8];
w3=0;
d5=0;
delay(1);
d5=1;
w3=1;

P0=table[ww10];
w2=0;
d5=0;
delay(1);
d5=1;
w2=1;

P0=table[ww12];
w1=0;
d5=0;
delay(1);
d5=1;
w1=1;


}





//***********转10进处理********



}
}


//速度检测部分*******************

void exter0() interrupt 0 //中段0 处理《子弹通过后》p3.2
{
aa=1;
}



/* 定时器中段
void exter1() interrupt 1 //中段1 处理
{
    ww6++;//理论上来说 这个功能是不会触发的


    TH0=(65535-50000)/256;
     TL0=(65535-50000)%256;
}


*/

void exter2() interrupt 2 //中段2  目标开始进入处理  p3.3
{
   aa=0;
  
    
}

//速度检测部分*******************

void delay(uint z)
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=30;y>0;y--);
}
来自:计算机科学 / 软件综合
1
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
jrcsh
学者 笔友
文章
491
回复
6730
学术分
4
2009/01/02注册,6年11个月前活动

.

主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}