你的程序寫到有問題,我改了一下現在正常啦- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit dula = P2^6;
- sbit wela = P2^7;
- sbit KEY_1 = P3^7;//加
- sbit KEY_2 = P3^6;//減
- uchar num,shi,ge,i;
- uchar leddata[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
- 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
- 0xa1,0x86,0x8e,0x89};
- /*uchar leddata[]={
- 0x3F, //"0"
- 0x06, //"1"
- 0x5B, //"2"
- 0x4F, //"3"
- 0x66, //"4"
- 0x6D, //"5"
- 0x7D, //"6"
- 0x07, //"7"
- 0x7F, //"8"
- 0x6F, //"9"
- };*/
- void delay_xms(uint xms) //延時函數
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- void display(uchar num) //顯示函數
- {
- shi=num/10;
- ge=num%10;
- for(i=0;i<10;i++)//顯示10次增加亮度
- {
- wela = 1;
- P0 = 0xfe;
- wela = 0;
- dula = 1;
- P0 = leddata[shi];
- dula = 0;
- delay_xms(5);
- P0 = 0xff;
-
- wela = 1;
- P0 = 0xfd;
- wela = 0;
- dula = 1;
- P0 = leddata[ge];
- dula = 0;
- delay_xms(5);
- P0 = 0xff;
- }
- }
- void keyscan() //按鍵掃描
- {
- if(KEY_1==0)
- {
- delay_xms(10);
- if(KEY_1==0)
- {
- num++;
- if(num==99)
- num=0;
-
- }
- while(!KEY_1);
- }
- if(KEY_2==0)
- {
- delay_xms(10);
- if(KEY_2==0)
- {
- num--;
- if(num==0)
- num=0;
-
- }
- while(!KEY_2);
- }
- }
- void main()
- {
- num=0;
- while(1)
- {
- keyscan();
- display(num);
- }
- }
復制代碼 |