郭天祥的TX-1C学习板有用过的吗?有问题求教
时间:10-02
整理:3721RD
点击:
- //LED数码管操作
- //本章主要用数码管做计时器
- //0->3f ,1->06 ,2->
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit duanxuan=P2^6; //段选锁存
- sbit weixuan=P2^7; //位选锁存
- sbit D1=P0^0;
- uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
- 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- uchar code table2[]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
- uchar count;
- uchar a0,a1,a2,a3,a4,a5;
- bit flag2,flag3,flag4,flag5,flag6;
- void delay(uint);
- void main()
- {
- weixuan=1;
- P0=table2[5];
- weixuan=0;
- TMOD=0x01;
- TH0=0x3c;
- TL0=0xb0;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
- //个位
- weixuan=1;
- P0=table2[0];
- weixuan=0;
- delay(1);
- duanxuan=1;
- P0=table1[a5];
- duanxuan=0;
- delay(1);
-
- //十位
- if(flag2!=1)
- continue;
-
- weixuan=1;
- P0=table2[1];
- weixuan=0;
- duanxuan=1;
- P0=table1[a4];
- duanxuan=0;
- delay(1);
- //百位
- if(flag3!=1)
- continue;
- weixuan=1;
- P0=table2[2];
- weixuan=0;
- duanxuan=1;
- P0=table1[a3];
- duanxuan=0;
- delay(1);
- //千位
- if(flag4!=1)
- continue;
- weixuan=1;
- P0=table2[3];
- weixuan=0;
- duanxuan=1;
- P0=table1[a2];
- duanxuan=0;
- delay(1);
- //万位
- if(flag5!=1)
- continue;
- weixuan=1;
- P0=table2[4];
- weixuan=0;
- duanxuan=1;
- P0=table1[a1];
- duanxuan=0;
- delay(1);
- //十万位
- if(flag6!=1)
- continue;
- weixuan=1;
- P0=table2[5];
- weixuan=0;
- duanxuan=1;
- P0=table1[a0];
- duanxuan=0;
- delay(1);
-
- }
- }
- //10MS延时
- void delay(uint z)
- {
- uint x,y;
- for(y=0;y<z;y++)
- {
- x=98;
- while(x--);
- }
- }
- void time0() interrupt 1
- {
- TH0=0x3c;
- TL0=0xb0;
- count++;
- if(count==20)
- {
- count=0;
- a5++;
- if(a5==10)
- {
- a5=0;
- a4++;
- flag2=1;
- }
- if(a4==10)
- {
- a4=0;
- a3++;
- flag3=1;
- }
- if(a3==10)
- {
- a3=0;
- a2++;
- flag4=1;
- }
- if(a2==10)
- {
- a2=0;
- a1++;
- flag5=1;
- }
- if(a1==10)
- {
- a1=0;
- a0++;
- flag6=1;
- }
- if(a0==10)
- {
- a0=0;
- flag2=0;flag3=0;flag4=0;flag5=0;flag6=0;
- }
-
- }
-
- }