test02.c

来自「8051单片机学习源码 包括定时器、键盘、液晶显示等」· C语言 代码 · 共 110 行

C
110
字号
 #include<reg52.h>
 #define uchar unsigned char
 #define ul unsigned long

sbit wela=P2^7;
sbit dula=P2^6;
sbit k2=P3^4;
sbit k3=P3^5;
sbit k4=P3^6;
	

uchar code tabledu[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

uchar code tablewe[]={
0x01,0x02,0x04,0x08,
0x10,0x20  
};

uchar count;
ul sum;

void display(uchar,uchar,uchar);
void delay(uchar);

void main()
 {
 EA=1;
 ET1=1;
 TMOD=0X10;
 TR1=1;
 while(1)
	  {	  if(k2!=0)//if k2 buttor is press down,the counting stop!
	         {
			  if(count==1)
			 	{
				 count=0;
				  if(sum!=999)
				    sum++;
				  else sum=0;
			
				}
			 }
		  
		  display(sum/100,sum%100/10,sum%10);
	  }


 }


void display(uchar a,uchar b,uchar c)
{
 P0=0x00;
 wela=1;
 wela=0;
 P0=~tabledu[a];
 dula=1;
 dula=0;
 P0=tablewe[0];
 wela=1;
 wela=0;
 delay(5);
 //------------------
 P0=0x00;
 wela=1;
 wela=0;
 P0=~tabledu[b];
 dula=1;
 dula=0;
 P0=tablewe[1];
 wela=1;
 wela=0;
 delay(5);
 //------------------
 P0=0x00;
 wela=1;
 wela=0;
 P0=~tabledu[c];
 dula=1;
 dula=0;
 P0=tablewe[2];
 wela=1;
 wela=0;
 delay(5);
 //------------------
}

 
 
 


 void timer1() interrupt 3
 {  
	TH1=(65536-10000)/256;
	TL1=(65536-10000)%256;
	count=1;
 
 }

 void delay(uchar n)
 {
 uchar a,b;
 for(a=n;a>0;a--)
 	for(b=255;b>0;b--); 
 }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?