|
8黑幣
哪位大佬知道怎么解決嗎,測(cè)2k以上頻率數(shù)碼管老是循環(huán)閃爍
51hei圖片20210425123953.png (90.9 KB, 下載次數(shù): 75)
下載附件
2021-4-30 18:00 上傳
單片機(jī)代碼如下
- #include <reg52.h >
- #include <intrins.h >
- #define uint unsigned int
- #define uchar unsigned char
- sbit k1=P3^0;
- sbit k2=P2^0;
- sbit LED=P2^1;
- unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- unsigned char code dispcode[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
- unsigned char count [8]={0, 0, 0, 0, 0, 0, 0, 0};
- unsigned int T0count =0;
- unsigned char time1tick =0;
- unsigned char i =0,a=0,j=0,y=0;
- unsigned int x ;
- void pulse_init (void)
- {
- TMOD =0x16;
- TH0=0x00;
- TL0=0x00;
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- ET0=1;
- ET1=1;
- EA=1;
- }
- void delay (uint ms)
- {
- unsigned char i,j;
- for(i =0; i<ms; i ++)
- for(j =0; j<250;j ++)
- {
- _nop_();
- _nop_();
- _nop_();
- }
- }
- static void time0_int (void) interrupt 1 using 0
- {
- T0count ++;
- }
- void t1(void) interrupt 3 using 0
- {
- time1tick++;
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- if (time1tick==10*a)
- {
- time1tick=0;
- TR0=0;
- TR1=0;
- ET0=0;
- ET1=0;
- }
- }
- void display (void)
- {
- x=256*T0count+TL0;
- i=7;
- while(x)
- {
- count[ i]=x%10;
- x=x/10;
- i--;
- }
- while(i--)
- {
- count[ i]=10;//修改
- }
- for(i=0;i<8;i++)
- {
- if(i==7&&j==1)
- {
- P1=0x80;
- delay(1);
- }
- P0=dispbit;
- P1=dispcode[count[ i]];
- delay(1);
- }
- }
- void main()
- {
- if(!k2)
- {
- delay(5);
- if(!k2)
- j=0;
- else
- j=1;
- }
- switch(j)
- {
- case(0):a=2; LED=1; break;
- case(1):a=20; LED=0; break;
- }
- pulse_init();
- TR1=1;
- TR0=1;
- do
- {
- display();
- }while(k2);
- }
|
|