51单片机实验板原理图 83c34643e48d44b8aef51199df6efe19?from=pc.jpg

1.流水灯实验
eb7fefeef77f49d98e311bd73db48991?from=pc.jpg
#include <REG52.h>                        
  • void delay(unsigned int Cnt)
  • {
  •         unsigned int t;
  •         while(Cnt--)                       
  •         {                       
  •                 t = 120;
  •                 while(t--);
  •         }       
  • }
  • void main( )                                        /*主程序*/
  • {       
  • P1=0xfe;       
  •         delay( 400 ); /*500为延时参数,可根据实际需要调整*/
  •         P1=0xfd;       
  •         delay( 500 );
  •         P1=0xfb;       
  •         delay( 500 );
  •         P1=0xf7;       
  •         delay( 500 );
  •         P1=0xef;       
  •         delay( 500 );
  •         P1=0xdf;       
  •         delay( 500 );
  •         P1=0xbf;       
  •         delay( 500 );
  •         P1=0x7f;       
  •         delay( 500 );
  • }
  • 复制代码

    2.数码管动态显示 3ed8a7ac1b404bc4b0dabf35b7df14be?from=pc.jpg
    #include<reg52.h>
  • #include<intrins.h>
  • #define uchar unsigned char
  • #define uint unsigned int
  • sbit duan=P2^6;
  • sbit wei=P2^7;
  • uchar code tab[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
  • 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x00,0x40}; //
  • uchar idata dis_buf[6]={17,17,17,17,17,17}; //
  • void delayms(uint i)
  • {
  • uint j;
  • for(;i>0;i--)
  • for(j=120;j>0;j--)
  • {;}
  • }
  • void main()
  • {
  • uchar k,m,n,bitcode,segcode;
  • while(1)
  • {
  • for(n=0;n<17;n++)
  • {
  • dis_buf[0]=dis_buf[1];
  • dis_buf[1]=dis_buf[2];
  • dis_buf[2]=dis_buf[3];
  • dis_buf[3]=dis_buf[4];
  • dis_buf[4]=dis_buf[5];
  • dis_buf[5]=n;
  • for(m=0;m<100;m++)
  • {
  • bitcode=0xfe;
  • for(k=0;k<6;k++)
  • {
  • P0=0xff;
  • wei=1;
  • wei=0;
  • segcode=dis_buf[k];
  • P0=tab[segcode];
  • duan=1;
  • duan=0;
  • P0=bitcode;
  • wei=1;
  • wei=0;
  • delayms(1);
  • bitcode=_crol_(bitcode,1);
  • }
  • }
  • }
  • }
  • }
  • 复制代码

    3.数码管静态显示 f3eee8371255460d8e4a7441714d268f?from=pc.jpg
    #include <reg51.h>                                
  • #define uchar unsigned char                                        
  • #define uint unsigned int                                        
  • sbit DUAN=P2^6;
  • sbit WEI=P2^7;
  • uchar code led[6]=
  • {0x00,0x01,0x02,0x03,0x04,0x05};
  • uchar data ledwei[]=
  • {0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
  • uchar data displaytab[6]=
  • { 0x06, 0x5b ,0x4f ,0x66 ,0x6d ,0x7d };
  • void delay()                                                  
  • {        uchar x,y;
  •         for(x=2; x>0; x--)
  •         for(y=250; y>0; y--);               
  • }
  • void main( )                                                
  • {
  •         uchar i;
  •         while(1)
  •         {
  •                 for (i=0;i<6;i++)
  •                         {       
  •                                 P0=displaytab[led[i]];
  •                                 DUAN=1;
  •                                 DUAN=0;               
  •                
  •                                 P0=ledwei[i];
  •                                 WEI = 1;
  •                                 WEI = 0;                       
  •                
  •                                 delay();       
  •                                 P0=0x00;                                               
  •                                 DUAN = 1;
  •                                 DUAN = 0;
  •                         }       
  •          }
  • }
  • 复制代码

    4.数码管显示相同的内容 d12287a38e624ad7ae80f637fdc27af1?from=pc.jpg
    #include <reg51.h>                                
  • #define uchar unsigned char                                        
  • #define uint unsigned int                                        
  • sbit DUAN=P2^6;
  • sbit WEI=P2^7;
  • uchar code led[6]=
  • {0x00,0x01,0x02,0x03,0x04,0x05};
  • uchar data ledwei[]=
  • {0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
  • uchar data displaytab[6]=
  • { 0x06, 0x5b ,0x4f ,0x66 ,0x6d ,0x7d };
  • void delay()                                                  
  • {        uchar x,y;
  •         for(x=2; x>0; x--)
  •         for(y=250; y>0; y--);               
  • }
  • void main( )                                                
  • {
  •         uchar i;
  •         while(1)
  •         {
  •                 for (i=0;i<6;i++)
  •                         {       
  •                                 P0=displaytab[led[i]];
  •                                 DUAN=1;
  •                                 DUAN=0;               
  •                
  •                                 P0=ledwei[i];
  •                                 WEI = 1;
  •                                 WEI = 0;                       
  •                
  •                                 delay();       
  •                                 P0=0x00;                                               
  •                                 DUAN = 1;
  •                                 DUAN = 0;
  •                         }       
  •          }
  • }
  • 复制代码

    5.脉冲计数 c39a0a29e19847d3a3e15fbd341619e2?from=pc.jpg
    #include <reg51.h>                                
  • #define uchar unsigned char                                        
  • #define uint unsigned int                                        
  • sbit DUAN=P2^6;
  • sbit WEI=P2^7;
  • sbit K1=P3^4;
  • sbit K2=P3^5;
  • sbit K3=P3^6;
  • sbit K4=P3^7;
  • uint q=9999;
  • uchar data led[6]={9,9,9,9,0,0};
  • uchar data ledwei[6]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  • uchar data displaytab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  • void delay()                                                  /*延时函数,约1mS*/
  • {        uchar x,y;
  •         for(x=2; x>0; x--)
  •         for(y=250; y>0; y--);               
  • }
  • void display()                                                         /*主程序*/
  • {
  •         uchar i;
  •                 for (i=0;i<6;i++)
  •                         {       
  •                                 P0=displaytab[led[i]];
  •                                 DUAN=1;
  •                                 DUAN=0;               
  •                
  •                                 P0=ledwei[i];
  •                                 WEI = 1;
  •                                 WEI = 0;                       
  •                
  •                                 delay();
  •                          P0=0xff;                                                /*消影2,位选全部关断*/
  •                          WEI = 1;
  •                                 WEI = 0;
  •                                 P0=0x00;                                                /*消影1,熄灭断码*/
  •                                 DUAN = 1;
  •                                 DUAN = 0;
  •                         }       
  •          }
  • void main()
  • {
  • TMOD=0x06;
  • EA=1;
  •         ET0=1;
  •         ET1=1;
  •         TH0=0xff;
  •         TL0=0xff;
  •         TH1=0xff;
  •         TL1=0xff;
  •         TR0=1;
  •         TR1=1;
  •         PT0=1;
  • while(1)
  • {
  • display();
  • }
  • }
  • void T0_int() interrupt 1
  • {
  • display();
  • display();
  • if(K1==0)
  • {                               
  • q++;
  • led[5]=q/100000;
  • led[4]=q%100000/10000;
  • led[3]=q%10000/1000;
  • led[2]=q%1000/100;
  • led[1]=q%100/10;
  • led[0]=q%10/1;
  • }
  • top:while(!K1)
  • {
  • display();
  • }
  • display();
  • display();
  • while(!K1)
  • {
  • goto top;
  • }
  • }
  • void T1_int() interrupt 3
  • {
  • display();
  • display();
  • if(K2==0)
  • {                               
  • q--;
  • led[5]=q/100000;
  • led[4]=q%100000/10000;
  • led[3]=q%10000/1000;
  • led[2]=q%1000/100;
  • led[1]=q%100/10;
  • led[0]=q%10/1;
  • }
  • top:while(!K2)
  • {
  • display();
  • }
  • display();
  • display();
  • while(!K2)
  • {
  • goto top;
  • }
  • }
  • 复制代码

    6.脉冲测量 8501366f999643a9a1681a83dfb5b933?from=pc.jpg
    #include <reg51.h>                                
  • #define uchar unsigned char                                        
  • #define uint unsigned int                                        
  • sbit DUAN=P2^6;
  • sbit WEI=P2^7;
  • sbit K1=P3^4;
  • sbit K2=P3^5;
  • sbit pulse=P3^3;
  • uchar count_high;
  • uchar count_low;
  • uint num;
  • uchar data led[6]=
  • {0,0,0,0,0,0};
  • uchar data ledwei[6]=
  • {0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  • uchar data displaytab[16]=
  • {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  • void delay()                                                  /*延时函数,约1mS*/
  • {        uchar x,y;
  •         for(x=2; x>0; x--)
  •         for(y=250; y>0; y--);               
  • }
  • void read_count()
  • {
  • count_high=TH1;
  • count_low=TL1;
  • num=count_high*256+count_low;
  • }
  • void display()                                                         /*主程序*/
  • {
  •         uchar i;
  •                 for (i=0;i<6;i++)
  •                         {       
  •                                 P0=displaytab[led[i]];
  •                                 DUAN=1;
  •                                 DUAN=0;               
  •                
  •                                 P0=ledwei[i];
  •                                 WEI = 1;
  •                                 WEI = 0;                       
  •                
  •                                 delay();
  •                                 P0=0xff;                                                /*消影2,位选全部关断*/
  •                                 WEI = 1;
  •                                 WEI = 0;
  •                                 P0=0x00;                                                /*消影1,熄灭断码*/
  •                                 DUAN = 1;
  •                                 DUAN = 0;
  •                         }       
  •          }
  • void main()
  • {
  • TMOD=0x06;
  • EA=1;
  • ET0=1;
  • TR0=1;
  • TH0=0xff;
  • TL0=0xff;
  • while(1)
  • {
  • display();
  • }
  • }
  • void T0_int() interrupt 1
  • {
  • display();
  • display();
  • if(K1==0)
  • {       
  • TMOD=0X90;                       
  • while(pulse==1);
  • TR1=1;
  • while(pulse==0);
  • while(pulse==1);
  • TR1=0;
  • read_count();
  • led[5]=num/100000;
  • led[4]=num%100000/10000;
  • led[3]=num%10000/1000;
  • led[2]=num%1000/100;
  • led[1]=num%100/10;
  • led[0]=num%10/1;
  • }
  • top:while(!K1)
  • {
  • display();
  • }
  • display();
  • display();
  • while(!K1)
  • {
  • goto top;
  • }
  • }
  • 复制代码