51單片機(jī)經(jīng)典實例源碼

上傳人:txadgkn****dgknqu... 文檔編號:60471844 上傳時間:2022-03-08 格式:DOC 頁數(shù):13 大?。?64KB
收藏 版權(quán)申訴 舉報 下載
51單片機(jī)經(jīng)典實例源碼_第1頁
第1頁 / 共13頁
51單片機(jī)經(jīng)典實例源碼_第2頁
第2頁 / 共13頁
51單片機(jī)經(jīng)典實例源碼_第3頁
第3頁 / 共13頁

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《51單片機(jī)經(jīng)典實例源碼》由會員分享,可在線閱讀,更多相關(guān)《51單片機(jī)經(jīng)典實例源碼(13頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 專心---專注---專業(yè) #include #include "LCD1602.h" uint Num=0; uchar NumCode[4]={0,0,0,0}; //---------------中斷加一-------------- void my_INT1(void) interrupt 0 { Num++; } //----------------------------- void Disp() { uint m; NumCode[0]=Num/1000; NumCode[1]=N

2、um%1000/100; NumCode[2]=Num%100/10; NumCode[3]=Num%10; for(m=0;m<4;m++) { LCD_Disp(0,5+m,NumCode[m]+0x30); } } //--------------------- void main() { IT0=1;EA=1;EX0=1; LCD_Init(); while(1) { Disp(); } } #include #include "LCD1602.h" uint Num=37

3、28; uchar NumCode[4]={0,0,0,0}; //-----------------------自動加一------------------------- void Disp() { uchar m; NumCode[0]=Num/1000; NumCode[1]=Num%1000/100; NumCode[2]=Num%100/10; NumCode[3]=Num%10; for(m=0;m<4;m++) { LCD_Disp(0,6+m,NumCode[m]+0x30); } } //-----------------

4、--------------------------- void main() { LCD_Init(); while(1) { Disp(); Num++; Delay(50000); } } #include #include "LCD1602.h" uint Num=5432; uchar NumCode[4]={0,0,0,0}; //----------定時器T0按鍵加一--------------- void T0Init() { TMOD=0x0d; TH0=5432/256;

5、 TL0=5432%256; TR0=1; } //------------------------------------------ void Disp() { int m; NumCode[0]=Num/1000; NumCode[1]=Num%1000/100; NumCode[2]=Num%100/10; NumCode[3]=Num%10; for(m=0;m<4;m++) { LCD_Disp(0,5+m,NumCode[m]+0x30); } } //-----------------------------------

6、-------- void main() { T0Init(); LCD_Init(); while(1) { Num=TH0*256+TL0; Disp(); } } #include #define uchar unsigned char uchar T0Num; sbit LED=P1^0; //--------定時器TO使LED自動一秒閃一下--------- void T0Init() { TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%

7、256; TR0=1; ET0=1; EA=1; } //--------------------------- void T0Sever() interrupt 1 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; T0Num++; if(T0Num==100) { LED=~LED; T0Num=0; } } //--------------------------- void main() { T0Init(); while(1) { } }

8、#include #define uchar unsigned char #define uint unsigned int uchar num[10]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; uint shu; //-----------外部中斷按鍵加減一---------- void my_INT1(void) interrupt 0 { shu--; } //-----------------------------------------------------

9、void my_INT2(void) interrupt 2 { shu++; } //------------------------------------------------------ void main() { shu=5; IT0=1;EA=1;EX0=1; IT1=1;EA=1;EX1=1; while(1) { P2=num[shu]; if(shu==10){shu=0;} if(shu==-1){shu=9;} } } #include #define uint uns

10、igned int #define uchar unsigned char uchar Disp[4]={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>=1;k--); } } } }

11、//------------------------------------- void main() { while(1) { P1=Disp[0];delay3ms(4); P1=Disp[1];delay3ms(1); P1=Disp[2];delay3ms(4); P1=Disp[3];delay3ms(1); } } #include #define uchar unsigned char uchar T0Num=0; uchar PWM=50; sbit LED=P3^7; //------------

12、PWM頻率------ void T0Init() { TMOD=0x01; TH0=(65536-100)/256;// 0.1ms TL0=(65536-100)%256; ET0=1; EA=1; TR0=1; } //----------------------- void Ex0Init() { IT0=1; EX0=1; EA=1; } //------------------------ void main() { T0Init(); Ex0Init(); while(1) { } } //-----

13、------------------- 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) {

14、 PWM=0; } } include #define uchar unsigned char uchar i,Flagls,Scon,T0Num; uchar code LedCode[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //-------串口74LS164驅(qū)動流水燈-------------- void T0_Init() { TMOD=0x01; TH0=(65536-50000)/256;

15、 TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; } //---------------- void Serial_Init() { Scon=0x00; } //------------------ void SerialSend (uchar ch) { SBUF=ch; while(TI==0) { } TI=0; } //-------------- void main() { T0_Init(); Serial_Init(); while(1) { if(F

16、lagls==1) { Flagls=0; SerialSend(LedCode[i]); i++; if(i>7) { i=0; } } } } //------------------ void Toserver() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; T0Num++; if(T0Num>20) { T0Num=0; Flagls=1; } }

17、 #include #define uchar unsigned char #define uint unsigned int uchar DispCode[10]={0xfc,0x60,0xda,0xf2,0x66, 0xb6,0x3e,0xe0,0xfe,0xe6}; uint Num=9995; uchar NumCode[4]={0,0,0,0}; uchar T1Num; bit Flag1s=0; //---------串口74LS164驅(qū)動數(shù)碼管---------------- void Se

18、rialInit() { SCON=0x00; } //----------------------------------------- void T1Init() { TMOD=0x10; TH1= -10000/256; TL1= -10000%256; TR1=1; ET1=1; EA=1; } //------------------------------------------ void Disp() { uchar i; NumCode[0]=Num/1000; NumC

19、ode[1]=Num%1000/100; NumCode[2]=Num%100/10; NumCode[3]=Num%10; for(i=0;i<4;i++) { SBUF=DispCode[NumCode[3-i]]; while(TI==0) { } TI=0; } } //------------------------------------------ void main() { SerialInit(); T1Init(); while(1) {

20、 if(Flag1s==1) { Flag1s=0; Disp(); } } } //----------------------------------------- void T1Server() interrupt 3 { TH1= -10000/256; TL1= -10000%256; T1Num++; if(T1Num==100) { T1Num=0; Flag1s=1; Num++; if(Num>9999) {

21、 Num=0; } } } #include #define uchar unsigned char #define uint unsigned int uchar T0Num; bit Flag1s=0; uchar DispCode[10]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; //--------MUC_MUC串口自發(fā)自收----------- void SerialInit() { SCON=0x50; //方

22、式1 允許接收 PCON=0x00; //串口波特率不加倍 TMOD|=0x20; //定時器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; } //--------------------------

23、------ void main() { uchar k; SerialInit(); T0Init(); while(1) { if(Flag1s==1) { Flag1s=0; SBUF=DispCode[k]; k++; if(k>9) { k=0; } } } } //-------------------------------- void SerialServer() interrupt 4 { if(RI==1) { RI=0; P2=SBUF;

24、 } 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 #define uint unsigned int uchar T0Num; bi

25、t Flag1s=0; uchar DispCode[10]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; //-----------兩機(jī)通信(主機(jī)代碼)---------------------- void SerialInit() { SCON=0x50; //方式1 允許接收 PCON=0x00; //串口波特率不加倍 ES=1; EA=1; } //--------------------------------- void T1Init() { TMOD=0x20; //定時器

26、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() { uchar k; SerialInit(); T1Init(); T0Ini

27、t(); while(1) { if(Flag1s==1) { Flag1s=0; P2=DispCode[k]; SBUF=DispCode[k]; k++; if(k>9) { k=0; } } } } //-------------------------------- void SerialServer() interrupt 4 { if(RI==1) { RI=0; } else { TI=0; } } //----------------

28、---------------- 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; //------兩機(jī)通信(從機(jī)代碼)---------------- void SerialInit() { SCON=0x50; //方式1 允許接收 PCO

29、N=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; } } //---

30、----------------------------- void SerialServer() interrupt 4 { if(RI==1) { RI=0; Ch=SBUF; } else { TI=0; } } #include #define uchar unsigned char uchar DispCode[10]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; uchar Num=5; //----------------多機(jī)通信

31、(主機(jī)代碼)------------ 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; } //----

32、---------------------------- void SBUFSend(uchar Ch) { SBUF=Ch; while(TI==0) { } TI=0; } //-------------------------------- void SendControl(uchar Addr,uchar Data) { TB8=1; SBUFSend(Addr); TB8=0; SBUFSend(Data); } //-------------------------------- void main() { SerialInit();

33、ExInit(); while(1) { } } //-------------------------------- void SerialServer() interrupt 4 { uchar Ch; if(RI==1) { RI=0; Ch=SBUF; if(Ch=='b') { P2=DispCode[1]; } if(Ch=='c') { P2=DispCode[2]; } } else {TI=0;} } //------------------------------- void

34、 Ex0Server() interrupt 0 { Num++; if(Num>9) { Num=0; } SendControl('b',Num); } //----------------------------- void Ex1Server() interrupt 2 { Num--; if(Num==255) { Num=9; } SendControl('c',Num); } ************************************* #include #define uchar

35、 unsigned char uchar DispCode[10]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; //------------多機(jī)通信(從機(jī)1)--------------------- void SerialInit() { SCON=0xf0; //方式3 允許接收,SM2=1 PCON=0x00; //串口波特率不加倍 TMOD=0x20; //定時器1,方式2 TH1=0xfd; //波特率為9600 TL1=0xfd; TR1=1; //啟動定時器

36、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;

37、 if(RI==1) { RI=0; Ch=SBUF; if(RB8==1) //地址 { if(Ch=='b') { SM2=0; //是自己的地址,置SM2=0,開始接收數(shù)據(jù) SBUFSend('b'); } else { SM2=1; //不是自己的地址,置SM2=1。 } } if(RB8==0) { P2=DispCode[Ch]; SM2=1;//接收完數(shù)據(jù),準(zhǔn)備下次接收地址。 } } } *************

38、*********************** #include #define uchar unsigned char uchar DispCode[10]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; //----------多機(jī)通信(從機(jī)2)----------- void SerialInit() { SCON=0xf0; //方式3 允許接收,SM2=1 PCON=0x00; //串口波特率不加倍 TMOD=0x20; //定時器1,方式2 TH1=0xfd; //波特

39、率為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 Ser

40、ialServer() interrupt 4 { uchar Ch; if(RI==1) { RI=0; Ch=SBUF; if(RB8==1) //地址 { if(Ch=='c') { SM2=0; //是自己的地址,置SM2=0,開始接收數(shù)據(jù) SBUFSend('c'); } else { SM2=1; //不是自己的地址,置SM2=1。 } } if(RB8==0)//數(shù)據(jù) { P2=DispCode[Ch]; SM2=1;//接收完

41、數(shù)據(jù),準(zhǔn)備下次接收地址。 } } } #include #define uchar unsigned char #define uint unsigned int uchar T0Num=0; sbit DAWR=P3^6; uchar code SinTab[128]={ 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,

42、126,126,125,124,123,121, 120,118,117,115,113,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}; //------------ DAC

43、0832(波形發(fā)生器)-------------- void T0Init() { TMOD=0x01; TH0=(65536-1000)/256; TL0=(65536-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

44、=1;EA=1;EX1=1; T0Init(); while(1) { } } //-------------------------- void T0Server() interrupt 1 { TH0=(65536-1000)/256; TL0=(65536-1000)%256; DA(SinTab[T0Num]); T0Num++; if(T0Num>127) { T0Num=0; } } #include

45、> #define uchar unsigned char #define uint unsigned int uchar DispCode[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0x3e,0xe0,0xfe,0xe6}; uchar NumCode[4]={0,0,0,0}; uchar xdata Adc; uint AdValue; uchar T0Num; bit Flag1s=0; //----------AD0804電壓轉(zhuǎn)換----------------- void T0Init() { TMOD=0x01; TH0

46、=(65536-10000)/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; //啟動轉(zhuǎn)換 Delay(100); //等待轉(zhuǎn)換 AdValue=Adc; //讀出轉(zhuǎn)換結(jié)果 } //-------------

47、------------ void AdProcess() { uchar i; uint Sum=0; for(i=0;i<8;i++) { Ad(); Sum=Sum+AdValue; } Sum=Sum>>3; AdValue=Sum*19.685; } //----------------------- void Disp() { uchar k; NumCode[0]=AdValue/1000; NumCode[1]=AdValue%1000/100; NumCode[2]=AdValue%100/10; NumCode[3

48、]=AdValue%10; for(k=0;k<4;k++) { SBUF=DispCode[NumCode[3-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; } }

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!