|
上实验课写的代码,附件里有c15的代码,proteus仿真图,自己写的。有错请指出。- #include <reg52.H>
- #define uint unsigned int
- #define uchar unsigned char
- int i=0;
- char disp_buff [] ={0, 0, 0, 0};
- uchar code table[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
- uchar flag = 0;
- void setTimer0()
- {
- TMOD|=0X01;
- EA=1;
- ET0=1;
- TH0=0XFC;
- TL0=0X18;
-
-
-
- }
- void Timer0() interrupt 1
- {
- TH0=0XFC;
- TL0=0X18;
- flag = 1;
- }
- void display(void)
- {
- char code wei[] = {8, 4, 2, 1};//λѡ′úÂë
- char i;
- for (i = 0; i < 4; i++)
- {
-
- TR0 = 1;
-
- while(!flag){
- P0 = table[disp_buff [i]];
- P2 = ~wei[i];}
- if(flag){
- TR0 = 0;
- flag = 0; }
-
- P0 = 0XFF;
-
-
-
- }
- }
-
- uchar Keyscan(void)
- {
- uchar i, j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f};
- for(j = 0; j < 4; j++) { //Ñ-»·ËÄ′Î
- P1 = Buffer[j]; //ÔúP1¸ßËÄλ·Ö±eêä3öò»¸öμíμçƽ
- temp = 0x01; //¼Æ»®ÏèÅD¶ÏP1.0λ
- for(i = 0; i < 4; i++) { //Ñ-»·ËÄ′Î
- if(!(P1 & temp)) //′óP1μíËÄ룬½Øè¡1λ
- return (i + j * 4); //·μ»Øè¡μÃμÄ°′¼üÖμ
- temp <<= 1; //ÅD¶ÏμÄ룬×óòÆò»Î»
- } }
- return 16; }
-
- void main(void)
- {
- unsigned char i, key;
- setTimer0();
- while(1) { //ÎTÏTÑ-»·
- display(); //ÏÔê¾ò»±é
- key = Keyscan(); //¶á3öò»±é¼üÅì
- if (key < 16) { //èç1ûóDèË°′¼ü
- //--------------------½øDD°′¼ü′|àí
-
- disp_buff [3] = disp_buff [2];
- disp_buff [2] = disp_buff [1];
- disp_buff [1] = disp_buff [0];
- disp_buff [0] = key;
- //--------------------′|àí½áêø£¬è¥μè′y°′¼üêí·Å
-
-
- for (i = 0; i < 20; i++) display(); //Ëé¿aÏû¶¶
- while(key != 16) {
- key = Keyscan();
- display();
- } } }
- }
复制代码
|
|