51单片机50个实例代码_常用的51单片机代码
生活随笔
收集整理的這篇文章主要介紹了
51单片机50个实例代码_常用的51单片机代码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
51單片機實驗板原理圖
1.流水燈實驗
#include void delay(unsigned int Cnt){unsigned int t;while(Cnt--){t = 120;while(t--);}}void main( )/*主程序*/{ P1=0xfe;delay( 400 ); /*500為延時參數(shù),可根據(jù)實際需要調(diào)整*/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.數(shù)碼管動態(tài)顯示
#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.數(shù)碼管靜態(tài)顯示
#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.數(shù)碼管顯示相同的內(nèi)容
#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.脈沖計數(shù)
#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() /*延時函數(shù),約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,位選全部關(guān)斷*/ 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.脈沖測量
#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() /*延時函數(shù),約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,位選全部關(guān)斷*/ 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;}}總結(jié)
以上是生活随笔為你收集整理的51单片机50个实例代码_常用的51单片机代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 火影忍者手游神器有哪些(《火影忍者》72
- 下一篇: 网页中设定表格边框的厚度的属性_网页试题