69、基于51单片机智能交流电表蓝牙远程抄表OLED屏系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)

news2024/10/7 4:28:30

方案选择
单片机的选择

方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。其片内的8K程序存储器是FLASH工艺的,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护我们的劳动成果。再者,AT89C52目前的售价比8031还低,市场供应也很充足。AT89C52可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于8K,四个I/O口全部提供给用户。可用5V电压编程,而且擦写时间仅需lOms。AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。PO口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。

方案二:STC89C52系列单片机的指令系统和AT89C52系列的完全兼容,但实际操作起来却存在很多问题:

(1)AT89C52不带ISP下载,要用下载器才行,STC89C52可以用你的USB转串口下载,下载软件可以到STC厂家网上去下。

(2)STC单片机执行指令的速度很快,大约是AT的3-30倍,尽管快是好事,但这样一来,你在AT上好使的程序在STC上不一定好用,最典型的例子就是那些对时序有严格要求的模块,用STC时注意得加长延时,大约是AT的10—30倍就差不多,这一点自己调试就知道了。

(3)STC单片机对工作环境的要求比较低,电压低于5伏时仍然正常工作,甚至3伏到4伏之间都还可以工作,然而这样的环境下AT肯定不行了,所以当一个系统用STC单片机好用,但用AT的单片机不工作时,直接查最小系统,看单片机的供电是否正常。

比较这两种方案,由于在学校期间学过数字电路、单片机原理、C语言程序设计,综合考虑单片机的各部分资源和作为学生能够获得的资源,经过对比此次设计要求,我选择用STC系列芯片完成。而且学校也提供了相应的硬件操作平台,实际操作起来比较方便,故STC为更合理的选择。本系统选择STC89C52单片机作为主控芯片。足够本设计运行,且价格便宜,下载程序方便。
 

STC89C52单片机核心系统电路设计

 STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。

一、STC89C52主要特性如下:

(1)8K字节程序存储空间;

(2)512字节数据存储空间;

(3)内带4K字节EEPROM存储空间;

(4)可直接使用串口下载。

二、STC89C52主要参数如下:

(1)增强型8051单片机,6时钟/机器周期和12 时钟/机器周期可以任意选择,指令代码完全兼容传统8051;

(2)工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机);

(3)工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作 频率可达48MHz;

(4)用户应用程序空间为8K字节;

(5)片上集成512 字节RAM;

(6)通用I/O 口(32个),复位后为:P1/P2/P3 是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O口用时,需加上拉电阻;

(7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片;

(8)具有EEPROM功能;

(9)共3个16 位定时器/计数器。即定时器T0、T1、T2;

(10)外部中断4路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒;

(11)通用异步串行口(UART),还可用定时器软件实现多个UART;

(12)工作温度范围:-40~+85℃(工业级)/0~75℃(商业级);

(13)PDIP封装。

三、STC89C52单片机相关引脚说明:

(1)VCC:供电电压。

(2)GND:接地。

(3)P3.0 RXD(串行输入口)

(4)P3.1 TXD(串行输出口)

(5)P3.2 /INT0(外部中断0)

(6)P3.3 /INT1(外部中断1)

(7)P3.4 T0(记时器0外部输入)

(8)P3.5 T1(记时器1外部输入)

(9)P3.6 /WR(外部数据存储器写选通)

(10)P3.7 /RD(外部数据存储器读选通)

(11)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

(12)ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

(13)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

(14)/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

(15)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

(16)XTAL2:来自反向振荡器的输出。

一、硬件方案

硬件构成:本系统由STC89C52单片机最小系统电路、OLED液晶显示电路、交流电压互感器TV1005M、交流电流互感器TA1005M、继电器驱动电路、ADC0832(或xx0832芯片)的AD转换电路、蜂鸣器报警驱动电路、(无线蓝牙/WIFI模块-可选)、按键电路及电源组成。

二、设计功能

单片机型号:STC89C52/51、AT89C52/51、AT89S52/51 都可通用。

1、220V市电经过互感器后产生微弱交流电信号,经过整流滤波后变为直流,然后通过ADC0832进行AD转换传送给单片机,单片机换算出实际值,最终获取到交流电压(单位V)、交流电流(单位A);由功率(单位W) = 电压*电流;电量(KW*H即度)是功率的时间累积。另外包括电费的单价(单位元/度),电费(元)、功率阈值及继电器状态等参数。电费=电费单价*电量。OLED液晶实时显示相应数据。

2、上电初始化。液晶显示相应的标题。功率阈值、电费单价可以通过按键进行设置大小。设置阈值可以通过按键K1进行设置,其中K2、K3可以对设置阈值进行加减处理。相应设置位置显示“<”指示。

3、当不在设置参数时,即非设置状态下,可以通过K2按键手动的控制继电器是否动作,通过K3按键控制蜂鸣器是否报警。也可以根据实际功率值决定,当功率值超过功率阈值时蜂鸣器报警,同事继电器断开(此时功率过高断开开关)。液晶相应位置显示具体数据。

4、设置功率阈值和单价数据保存到单片机EEPROM中,具有掉电不丢失功能。注意设备牵扯到市电220V,当220V电源接通后一定要注意安全,不要手动触摸220V电源部分,以免造成安全隐患。

5、无线APP功能(注意配备蓝牙/WIFI才有该功能):
APP能够连接板载无线模块,查看相应数据;
APP能够操作上述存在的功能操作。
APP能够发送指令/或者接收指令。完成功能的使用,具有强大的实用性功能,方便快捷智能化!

三、实物图


 

 

 

四、原理图

在本设计做的过程中,硬件和软件方面都遇到了许多问题,但是相比于软件,在硬件方面还是比较快解决的方面,因为硬件是比较容易检查出来错误的,软件比较晦涩难懂,还是有一定难度。
在硬件调试问题上,首先焊接好了元器件实物板后,先用万用表测量这个工业板子的电源方面,电源方面是最重要的问题,应该是特别需要检查的地方,以防止电源的短路和正负极的错误。然后在仔细检查电路的连接是否有问题,或者有没有虚焊或者没有焊接到的地方,然后核对一下元器件的安装是否有问题,安装上去是否符合规定,由于已经是大学四年都是做过了很多实训过来了,对于这些还是游刃有余的,但是在上机调试后还是发现了很多的问题。

 

五、PCB图

在本设计做的过程中,硬件和软件方面都遇到了许多问题,但是相比于软件,在硬件方面还是比较快解决的方面,因为硬件是比较容易检查出来错误的,软件比较晦涩难懂,还是有一定难度。
在硬件调试问题上,首先焊接好了元器件实物板后,先用万用表测量这个工业板子的电源方面,电源方面是最重要的问题,应该是特别需要检查的地方,以防止电源的短路和正负极的错误。然后在仔细检查电路的连接是否有问题,或者有没有虚焊或者没有焊接到的地方,然后核对一下元器件的安装是否有问题,安装上去是否符合规定,由于已经是大学四年都是做过了很多实训过来了,对于这些还是游刃有余的,但是在上机调试后还是发现了很多的问题。


 

六、程序源码  

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。


 

 

资料包括: 

 

需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/692354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

404系列之404界面

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>404</title><style>* {border: 0;box-sizing: border-box;margin: 0;padding: 0;}:root {-…

PLC数据采集如何实现远程监控和远程维护上下载?

随着PLC在工业自动化控制领域得到越来越广泛的应用&#xff0c;PLC数据采集是也逐渐成为现代工业自动化的重要组成部分。通过采集PLC内的数据&#xff0c;可以实时监测控制生产过程及工艺参数&#xff0c;提高生产效率和产品质量&#xff0c;能够使企业能够获取关键生产数据&am…

面试中经常问到的线程安全的集合类,这样回答会显得很优雅

前言&#xff1a; 本篇文章主要讲解面试中经常问到的线程安全的集合类的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出&#xff0c;对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小伙伴儿了&#x1f601; 以…

03【锁、事务原理、MVCC】

文章目录 一、MySQL锁机制1.1 锁的分类1.1.1 按操作分1.1.2 按粒度分1.1.3 按算法划分 1.2 MyIsam引擎锁1.2.1 准备数据1.2.2 MySIAM引擎写锁1.2.3 MySIAM引擎读锁1.2.4 小结1.2.5 表锁应用场景1.2.6 InnoDB的表锁1.2.7 MyISAM 的并发插入1.2.8 MyISAM的锁调度 1.3 InnoDB 引擎…

通达信超跌反弹选股公式,使用筹码函数WINNER

在前面的文章中&#xff0c;已经介绍了WINNER函数&#xff0c;不过对于如何使用函数&#xff0c;当时只进行了简单举例&#xff0c;没有做深入研究。本文将结合WINNER函数的特性&#xff0c;编写通达信超跌反弹选股公式。 WINNER函数表示获利盘比例&#xff0c;取值范围是0-1&…

【Leetcode】17.电话号码的字母组合

一、题目 1、题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例1: 输入:digits = "23" 输出:["ad","ae",…

剑指 Offer 38: 字符串的排列

这道题一看就是使用回溯法&#xff0c;但是由于是排列&#xff0c;所以索引和组合不同&#xff08;组合的索引是从start标志位开始&#xff09;&#xff0c;排列是从下标为0开始&#xff0c;并且需要借助排序&#xff01;所以需要先转化成将String转化为char[]类型&#xff0c;…

微信小程序开发流程

如今微信小程序定制需要一个开发周期和流程&#xff0c;比起模板来说&#xff0c;定制开发的流程更加复杂。做微信小程序定制开发&#xff0c;首先要做的工作就是确定需求和框架的确立&#xff0c;比如一个社交小程序&#xff0c;可能考虑的问题不只是用户之间消息沟通&#xf…

Android 之 Handler

Android 的消息机制是基于Handler实现的。Handler 采用的是一种生产者-消费者模型&#xff0c;Handler 就是生产者&#xff0c;通过它可以生产需要执行的任务。而 Looper 则是消费者&#xff0c;不断从 MessageQueue 中取出Message 对这些消息进行消费。 MesageQueue是在底层调…

maven-mvnd(新版maven)

引言&#xff1a; Maven和Gradle几乎包含了所有Java项目的构建。 而目前绝大部分的Java项目都是使用Maven的方式&#xff0c;Maven对比Gradle的劣势很明显&#xff0c;就是太慢了&#xff01; 一、maven-mvnd是什么&#xff1f; maven-mvnd是Apache Maven团队开发的maven的…

python学习笔记-1

文章目录 cmd中写py基本语法字面量字符串 注释变量数据类型数据类型转换标识符 cmd中写py 如果我没有素质&#xff0c;就说我是日本人 基本语法 字面量 字面量&#xff1a;在代码中&#xff0c;被写下来的&#xff0c;固定的值&#xff0c;称之为字面量。有六种值&#xff0…

下载iOS开发教程:下载和安装指南

目录 引言 一. 下载安装appuploader windows启动 部分功能不可用处理 驱动安装 二. 登录appuploader 常规使用登录方法 验证码说明 使用上传专用密码登录 未支付688给apple账号登录 [ 五、代码实现](# 五、代码实现) 六、总结 引言 这里汇总了开发相关过程中的热门…

【vue element-ui 】el-table中使用checkbox视图更新滞后

本来想通过列表中每个对象的某个属性绑定到checkbox的状态&#xff0c;但是发现有个问题&#xff1a;就是点击复选框后&#xff0c;数据确实改变了&#xff0c;但是视图没有改变&#xff0c;当点击其他row的时候&#xff0c;才会更新之前的数图。如下图&#xff0c;第1次勾选第…

【JavaScript】严格模式use strict

use strict 它不是一条语句&#xff0c;但是是一个字面量表达式声明&#xff0c;在 JavaScript 旧版本中会被忽略。 为什么使用严格模式use strict: 消除Javascript语法的一些不合理、不严谨之处&#xff0c;减少一些怪异行为; 消除代码运行的一些不安全之处&#xff0c;保证代…

Jmeter调试取样器(Debug Sampler)

大家在调试 JMeter 脚本时有没有如下几种需求&#xff1a; 我想知道参数化的变量取值是否正确&#xff01;我想知道正则表达式提取器&#xff08;或json提取器&#xff09;提取的值是否正确&#xff01;我想知道 JMeter 属性&#xff01;调试时服务器返回些什么内容&#xff0…

复杂数组的处理方法之多维数组扁平化

1.需求: 将数组[1&#xff0c;2&#xff0c;[3&#xff0c;4&#xff0c;[5&#xff0c;6]]&#xff0c;7&#xff0c;[8&#xff0c;[9&#xff0c;10]]] 转换为 [1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;7&#xff0c;8&#xff0c…

五、HAL_Timer的定时功能

1、开发环境 (1)Keil MDK: V5.38.0.0 (2)STM32CubeMX: V6.8.1 (3)MCU: STM32F407ZGT6 2、定时器简介 (1)定时器可以通过输入的时钟源进行计数&#xff0c;从而达到定时的功能。 3、实验目的&原理图 3.1、实验目的 (1)通过定时器设置定时&#xff0c;实现LED灯以500…

13 - 信号可靠性剖析

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. 信号的可靠性1.1 问题1.2 信号查看&#xff08;kill -l&#xff09;1.3 信号的分类1.3.1 不可靠信号&#xff08;传统信号&#xff09;…

模拟仿真 OSC振荡器

用五个反相器做一个环形振荡器 跑瞬态仿真 发现并未振荡 手动添加起振 成功振荡 将上面的图像send to calculate&#xff0c;调用频率函数freq 可以看到振荡频率为2.5GHZ左右 如果想要降低振荡频率&#xff0c;可以在每个反相器后加寄生电容或者增大反相器尺寸&#xff0c;这…

ProGuard详解 - Java代码混淆

(29条消息) ProGuard详解 - Java代码混淆_黎陌MLing的博客-CSDN博客