赞
踩
源文件包含:仿真,代码以及参考报告
仿真电路图:
代码展示:(完整版代码请加球球领取(因为某种不可抗的因素某些地方展示出来是乱码,因此此处代码部分地方不全,给您带来不便还请谅解))
- #define uint unsigned int
- #define uchar unsigned char
- #define CF P0
- uchar flag_set=0;
- uint hour=23;
- uint min = 59;
- uint sec=57;
-
- sbit K1=P3^2;
- sbit K2=P3^1;
- sbit K3=P3^0;
- sbit Key1=P3^3;
- sbit Key2=P3^4;
- sbit Key3=P3^5;
-
- sbit LED1=P2^0;
- sbit LED2=P2^1;
- sbit LED3=P2^2;
- sbit LED4=P2^3;
- sbit LED5=P2^4;
- sbit LED6=P2^5;
- sbit LED7=P2^6;
- sbit LED8=P2^7;
-
- uchar disbuff[]={0,0,0,0,0,0,0,0};
-
- uchar const num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- void Count();
- void KEY();
- void DigDisplay();
- void delay(int s)
- {
- uint i,j;
- for(i=0;i<s;i++)
- for(j=114;j>0;j--);
- }
-
- void DigDisplay()
- {
- LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=0;
- CF = disbuff[0];
- delay(5);
- CF=0x00;//ÏûÒþ
-
- LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=0;LED8=1;
- CF=disbuff[1];
- delay(5);
- CF=0x00; //ÏûÒþ
-
- LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=0;LED7=1;LED8=1;
- CF=disbuff[2];
- delay(5);
- CF=0x00; //ÏûÒþ
-
- LED1=1;LED2=1;LED3=1;LED4=1;LED5=0;LED6=1;LED7=1;LED8=1;
- CF=disbuff[3];
- delay(5);
- CF=0x00; //ÏûÒþ
-
- LED1=1;LED2=1;LED3=1;LED4=0;LED5=1;LED6=1;LED7=1;LED8=1;
- CF=disbuff[4];
- delay(5);
- CF=0x00; //ÏûÒþ
-
- LED1=1;LED2=1;LED3=0;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;
- CF=disbuff[5];
- delay(5);
- CF=0x00; //ÏûÒþ
-
- LED1=1;LED2=0;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;
- CF=disbuff[6];
- delay(5);
- CF=0x00; //ÏûÒþ LED5=1;LED6=1;LED7=1;LED8=1;
-
- LED1=0;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;
- CF=disbuff[7];
- delay(5);
- CF=0x00; //ÏûÒþ
- }
-
- void Count()
- {
- disbuff[0]=num[sec%10];
- disbuff[1]=num[sec/10%10];
- disbuff[2]=0x40; //0x40±íʾ-ºá¸Ü
- disbuff[3]=num[min%10];
- disbuff[4]=num[min/10%10];
- disbuff[6]=num[hour%10];
- disbuff[7]=num[hour/10%10];
- }
-
- void KEY()
- {
- if(Key1==0)
- {
- delay(10);
- if(Key1==0)
- {
- flag_set++;
- if(flag_set==4)
- {flag_set=0;
- TR0=1;
- }
-
- }
- while(!Key1)DigDisplay(); Count(); //°´¼üÊÍ·Å
- }
- if(flag_set==1)
- {
- //TR0=0;
- if(Key2==0)
- {
- delay(10);
- if(Key2==0)
- {
- sec++;
- if(sec>59){
- sec=0;
- }
-
- while(!Key2) DigDisplay(); Count(); }
- }
- if(Key3==0)
- {
- delay(10);
- if(Key3==0)
- {
- if(sec>0)
- sec--;
- else{
- sec=59;Count();
- }
-
-
- while(!Key3) DigDisplay(); Count(); }
- }
-
- }
- if(flag_set==2)
- {
- if(Key2==0)
- {
- delay(10);
- if(Key2==0)
- {
- min++;
- if(min>59){
- min=0;
- }
-
- while(!Key2) DigDisplay(); Count(); }
- }
- if(Key3==0)
- {
- delay(10);
- if(Key3==0)
- {
-
- if(min>0)
- min--;
- else
- min=59;Count();
-
-
- while(!Key3) DigDisplay(); Count(); }
- }
-
- }
- if(flag_set==3)
- {
-
- if(Key3==0)
- {
- delay(10);
- if(Key3==0)
- {
-
- if(hour>0)
- hour--;
- else
- hour=23;Count();
-
- while(!Key3) DigDisplay(); Count();
- }
- }
- if(Key2==0)
- {
- delay(10);
- if(Key2==0)
- {
- hour++;
- if(hour>23){
- hour=0;
- }
- }
- while(!Key2) DigDisplay(); Count();
- }
- }
- if(K1==0)
- {TR0=1;}
- while(!K1) DigDisplay();Count();
- if(K2==0)
- {
- delay(5);
-
- if(K2==0)
- {
- TR0=0; //¹Ø±Õ¶¨Ê±Æ÷
- }
- } while(!K2)DigDisplay();Count();
-
- if(K3==0)
- {
- delay(10);
- if(K3==0)
- {
- sec=0;hour=0;min=0;
- TH0=0x3c;//É趨T0³õʼֵ£¨¸ß°Ë룩
- TL0=0xb0;
- }
- }while(!K3) DigDisplay();Count();
-
- }
-
- void main()
- {
- TMOD=0x11;
- TH0=0x3c;
- TL0=0xb0;
- ET0=1;
- EA=1;
- TR0=1;
-
- while(1)
-
- {
- KEY();
- Count();
- DigDisplay();
-
-
- }
- }
-
- void time1() interrupt 1
- {
- uchar m;
- TH0=0x3c;
- TL0=0xb0;
- m++;
- if(m==20)
- {
- m=0;
- if(flag_set==0)
- {
- sec++;
- if(sec>59)
- {
- sec=0;
- min++;
- if(min>59)
- {
- min=0;
- hour++;
- if(hour>23)
- {
- hour=0;
- }
- }
- }
- }
-
- }
- }
感谢您对我分享的支持。为了进一步提供深入、精彩的代码,我考虑将源码设为付费订阅(0米即可!!!这不收费呦,如果你想支持我就请关注我的公众号!我会不定期发一些stm32和单片机工程的!希望您能用得上!)。您的支持对我来说非常非常非常重要!!如果您接受的话还请麻烦您移步微信公众号:CV工程师猫猫头1号 回复:最简单的数码管时钟
Ciallo~(∠・ω< )⌒☆
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。