51單片機(jī)經(jīng)典實例源碼
《51單片機(jī)經(jīng)典實例源碼》由會員分享,可在線閱讀,更多相關(guān)《51單片機(jī)經(jīng)典實例源碼(13頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上
專心---專注---專業(yè)
#include
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運(yùn)動會安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結(jié)+在機(jī)關(guān)“弘揚(yáng)憲法精神推動發(fā)改工作高質(zhì)量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊教研組工作總結(jié)
- 2024年小學(xué)高級教師年終工作總結(jié)匯報
- 2024-2025年秋季第一學(xué)期初中物理上冊教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報告
- 2025年學(xué)校元旦迎新盛典活動策劃方案
- 2024年學(xué)校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報告