51单片机50个实例代码_常用的51单片机代码

51单片机实验板原理图

cdd84028e455bf997a3d9a3ce3551505.png

1.流水灯实验

4aa3e48c67b8e162ad7cfd5daa8fea83.png
#include  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.数码管动态显示

68b6a44889494591eded0cdf541f64eb.png
#include#include#define uchar unsigned char#define uint unsigned intsbit 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.数码管静态显示

ee1bc928ab3fdce663680213d4fe9091.png
#include  #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.数码管显示相同的内容

401263a40797aadfea91c28423f33c67.png
#include  #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.脉冲计数

eca7eb94b6ed3eaa3586d36c58bf6e17.png
#include  #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.脉冲测量

2a604d657bc8ef1662b05812514835cc.png
#include  #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;}}
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值