當前位置:首頁 » 編程語言 » 51單片機及其c語言程序開發實例

51單片機及其c語言程序開發實例

發布時間: 2023-01-09 16:37:53

❶ 51單片機c語言應用程序設計實例精講的目錄

第1章51單片機開發的基礎知識
1.151單片機的硬體結構
1.1.1功能模塊
1.1.2CPU
1.1.3並行I/O埠
1.1.4存儲囂結構
1.1.5定時/計數器
1.1.6串列口
1.1.7中斷系統
1.251單片機的指令系統
1.2.1定址方式
1.2.2指令說明
1.2.3指令系統表
1.3本章總結
第2章C語言程序各語句用法與意義
2.1數據結構
2.1.1數據類型
2.1.2變數與常量
2.1.3數組
2.1.4指針
2.1.5結構
2.1.6共用體
2.1.7枚舉
2.2運算符與表達式
2.2.1運算符分類與優先順序
2.2.2算術運算符與表達式
2.2.3關系運算符與表達式
2.2.4邏輯運算符與表達式
2.2.5位操作運算符與表達式
2.2.6賦值運算符與表達式
2.3程序結構與函數
2.3.1程序結構
2.3.2函數
2.4流程式控制制語句
2.4.1選擇語句
2.4.2循環語句
2.4.3轉移語句
2.5本章總結
第3章Keil8051C編譯
3.1Keil編譯器簡介
3.2使用Keil開發應用軟體
3.2.1建立工程
3.2.2工程的設置
3.2.3編譯與連接
3.3dScopeforWindows的使用
3.3.1如何啟動
3.3.2如何調試
3.3.3調試窗口
3.4本章總結 第4章單片機實現液晶顯示
4.1實例說明
4.2設計思路分析
4.2.1液晶顯示模塊
4.2.2液晶顯示工作原理
4.2.3設計思路
4.3硬體電路設計
4.3.1器件選取
4.3.2電源模塊
4.3.3液晶顯示模塊
4.3.4單片機模塊
4.4軟體設計
4.4.1液晶控制驅動囂指令集
4.4.2程序說明
4.5實例總結
第5章基於MAX7219的8位數碼管顯示
5.1實例說明
5.2設計思路分析
5.2.1LED顯示驅動晶元的選取
5.2.2MAX7219的工作原理
5.3硬體電路設計
5.3.1主要器件
5.3.2電路原理圖
5.4軟體設計
5.4.1MAX7219的工作時序和寄存器描述
5.4.2程序說明
5.5實例總結
第6章鍵盤輸入實例——實現4x4鍵盤
6.1實例說明
6.2設計思路分析
6.3硬體電路設計
6.4軟體設計
6.5實例總結
第7章單片機實現語音錄放
7.1實例說明
7.2設計思路分析
7.2.1語音晶元選取
7.2.2語音晶元1SD2560簡介
7.3硬體電路設計
7.3.1主要器件
7.3.2電路原理圖及說明
7.4軟體設計
7.4.1程序流程
7.4.2程序說明
7.5實例總結 第8章基於MAX197的並行A/D轉換
8.1實例說明
8.2設計思路分析
8.2.1A/D轉換原理
8.2.2如何選擇A/D轉換器件
8.2.3A/D轉換器對電源電路的要求
8.3硬體電路設計
8.3.1主要器件
8.3.2電路原理圖及說明
8.4軟體設計
8.4.1MAX197控制字
8.4.2程序流程
8.4.3程序說明
8.5實例總結
第9章基於TLC549的串列A/D轉換
9.1實例說明
9.2設計思路分析
9.2.1晶元選取
9.2.2工作原理
9.3硬體電路設計
9.3.1主要器件
9.3.2電路原理圖及說明
9.4軟體設計
9.4.1轉換過程和時序要求
9.4.2程序流程
9.4.3程序說明
9.5實例總結
第10章基於MAX527的並行D/A轉換
10.1實例說明
10.2設計思路分析
10.2.1D/A轉換原理
10.2.2如何選擇D/A轉換器件
10.2.3D/A轉換器對電源電路的要求
10.3硬體電路設計
10.3.1主要器件
10.3.2電路原理圖及說明
10.4軟體設計
10.4.1MAX527的地址和重要引腳
10.4.2程序流程
10.4.3程序說明
10.5實例總結
第11章基於MAX517的串列D/A轉換
11.1實例說明
11.2設計思路分析
11.2.1晶元選取
11.2.2工作原理
11.3硬體電路設計
11.3.1主要器件
11.3.2電路原理圖及說明
11.4軟體設計
11.4.1時序要求和轉換過程
11.4.2程序說明
11.5實例總結
第12章基於SHT71數字溫/濕度感測器的採集實現
12.1實例說明
12.2設計思路分析
12.2.1SHT71性能概述
12.2.2SHT71的功能說明
12.2.3SHT71的引腳尺寸和說明
12.3硬體電路設計
12.4軟體設計
12.4.1SHT71的操作方法
12.42程序流程
12.4.3源程序清單
12.5實例總結
第13章基於DS1624的數字溫度計設計
13.1實例說明
13.1.2設計思路分析
13.2.1DS1624簡介
13.2.2DS1624基本特性
13.2.3DS1624工作原理
13.2.4DS1624工作方式
13.2.5DS1624的指令集
13.3硬體電路設計
13.3.1硬體設計
13.3.2原理科及其說明
13.4軟體設計
13.4.1程序流程
13.4.2程序說明
13.5實例總結 第14章基於DS12C887的實時日歷時鍾顯示系統設計
14.1實例說明
14.2設計思路分析
14.2.1選擇合適的日歷時鍾晶元7
14.2.2如何由DS12C887晶元獲取時間信息
14.3硬體電路設計
14.3.1結構框圖
14.3.2主要器件
14.3.3電路原理圖及說明
14.4軟體設計
14.4.1DS12C877的內存空間
14.4.2程序流程
14.4.3程序代碼及說明
14.5實例總結
第15章單片機控制的步進電機系統
15.1實例說明
15.2設計思路分析
15.2.1步進電機的工作原理
15.2.2步進電機的控制
15.2.3脈沖分配與驅動晶元的選取
15.3硬體電路設計
15.3.1結構框圖
15.3.2主要器件
15.3.3電路原理圖廈說明
15.4軟體設計
15.4.1程序流程
15.4.2程序說明
15.5實例總結
第16章基於MAX1898的智能充電器設計
16.1實例說明
16.2設計思路分析
16.2.1為何需要實現充電器的智能化
16.2.2如何選擇電池充電晶元
16.2.3MAX1898的充電工作原理
16.3硬體電路設計
16.3.1主要器件
16.3.2電路原理圖及說明
16.4軟體設計
16.4.1程序流程
16.4.2程序說明
16.5實例總結 第17章基於NORFlashAM29LV320的數據存儲
17.1實例說明
17.2設計思路分析
17.2.1晶元AM29LV320
17.2.2具體設計思路
17.3硬體電路設計
17.4軟體設計
17.4.1AM29LV320的命令與狀態
17.4.2串列非同步數據傳輸
17.4.3程序代碼說明
17.5實例總結
第18章基於XC95144的串口擴展
18.1實例說明
18.2設計思路分析
18.2.1串口發送的設計
18.2.2串口接收的設計
18.2.3串口模塊的設計l
18.3硬體電路設計
18.4軟體設計
18.4.1CPLD的設計原理圖
18.4.2C51單片機程序代碼說明
18.5實例總結
第19章基於8255擴展並行口
19.1實例說明
19.2設計思路分析
19.2.1並行口擴展的原理
19.2.2晶元選擇
19.3硬體電路設計
19.4軟體設計
19.5實例總結 第20章單片機實現智能信號發生器
第21章單片機實現步進式PWM信號輸出
第22章單片機實現CRC演算法
第23章單片機實現軟體濾波
第七篇通信傳輸系統設計
第24章單片機實現點對點的數據傳輸
第25章單片機實現點對多點的數據傳輸
第26章單片機實現乙太網介面
第27章單片機實現1C匯流排通信
第28章單片機實現RS-485匯流排現場監測系統
第29章CAN匯流排介面通信設計
第八篇電源監控與抗干擾設計
第30章單片機監控電路設計
第31章光電隔離電路設計 附錄A匯編語言與C語言的混合編程
附錄B實例配套實驗箱

❷ 大家幫忙找一些51單片機的基本C語言程序例子,最好帶說明,謝啦

中斷控製程序:

#include <AT89X52.H>

#define uchar unsigned char
#define uint unsigned int
#define port_count P2 //P2接8LED介面
//將計數器的二進制值用8個LED顯示出來
uchar count;//計數器(存儲中斷次數)

void main(void)
{
count=0; //清零計數器
port_count=~count;//清零P2口
IT0=1; //INT0設為邊沿觸發方式�IT0=0則為電平觸發方式
EX0=1; //開INT0中斷
EA=1; //開系統中斷
while(1); //等待中斷處理

}

//INT0中斷處理函數
void int0_interrupt() interrupt 0 //INT0中斷號0
{
count++;
port_count=~count; //當達到255時,溢出,又從0開始

}

I/O控製程序:
#include <AT89X52.H>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int
#define flowlight P2
void delay10ms()
{uchar a,b;
for(a=200;a>0;a--)
for(b=225;b>0;b--);
}
void main()
{
uchar flag=0;//判斷移動方向 flag==0 左移 flag==1 右移
uchar port_state=0x01;
flowlight=~port_state;
while(1)
{
delay10ms();
if(port_state==0X80&&flag==0)
{
flag=1; //流水燈左移到第八位又移回來 ~1000 0000
}
else
if(port_state==0X01&&flag==1)
{
flag=0; //流水燈右移到第1位又移回來 ~0000 0001
}
if(flag==0)
{
port_state=port_state<<1;
flowlight=~port_state;
}
else
{
port_state=port_state>>1;
flowlight=~port_state;
}
}

串口通信程序:
主機程序:
#include <AT89X52.H>
#define NODE_ADDR 3 //目的節點地址
#define COUNT 10 //發送緩沖區buffer大小
typedef unsigned char uchar;
uchar buffer[COUNT]; //定義buffer
int pt; //設置指針
main()//////////////////////////////////////////發送程序
{

//buffer初始化
pt=0;
while(pt<COUNT)
{
buffer[pt]='1'+pt; //[buffer]=0X31,[buffer+1]= 0X32,[buffer+2] 0X33........
pt++;
}
////初始化串口和T1(波特率發生器)/////////PCON預設為0
PCON=0X00;
SCON=0Xc0; //SCON=1100 0000B,置串口為方式3, SM2=0,REN=0,主機不接收地址幀
TMOD=0X20; //20H=0010 0000B,置T1為方式2,TR1控制T1的開關,定時器方式
TH1=253;TL1=253; //方式2為自動重裝///f(bps)=9600bps (f(osc)=11.0592MHZ)
TR1=1; //啟動T1
ET1=0; //關T1中斷 由於自動重裝
ES=1; //開串口中斷
EA=1; //開系統中斷
pt=0;

///////////////發送地址幀
TB8=1; //地址幀標志
SBUF=NODE_ADDR; //發送目的節點地址
while(pt<COUNT); //等待發送完全部數據
while(1);//不執行任何操作
} //end main

/////發送完中斷函數
void send()interrupt 4
{
TI=0; //清發送中斷標志
if(pt<COUNT)
{
//發送一幀數據
TB8=0;//數據幀標志
SBUF=buffer[pt]; //啟動發送
pt++;//指針指向下一單元
}

else
{
ES=0; //關串口中斷
EA=0; //關系統中斷
return; //若發送完則停止發送並返回
}

}
接收程序:
#include<reg52.h>
#define uchar unsigned char

#define NODE_ADDR 3 //本機節點地址
#define COUNT 10 //定義接收緩沖區buffer大小
uchar buffer[COUNT]; //定義buffer
int pt; //當前位置指針

void send_char_com(unsigned char ch); //向串口發送一個字元的函數聲明
void delay(void);

main() ////////////////串列非同步從機接收程序
{
PCON=0X00; //初始化串口和T1(波特率發生器)/////////PCON預設為0
SCON=0XF0; //SCON=1111 0000B,方式3,SM2=1,REN=1,允許接收地址幀
TMOD=0X20; //20H=0010 0000B,置T1為方式2,TR1控制T1的開關,定時器方式
TH1=253;TL1=253; //方式2為自動重裝///f(bps)=9600bps (f(osc)=11.0592MHZ)
TR1=1; //啟動T1
ET1=0; //關T1中斷 由於自動重裝
ES=1; //開串口中斷
EA=1; //開系統中斷
pt=0;
while(pt<COUNT); //等待接收地址幀和全部數據幀
delay() ;
//接收完後返回數據
SCON=0XC0; //SCON=1100 0000B,置串口為方式3, SM2=0,REN=0,主機不接收地址幀
EA=0;
for(pt=0;pt<COUNT;pt++)
{
send_char_com(buffer[pt]);

}
while(1);
} //end main

///////////串口接收中斷函數
void receive()interrupt 4 using 3
{
RI=0; //清除接收中斷標志
if(RB8==1) //地址幀
{//若為本機地址,則置SM2=0,以便接收數據
if(SBUF==NODE_ADDR)
{
SM2=0;
}

}
/////RB8=0,數據幀
else if(RB8==0)
{buffer[pt]=SBUF; //數據幀送buffer
pt++;
if(pt>=COUNT)
SM2=1; //若接收完全部數據幀,則通信結束;置SM2=1,准備下一次通信
}

}

//向串口發送一個字元
void send_char_com(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}

///////////////////////////////////////////////////////////////////////////////////

void delay(void)
{uchar i=100;
while(i--);
}

❸ 單片機c語言編程100個實例

51單片機C語言編程實例 基礎知識:51單片機編程基礎 單片機的外部結構: 1. DIP40雙列直插; 2. P0,P1,P2,P3四個8位準雙向I/O引腳;(作為I/O輸入時,要先輸出高電平) 3. 電源VCC(PIN40)和地線GND(PIN20); 4. 高電平復位RESET(PIN9);(10uF電容接VCC與RESET,即可實現上電復位) 5. 內置振盪電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍) 6. 程序配置EA(PIN31)接高電平VCC;(運行單片機內部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 單片機內部I/O部件:(所為學習單片機,實際上就是編程式控制制以下I/O部件,完成指定任務) 1. 四個8位通用I/O埠,對應引腳P0、P1、P2和P3; 2. 兩個16位定時計數器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一個串列通信介面;(SCON,SBUF) 4. 一個中斷控制器;(IE,IP) 針對AT89C52單片機,頭文件AT89x52.h給出了SFR特殊功能寄存器所有埠的定義。 C語言編程基礎: 1. 十六進製表示位元組0x5a:二進制為01011010B;0x6E為01101110。 2. 如果將一個16位二進數賦給一個8位的位元組變數,則自動截斷為低8位,而丟掉高8位。 3. ++var表示對變數var先增一;var—表示對變數後減一。 4. x |= 0x0f;表示為 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變數TMOD的低四位賦值0x5,而不改變TMOD的高四位。 6. While( 1 ); 表示無限執行該語句,即死循環。語句後的分號表示空循環體,也就是{;} 在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P1.3 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P1_3 = 1; //給P1_3賦值1,引腳P1.3就能輸出高電平VCC 5. While( 1 ); //死循環,相當 LOOP: goto LOOP; 6. } 注意:P0的每個引腳要輸出高電平時,必須外接上拉電阻(如4K7)至VCC電源。 在某引腳輸出低電平的編程方法:(比如P2.7引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P2.7 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P2_7 = 0; //給P2_7賦值0,引腳P2.7就能輸出低電平GND 5. While( 1 ); //死循環,相當 LOOP: goto LOOP; 6. } 在某引腳輸出方波編程方法:(比如P3.1引腳) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P3.1 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 5. { 6. P3_1 = 1; //給P3_1賦值1,引腳P3.1就能輸出高電平VCC 7. P3_1 = 0; //給P3_1賦值0,引腳P3.1就能輸出低電平GND 8. } //由於一直為真,所以不斷輸出高、低、高、低……,從而形成方波 9. } 將某引腳的輸入電平取反後,從另一個引腳輸出:( 比如 P0.4 = NOT( P1.1) ) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P0.4和P1.1 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P1_1 = 1; //初始化。P1.1作為輸入,必須輸出高電平 5. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 6. { 7. if( P1_1 == 1 ) //讀取P1.1,就是認為P1.1為輸入,如果P1.1輸入高電平VCC 8. { P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND 2 51單片機C語言編程實例 9. else //否則P1.1輸入為低電平GND 10. //{ P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND 11. { P0_4 = 1; } //給P0_4賦值1,引腳P0.4就能輸出高電平VCC 12. } //由於一直為真,所以不斷根據P1.1的輸入情況,改變P0.4的輸出電平 13. } 將某埠8個引腳輸入電平,低四位取反後,從另一個埠8個引腳輸出:( 比如 P2 = NOT( P3 ) ) 代碼 1. #include <AT89x52.h> //該頭文檔中有單片機內部資源的符號化定義,其中包含P2和P3 2. void main( void ) //void 表示沒有輸入參數,也沒有函數返值,這入單片機運行的復位入口 3. { 4. P3 = 0xff; //初始化。P3作為輸入,必須輸出高電平,同時給P3口的8個引腳輸出高電平 5. While( 1 ) //非零表示真,如果為真則執行下面循環體的語句 6. { //取反的方法是異或1,而不取反的方法則是異或0 7. P2 = P3^0x0f //讀取P3,就是認為P3為輸入,低四位異或者1,即取反,然後輸出 8. } //由於一直為真,所以不斷將P3取反輸出到P2 9. } 注意:一個位元組的8位D7、D6至D0,分別輸出到P3.7、P3.6至P3.0,比如P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個引腳都輸出高電平。同樣,輸入一個埠P2,即是將P2.7、P2.6至P2.0,讀入到一個位元組的8位D7、D6至D0。 第一節:單數碼管按鍵顯示 單片機最小系統的硬體原理接線圖: 1. 接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF 2. 接晶體:X1(PIN18)、X2(PIN19)。注意標出晶體頻率(選用12MHz),還有輔助電容30pF 3. 接復位:RES(PIN9)。接上電復位電路,以及手動復位電路,分析復位工作原理 4. 接配置:EA(PIN31)。說明原因。 發光二極的控制:單片機I/O輸出 將一發光二極體LED的正極(陽極)接P1.1,LED的負極(陰極)接地GND。只要P1.1輸出高電平VCC,LED就正向導通(導通時LED上的壓降大於1V),有電流流過LED,至發LED發亮。實際上由於P1.1高電平輸出電阻為10K,起到輸出限流的作用,所以流過LED的電流小於(5V-1V)/10K = 0.4mA。只要P1.1輸出低電平GND,實際小於0.3V,LED就不能導通,結果LED不亮。 開關雙鍵的輸入:輸入先輸出高 一個按鍵KEY_ON接在P1.6與GND之間,另一個按鍵KEY_OFF接P1.7與GND之間,按KEY_ON後LED亮,按KEY_OFF後LED滅。同時按下LED半亮,LED保持後松開鍵的狀態,即ON亮OFF滅。 代碼 1. #include <at89x52.h> 2. #define LED P1^1 //用符號LED代替P1_1 3. #define KEY_ON P1^6 //用符號KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符號KEY_OFF代替P1_7 5. void main( void ) //單片機復位後的執行入口,void表示空,無輸入參數,無返回值 6. { 7. KEY_ON = 1; //作為輸入,首先輸出高,接下KEY_ON,P1.6則接地為0,否則輸入為1 8. KEY_OFF = 1; //作為輸入,首先輸出高,接下KEY_OFF,P1.7則接地為0,否則輸入為1 9. While( 1 ) //永遠為真,所以永遠循環執行如下括弧內所有語句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1輸出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1輸出低,LED滅 13. } //松開鍵後,都不給LED賦值,所以LED保持最後按鍵狀態。 14. //同時按下時,LED不斷亮滅,各佔一半時間,交替頻率很快,由於人眼慣性,看上去為半亮態 15. } 數碼管的接法和驅動原理 一支七段數碼管實際由8個發光二極體構成,其中7個組形構成數字8的七段筆畫,所以稱為七段數碼管,而餘下的1個發光二極體作為小數點。作為習慣,分別給8個發光二極體標上記號:a,b,c,d,e,f,g,h。對應8的頂上一畫,按順時針方向排,中間一畫為g,小數點為h。 我們通常又將各二極與一個位元組的8位對應,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相應8個發光二極體正好與單片機一個埠Pn的8個引腳連接,這樣單片機就可以通過引腳輸出高低電平控制8個發光二極的亮與滅,從而顯示各種數字和符號;對應位元組,引腳接法為:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。 如果將8個發光二極體的負極(陰極)內接在一起,作為數碼管的一個引腳,這種數碼管則被稱為共陰數碼管,共同的引腳則稱為共陰極,8個正極則為段極。否則,如果是將正極(陽極)內接在一起引出的,則稱為共陽數碼管,共同的引腳則稱為共陽極,8個負極則為段極。 以單支共陰數碼管為例,可將段極接到某埠Pn,共陰極接GND,則可編寫出對應十六進制碼的七段碼表位元組數據

❹ 單片機開題報告範文

隨著單片機由於其較小的體積和很高的性價比,而在各種電子產品中受到廣泛的應用和發展,單片機的研發人員也在不斷的進行技術上的革新。下面是我為大家整理的單片機開題報告範文,歡迎閱讀。

單片機開題報告範文篇1:

基於單片機數字頻率計設計開題報告

一、選題的依據及意義:

本課題主要研究如何用單片機來設計數字頻率計。因為在電子技術中,頻率的測量十分重要,這就要求頻率計要不斷的提高其測量的精度和速度。在科技以日新月異的速度向前發展,經濟全球一體化的社會中,簡潔、高效、經濟成為人們辦事的一大宗旨。在電子技術中這一點表現的尤為突出,人們在設計電路時,都趨向於用竟可能少的硬體來實現,並且盡力把以前由硬體實現的功能部分,通過軟體來解決。因為軟體實現比硬體實現具有易修改的特點,如簡單的修改幾行源代碼就比在印製電路板上改變幾條連線要容易的多,故基於微處理器的電路往往比傳統的電路設計具有更大的靈活性。

因為數字頻率計是計算機、通訊設備、音頻視頻等科研生產領域必不可少的測量儀器,所以頻率的測量就顯得更為重要。在數字電路中,頻率計屬於時序電路,它主要由具有記憶功能的觸發器構成。在計算機及各種數字儀表中,都得到了廣泛的應用。本課題採用的是直接測頻式的頻率計,設計原理簡單、電路穩定、測量精度高,大大的縮短了生產周期。

二、國內外研究概況及發展趨勢(含文獻綜述):

由於當今社會的需要,對信息傳輸和處理的要求不斷提高,對頻率的測量的精度也需要更高更准確的時頻基準和更精密的測量技術。而頻率測量所能達到的精度,主要取決於作為標准頻率源的精度以及所使用的測量設備和測量方法。目前,測量頻頻的方法有直接測頻法、內插法、游標法、頻差倍增法等等。直接測頻的方法較簡單,但精度不高。頻差倍增多法和周期法是一種頻差倍增法和差拍法相結合的測量方法,這種方法是將被測信號和參考信號經頻差倍增使被測信號

的相位起伏擴大,再通過混頻器獲得差拍信號,用電子計數器在低頻下進行多周期測量,能在較少的倍增次數和同樣的取樣時間情況下,得到比測頻法更高的系統解析度和測量精度,但是仍然存在著時標不穩而引入的誤差和一定的觸發誤差。

在電子系統廣泛的應用領域中,到處看見處理離散信息的數字電路。供消費用的冰箱和電視、航空通訊系統、交通控制雷達系統、醫院急救系統等在設計過程中都用到數字技術。 數字頻率計是現代通信測量設備系統中必不可少的測量儀器,不但要求電路產生頻率的准確度和穩定度都高的信號,也要能方便的改變頻率。

數字頻率計的實現方法主要有:直接式、鎖相式、直接數字式和混合式

(1)直接式

優點:速度快、相位雜訊低,但結構復雜、雜散多,一般只應用在地面雷達中。

(2)鎖相式

優點:相位同步的自動控制,製作頻率高,功耗低,容易實現系列化、小型化、模

塊化和工程化。

(3)直接數字式

優點:電路穩定、精度高、容易實現系列化、小型化、模塊化和工程化。

三、研究內容及實驗方案:

研究內容:本課題設計以單片機為核心,設計一種數字頻率計,應用單片機中的定時器/計數器和中斷系統等完成頻率的測量。

實驗方案:

圖1 頻率計總體設計框圖

四、目標、主要特色及工作進度

目標:

基於單片機的數字頻率計,畫出電路圖並用軟體模擬

工作特色:

(1)運用了單片機技術;

(2)運用了C語言、電路等知識;

(3)採用電腦等工具;

(4)採用顯示模塊、分頻模塊、單片機模塊等;

(5)簡單易理解,十分實用。

工作進度:

1、查閱文獻,翻譯英文資料,書寫開題報告; 第1---4周

2、相關資料的獲取和必要知識的學習 ; 第5---9周

3、設計系統的硬體和軟體模塊並調試 第10--14周

4、撰寫論文; 第15--16周

5、總結,准備答辯; 第17周

五、參考文獻

[1]李學海著.標准80C51單片機基礎教程.北京航空航天大學出版社,2006

[2] 戴仙金主編.51單片機及其C語言程序開發實例.清華大學出版社,2008

[3] 李誠人.高宏洋等.嵌入式系統及單片機應用,清華大學出版社,2005

[4] 龔運新編著.單片機C語言開發技術.清華大學出版社,2006

[5] 張天凡等編著.51單片機C語言開發詳解.電子工業出版社,2008

[6] 張義和.王敏男等.例說51單片機(C語言版).人民郵電出版社,2008

[7] 張洪潤、劉秀英、張亞凡等.單片機應用設計200例 .北京航空航天大學出版社,2006

[8] 彭為、黃科、雷道仲等.單片機典型系統設計實例精講.電子工業出版社, 2006

[9] 李學海著.標准80C51單片機基礎教程.北京航空航天大學出版社,2006

[10] 李朝青.單片機原理及介面技術[M].北京航天航空大學出版社,1998.

[11] 余發山,王福忠.單片機原理應用技術[M].徐州:中國礦業大學出版社,2003.

[12]V.Yu.Teplov,A.V. Anisimov.Thermostatting System Using a Single-Chip Microcomputer and Thermoelectric Moles Based on the Peltier Effect[J] ,2002

[13] Yeager Brent.How to troubleshoot your electronic scale[J]. Powder and Bulk Engineering. 1995

[14]WeiXiaoRu,JuJianZhi.Design of a CCD's driving circuit based on ATmega16.Microcomputer&Its Applications,2010,(16).

[15]HeLianYun,The Traffic Signal Lamp System Controlled with Single Chip Microcomputer.Computer Study,2008,(01).

單片機開題報告範文篇2:

基於單片機的火災報警器

一、畢業設計(論文)課題來源、類型

課題來源:生產(社會)實踐

課題類型:畢業設計

二、選題的目的及意義

對於廣大居民,尤其是單獨居住的老人,無人看護的病人、嬰幼兒童等弱勢群體在遇到火災時,行動不便,逃生能力不強,逃生所需時間相對較長,對他們來說火災的早期報警,爭取更多的逃生時間或者及時通知救援人員,避免造成人員傷亡,顯得更為重要。

火災報警器可以讓百姓的家居生活更加安全,本報警器是一個由單片機控制的火災煙霧濃度、溫度檢測系統,它將感測器輸出地電壓信號進行A/D轉換、濾波、線性化,由單片機將電壓值轉換為氣體濃度和溫度送LCD1602液晶顯示,並判斷是否超過報警上限,若超過,則發出聲光報警[1],並將報警情況通過GSM模塊發出,同時可以實現消防局對火災報警的集中接警,專業化處警,以最少的投資實現最快的接警和處警。同時還為接處警人員提供方便快捷的輔助決策手段,提高消防隊伍快速反應的能力,密切警民關系。高效的工作,還可以減少火災給居民帶來的人生安全的危害和財產的損失。

三、本課題在國內外的研究狀況及發展趨勢

以火災自動報警技術為核心的建築消防系統,是預防和遏制建築火災的重要保障。近年來,我國火災自動報警工程應用技術實現了較快發展。但由於在實際應用中,火災自動報警系統的通訊協議不一致,火災自動報警工程技術水平還相對落後,還存在著一些比較突出的問題。

(1)適用范圍過小。我國火災自動報警系統技術比美、英等發達國家起步較晚,安裝范圍主要是《高層民用建築設計防火規范》、《建築設計防火規范》規定的場所和部位,而在易造成群死群傷的中小型公眾聚集場所和社區居民家庭甚至部分高層住宅都沒有規定安裝火災自動報警系統,適用范圍過小,防範措施不到位。

(2)智能化程度低。我國使用的火災探測器雖然都進行了智能化設計,但由於感測器探測的參數較少、支持系統的軟體開發不成熟、各種演算法的准確性缺乏足夠驗證、火災現場參數資料庫不健全等,火災自動報警系統難以准確判定粒子(煙氣)的濃度、現場溫度、光波的強度以及可燃氣體的濃度、電磁輻射等指標,造成遲報、誤報、漏報情況較多。

(3)網路化程度低。我國應用的火災119動報警系統形式基本上以區域火災自動報警系統、集中火災自動報警系統和控制中心火災自動報警系統為主,安裝形式主要是集散控制方式,自成體系,自我封閉,尚未形成區域性網路化火災自動報警系統。

(4)組件連接方式有待改善。火災自動報警系統以多線制和匯流排制連接方式為主,探測器和報警器及控制器之間是採用兩條或多條的銅芯絕緣導線或銅芯電纜穿管相接,存在耗材多、成本高、抗干擾能力差的缺點。同時,銅導線耐高溫性能差、易磨損,系統施工維修復雜,影響了火災自動報警系統的可靠性和更廣泛的應用。

(5)火災自動報警系統誤報、漏報問題較多。由於火災探測器的安裝環境極其復雜,加之各種感測器在探測火災方面存在著某些先天不足,無法准確地感應各種物質在燃燒過程中所特有的聲波、光譜、輻射、氣味等諸多方面發生的微妙變化,對火災發生過程中所產生的不同粒徑和顏色的煙存在探測“盲區”,誤報、漏報現象時有發生。

(6)超早期火災探測器技術應用還幾乎處於空白。國外已開發出適合潔凈空間高靈敏度感煙火災探測報警系統,如激光式高靈敏度煙火災探測器,吸氣式高靈敏度感煙火災探測報警系統和氣體火災探測報警系統,與普通火災探測報警系統相比,其探測靈敏度提高了兩個數量級,甚至更多,這些系統採用了激光粒子計

數、激光散射等原理監視被保護空間,以單位體積內粒子增加的多少來判斷是否發生火災,系統可在火災發生前幾小時或幾天內識別潛在的火災危險性,實現超早期火災報警。而該技術我國目前還處於起步階段,有待進一步研究開發使用[2]。

針對上述問題,火災自動報警應用技術進一步著眼於當前國際發展的新形勢,加快更新改造進程,加強對數字技術和新工藝、新材料的應用,改進系統能力,使火災自動報警應用技術向著高可靠、低誤報和網路化、智能化方向發展。當前,國外火災自動報警應用技術的發展趨勢主要表現為網路化、智能化、多樣化、小型化、社區化、藍牙化、高靈敏化等。這也是火災自動報警應用技術的研究發展趨勢。

四、本課題主要的研究內容

設計一種以STC89C52單片機為核心的火災檢測與報警系統,可以通過氣體感測器實時獲取可燃氣體濃度、溫度感測器獲得火災現場溫度,並通過LCD1602液晶顯示,當濃度或溫度超過限定值時則報警並且把報警情況發送到報警器所設定的終端上。以方便人們更好的掌握安全狀況,提高生活質量。

五、擬採取的方法、技術或設計(開發)工具

本設計主要以MCS-51系列單片機STC89C52為控制核心,它自帶8K的FLASH程序存儲器,它的核心處理單元為8位。數據處理主要是對數字溫度感測器18B20採集溫度數據和對MQ-2煙物感測器進行AD採集,並進行邏輯判斷,根據數據的具體情況輸出到數碼管顯示和使蜂鳴器動作[3]。整個單片機應用系統的設計分為硬體電路設計和軟體編程設計兩大部分;其中硬體電路設計包括溫度採集電路,MQ-2煙物感測器電路,單片機控制電路,顯示電路,報警與控制電路和GSM模塊。軟體設計部分包括系統主程序,溫度採集子程序,數碼管顯示子程序,GSM模塊子程序和輸出驅動子程序,均採用51系列C語言編程實現。

六、本課題進度安排、各階段預期達到的目標

進度計劃:

2014.12.15 - 2015.3.1: 查找資料、搜集相關素材

2015.3.2 - 2015.3.6:完成需求分析

2015.3.7 - 2015.3.12: 完成概要設計

2015.3.13 - 2015.4.1:完成詳細設計

2015.4.2 - 2015.4.10完成編碼

2015.4.11 - 2015.4.13: 完成軟體測試

2015.4.14 - 2015.4.25:整理資料、撰寫設計報告

2015.4.26 - 2015.4.30:根據導師要求,完善畢業設計和設計報告

❺ 51單片機及其C語言程序開發實例的介紹

作者:戴仙金出版社:清華大學出版社本書首先簡單介紹了51系列單片機的基礎知識,然後從工程應用的角度出發,詳細地介紹了51系列單片機常用的電路模塊,主要包括鍵盤、LcD顯示、A,D轉換、D/A轉換、I。c匯流排應用、語音、實時時鍾、紅外、usB、步進電機、數字鎖相環、串口通信、DDs等,同時列舉了4個典型的實際工程,包括語音存儲與回放系統、數控直流恆流源、簡易數字邏輯分析儀、智能電動小車等,目的在於使讀者能夠迅速地掌握51系列單片機的開發與實現。本書深入淺出,力求既能使單片機的初學者迅速入門,又能使中高級開發人員在原來的基礎上進一步提高實際項目開發能力。

熱點內容
手機如何設密碼鎖屏 發布:2025-07-10 14:17:06 瀏覽:803
java求絕對值 發布:2025-07-10 14:10:55 瀏覽:653
usb調試開關在哪裡安卓 發布:2025-07-10 13:59:55 瀏覽:78
資料庫維度 發布:2025-07-10 13:54:31 瀏覽:799
c語言位域的賦值 發布:2025-07-10 13:54:30 瀏覽:583
查成績密碼忘了怎麼辦 發布:2025-07-10 13:52:21 瀏覽:819
java死 發布:2025-07-10 13:51:30 瀏覽:996
車輛設施配置有哪些 發布:2025-07-10 13:42:28 瀏覽:820
java的成員 發布:2025-07-10 13:38:59 瀏覽:720
荒島餘生ftp 發布:2025-07-10 13:36:46 瀏覽:923