找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1950|回复: 7
打印 上一主题 下一主题
收起左侧

我想做一个共阴极数码管计时,C52的单片机,自己制作,求帮助

[复制链接]
跳转到指定楼层
楼主
本帖最后由 liuziyi001 于 2017-12-26 10:02 编辑

我想做一个共阴极数码管计时秒表,C52的单片机,左面的开关是复位,右面第一个是启动/停止,第二个是清零

PHB`%D$5M59WYEO6AYG]P]1.png (95.13 KB, 下载次数: 21)

PHB`%D$5M59WYEO6AYG]P]1.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:767824 发表于 2020-6-16 19:55 | 只看该作者
同求,楼主知道怎么做了嘛?
回复

使用道具 举报

板凳
ID:548551 发表于 2020-6-16 22:20 | 只看该作者
没有明白你的意思?  是你自己DIY一个共阴的数码管? 还是其它意思?
回复

使用道具 举报

地板
ID:332444 发表于 2020-6-17 10:33 | 只看该作者
电路图画出来了,按电路图写代码就是,求代码?
回复

使用道具 举报

5#
ID:765181 发表于 2020-6-17 13:00 来自手机 | 只看该作者
楼主需求明确一点啊哪方面帮助,写代码遇到困难了还是其他的,一头雾水啊
回复

使用道具 举报

6#
ID:332444 发表于 2020-6-17 17:50 | 只看该作者
这种设计方案留其他IO口闲置的浪费,可参http://www.51hei.com/bbs/dpj-190432-1.html
回复

使用道具 举报

7#
ID:636538 发表于 2020-6-18 15:12 | 只看该作者
#include "reg51.h"

sbit K1=P3^0;
sbit K2=P3^1;
//sbit geweishumaguan=P2^6;
//sbit shiwei=P2^7;
unsigned char num=0;
unsigned char weixuan[]={0xef,0xbf};//数码管位选P2控制的P27、P26
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
unsigned char diswei[]={0xef,0xef};//上电显示0

void delay10ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=5;c>0;c--)
        for(b=4;b>0;b--)
            for(a=248;a>0;a--);
}
void delay2ms(void)   //误差 0us
{
    unsigned char a,b;
    for(b=133;b>0;b--)
        for(a=6;a>0;a--);
}
void InitTimer0(void)                 
{
    TMOD = 0x02;                  //定时器0计时,方式二8位自动重装
    TH0 = 0x0D8;                  //100ms
    TL0 = 0x0F0;
    EA = 1;
    ET0 = 1;
//    TR0 = 1;
}
void keyscan()                 //按键扫描
{
        if(K1==0)
        {
          delay10ms();
                if(K1==0)
                {
                   while(!K1);
                   TR0=1;//启动计时器
                }
        }
        if(K2==0)
        {
          delay10ms();
                if(K2==0)
                {
                   while(!K1);
                   TR0=0;//停止计时器
                }
        }
}
void display()
{
   unsigned char i;
   diswei[0]=num/10;
   diswei[1]=num%10;
   P0=0X00;
   P2=0XFF;
   for(i=0;i<2;i++)
   {
            P0=table[diswei[1]];
            P2=weixuan[i];
         delay2ms();
         P2|=0xff;
   }
}
void main(void)
{
   InitTimer0();
   while(1)
   {
            keyscan();
            display();
   
   }
}
void timeo() interrupt 1
{
         static unsigned char        i=0;
         i++;
         if(i==10)
         {
           i=0;
           num++;
           if(num==60)
           {
                           num=0;
           }
         }
}
回复

使用道具 举报

8#
ID:282850 发表于 2020-6-19 09:36 | 只看该作者
冲C52单片机来的,AT89C52是51单片机!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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