




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南商务职业技术学院毕业设计
目录
1产品功能分析.........................................................................................................1
2设计方案遴选.........................................................................................................1
2.1单片机的选择..............................................................................................1
2.2显示电路的选择............................................................................................1
2.3系统框图设计..............................................................................................2
3产品硬件设计.........................................................................................................4
3.1STC89C52RC单片机核心电路设计.............................................................4
3.2LCD1602液晶显示功能的实现...................................................................4
4产品软件设计.........................................................................................................5
4.1按键扫描程序流程图设计..........................................................................5
4.2主程序流程图设计......................................................................................5
5产品设计技术标准.................................................................................................7
附录1元器件清单...................................................................................................8
附录2电路原理图...................................................................................................9
附录3PCB设计图..................................................................................................10
附录4产品实物图.................................................................................................11
附录5程序代码.....................................................................................................12
参考资料.....................................................................................................................23
湖南商务职业技术学院毕业设计
基于51单片机智能电表的设计与制作
1产品功能分析
智能电表主要集中在通过集成电路测量力量并连续处理数据的单个计算机
上,实时监测数据,直观的显示电压,电流。电力的使用是透明的,可以实时
读取,可以提高意识,实现低碳循环。
2设计方案遴选
2.1单片机的选择
第一种方案是采用STM32F103RCT6来控制,STM32F103RCT6是增强型的32
位处理器,有256K字节的FLASH存储器,48K字节的SRAM,有比较多的I/O口,
芯片上带有模数转换器,定时器较多,它的连通性比较强。
第二种方案是采用STC89C52来控制,51系列单片机起步较早,发展到现在
技术相对成熟,有许许多多成功的应用例子,所以STC89C52适合很多地方使用,
兼容很多的单片机,能够媲美很多的单片机设计。STC89C52与市场上很多的单
片机比较,这一款单片机具备很多的优势,比如价格便宜,开发较为方便等等。
2.2显示电路的选择
方案1:LCD1602液晶屏
LCD1602的屏幕由几个矩阵字符位组成,每个字符位可以显示一个字符。液
晶位之间有一个点距离,同一行之间有一个点距离来分隔两个相邻的字符。该
设计使用户更容易查看数据。这个模块的特点是它可以显示各种类型。该模块
允许显示三种类型的信息,如数字、字符和符号。
方案2:采用电子管显示
LED数码管是由几个LED封装在一起。有静态显示和动态显示两种驱动模式。
数码管价格便宜,易于编程,但只能显示单个数字和字母,系统采用液晶LCD1602
显示数据。
2
湖南商务职业技术学院毕业设计
2.3系统框图设计
系统框图如图2-1所示。
电能计量模块电源电路
DS18B20温度采集
单片机处理单LCD1602显示
元
继电器控制电路
蜂鸣器报警
按键电路设置电路
图2-1系统框图
3
湖南商务职业技术学院毕业设计
3产品硬件设计
3.1STC89C52RC单片机核心电路设计
STC89C52RCmcu是采用宏技术的新一代高速/低耗电/超强抗干扰mcu。升级
的mcu8051,可以选择6个时钟周期/机器和12个时钟周期/机器。命令代码和
以前的8051是完全可以兼容的。工作电压:5.5v~3.3v(mcu5v)/3.8v~2
.0v(mcu3v)。工作频率范围为0~40mhz,相当于一般8051的0~80mhz,
实际工作频率为48mhz,它的应用空间为8kb。它有EEPROM功能,它还有看门
狗功能。3个计时器/计数器共计16位。通用异步串行端口(UART),计时器软件
也可以实现多种UART。工作温度范围:工业级:-40~+85℃/商业级:0~75℃。
3.2LCD1602液晶显示功能的实现
智能计数器显示程序只需要计算所需的位数,即可确定需要照亮的相应段
和位。
LCD1602有16个引脚,其中RS、RW的值控制单片机对它的读写:
读busy(DB7),以及读取位址计数器
1
0(DB0—DB6)的值
10写入数据寄存器(显示各字符等)
11从数据寄存器读取数据
LCD1602液晶显示器在执行程序指令之前必须执行模块指示位的占用信号,
并且只有当其占用指示位处于低功率时才能执行指令。
4
湖南商务职业技术学院毕业设计
4产品软件设计
4.1按键扫描程序流程图设计
智能电表中的键盘组是用电脑芯片编程进行扫描的。一般来说,密钥验证
程序是不断重复的,即每个主要程序周期都伴随着密钥验证。在扫描程序中,
如果按下一个键,程序将扫描延迟一段时间后,如果仍按下该键,则认为该键
已按下。如果有按键确定被按下时,但不知道是哪个,然后程序就按照行列扫
描的方式来确定是哪个键被按下,在根据相应的程序,并执行对应的功能。而
它的按键的扫描程序流程图如图4-1所示。
开始
延时程序
N
检测有键按下?
Y
延时10MS
N
检测有键按下?
YN
键按是否释放?
Y
执行相应的
程序
图4-1按键扫描程序流程图
4.2主程序流程图设计
主程序流程图如图4-2所示。
5
湖南商务职业技术学院毕业设计
开始
电能模块初始化
Lcd1602初始化
DS18B20初始化
LCD1602显示当前信息
否
是否按下按键
是
按键设置
否否
上限下限
继电器断开
是是
蜂鸣器报警
图4-2主程序流程图
返回
6
湖南商务职业技术学院毕业设计
5产品设计技术标准
[1]J-STD-001E电气与电子组件的焊接要求
[2]IPC-A-610D(中文版),IPC-A-610E电子组件的可接受性要求
[3]IPC-7711/21电子组件和电路板的返工&返修
[4]GB/T11457-2006信息技术软件工程术语;
[5]GB/T8566-2007信息技术软件生存周期过程标准;
[6]GB/T8567-2006计算机软件文档编制规范。
7
湖南商务职业技术学院毕业设计
附录1元器件清单
8
湖南商务职业技术学院毕业设计
附录2电路原理图
9
湖南商务职业技术学院毕业设计
附录3PCB设计图
10
湖南商务职业技术学院毕业设计
附录4产品实物图
11
湖南商务职业技术学院毕业设计
附录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};//发送缓存
unsignedcharReceive[COM_RX1_Lenth];//接收缓存
unsignedintVoltage=0;//电压
unsignedlongCurrent=0;//电流
unsignedlongPower=0;//功率
unsignedintVoltageMax=240;//电压上限
unsignedlongCurrentMax=6000,PowerMax=20000;//电流功率上限
bitrefresh=0;//刷新标志
bitjinji=0;
unsignedcharsetn=0;
ucharcheck=111;//校验
voidsava_data()//存储数据zc
{
SectorErase(0x2000);//清除扇区
//存储电压报警值,16bit
byte_write(0x2001,(VoltageMax>>0)&0xff);
12
湖南商务职业技术学院毕业设计
byte_write(0x2002,(VoltageMax>>8)&0xff);
//存储电流报警值,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);
//存储功率报警值,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()//读取数据
{
check=byte_read(0x200C);
if(check!=111)//检测单片机是不是第一次上电,如果是则先将数据先存储
一遍再读取
{
check=111;
sava_data();//存储
}
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()//发送读取字节
{
CRC16_VAL=CRC16(Information_bits,6);//获取CRC
//////信息码
13
湖南商务职业技术学院毕业设计
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;//高字节位
Send_Cmd[7]=(CRC16_VAL>>0)&0xFF;//低字节位
uart_send(Send_Cmd,8);//串口发送
}
voidTime0_Init()//定时器0
{
TMOD|=0x01;
TH0=0x4C;//50ms
TL0=0x00;
ET0=1;
TR0=1;
EA=1;
}
voiddisplay()//显示数据
{//显示电压
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
湖南商务职业技术学院毕业设计
}
voiddisplaySetValue()//显示设置值
{
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()//报警
{
if((Voltage/10)>=VoltageMax||Current>=CurrentMax||
Power>=PowerMax||temperature>=TempMax||jinji==1)//电压电流功率温度超限,
蜂鸣器报警,关闭继电器模拟断电
{
beep=0;
15
湖南商务职业技术学院毕业设计
Relay=1;
}
else
{
beep=1;
Relay=0;
}
}
voidkeyscan()//按键扫描
{
if(KEY1==0)//设置键按下
{
delay_ms(10);//消抖
if(KEY1==0)
{
setn++;
if(setn>4)//按下次数超过4次。退出设置
{
setn=0;
lcd_write_str(0,0,"U:000VI000.000A");
lcd_write_str(0,1,"P:00000.0WT:00C");
}
if(setn==1)//设置电压界面
{
lcd_write_str(0,0,"settheVoltage");
lcd_write_str(0,1,"000V");
displaySetValue();
}
if(setn==2)//设置电流界面
{
lcd_write_str(0,0,"settheCurrent");
lcd_write_str(0,1,"000.000A");
displaySetValue();
}
if(setn==3)//设置功率界面
{
lcd_write_str(0,0,"setthePower");
lcd_write_str(0,1,"00000.0W");
displaySetValue();
16
湖南商务职业技术学院毕业设计
}
if(setn==4)//设置温度界面
{
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,相当于加1A
displaySetValue();//显示
}
if(setn==3)
{
if(PowerMax<230000)PowerMax+=100;//功
率每次加100,相当于加10W
displaySetValue();//显示
}
if(setn==4)
{
if(TempMax<99)TempMax++;//温度每次
加1
17
湖南商务职业技术学院毕业设计
displaySetValue();//显示
}
sava_data();//保存数据
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();//保存数据
delay_ms(50);
18
湖南商务职业技术学院毕业设计
}
}
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();//发送读取字节
len=uart_recv(Receive,100);//有数据返回,接收串口数
据
if(len>0)
{
if(Receive[1]==0x04)
{
Voltage=Receive[3]<<8|
Receive[4];//计算电压值
///////计算电流值
19
湖南商务职业技术学院毕业设计
Current=Receive[7]<<24;
Current|=Receive[8]<<16;
Current|=Receive[5]<<8;
Current|=Receive[6];
///////计算功率值
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秒时间到
{
count=0;
refresh=1;
}
}#include"common.h"
voiddelay_ms(ucharms)//延时毫秒函数
{
#ifMAIN_Fosc==12000000L
unsignedchari,j;
do
{
i=2;
j=239;
do
{
while(--j);
}
while(--i);
20
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初一英语复习题Unit2知识点详细总结
- 学前教育观察与反思报告
- 译林版四年级下Unit4精讲精练资料
- 医生年度个人考核工作总结13篇
- (2025年标准)法人私人账户协议书
- 金融科技企业估值方法与投资策略在2025年市场趋势预测报告
- 环保技术创新在2025年产业升级中的应用案例分析报告
- (2025年标准)多边承认协议书
- 医疗行业大数据隐私保护技术在2025年合规监管下的挑战与应对策略报告
- (2025年标准)动态存货质押协议书
- GB 1886.174-2024食品安全国家标准食品添加剂食品工业用酶制剂
- 网络安全管理规范vfd样本
- 病案讨论(横纹肌溶解)课件
- 华南理工大学入学考试(英语)
- 部编小学语文四年级上册第一单元大单元教学设计
- 医院检验科实验室生物安全管理手册
- 关于女性生殖健康知识讲座
- 全国新闻记者职业资格考试一本通
- 2023年福建省泉州市初中化学学科教学研训讲座-明晰目标要求优化行动策略
- 山西人文知识竞赛考试题库及答案(500题)
- 医疗器械操作规程
评论
0/150
提交评论