基于51單片機(jī)智能電表的設(shè)計(jì)與制作_第1頁
基于51單片機(jī)智能電表的設(shè)計(jì)與制作_第2頁
基于51單片機(jī)智能電表的設(shè)計(jì)與制作_第3頁
基于51單片機(jī)智能電表的設(shè)計(jì)與制作_第4頁
基于51單片機(jī)智能電表的設(shè)計(jì)與制作_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

目錄

1產(chǎn)品功能分析.........................................................................................................1

2設(shè)計(jì)方案遴選.........................................................................................................1

2.1單片機(jī)的選擇..............................................................................................1

2.2顯示電路的選擇............................................................................................1

2.3系統(tǒng)框圖設(shè)計(jì)..............................................................................................2

3產(chǎn)品硬件設(shè)計(jì).........................................................................................................4

3.1STC89C52RC單片機(jī)核心電路設(shè)計(jì).............................................................4

3.2LCD1602液晶顯示功能的實(shí)現(xiàn)...................................................................4

4產(chǎn)品軟件設(shè)計(jì).........................................................................................................5

4.1按鍵掃描程序流程圖設(shè)計(jì)..........................................................................5

4.2主程序流程圖設(shè)計(jì)......................................................................................5

5產(chǎn)品設(shè)計(jì)技術(shù)標(biāo)準(zhǔn).................................................................................................7

附錄1元器件清單...................................................................................................8

附錄2電路原理圖...................................................................................................9

附錄3PCB設(shè)計(jì)圖..................................................................................................10

附錄4產(chǎn)品實(shí)物圖.................................................................................................11

附錄5程序代碼.....................................................................................................12

參考資料.....................................................................................................................23

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

基于51單片機(jī)智能電表的設(shè)計(jì)與制作

1產(chǎn)品功能分析

智能電表主要集中在通過集成電路測(cè)量力量并連續(xù)處理數(shù)據(jù)的單個(gè)計(jì)算機(jī)

上,實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù),直觀的顯示電壓,電流。電力的使用是透明的,可以實(shí)時(shí)

讀取,可以提高意識(shí),實(shí)現(xiàn)低碳循環(huán)。

2設(shè)計(jì)方案遴選

2.1單片機(jī)的選擇

第一種方案是采用STM32F103RCT6來控制,STM32F103RCT6是增強(qiáng)型的32

位處理器,有256K字節(jié)的FLASH存儲(chǔ)器,48K字節(jié)的SRAM,有比較多的I/O口,

芯片上帶有模數(shù)轉(zhuǎn)換器,定時(shí)器較多,它的連通性比較強(qiáng)。

第二種方案是采用STC89C52來控制,51系列單片機(jī)起步較早,發(fā)展到現(xiàn)在

技術(shù)相對(duì)成熟,有許許多多成功的應(yīng)用例子,所以STC89C52適合很多地方使用,

兼容很多的單片機(jī),能夠媲美很多的單片機(jī)設(shè)計(jì)。STC89C52與市場(chǎng)上很多的單

片機(jī)比較,這一款單片機(jī)具備很多的優(yōu)勢(shì),比如價(jià)格便宜,開發(fā)較為方便等等。

2.2顯示電路的選擇

方案1:LCD1602液晶屏

LCD1602的屏幕由幾個(gè)矩陣字符位組成,每個(gè)字符位可以顯示一個(gè)字符。液

晶位之間有一個(gè)點(diǎn)距離,同一行之間有一個(gè)點(diǎn)距離來分隔兩個(gè)相鄰的字符。該

設(shè)計(jì)使用戶更容易查看數(shù)據(jù)。這個(gè)模塊的特點(diǎn)是它可以顯示各種類型。該模塊

允許顯示三種類型的信息,如數(shù)字、字符和符號(hào)。

方案2:采用電子管顯示

LED數(shù)碼管是由幾個(gè)LED封裝在一起。有靜態(tài)顯示和動(dòng)態(tài)顯示兩種驅(qū)動(dòng)模式。

數(shù)碼管價(jià)格便宜,易于編程,但只能顯示單個(gè)數(shù)字和字母,系統(tǒng)采用液晶LCD1602

顯示數(shù)據(jù)。

2

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

2.3系統(tǒng)框圖設(shè)計(jì)

系統(tǒng)框圖如圖2-1所示。

電能計(jì)量模塊電源電路

DS18B20溫度采集

單片機(jī)處理單LCD1602顯示

繼電器控制電路

蜂鳴器報(bào)警

按鍵電路設(shè)置電路

圖2-1系統(tǒng)框圖

3

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

3產(chǎn)品硬件設(shè)計(jì)

3.1STC89C52RC單片機(jī)核心電路設(shè)計(jì)

STC89C52RCmcu是采用宏技術(shù)的新一代高速/低耗電/超強(qiáng)抗干擾mcu。升級(jí)

的mcu8051,可以選擇6個(gè)時(shí)鐘周期/機(jī)器和12個(gè)時(shí)鐘周期/機(jī)器。命令代碼和

以前的8051是完全可以兼容的。工作電壓:5.5v~3.3v(mcu5v)/3.8v~2

.0v(mcu3v)。工作頻率范圍為0~40mhz,相當(dāng)于一般8051的0~80mhz,

實(shí)際工作頻率為48mhz,它的應(yīng)用空間為8kb。它有EEPROM功能,它還有看門

狗功能。3個(gè)計(jì)時(shí)器/計(jì)數(shù)器共計(jì)16位。通用異步串行端口(UART),計(jì)時(shí)器軟件

也可以實(shí)現(xiàn)多種UART。工作溫度范圍:工業(yè)級(jí):-40~+85℃/商業(yè)級(jí):0~75℃。

3.2LCD1602液晶顯示功能的實(shí)現(xiàn)

智能計(jì)數(shù)器顯示程序只需要計(jì)算所需的位數(shù),即可確定需要照亮的相應(yīng)段

和位。

LCD1602有16個(gè)引腳,其中RS、RW的值控制單片機(jī)對(duì)它的讀寫:

讀busy(DB7),以及讀取位址計(jì)數(shù)器

1

0(DB0—DB6)的值

10寫入數(shù)據(jù)寄存器(顯示各字符等)

11從數(shù)據(jù)寄存器讀取數(shù)據(jù)

LCD1602液晶顯示器在執(zhí)行程序指令之前必須執(zhí)行模塊指示位的占用信號(hào),

并且只有當(dāng)其占用指示位處于低功率時(shí)才能執(zhí)行指令。

4

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

4產(chǎn)品軟件設(shè)計(jì)

4.1按鍵掃描程序流程圖設(shè)計(jì)

智能電表中的鍵盤組是用電腦芯片編程進(jìn)行掃描的。一般來說,密鑰驗(yàn)證

程序是不斷重復(fù)的,即每個(gè)主要程序周期都伴隨著密鑰驗(yàn)證。在掃描程序中,

如果按下一個(gè)鍵,程序?qū)呙柩舆t一段時(shí)間后,如果仍按下該鍵,則認(rèn)為該鍵

已按下。如果有按鍵確定被按下時(shí),但不知道是哪個(gè),然后程序就按照行列掃

描的方式來確定是哪個(gè)鍵被按下,在根據(jù)相應(yīng)的程序,并執(zhí)行對(duì)應(yīng)的功能。而

它的按鍵的掃描程序流程圖如圖4-1所示。

開始

延時(shí)程序

N

檢測(cè)有鍵按下?

Y

延時(shí)10MS

N

檢測(cè)有鍵按下?

YN

鍵按是否釋放?

Y

執(zhí)行相應(yīng)的

程序

圖4-1按鍵掃描程序流程圖

4.2主程序流程圖設(shè)計(jì)

主程序流程圖如圖4-2所示。

5

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

開始

電能模塊初始化

Lcd1602初始化

DS18B20初始化

LCD1602顯示當(dāng)前信息

是否按下按鍵

按鍵設(shè)置

否否

上限下限

繼電器斷開

是是

蜂鳴器報(bào)警

圖4-2主程序流程圖

返回

6

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

5產(chǎn)品設(shè)計(jì)技術(shù)標(biāo)準(zhǔn)

[1]J-STD-001E電氣與電子組件的焊接要求

[2]IPC-A-610D(中文版),IPC-A-610E電子組件的可接受性要求

[3]IPC-7711/21電子組件和電路板的返工&返修

[4]GB/T11457-2006信息技術(shù)軟件工程術(shù)語;

[5]GB/T8566-2007信息技術(shù)軟件生存周期過程標(biāo)準(zhǔn);

[6]GB/T8567-2006計(jì)算機(jī)軟件文檔編制規(guī)范。

7

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

附錄1元器件清單

8

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

附錄2電路原理圖

9

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

附錄3PCB設(shè)計(jì)圖

10

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

附錄4產(chǎn)品實(shí)物圖

11

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

附錄5程序代碼

#include"common.h"

#include"uart.h"

#include"lcd1602.h"

#include"DS18B20_One.h"

#include"eeprom52.h"

#include"CRC.h"

////按鍵引腳

sbitKEY1=P1^0;

sbitKEY2=P1^1;

sbitKEY3=P1^2;

sbitKEY4=P1^3;

sbitRelay=P3^6;//繼電器

sbitbeep=P2^0;//蜂鳴器

unsignedcharInformation_bits[6]={0xF8,0x04,0x00,0x00,0x00,0x05};//信息位

unsignedshortCRC16_VAL=0;//CRC值

unsignedcharSend_Cmd[8]={0};//發(fā)送緩存

unsignedcharReceive[COM_RX1_Lenth];//接收緩存

unsignedintVoltage=0;//電壓

unsignedlongCurrent=0;//電流

unsignedlongPower=0;//功率

unsignedintVoltageMax=240;//電壓上限

unsignedlongCurrentMax=6000,PowerMax=20000;//電流功率上限

bitrefresh=0;//刷新標(biāo)志

bitjinji=0;

unsignedcharsetn=0;

ucharcheck=111;//校驗(yàn)

voidsava_data()//存儲(chǔ)數(shù)據(jù)zc

{

SectorErase(0x2000);//清除扇區(qū)

//存儲(chǔ)電壓報(bào)警值,16bit

byte_write(0x2001,(VoltageMax>>0)&0xff);

12

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

byte_write(0x2002,(VoltageMax>>8)&0xff);

//存儲(chǔ)電流報(bào)警值,32bit

byte_write(0x2003,(CurrentMax>>0)&0xff);

byte_write(0x2004,(CurrentMax>>8)&0xff);

byte_write(0x2005,(CurrentMax>>16)&0xff);

byte_write(0x2006,(CurrentMax>>24)&0xff);

//存儲(chǔ)功率報(bào)警值,32bit

byte_write(0x2007,(PowerMax>>0)&0xff);

byte_write(0x2008,(PowerMax>>8)&0xff);

byte_write(0x2009,(PowerMax>>16)&0xff);

byte_write(0x200A,(PowerMax>>24)&0xff);

byte_write(0x200B,TempMax);

byte_write(0x200C,check);

}

voidread_data()//讀取數(shù)據(jù)

{

check=byte_read(0x200C);

if(check!=111)//檢測(cè)單片機(jī)是不是第一次上電,如果是則先將數(shù)據(jù)先存儲(chǔ)

一遍再讀取

{

check=111;

sava_data();//存儲(chǔ)

}

VoltageMax=byte_read(0x2002)<<8|byte_read(0x2001);//電壓上限

//讀取電流上限

CurrentMax=byte_read(0x2006)<<24;

CurrentMax|=byte_read(0x2005)<<16;

CurrentMax|=byte_read(0x2004)<<8;

CurrentMax|=byte_read(0x2003);

//讀取功率上限

PowerMax=byte_read(0x200A)<<24;

PowerMax|=byte_read(0x2009)<<16;

PowerMax|=byte_read(0x2008)<<8;

PowerMax|=byte_read(0x2007);

}

voidGet_PZEM_004T_Data()//發(fā)送讀取字節(jié)

{

CRC16_VAL=CRC16(Information_bits,6);//獲取CRC

//////信息碼

13

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

Send_Cmd[0]=Information_bits[0];

Send_Cmd[1]=Information_bits[1];

Send_Cmd[2]=Information_bits[2];

Send_Cmd[3]=Information_bits[3];

Send_Cmd[4]=Information_bits[4];

Send_Cmd[5]=Information_bits[5];

//////CRC碼

Send_Cmd[6]=(CRC16_VAL>>8)&0xFF;//高字節(jié)位

Send_Cmd[7]=(CRC16_VAL>>0)&0xFF;//低字節(jié)位

uart_send(Send_Cmd,8);//串口發(fā)送

}

voidTime0_Init()//定時(shí)器0

{

TMOD|=0x01;

TH0=0x4C;//50ms

TL0=0x00;

ET0=1;

TR0=1;

EA=1;

}

voiddisplay()//顯示數(shù)據(jù)

{//顯示電壓

lcd_write_char(2,0,Voltage%10000/1000+0x30);

lcd_write_char(3,0,Voltage%1000/100+0x30);

lcd_write_char(4,0,Voltage%100/10+0x30);

//顯示電流

lcd_write_char(8,0,Current%1000000/100000+0x30);

lcd_write_char(9,0,Current%100000/10000+0x30);

lcd_write_char(10,0,Current%10000/1000+0x30);

lcd_write_char(12,0,Current%1000/100+0x30);

lcd_write_char(13,0,Current%100/10+0x30);

lcd_write_char(14,0,Current%10+0x30);

//顯示功率

lcd_write_char(2,1,Power%1000000/100000+0x30);

lcd_write_char(3,1,Power%100000/10000+0x30);

lcd_write_char(4,1,Power%10000/1000+0x30);

lcd_write_char(5,1,Power%1000/100+0x30);

lcd_write_char(6,1,Power%100/10+0x30);

lcd_write_char(8,1,Power%10+0x30);

14

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

}

voiddisplaySetValue()//顯示設(shè)置值

{

if(setn==1)

{

lcd_write_char(6,1,VoltageMax%1000/100+48);

lcd_write_char(7,1,VoltageMax%100/10+48);

lcd_write_char(8,1,VoltageMax%10+48);

}

if(setn==2)

{

lcd_write_char(4,1,CurrentMax%1000000/100000+0x30);

lcd_write_char(5,1,CurrentMax%100000/10000+0x30);

lcd_write_char(6,1,CurrentMax%10000/1000+0x30);

lcd_write_char(8,1,CurrentMax%1000/100+0x30);

lcd_write_char(9,1,CurrentMax%100/10+0x30);

lcd_write_char(10,1,CurrentMax%10+0x30);

}

if(setn==3)

{

lcd_write_char(4,1,PowerMax%1000000/100000+0x30);

lcd_write_char(5,1,PowerMax%100000/10000+0x30);

lcd_write_char(6,1,PowerMax%10000/1000+0x30);

lcd_write_char(7,1,PowerMax%1000/100+0x30);

lcd_write_char(8,1,PowerMax%100/10+0x30);

lcd_write_char(10,1,PowerMax%10+0x30);

}

if(setn==4)

{

lcd_write_char(7,1,TempMax/10+48);

lcd_write_char(8,1,TempMax%10+48);

}

}

voidbaojing()//報(bào)警

{

if((Voltage/10)>=VoltageMax||Current>=CurrentMax||

Power>=PowerMax||temperature>=TempMax||jinji==1)//電壓電流功率溫度超限,

蜂鳴器報(bào)警,關(guān)閉繼電器模擬斷電

{

beep=0;

15

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

Relay=1;

}

else

{

beep=1;

Relay=0;

}

}

voidkeyscan()//按鍵掃描

{

if(KEY1==0)//設(shè)置鍵按下

{

delay_ms(10);//消抖

if(KEY1==0)

{

setn++;

if(setn>4)//按下次數(shù)超過4次。退出設(shè)置

{

setn=0;

lcd_write_str(0,0,"U:000VI000.000A");

lcd_write_str(0,1,"P:00000.0WT:00C");

}

if(setn==1)//設(shè)置電壓界面

{

lcd_write_str(0,0,"settheVoltage");

lcd_write_str(0,1,"000V");

displaySetValue();

}

if(setn==2)//設(shè)置電流界面

{

lcd_write_str(0,0,"settheCurrent");

lcd_write_str(0,1,"000.000A");

displaySetValue();

}

if(setn==3)//設(shè)置功率界面

{

lcd_write_str(0,0,"setthePower");

lcd_write_str(0,1,"00000.0W");

displaySetValue();

16

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

}

if(setn==4)//設(shè)置溫度界面

{

lcd_write_str(0,0,"settheTemp");

lcd_write_str(0,1,"00C");

displaySetValue();

}

while(KEY1==0);

}

}

if(KEY2==0)//加鍵按下

{

delay_ms(10);

if(KEY2==0)

{

while(KEY2==0);

if(setn==1)

{

if(VoltageMax<260)VoltageMax++;//電壓

每次加1

displaySetValue();//顯示

}

if(setn==2)

{

if(CurrentMax<

999999)CurrentMax+=1000;//電壓每次加1000,相當(dāng)于加1A

displaySetValue();//顯示

}

if(setn==3)

{

if(PowerMax<230000)PowerMax+=100;//功

率每次加100,相當(dāng)于加10W

displaySetValue();//顯示

}

if(setn==4)

{

if(TempMax<99)TempMax++;//溫度每次

加1

17

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

displaySetValue();//顯示

}

sava_data();//保存數(shù)據(jù)

delay_ms(50);

}

}

if(KEY3==0)//減鍵按下

{

delay_ms(10);

if(KEY3==0)

{

while(KEY3==0);

if(setn==1)

{

if(VoltageMax>80)VoltageMax--;//最小到

80V

displaySetValue();

}

if(setn==2)

{

if(CurrentMax>=1000)CurrentMax-=1000;//

最小到0A

displaySetValue();

}

if(setn==3)

{

if(PowerMax>=100)PowerMax-=100;//最小

到0W

displaySetValue();

}

if(setn==4)

{

if(TempMax>0)TempMax--;//最小到0

displaySetValue();

}

sava_data();//保存數(shù)據(jù)

delay_ms(50);

18

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

}

}

if(KEY4==0)//緊急按鍵

{

delay_ms(10);

if(KEY4==0)

{

jinji=~jinji;

baojing();

while(KEY4==0);

}

}

}

voidmain()

{

unsignedcharlen;

read_data();

delay_ms(1000);

delay_ms(1000);

lcd_init();//1602初始化

Time0_Init();

uart_init(9600);//串口初始化,波特率9600

lcd_write_str(0,0,"U:000VI000.000A");

lcd_write_str(0,1,"P:00000.0WT:00C");

Relay=0;

while(1)

{

keyscan();//按鍵掃描

if(refresh==1&&setn==0)//刷新

{

refresh=0;

Get_PZEM_004T_Data();//發(fā)送讀取字節(jié)

len=uart_recv(Receive,100);//有數(shù)據(jù)返回,接收串口數(shù)

據(jù)

if(len>0)

{

if(Receive[1]==0x04)

{

Voltage=Receive[3]<<8|

Receive[4];//計(jì)算電壓值

///////計(jì)算電流值

19

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

Current=Receive[7]<<24;

Current|=Receive[8]<<16;

Current|=Receive[5]<<8;

Current|=Receive[6];

///////計(jì)算功率值

Power=Receive[11]<<24;

Power|=Receive[12]<<16;

Power|=Receive[9]<<8;

Power|=Receive[10];

}

}

display();//顯示

baojing();

}

}

}

voidtimer1_str()interrupt1

{

staticucharcount=0;

TH0=0x4C;//50ms

TL0=0x00;

if(count++>=20)//1秒時(shí)間到

{

count=0;

refresh=1;

}

}#include"common.h"

voiddelay_ms(ucharms)//延時(shí)毫秒函數(shù)

{

#ifMAIN_Fosc==12000000L

unsignedchari,j;

do

{

i=2;

j=239;

do

{

while(--j);

}

while(--i);

20

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論