找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

STC89C52RC单片机实现秒表实物的电路图检查

查看数: 3376 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-7-12 17:51

正文摘要:

  大佬们好,我是一位新手,目前我需要实现: 采用两个按键和一位数码显示的单片机秒表设计的实物制作,其功能是:上电时显示提示符。按 A 键再按 B 键后,显示两键按下之间的时间 t(t <60s),单位为 ...

回复

ID:801878 发表于 2020-7-28 10:03
用AD就可以了
ID:797796 发表于 2020-7-13 20:31
另外我这程序不知道哪里不对,显示的时间好像是乱的
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint m=0;
sbit A1=P3^4;
sbit A2=P3^5;
uint count,t;
uchar d,e,f;
uchar code table[]={0x14,0xde,0x38,0x1a,0xd2,0x13,0x11,0x9e,0x10,0x12};
uchar code cnt[]={10000,1000,100,10,1};
void delay(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=67;c>0;c--)
        for(b=124;b>0;b--)
            for(a=167;a>0;a--);
}

void start()
{
        TMOD=0x01; //T0 使用工作方式 1
        TH0=(65536-1000)/256; //1ms 定时
        TL0=(65536-1000)%256;
        EA=1;
        ET0=1;
        TR0=0;
}
void time0(void) interrupt 1 //T0 中断服务子程序
{
        TH0=(65536-1000)/256;
        TL0=(65536-1000)%256;
        count++;
        if(count>=1)
        {count=0;
         t++;
         if(t>=60000)
         {t=0;}
        }
}


void display(uint t)  //显示子程序,从第一位开始逐位显示
{
         uint k=0,v;
         for(;k<5;k++)
         {
                 v=t/cnt[k]%10 ;
                 P0=table[v];
                delay();
            {for(f=23;f>0;f--)
                for(e=152;e>0;e--)
                    for(d=70;d>0;d--)
                                P0=0xFF;
                }
         }

}
void main(void)
{        start();
while(1)
{
        P0=0xb7;
        P3=0x30;
        if(P3!=0x30)
        {if(A1==0)                          //按键扫描
                {TR0=1;}
         if(A2==0)
                 {
                        TR0=0;
                        while(!A2);
                        while(P3==0x30)
                        {
                                display(t);
                        }
                }
       
        }               
}
}



ID:797796 发表于 2020-7-13 20:20
odfggf 发表于 2020-7-13 20:14
接共阴的话,1-10电阻可以不用,但是RP1是一定要的,而且Rp1上拉阻值要在680欧左右,否则亮度会非常低。
...

噢噢,要求是共阳数码管,那可以接1.6K的限流电阻和10K上拉电阻吗
ID:642838 发表于 2020-7-13 20:14
Irvingzong 发表于 2020-7-13 20:05
可是师傅要求加限流电阻R4-10而且数码管工作电流是1.8毫安,那计算得到限流电阻是1.6K,可是仿真的时候不 ...

接共阴的话,1-10电阻可以不用,但是RP1是一定要的,而且Rp1上拉阻值要在680欧左右,否则亮度会非常低。
相比之下,还是用共阳数码管,这样可以省去RP1上拉电阻,R4---R10限流电阻还是接一个的好
ID:797796 发表于 2020-7-13 20:05
xianfajushi 发表于 2020-7-13 06:31
按实际电路也一样不需要1-10电阻,数码管选用共阴,这样焊接电路元件少,花钱也少,电路显得精简得当。

可是师傅要求加限流电阻R4-10而且数码管工作电流是1.8毫安,那计算得到限流电阻是1.6K,可是仿真的时候不亮了,要降低阻值才能亮,实物也是这样吗
ID:96682 发表于 2020-7-13 08:15
哈哈,紧盯单个数码管变换的时间数字眼睛会觉得很累
ID:332444 发表于 2020-7-13 06:31
按实际电路也一样不需要1-10电阻,数码管选用共阴,这样焊接电路元件少,花钱也少,电路显得精简得当。
ID:642838 发表于 2020-7-12 21:10
R1,R2,RP1可以不需要。
ID:797796 发表于 2020-7-12 18:56
xianfajushi 发表于 2020-7-12 18:22
按仿真电路来论R1-10统统多余,按实际电路论,复位电路参数按手册要求。

那在焊接的时候需要加上这些电阻吗,其他的元件参数仿真正常那焊接的时候也没问题吗?
ID:332444 发表于 2020-7-12 18:22
按仿真电路来论R1-10统统多余,按实际电路论,复位电路参数按手册要求。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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