可以通過按鍵切換不同的閃爍頻率
0.png (30.62 KB, 下載次數: 60)
下載附件
2017-2-12 16:07 上傳
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit LED=P3^7;
- sbit LED2=P3^6;
- uchar num=0,t=0,mode_num=0,data_H,data_L,stop_num=0;
- uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,
- 0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
- void delay(uint k) //延時函數
- {
- uint m,n;
- for(m=0;m<k;m++)
- {
- for(n=0;n<120;n++);
- }
- }
- void Timer1() interrupt 3 //中斷函數 中斷方式3
- {
- t++;
- TH1=0x3C; //計數器賦初值50ms
- TL1=0xb0;
- }
- void T0_init() //開中斷
- {
- TMOD=0x11;
- TH1=0x3C;
- TL1=0xb0;
- ET1=1;
- TR1=1;
- EA=1;
- EX0=1;
- IT0=1;
- EX1=1;
- IT1=1;
- }
- void display(void) //顯示函數
- {
- P1=0x01;
- P2=tab[data_H];
- delay(1);
- P1=0x02;
- P2=tab[data_L];
- delay(1);
- }
- void dat_tim()
- {
- switch(mode_num)
- {
- case 1:
- {
- if(t==20)
- {
- LED2=0;
- LED=~LED;
- t=0;
- if(LED==1)
- {
- num++;
- }
- }
- }break;
- case 0:
- {
- if(t==2)
- {
- LED=0;
- LED2=~LED2;
- if(LED2==1)
- {
- num++;
- }
- t=0;
- }
- }
- }
- }
- void data_in(void) //將a的值分割為個位和十位函數
- {
- data_L=num%10;
- data_H=num/10;
- }
- main()
- {
- LED=0;
- T0_init();
- while(1)
- {
- dat_tim();
- data_in();
- display();
- }
- }
- void mode()interrupt 0
- {
- mode_num++;
- num=0;
- if(mode_num>1)
- {
- mode_num=0;
- }
- }
- void stop()interrupt 2
- {
- stop_num++;
- if(stop_num>1)
- {
- stop_num=0;
- }
- switch(stop_num)
- {
- case 0:
- {
- TR1=1;
- }break;
- case 1:
- {
- TR1=0;
- }break;
- }
- }
復制代碼
0.png (71.12 KB, 下載次數: 70)
下載附件
2017-2-12 16:06 上傳
下載:
LED不同頻率閃爍.rar
(49.64 KB, 下載次數: 16)
2016-12-27 15:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|