樓主這樣寫個位只能顯示10毫秒,十位顯示約1秒,視覺只能看的十位,個位微亮或看不到。改一下:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit dula=P2^6;
- sbit wela=P2^7;
- unsigned char code table[]={//共陰數碼管段碼"0~f-."
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71,0x40,0x80};
- void delayms(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- void main()
- {
- unsigned char i,j,k[2];
- dula=0;
- wela=0;
- while(1)
- {
- k[0]=table[j/16];
- k[1]=table[j%16];
- P0=0x00;dula=1;dula=0;//消隱
- if(i%2==0)// i=偶數顯示十位
- {
- P0=0xef;wela=1;wela=0;
- P0=k[0];dula=1;dula=0;
- }
- else // i=奇數數顯示個位
- {
- P0=0xdf;wela=1;wela=0;
- P0=k[1];dula=1;dula=0;
- }
- i++;
- if(i>=200)//約1s
- {
- i=0;
- if(++j>=255)
- j=0;
- }
- delayms(5);
- }
- }
復制代碼 |