任某人作者
14年4个月前IP:未同步
443500
1楼
数码管版。。可能还有bug欢迎报告
#include <reg52.h>
#include <intrins.h>
#include <math.h>
#define DataPort P0
sbit rs=P1^0;
sbit e=P1^2;
sbit rw=P1^1;
sbit in=P3^5;    //t1
sbit g=P0^0;
sbit s=P0^1;
sbit b=P0^2;
sbit q=P0^3;
sbit w=P0^4;
sbit dula=P1^0;
sbit wela=P1^1;
sbit ind=P2^0;
unsigned char tfc,num,waste,stof;
unsigned int  hout,lout,c,t;
unsigned long int result,transit;
unsigned code otime[]={0x6f,0x6e,0x74,0x69,0x6d,0x65,0x3d};

code unsigned char seg7code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void DelayUs2x(unsigned char t)
{  
while(--t);
}
void delay(unsigned char t)
{
     while(t--)
      {
     //????1mS
     DelayUs2x(245);
     DelayUs2x(245);
      }
}
void led(unsigned long int dis)
{
    num=0;
    while(num!=30)
    {
        [s:9]0=seg7code[dis%10];
        dula=1;
        dula=0;
        [s:9]0=0xef;
        wela=1;
        wela=0;
        delay(1);
        [s:9]0=seg7code[dis/10%10];
        dula=1;
        dula=0;
        [s:9]0=0xf7;
        wela=1;
        wela=0;
        delay(1);
        [s:9]0=seg7code[dis/100%10];
        dula=1;
        dula=0;
        [s:9]0=0xfb;
        wela=1;
        wela=0;
        delay(1);
        [s:9]0=seg7code[dis/1000%10];
        dula=1;
        dula=0;
        [s:9]0=0xfd;
        wela=1;
        wela=0;
        delay(1);
        [s:9]0=seg7code[dis/10000%10];
        dula=1;
        dula=0;
        [s:9]0=0xfe;
        wela=1;
        wela=0;
        delay(1);
        num++;
        [s:9]0=0xff;
        wela=1;
        wela=0;
    }

    num=0;
}

void start()
{
    TH0=(65536-5000)/256;
    TL0=(65536-5000)%256;
    TH1=(65536-5000)/256;
    TL1=(65536-5000)%256;
    TR0=1;
    TR1=1;
    t=0;
    c=0;
    while(t+c==0){}
    if(t>=c)
    {
        while(c==0){}
        TR0=0;
        TR1=0;
        tfc=1;
        hout=TH0;
        lout=TL0;
    }
    else
    {
        while(t==0){}
        TR0=0;
        TR1=0;
        tfc=0;
        hout=TH1;
        lout=TL1;
    }
}

unsigned long int calculate()
{
    
        if(tfc==1)
        {
            transit=t*5000+(5000-(65536-(hout*256+lout)));
            result=100000-(10000000/(transit/50));
        }
        if(tfc==0)
        {
            transit=((c+1)*5000)-(65536-(hout*256+lout));
            result=transit*4;     //Hundred Hz is the unit
        }
    return result;
}


void initial()
{
    rs=0;
    rw=0;
    e=0;
    TMOD=0x51 ; // T1=count  T0=time
    TH0=(65536-5000)/256;
    TL0=(65536-5000)%256;
    TH1=(65536-5000)/256;
    TL1=(65536-5000)%256;
    EA=1;
    ET1=1;
    ET0=1;
    TR0=0;
    TR1=0;                
}
void main()
{
    initial();
//    while(1){c++;}
    while(1)
    {
        start();
        led(calculate());
        ind=stof;
    }
}




void count ()interrupt 3
{
    c++;
    if(t==0)
    {
        TH1=(65536-5000)/256;      //reset count while time haven't trig
        TL1=(65536-5000)%256;
    }
}

void time () interrupt 1
{
    t++;        
    if(c==0)
    {
        TH0=(65536-5000)/256;
        TL0=(65536-5000)%256;
    }

}

上几张图
DSC_0565.jpg DSC_0566.jpg DSC_0567.jpg DSC_0568.jpg DSC_0569.jpg DSC_0570.jpg [attachment=event]
+1
科创币
hx
2012/08/23
看到了一块骚板
评论
文号 / 443500

千古风流
名片发私信
学术分 9
总主题 113 帖总回复 753 楼拥有证书:学者 笔友
注册于 2011/07/24 19:02:48最后登录 2022/03/24 06:08:11
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的