|
数码管计数0-59,计数到59的时候,蜂鸣器鸣叫一次,可以利用按键进行调节
第一次按下k1数码管停止计时,按下k2个位加,按下k3,个位减,第二次按下k1,按下k2十位加,按下k3十位减,第三次按下k1,从定时的数字继续向下走。
这个应该怎么做鸭
我自己做的有很大的问题,麻烦各位大神教教我
刚刚开始自己学单片机
只学到动态数码管
- #include "reg52.h"
- #include "intrins.h"
- typedef unsigned char u8;
- typedef unsigned int u16;
- u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- u8 code white[7]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};
- u8 i,n,j;
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
- sbit k1=P3^1;
- sbit k2=P3^0;
- sbit k3=P3^2;
- sbit k4=P3^3;
- void delay(u16 i)
- {
- while(i--);
- }
- /*
- void keypros()
- {
- if(k1==0)
- {
- delay(1000);
- if(k1==0)
- {
-
- }
- }
-
- }
- */
- void DigDisplay()
- {
- i++;
- delay(50000);
- P0=smgduan[i];
- if(i==10)
- i=0;
- }
- void DigDisplay_1()
- {
- P0=white[0];
- if(i==9)
- delay(5000);
- j++;
- P0=white[j];
- if(j==6)
- j=0;
- }
- void main()
- {
- while(1)
- {
- for(n=0;n<2;n++)
- {
- switch(n)
- {
- case(0):
- LSA=0,LSB=0,LSC=0;
- DigDisplay();
- break;
- case(1):
- LSA=1,LSB=0,LSC=0;
- DigDisplay_1();
- break;
- }
- delay(100);
- }
-
- }
- }
复制代码
|
|