OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4783|回复: 10

C51单片机电子表

[复制链接]

10

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2016-7-7
在线时间
13 小时
发表于 2016-8-6 10:56:09 | 显示全部楼层 |阅读模式
1金钱
求分享C51单片机电子表的能够自由设置时间按键的程序或者思路!

最佳答案

查看完整内容[请看2#楼]

#include sbit LED1=P2^0; //数码管1声明 分钟个位 sbit LED2=P2^1; //数码管2声明 分钟十位 sbit LED3=P2^2; //数码管3声明 小时个位 sbit LED4=P2^3; //数码管4声明 小时十位 sbit LED8=P0^7; //数码管上的点 sbit LED9=P1^0; //秒表显示LED sbit S1 =P3^5; //调时声明 sbit S2 =P3^4; //调分声明 sbit S4 =P3^2; //外部中断声明 void display(unsigned shishi,unsigned shige,unsigned fenshi,unsigned f ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2016-8-20
在线时间
91 小时
发表于 2016-8-6 10:56:10 | 显示全部楼层
#include<reg52.h>
sbit LED1=P2^0;                //数码管1声明 分钟个位
sbit LED2=P2^1;                //数码管2声明 分钟十位
sbit LED3=P2^2;                //数码管3声明 小时个位
sbit LED4=P2^3;                //数码管4声明 小时十位
sbit LED8=P0^7;                //数码管上的点
sbit LED9=P1^0;                //秒表显示LED
sbit S1  =P3^5;                //调时声明
sbit S2  =P3^4;                //调分声明
sbit S4  =P3^2;                //外部中断声明
void display(unsigned shishi,unsigned shige,unsigned fenshi,unsigned fenge,unsigned dian);         //子函数申明
unsigned int b;        //函数声明
unsigned char a,e,miao,fen,shi,shishi,shige,fenshi,fenge,miaoshi,miaoge,dian;
unsigned code wei[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};        //数组
void main()
{
TMOD=0X10;                //选择定时器工作模式
TH1 =0X3C;            //设高八位初值
TL1 =0XB0;            //设低八位初值       
EA  =1;                        //开总中断
ET1 =1;                        //开T1定时器
TR1 =1;                        //启动定时器
EX0 =1;                        //打开外部中断0
while(1)
  {
    TR1 =1;                 //启动定时器

          if(a==20)                         //进入20次中断证明1秒时间到了;  成立则执行IF后面语句,不成立则跳过
         {
          miao++;                         // 加一秒
          a=0;                                //中断清0          
      LED9=0;                        //秒表灯亮         
         }
       
       
         if(miao==60)                 //检测有没有加到60秒
        {
        fen++;                                  //加一分钟
        miao=0;                                 //把秒清0
        }

         if(fen==60)                 //检测有没有加到60分钟
        {
        shi++;                                  //加一小时
        fen=0;                                 //把分钟清0
        }

        if(shi==24)                         //检测有没有加到24小时
        {
        shi=0;                                 //小时清0
        }

    display(shishi,shige,fenshi,fenge,dian);           //子函数扫描
  
           }
   
}
void display(unsigned shishi,unsigned shige,unsigned fenshi,unsigned fenge,unsigned dian)
  {
         shishi =shi%100/10;  //小时十位求余
         shige  =shi%10;          //小时个位求模
         fenshi =fen%100/10;  //分钟十位求余
         fenge  =fen%10;          //分钟个位求模
       
       
         LED1=0;
         P0=wei[shishi];           //小时十位显示
         b=500;
         while(b--);
         LED1=1;
         P0=0XFF;

         LED2=0;
         P0=wei[shige];                   //小时个位显示
         b=500;
         while(b--);
          P0=0X7F;
         LED2=1;
         P0=0XFF;

         LED3=0;
     P0=wei[fenshi];           //分钟十位显示
     b=500;
         while(b--);
         LED3=1;
     P0=0XFF;
         
     LED4=0;
     P0=wei[fenge];                   //分钟个位显示
     b=500;
         while(b--);
         LED4=1;
     P0=0XFF;

          LED2=0;
     LED8=~LED8;                        //点显示
         b=500;
         while(b--);
         LED2=1;
     P0=0XFF;
       
  }
  

void wodee() interrupt 3                   //中断组
{
a++;
TH1 =0X3C;                                           //重新装初值
TL1 =0XB0;
LED9=1;
}

void tiaoshi() interrupt 0                                         //按键中断
{
display(shishi,shige,fenshi,fenge,dian);         //进入中断给屏幕扫描
    TR1 =0;                                                                        //关闭定时器
        if(S2==0)
        {
          e=50;
          while(e--);
          if(S2==0)
          {
                fen++;
                while(!S2);
          }
          }                                                         //检测S2键,给分钟加一

   if(S1==0)
        {
          e=50;
          while(e--);
          if(S1==0)
          {
                shi++;
                while(!S1);
          }
          }                                                        //检测S2键,给小时加一

    if(fen==60)fen=0;                         //检测分钟是否加到60,是就把分钟清0
        if(shi==24)shi=0;                         //检测小时是否加到24,是就把小时清0

}

//好久以前写的了,因为我自己写的版本太多我也不知道是不是这个,依稀记得要把S4按住、在按调时调分
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-8-6 20:04:46 | 显示全部楼层
帮顶
回复

使用道具 举报

4

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-1-15
在线时间
11 小时
发表于 2016-8-10 14:36:53 | 显示全部楼层
去看看我去年发表的那个帖子,要的功能都有了,自己去搜
http://shop118132896.taobao.com/index.htm?spm=2013.1.w5002-10547694187.2.UDhjf5&v=1我的淘宝小店,欢迎光临
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2016-5-29
在线时间
6 小时
发表于 2016-8-15 10:43:27 | 显示全部楼层
这个应该不难吧,用一个时钟芯片,在用一块显示屏就好了呀
一直在路上,向着阳光向着你.......................
回复

使用道具 举报

9

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
金钱
372
注册时间
2016-8-15
在线时间
55 小时
发表于 2016-8-17 22:03:05 | 显示全部楼层
这个上网搜一下电子时钟的程序就有了,
你用的是学习板的话应该是有例程可以看的,普中科技的或是郭天祥的例程还算详细,可以看看
祝中国健儿奥运好成绩
回复

使用道具 举报

5

主题

168

帖子

0

精华

高级会员

Rank: 4

积分
780
金钱
780
注册时间
2016-5-28
在线时间
64 小时
发表于 2016-8-17 22:20:19 | 显示全部楼层
能把要求提得详细一点吗?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-7-23
在线时间
2 小时
发表于 2016-8-21 14:32:06 | 显示全部楼层
给你一个网址:www.51dianni.com ,上面有个高端版时钟
回复

使用道具 举报

65

主题

486

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2109
金钱
2109
注册时间
2015-11-14
在线时间
515 小时
发表于 2016-8-22 09:00:37 | 显示全部楼层
你没有思路,我觉得是你的C语言不过关。
回复

使用道具 举报

3

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2016-8-6
在线时间
16 小时
发表于 2016-10-13 14:27:20 | 显示全部楼层
默默顶一个
回复

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2016-10-15
在线时间
12 小时
发表于 2016-10-17 00:06:41 来自手机 | 显示全部楼层
顶一个。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 18:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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