基于51單片機(jī)數(shù)字電壓表仿真設(shè)計(jì)_LCD顯示(仿真+程序+原理圖+PCB+設(shè)計(jì)報(bào)告+講解)
原理圖:Altium Designer
仿真版本:proteus 7.8
程序編譯器:keil 4/keil 5
編程語言:C語言
設(shè)計(jì)編號(hào):S0006
講解視頻
基于51單片機(jī)數(shù)字電壓表仿真設(shè)計(jì)
1 功能要求:
芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。
1、利用51單片機(jī)作為主控芯片,模擬量輸入范圍直流0v-5v。模擬量經(jīng)A/D(ADC0809)模數(shù)轉(zhuǎn)換芯片,把模擬量轉(zhuǎn)換為數(shù)字量輸入到單片機(jī)的P0口,再由單片機(jī)控制LCD1602液晶顯示模擬量輸入的電壓值。
2、此次設(shè)計(jì)的是數(shù)字電壓表,要求的電壓范圍是0~5v。
3、系統(tǒng)設(shè)計(jì)主要包括四個(gè)部分:
分別是電源模塊、AD模數(shù)轉(zhuǎn)換部分、51單片機(jī)最小系統(tǒng)部分、數(shù)碼管顯示部分。
首先由單片機(jī)初始化ADC0809模數(shù)轉(zhuǎn)換芯片和共陰數(shù)碼管顯示,當(dāng)外接被測電壓后,ADC0809將模擬電壓信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)輸入到單片機(jī)的I/O口,通過單片機(jī)處理后將電壓的大小顯示在LCD1602液晶上面。
仿真51單片機(jī)芯片是通用的,AT89C51,AT89C52都是51單片機(jī)的具體型號(hào),內(nèi)核是兼容的。原理圖不變的情況下,主控芯片可以替換成STC89C52/STC89C51/AT89C52/ AT89C51/8051等51單片機(jī)芯片。
2 仿真圖:
打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。開始仿真后LCD1602顯示當(dāng)前的電壓值,通過調(diào)整滑動(dòng)變阻器的阻值大小改變測量的電壓值。
3 原理圖:
AD繪制的。
元器件清單
Comment | Description | Designator | Footprint | Quantity |
---|---|---|---|---|
10uF | 電容 | C1 | EC-100 | 1 |
30pF | 電容 | C2, C3 | CAP-100 | 2 |
5V | 2P排針 | J1 | SIP2 | 1 |
20R | 電阻 | R1 | RES-200 | 1 |
22K | 電阻 | R2, R3, R4, R5, R6, R7, R8, R9 | RES-200 | 8 |
1K | 排阻 | RP1 | SIP3 | 1 |
AT89C51 | 單片機(jī) | U1 | DIP40 | 1 |
ADC0809 | 數(shù)模轉(zhuǎn)換 | U2 | DIP28 | 1 |
LCD1602 | 液晶 | U3 | SIP16 | 1 |
12M | 晶振 | Y1 | XTAL-200 | 1 |
4 PCB:
Proteus仿真和實(shí)物作品的區(qū)別:
1.運(yùn)行環(huán)境:Proteus仿真是在計(jì)算機(jī)上運(yùn)行的,而實(shí)物則是在硬件電路板上運(yùn)行。
2.調(diào)試方式:在Proteus仿真中,可以方便地進(jìn)行單步調(diào)試和觀察變量值的變化,而在實(shí)物中則需要通過調(diào)試器或者串口輸出等方式進(jìn)行調(diào)試。
電路連接方式:在Proteus仿真中,可以通過軟件設(shè)置進(jìn)行電路連接的修改,而在實(shí)物中則需要通過硬件電路板和連接線進(jìn)行修改。
3.運(yùn)行速度:Proteus仿真通常比實(shí)物運(yùn)行速度快,因?yàn)榉抡媸腔谟?jì)算機(jī)運(yùn)行的,而實(shí)物則需要考慮電路板上的物理限制和器件的響應(yīng)時(shí)間等因素。
4.功能實(shí)現(xiàn):在Proteus仿真中,可以通過軟件設(shè)置實(shí)現(xiàn)不同的功能,而在實(shí)物中則需要根據(jù)電路設(shè)計(jì)和器件的性能進(jìn)行實(shí)現(xiàn)。
5 程序設(shè)計(jì):
可使用Keil4/5打開工程文件,程序有關(guān)鍵注釋結(jié)合視頻理解。
//<程序名>:數(shù)字電壓表 **
//<功能>:使用LCD顯示被檢測電壓,精度為0.05V,范圍是0~5V。 **
#include"includes.h"
#define TIME0H 0x3C
#define TIME0L 0xB0
uchar uc_Clock=0; //定時(shí)器0中斷計(jì)數(shù)
bit b_DATransform=0;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把電壓顯示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void vShowVoltage(uint uiNumber)
{
uchar ucaNumber[3],ucCount;
if(uiNumber>999)
uiNumber=999;
ucaNumber[0]=uiNumber/100; //把計(jì)算數(shù)字的每個(gè)位存入數(shù)組。
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('.');
}
}
//*************************************************************************************************
//* *
//* ********************************主函數(shù)****************************** *
//* *
//*************************************************************************************************
void main()
{
TMOD=0x01; //定時(shí)器0,模式1。
TH0=TIME0H;
TL0=TIME0L;
TR0=1; //啟動(dòng)定時(shí)器。
ET0=1; //開定時(shí)器中斷。
EA=1; //開總中斷
vdInitialize();
vWriteCMD(0x84); //寫入顯示起始地址(第一行第4個(gè)位置)
vShowChar("voltage");
vWriteCMD(0xC9);
vShowChar("(V)");
while(1)
{
if(b_DATransform==1)
{
b_DATransform=0;
vWriteCMD(0xC4);
vShowVoltage(uiADTransform());
}
}
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定時(shí)器0中斷函數(shù)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
void t0() interrupt 1
{
if(uc_Clock==0)
{
uc_Clock=5;
b_DATransform=1;
}
else
uc_Clock--;
TH0=TIME0H; //恢復(fù)定時(shí)器0。
TL0=TIME0L;
}
6 設(shè)計(jì)報(bào)告:
該系統(tǒng)由延時(shí)子函數(shù)、LCD1602液晶忙檢測子函數(shù)、LCD1602液晶寫命令/寫數(shù)據(jù)子函數(shù)、漢字顯示子函數(shù)、LCD1602液晶顯示字符串子函數(shù)、LCD1602液晶初始化子函數(shù)、ADC0809轉(zhuǎn)換子函數(shù)、主函數(shù)和數(shù)據(jù)定義這幾部分組成。
7 資料清單 和下載鏈接:
0.常見使用問題及解決方法–必讀?。。。?/p>
1、源程序
2、仿真
3、原理圖
4、PCB圖
5、開題報(bào)告
6、設(shè)計(jì)報(bào)告
7、元器件清單
9、硬件框圖
10、講解視頻
Altium Designer 安裝破解
filename.bat
KEIL+proteus 單片機(jī)仿真設(shè)計(jì)教程
KEIL安裝破解
Proteus元器件查找
Proteus安裝
Proteus簡易使用教程
單片機(jī)學(xué)習(xí)資料
目錄清單.txt
相關(guān)數(shù)據(jù)手冊
答辯技巧
設(shè)計(jì)報(bào)告常用描述
鼠標(biāo)雙擊打開查找更多51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url
資料下載鏈接(可點(diǎn)擊):