单片机监测交流电压报警系统设计.docx
《单片机监测交流电压报警系统设计.docx》由会员分享,可在线阅读,更多相关《单片机监测交流电压报警系统设计.docx(23页珍藏版)》请在冰豆网上搜索。
![单片机监测交流电压报警系统设计.docx](https://file1.bdocx.com/fileroot1/2023-4/17/dd28e4d2-9cf9-4b7d-a3fe-dbb60e168998/dd28e4d2-9cf9-4b7d-a3fe-dbb60e1689981.gif)
单片机监测交流电压报警系统设计
(此文档为word格式,下载后您可任意编辑修改!
)
《电子技术课程设计》任务书
1.课程设计的内容和要求(包括原始数据、技术要求、工作要求等):
基于单片机交流电压检测报警。
1.1技术要求与工作要求
a、可以对民用电压进行检测的
b、超出设定电压范围会自动报警
c、报警采用声光两种方式
d、利用仿真软件对硬件电路仿真;
e、检测边界:
交流电压190.3伏至240.4伏
2.对课程设计成果的要求〔包括图表(或实物)等硬件要求〕:
设计电路,编写程序,安装调试或仿真,分析实验结果,并写出设计说明书,语言流畅简洁,文字不得少于5000字。
要求图纸布局合理,符合工程要求,使用proteus软件绘出原理图,器件的选择要有计算依据。
3.主要参考文献:
2何立民.单片机应用系统设计.北京航天航空大学出版社,1999
3张洪润等.单片机应用技术教程.清华大学出版社,1997
4张毅刚等.MCS-51单片机应用设计.哈尔滨工业大学出版社,1997
5王长胤等.单片单板机原理与应用.武汉大学出版社,1993
6何立民.单片机高级教程.北京:
北京航空航天大学出版社,2004
7何立民.I2C总线应用系统设计.北京:
北京航空航天大学出版社,2004
8潘琢金等.C8051F×××高速SOC单片机原理及应用.北京:
北京航空航天大学出版社,2002
9李群芳等.单片微机计算机与接口技术.北京:
电子工业出版社,2001
4.课程设计工作进度计划:
序号
起迄日期
工作内容
1
2010.12.15
布置任务,教师讲解设计方法及要求
2
学生查找阅读资料,初定方案,小组会议讨论并确定方案
3
硬件电路设计及程序编写
4
仿真、实验并写说明书,小组讨论
5
2010.12.31
答辩
主指导教师
肖金凤老师
日期:
2010年12月13日
前言
本次单片机课程设计,我所选的题目是关于民用电压异常报警的。
具有一定的实用功能,且生产方便。
该报警系统对交流电路进行实时的采样,一旦电压高于或低于设定的正常阈值,系统就会触发报警动作,提醒人们做出相应措施。
系统在设计上采用了AT89C51单片机作为控制器,采用了TI公司的新产品串行口A/D转换芯片TLC1543作为接口芯片。
使系统具有体积小,功能强,功耗小,设计电路简单易于调试等特点。
摘 要:
本文是单片机的一个设计性实验,以AT89C51作为核心控制元件,是一个用于监测民用220V交流电压的系统,该系统能实时采样并对交流电压正常,如果所测量的电压偏高,或偏低做出相应的灯光显示和声音报警。
关键词:
单片机;交流电压监测;程序;报警
Abstract
thisarticleisasinglechipdesignexperiment,withAT89C51asthecorecontroldevice,isaformonitoringcivil220Vacvoltageofthesystem,thesystemcanreal-timesamplingandacvoltagenormal,ifthemeasurementofvoltageonthehighside,orlowmakecorrespondinglightdisplayandalarm.
Keywords:
SCM,Acvoltagemonitoring;Program;alarm
1、系统的硬件电路6
1.1、电源电路6
1.2、模拟量输入电路6
1.2.1、上拉电阻7
1.4、单片机处理电路10
1.4.1、at89c51简介10
1.4.2、复位电路12
1.5、软件环境13
1.6、报警电路15
2、交直流电压对照表16
3、软件设计16
3.1、TLC1543进行采样、A/D转换的程序17
3.2、制报警器的程序20
3.4、总的程序22
4、结束语25
参考文件:
26
1、系统的硬件电路
系统分为5个部分:
电源电路(电路略)、模拟量输入电路、A/D转换电路、单片机处理电路和报警电路。
各电路功能如下:
1.1、电源电路
将民用交流电压转换成系统器件正常工作的电压,为TLC1543、AT89C51和报警电路等提供工作电源。
该电路采用了变压器、二极管等器件构成稳压电源,稳压性能良好,约为+5V。
1.2、模拟量输入电路
因为民用交流电压的范围远远大于A/D转换芯片所能接受的范围,实验表明,该电路的功能主要是把民用交流电压经过降压、整流滤波和调压等步骤得到低值的直流模拟量,供给A/D转换芯片采样。
技术难点就是要能使交流电压与直流电压成线性关系。
电路采用Π形滤波电路。
图1.1滤波电路
1.2.1、上拉电阻
1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。
2、OC门电路必须加上拉电阻,才能使用。
3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。
4、在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。
5、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。
6、提高总线的抗电磁干扰能力。
管脚悬空就比较容易接受外界的电磁干扰。
7、长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。
上拉电阻阻值的选择原则包括:
1、从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小。
2、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。
3、对于高速电路,过大的上拉电阻可能边沿变平缓。
综合考虑以上三点,通常在1k到10k之间选取。
对下拉电阻也有类似道理在数字电路中不用的输入脚都要接固定电平,通过1k电阻接高电平或接地。
1.电阻作用:
接电组就是为了防止输入端悬空减弱外部电流对芯片产生的干扰保护cmos内的保护二极管,一般电流不大于10mA上拉和下拉、限流改变电平的电位,常用在TTL-CMOS匹配
2.在引脚悬空时有确定的状态
3.增加高电平输出时的驱动能力。
4、为OC门提供电流
i.那要看输出口驱动的是什么器件,如果该器件需要高电压的话,而输出口的输出电压又不够,就需要加上拉电阻。
ii.如果有上拉电阻那它的端口在默认值为高电平你要控制它必须用低电平才能控制如三态门电路三极管的集电极,或二极管正极去控制把上拉电阻的电流拉下来成为低电平。
反之,
iii.尤其用在接口电路中,为了得到确定的电平,一般采用这种方法,以保证正确的电路状态,以免发生意外,比如,在电机控
制中,逆变桥上下桥臂不能直通,如果它们都用同一个单片机来驱动,必须设置初始状态.防止直通!
2、定义:
l上拉就是将不确定的信号通过一个电阻嵌位在高电平!
电阻同时起限流作用!
下拉同理!
i.上拉是对器件注入电流,下拉是输出电流
ii.弱强只是上拉电阻的阻值不同,没有什么严格区分
iii.对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。
1.3、A/D转换电路
对“模拟量输入电路”中提供的直流模拟量进行采用,完成从模拟到数字(A/D)的转换功能,并把所得的结果提供给CPU,为CPU作出后续处理提供依据。
TLC1543特性简介
TLC1543是由TI公司开发的开关电容式AD转换器,该芯片具有如下的一些特点:
10位精度、11通道、三种内建的自测模式、提供EOC(转换完成)信号等。
该芯片与单片机的接口采用串行接口方式,引线很少,与单片机连接简单。
图1是TLC1543的引脚示意图,其中A0~A10是11路输入,Vcc和GND分别是电源引脚,REF+和REF-分别是参考电源的正负引脚,使用时一般将REF-接到系统的地,达到一点接地的要求,以减少干扰。
其余的引脚是TLC1543与CPU的接口,其中CS为片选端,如不需选片,可直接接地。
I/O Clock是芯片的时钟端,Adress是地址选择端,Data Out是数据输出端,这三根引脚分别接到CPU的三个I/O端即可。
EOC用于指示一次AD转换已完成,CPU可以读取数据,该引脚是低电平有效,根据需要,该引脚可接入CPU的中断引脚,一旦数据转换完成,向CPU提出中断请求;此外,也可将该引脚接入一个普通的I/O引脚,CPU通过查询该引脚的状态来了解当前的状态,甚至该引脚也可以不接,在CPU向TLC1543发出转换命令后,过一段固定的时间去读取数据即可。
图1.2tlc543外形图
1.4、单片机处理电路
1.4.1、at89c51简介
该电路主要功能是根据TLC1543提供的A/D转换结果,判断该结果对应的交流电压正常与否,而分别做出不同的报警信号。
在程序设计中我们根据实际调试,选取了两个边界值,代表着正常工作电压范围的两端,当A/D转换得到的数据送进AT89C51中,CPU将该结果与边界值比较,CPU将从而作出不同的报警动作,它与A/D系统构成了工作的核心。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51?
指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
1.主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
2.管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
1.4.2、复位电路
计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。
MCS-51单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后该引脚上出现2个机器周期(即24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51保持复位状态。
此时ALE、PSEN、P0、P1、P2、P3口都输出高电平。
RST变为低电平后,退出复位,CPU从初始状态开始工作。
单片机采用的复位方式是自动复位方式。
对于MOS(STC89C51)单片机只要接一个电容至VCC即可(见图3.3)。
在加电瞬间,电容通过电阻充电,就在RST端出现一定时间的高电平,只要高电平时间足够长,就可以使MCS-51有效的复位。
RST端在加电时应保持的高电平时间包括VCC的上升时间和振荡器起振的时间,Vss上升时间若为10ms,振荡器起振的时间和频率有关。
10MHZ时约为1ms,1MHZ时约为10ms,所以一般为了可靠的复位,RST在上电应保持20ms以上的高电平。
RC时间常数越大,上电RST端保持高电平的时间越长。
若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运转。
图1.3复位电路
1.5、软件环境
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
其功能特点
Proteus软件具有其它EDA工具软件(例:
multisim)的功能。
这些功能是:
(1)原理布图
(2)PCB自动或人工布线
(3)SPICE电路仿真
革命性的特点
(1)互动的电路仿真
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
(2)仿真处理器及其外围电路
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型
上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
图1.4系统的硬件电路
1.6、报警电路
本电路采用声音和灯光报警。
CPU根据A/D转换结果和选取的边界域值,从而判断出此时对应的电压是正常,或偏高,或偏低。
当正常时,使绿灯亮;当电压偏高时使红灯亮,同时峰鸣器响;当电压偏低时使黄灯亮,同时蜂鸣器响。
说明:
a1提供报警电路的电源应与其它电路的电源分开,以免干扰。
b1数字信号地和模拟信号地不要串接,应分别联接公共地,以防瞬间电流产生干扰。
c1红灯、绿灯、黄灯(发光二极管)的导通电阻可能是不同的,所以发光报警电路上的配阻要根据实际情况选用。
图1.5报警电路
2、交直流电压对照表
表2.1交直流电压对照表
3、软件设计
软件主要完成控制TLC1543进行采样、A/D转换,并从中取得结果以及根据结果作出相应的报警动作。
根据交直流电压对照,我们选取交流190.3伏对应的直流1.705伏和交流240.4伏对应的直流2.182伏两组作为正常电压边界域值,当参考电压+5V时,1.705V和2.182V对应的A/D结果为56H和6FH,将两值在程序中设定为比较的边界值。
TLC1543是10位精度,AT89C51是8位的处理器,本系统采用8位工作方式,转换通道为A0,数字长度为8位,MSB前导,单极性。
报警是采用位操作指令,指示灯电路是从各引脚引出,低电平时电路导通,点亮LED;相反高电平时,LED灭;蜂鸣器电路是高电平导通。
其程序流程图如图2。
图3.1程序流程图
3.1、TLC1543进行采样、A/D转换的程序
#include
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineD_OUT=P1^0//输入电压信号
#defineD_IN=P1^1
#define_CS=P1^2
#defineCLOCK=P1^3
uintread1543(ucharport)//从TLC1543读取采样值,形参port是采样的通道号
{
uintdataad;uintdatai;
uchardataal=0,ah=0;
CLOCK=0;
_CS=0;
port<<=4;
for(i=0;i<4;i++)//把通道号打入1543
{
D_IN=(bit)(port&0x80);CLOCK=1;CLOCK=0;
port<<=1;
}
for(i=0;i<6;i++)//填充6个CLOCK
{
CLOCK=1;CLOCK=0;
}
_CS=1;_nop_();_nop_();_CS=0;//等待AD转换
for(i=0;i<2;i++)//取D9,D8
{
D_OUT=1;
CLOCK=1;
ah<<=1;
if(D_OUT)ah|=0x01;
CLOCK=0;
}
for(i=0;i<8;i++)//取D7--D0
{
D_OUT=1;
CLOCK=1;
al<<=1;
if(D_OUT)al|=0x01;
CLOCK=0;
}
_CS=1;
ad=(uint)ah;ad<<=8;ad|=al;//得到AD值
return(ad);
}
3.2、制报警器的程序
#include
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineD_OUT=p1^0
sbitled_1=P1^4;//数码管1(红灯)的位选信号
sbitled_2=P1^5;//数码管2(绿灯)的位选信号
sbitled_3=P1^6;//数码管3(黄灯)的位选信号
sbitBUZZER=P1^7;//定义蜂鸣器的控制引脚
voiddelay(intt)
{if(p1<0X56)
{p1^4=1;p1^7=1;
}
else
{if(p1>0x6F)
{p1^5=1;
}
else
{p1^6=1;p1^7=1;
}
}
3.3、蜂鸣器的程序
#include
#include
#include
#defineuintunsignedint
sbitBUZZER=P1^7;//定义蜂鸣器的控制引脚
voiddelay(uintv)
{
while(v!
=0)v--;
}
main()
{
delay(100);
while
(1)
{
BUZZER=1;//蜂鸣器关闭
delay(100);
BUZZER=0;//蜂鸣器发声
delay(100);
}
}
3.4、总的程序
#include
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineD_OUT=P1^0//输入电压信号
#defineD_IN=P1^1
#define_CS=P1^2
#defineCLOCK=P1^3//脉冲的位选信号
sbitled_1=P1^4;//数码管1(红灯)的位选信号
sbitled_2=P1^5;//数码管2(绿灯)的位选信号
sbitled_3=P1^6;//数码管3(黄灯)的位选信号
sbitBUZZER=P1^7;//定义蜂鸣器的控制引脚
uintread1543(ucharport)//从TLC1543读取采样值,形参port是采样的通道号
{
uintdataad;uintdatai;
uchardataal=0,ah=0;
CLOCK=0;
_CS=0;
port<<=4;
for(i=0;i<4