51单片机经典实例源码.docx

上传人:牧羊曲112 文档编号:3059747 上传时间:2023-03-10 格式:DOCX 页数:20 大小:39.90KB
返回 下载 相关 举报
51单片机经典实例源码.docx_第1页
第1页 / 共20页
51单片机经典实例源码.docx_第2页
第2页 / 共20页
51单片机经典实例源码.docx_第3页
第3页 / 共20页
51单片机经典实例源码.docx_第4页
第4页 / 共20页
51单片机经典实例源码.docx_第5页
第5页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《51单片机经典实例源码.docx》由会员分享,可在线阅读,更多相关《51单片机经典实例源码.docx(20页珍藏版)》请在三一办公上搜索。

1、51单片机经典实例源码#include #include LCD1602.h uint Num=0; uchar NumCode4=0,0,0,0; /-中断加一- void my_INT1(void) interrupt 0 Num+; /- void Disp uint m; NumCode0=Num/1000; NumCode1=Num%1000/100; NumCode2=Num%100/10; NumCode3=Num%10; for(m=0;m4;m+) LCD_Disp(0,5+m,NumCodem+0x30); /- void main IT0=1;EA=1;EX0=1; LC

2、D_Init; while(1) Disp; #include #include LCD1602.h uint Num=3728; uchar NumCode4=0,0,0,0; /-自动加一- void Disp uchar m; NumCode0=Num/1000; NumCode1=Num%1000/100; NumCode2=Num%100/10; NumCode3=Num%10; for(m=0;m4;m+) LCD_Disp(0,6+m,NumCodem+0x30); /- void main LCD_Init; while(1) Disp; Num+; Delay(50000);

3、 #include #include LCD1602.h uint Num=5432; uchar NumCode4=0,0,0,0; /-定时器T0按键加一- void T0Init TMOD=0x0d; TH0=5432/256; TL0=5432%256; TR0=1; /- void Disp int m; NumCode0=Num/1000; NumCode1=Num%1000/100; NumCode2=Num%100/10; NumCode3=Num%10; for(m=0;m4;m+) LCD_Disp(0,5+m,NumCodem+0x30); /- void main T0

4、Init; LCD_Init; while(1) Num=TH0*256+TL0; Disp; #include #define uchar unsigned char uchar T0Num; sbit LED=P10; /-定时器TO使LED自动一秒闪一下- void T0Init TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0=1; ET0=1; EA=1; /- void T0Sever interrupt 1 TH0=(65536-10000)/256; TL0=(65536-10000)%256; T0Num

5、+; if(T0Num=100) LED=LED; T0Num=0; /- void main T0Init; while(1) #include #define uchar unsigned char #define uint unsigned int uchar num10= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ; uint shu; /-外部中断按键加减一- void my_INT1(void) interrupt 0 shu-; /- void my_INT2(void) interrupt 2 shu+; /- void

6、 main shu=5; IT0=1;EA=1;EX0=1; IT1=1;EA=1;EX1=1; while(1) P2=numshu; if(shu=10)shu=0; if(shu=-1)shu=9; #include #define uint unsigned int #define uchar unsigned char uchar Disp4=0x9a,0xca,0xa9,0xac; /-交通灯- void delay3ms(uchar i) uint n,j,k; for(;i=1;i-) for(n=2;n=1;n-) for(j=250;j=1;j-) for(k=200;k=

7、1;k-); /- void main while(1) P1=Disp0;delay3ms(4); P1=Disp1;delay3ms(1); P1=Disp2;delay3ms(4); P1=Disp3;delay3ms(1); #include #define uchar unsigned char uchar T0Num=0; uchar PWM=50; sbit LED=P37; /-PWM频率- void T0Init TMOD=0x01; TH0=(65536-100)/256;/ 0.1ms TL0=(65536-100)%256; ET0=1; EA=1; TR0=1; /-

8、 void Ex0Init IT0=1; EX0=1; EA=1; /- void main T0Init; Ex0Init; while(1) /- void T0Server interrupt 1 TH0=(65536-100)/256;/ 0.1ms TL0=(65536-100)%256; T0Num+; if(T0Num=PWM) LED=1; if(T0Num=100) T0Num=0; LED=0; /- void Int0Server interrupt 0 PWM=PWM+5; if(PWM=100) PWM=0; if(Flagls=1) Flagls=0; Serial

9、Send(LedCodei); i+; if(i7) include #define uchar unsigned char uchar i,Flagls,Scon,T0Num; uchar code LedCode8=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; /-串口74LS164驱动流水灯- void T0_Init TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; /- void Serial_Init Scon=0x00; /- void Se

10、rialSend (uchar ch) SBUF=ch; while(TI=0) TI=0; /- void main T0_Init; Serial_Init; while(1) i=0; /- void Toserver interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; T0Num+; if(T0Num20) T0Num=0; Flagls=1; #include #define uchar unsigned char #define uint unsigned int uchar DispCode10=0xfc,0x60,

11、0xda,0xf2,0x66, 0xb6,0x3e,0xe0,0xfe,0xe6; uint Num=9995; uchar NumCode4=0,0,0,0; uchar T1Num; bit Flag1s=0; /-串口74LS164驱动数码管- void SerialInit SCON=0x00; /- void T1Init TMOD=0x10; TH1= -10000/256; TL1= -10000%256; TR1=1; ET1=1; EA=1; /- void Disp uchar i; NumCode0=Num/1000; NumCode1=Num%1000/100; Num

12、Code2=Num%100/10; NumCode3=Num%10; for(i=0;i9999) Num=0; #include #define uchar unsigned char #define uint unsigned int uchar T0Num; bit Flag1s=0; uchar DispCode10=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f; /-MUC_MUC串口自发自收- void SerialInit SCON=0x50; /方式1 允许接收 PCON=0x00; /串口波特率不加倍 TMOD|=0x2

13、0; /定时器1,方式2 TH1=0xfd; /波特率为9600 TL1=0xfd; TR1=1; /启动定时器 ES=1; EA=1; /- void T0Init TMOD|=0x01; TH0=-10000/256; TL0=-10000%256; ET0=1; TR0=1; EA=1; /- void main uchar k; SerialInit; T0Init; while(1) if(Flag1s=1) Flag1s=0; SBUF=DispCodek; k+; if(k9) k=0; /- void SerialServer interrupt 4 if(RI=1) RI=0

14、; P2=SBUF; else TI=0; /- void T0Server interrupt 1 TH0=-10000/256; TL0=-10000%256; T0Num+; if(T0Num=100) T0Num=0; Flag1s=1; uchar k; SerialInit; T1Init; T0Init; while(1) if(Flag1s=1) #include #define uchar unsigned char #define uint unsigned int uchar T0Num; bit Flag1s=0; uchar DispCode10=0x3f,0x06,

15、0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f; /-两机通信- void SerialInit SCON=0x50; /方式1 允许接收 PCON=0x00; /串口波特率不加倍 ES=1; EA=1; /- void T1Init TMOD=0x20; /定时器1,方式2 TH1=0xfd; /波特率为9600 TL1=0xfd; TR1=1; /启动定时器 /- void T0Init TMOD|=0x01; TH0=-10000/256; TL0=-10000%256; ET0=1; TR0=1; EA=1; /- void main Flag1s=0

16、; P2=DispCodek; SBUF=DispCodek; k+; if(k9) k=0; /- void SerialServer interrupt 4 if(RI=1) RI=0; else TI=0; /- void T0Server interrupt 1 TH0=-10000/256; TL0=-10000%256; T0Num+; if(T0Num=100) T0Num=0; Flag1s=1; #include #define uchar unsigned char uchar Ch; /-两机通信- void SerialInit SCON=0x50; /方式1 允许接收

17、 PCON=0x00; /串口波特率不加倍 ES=1; EA=1; /- void T1Init TMOD=0x20; /定时器1,方式2 TH1=0xfd; /波特率为9600 TL1=0xfd; TR1=1; /启动定时器 /- void main SerialInit; T1Init; while(1) P2=Ch; /- void SerialServer interrupt 4 if(RI=1) RI=0; Ch=SBUF; else TI=0; #include #define uchar unsigned char uchar DispCode10=0x3f,0x06,0x5b,

18、0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f; uchar Num=5; /-多机通信- void ExInit IT0=1; IT1=1; EX0=1; EX1=1; EA=1; /- void SerialInit SCON=0xd0; /方式3 允许接收 PCON=0x00; /串口波特率不加倍 TMOD=0x20; /定时器1,方式2 TH1=0xfd; /波特率为9600 TL1=0xfd; TR1=1; /启动定时器 ES=1; EA=1; /- void SBUFSend(uchar Ch) SBUF=Ch; while(TI=0) TI=0; /- v

19、oid SendControl(uchar Addr,uchar Data) TB8=1; SBUFSend(Addr); TB8=0; SBUFSend(Data); /- void main SerialInit; ExInit; while(1) /- void SerialServer interrupt 4 uchar Ch; if(RI=1) RI=0; Ch=SBUF; if(Ch=b) P2=DispCode1; if(Ch=c) P2=DispCode2; else TI=0; /- void Ex0Server interrupt 0 Num+; if(Num9) Num=

20、0; SendControl(b,Num); /- void Ex1Server interrupt 2 Num-; if(Num=255) Num=9; SendControl(c,Num); * #include #define uchar unsigned char uchar DispCode10=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f; /-多机通信- void SerialInit SCON=0xf0; /方式3 允许接收,SM2=1 PCON=0x00; /串口波特率不加倍 TMOD=0x20; /定时器1,方式2 T

21、H1=0xfd; /波特率为9600 TL1=0xfd; TR1=1; /启动定时器 ES=1; EA=1; /- void SBUFSend(uchar Ch) SBUF=Ch; while(TI=0) TI=0; /- void main SerialInit; while(1) /- void SerialServer interrupt 4 uchar Ch; if(RI=1) RI=0; Ch=SBUF; if(RB8=1) /地址 if(Ch=b) SM2=0; /是自己的地址,置SM2=0,开始接收数据 SBUFSend(b); else SM2=1; /不是自己的地址,置SM2

22、=1。 if(RB8=0) P2=DispCodeCh; SM2=1;/接收完数据,准备下次接收地址。 * #include #define uchar unsigned char uchar DispCode10=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f; /-多机通信- void SerialInit SCON=0xf0; /方式3 允许接收,SM2=1 PCON=0x00; /串口波特率不加倍 TMOD=0x20; /定时器1,方式2 TH1=0xfd; /波特率为9600 TL1=0xfd; TR1=1; /启动定时器 ES=

23、1; EA=1; /- void SBUFSend(uchar Ch) SBUF=Ch; while(TI=0) TI=0; /- void main SerialInit; while(1) /- void SerialServer interrupt 4 uchar Ch; if(RI=1) RI=0; Ch=SBUF; if(RB8=1) /地址 if(Ch=c) SM2=0; /是自己的地址,置SM2=0,开始接收数据 SBUFSend(c); else SM2=1; /不是自己的地址,置SM2=1。 if(RB8=0)/数据 P2=DispCodeCh; SM2=1;/接收完数据,准

24、备下次接收地址。 #include #define uchar unsigned char #define uint unsigned int uchar T0Num=0; sbit DAWR=P36; uchar code SinTab128= 64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106, 109,111,113,115,117,118,120,121,123,124,125,126,126, 127,127,127,127,127,127,127,126,126,125,124,123,121, 120,118,117,115,11

25、3,111,109,106,104,102,99,96,94,91, 88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,39, 36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1, 1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23, 25,28,31,33,36,39,42,45,48,51,54,57,60; /- DAC0832- void T0Init TMOD=0x01; TH0=(65536-1000)/256; TL0=(65536-

26、1000)%256; TR0=1; ET0=1; EA=1; /- void DA(uchar DAValue) DAWR=0; P0=DAValue; DAWR=1; /- void main IT0=1;EA=1;EX0=1; IT1=1;EA=1;EX1=1; T0Init; while(1) /- void T0Server interrupt 1 TH0=(65536-1000)/256; TL0=(65536-1000)%256; DA(SinTabT0Num); T0Num+; if(T0Num127) T0Num=0; /- void Disp for(i=0;i3; AdVa

27、lue=Sum*19.685; Ad; Sum=Sum+AdValue; #include #define uchar unsigned char #define uint unsigned int uchar DispCode10=0xfc,0x60,0xda,0xf2,0x66,0xb6,0x3e,0xe0,0xfe,0xe6; uchar NumCode4=0,0,0,0; uchar xdata Adc; uint AdValue; uchar T0Num; bit Flag1s=0; /-AD0804电压转换- void T0Init TMOD=0x01; TH0=(65536-10

28、000)/256; TL0=(65536-10000)%256; TR0=1; ET0=1; EA=1; void SerialInit SCON=0x00; /- void Delay(uint n) while(n-); /- void Ad Adc=0xff; /启动转换 Delay(100); /等待转换 AdValue=Adc; /读出转换结果 /- void AdProcess uchar i; uint Sum=0; uchar k; NumCode0=AdValue/1000; NumCode1=AdValue%1000/100; NumCode2=AdValue%100/10; NumCode3=AdValue%10; for(k=0;k4;k+) SBUF=DispCodeNumCode3-k; while(TI=0) TI=0; /- void main T0Init; SerialInit; while(1) if(Flag1s=1) Flag1s=0; Ad; AdProcess; Disp; /- void T0Server interrupt 1 TH0=(65536-10000)/256; TL0=(65536-10000)%256; T0Num+; if(T0Num=100) T0Num=0; Flag1s=1;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号