51單片機做的數字電壓表設計, 包含有word格式的可編輯的畢業論文和仿真等非常詳細的資料.
0.png (64.87 KB, 下載次數: 126)
下載附件
2017-4-23 02:21 上傳
畢業論文的目錄
前 言 1
第一章 工作原理 2
1.1設計目標 2
1.1.1基本功能 2
1.1.2主要技術參數 2
1.2設計原理 2
第二章 硬件設計與原理 3
2.1 總設計框圖 3
2.2 硬件設計分析 3
2.2.1 電源的設計 3
2.2.2 單片機最小系統 4
2.2.3 顯示系統 10
2.2.4 模數轉換 10
第三章 軟件設計與分析 13
3.1 軟件設計的組成 13
3.2 源程序 15
第四章 軟件仿真 24
4.1 PROTEUS簡介 24
4.2仿真圖 26
4.3原理圖 27
4.4 元件清單 28
總結 29
致 謝 30
參考文獻 31
0.png (36.4 KB, 下載次數: 99)
下載附件
2017-4-23 02:24 上傳
0.png (62.57 KB, 下載次數: 119)
下載附件
2017-4-23 02:24 上傳
數字電壓表的原理圖和pcb工程文件:
0.png (54.63 KB, 下載次數: 132)
下載附件
2017-4-23 02:58 上傳
數字電壓表proteus仿真原理圖:
0.png (28.01 KB, 下載次數: 122)
下載附件
2017-4-23 02:58 上傳
0.png (86.63 KB, 下載次數: 126)
下載附件
2017-4-23 02:57 上傳
數字電壓表元件清單:
元件參數 元件序號 元件名稱
1K RP1 電位器
5V J1 電源接口
10uF C1 鋁電解電容器
12M Y1 晶振
20 R1 電阻
22K R7 電阻
22K R6 電阻
22K R9 電阻
22K R8 電阻
22K R5 電阻
22K R2 電阻
22K R3 電阻
22K R4 電阻
30pF C2 瓷片電容器
30pF C3 瓷片電容器
ADC0809 U2 模數轉換芯片
AT89C51 U1 51單片機芯片
LCD1602 U3 液晶
1.1.1基本功能利用51單片機作為主控芯片,模擬量輸入范圍直流0v-5v。模擬量經A/D(ADC0809)模數轉換芯片,把模擬量轉換為數字量輸入到單片機的P0口,再由單片機控制LCD1602液晶顯示模擬量輸入的電壓值。
1.1.2主要技術參數 測量電壓范圍:0v至5v A/D轉換器:ADC0809(8位模數轉換器)。 顯示方式: LCD1602液晶
1.2設計原理此次設計的是數字電壓表,要求的電壓范圍是0~5v。系統設計主要包括四個部分:分別是電源模塊、AD模數轉換部分、51單片機最小系統部分、數碼管顯示部分。首先由單片機初始化ADC0809模數轉換芯片和共陰數碼管顯示,當外接被測電壓后,ADC0809將模擬電壓信號轉換為數字信號輸入到單片機的I/O口,通過單片機處理后將電壓的大小顯示在LCD1602液晶上面。
單片機源程序:
- //<程序名>:數字電壓表
- //<功能>:使用LCD顯示被檢測電壓,精度為0.05V,范圍是0~5V。 **
- #include"includes.h"
- #define TIME0H 0x3C
- #define TIME0L 0xB0
- uchar uc_Clock=0; //定時器0中斷計數
- bit b_DATransform=0;
- //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把電壓顯示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- void vShowVoltage(uint uiNumber)
- {
- uchar ucaNumber[3],ucCount;
- if(uiNumber>999)
- uiNumber=999;
- ucaNumber[0]=uiNumber/100; //把計算數字的每個位存入數組。
- ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10;
- ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];
- for(ucCount=0;ucCount<3;ucCount++)
- {
- vShowOneChar(ucaNumber[ucCount]+48); //從首位到末位逐一輸出。
- if(ucCount==0)
- vShowOneChar('.');
- }
- }
- //*************************************************************************************************
- //* *
- //* ********************************主函數****************************** *
- //* *
- //*************************************************************************************************
- void main()
- {
- TMOD=0x01; //定時器0,模式1。
- TH0=TIME0H;
- TL0=TIME0L;
- TR0=1; //啟動定時器。
- ET0=1; //開定時器中斷。
- EA=1; //開總中斷
- vdInitialize();
- vWriteCMD(0x84); //寫入顯示起始地址(第一行第4個位置)
- vShowChar("voltage");
- vWriteCMD(0xC9);
- vShowChar("(V)");
- while(1)
- {
- if(b_DATransform==1)
- {
- b_DATransform=0;
- vWriteCMD(0xC4);
- …………限于本文篇幅 余下代碼請從51黑電子論壇下載附件…………
復制代碼
所有資料下載:
51 digital voltmeter design.zip
(1.07 MB, 下載次數: 669)
2017-4-22 23:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|