大学毕业设计基于89c51的自动断电保护系统单片机课程.docx
《大学毕业设计基于89c51的自动断电保护系统单片机课程.docx》由会员分享,可在线阅读,更多相关《大学毕业设计基于89c51的自动断电保护系统单片机课程.docx(29页珍藏版)》请在冰豆网上搜索。
大学毕业设计基于89c51的自动断电保护系统单片机课程
单片机系统
课程设计
成绩评定表
设计课题:
基于89C51的自动断电保护系统
学院名称:
电气工程学院
专业班级:
学生姓名:
学号:
指导教师:
设计地点:
设计时间:
指导教师意见:
成绩:
签名:
年月日
单片机系统
课程设计
课程设计名称:
基于89C51的自动断电保护系统
专业班级:
学生姓名:
学号:
指导教师:
课程设计地点:
课程设计时间:
单片机系统课程设计任务书
学生姓名
专业班级
学号
题目
课题性质
工程设计
课题来源
选题
指导教师
主要内容
(参数)
利用89C51设计自动断电保护系统,实现以下功能:
1、实现开机后自动供电;
2、内部短路或超载时会自动断开电源;
3、利用互感,通过采集电流来控制继电器的常开,常闭触头。
4、采用警报,声音来提醒使用者来处理紧急事故
任务要求
(进度)
第1-2天:
熟悉课程设计任务及要求,查阅技术资料,确定设计方案。
第3-4天:
按照确定的方案设计单元电路。
要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。
第5-6天:
软件设计,编写程序。
第7-8天:
实验室调试。
第9-10天:
撰写课程设计报告。
要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。
主要参考
资料
[1]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:
国防工业出版社,2004
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
[3]阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006
审查意见
系(教研室)主任签字:
年月日
目录
一、引言3
二、总体方案设计4
三、硬件电路设计5
3.1单片机最小系统5
3.2电流采样电路和继电器控制电路7
3.3A/D采样电路8
3.4键盘和液晶显示电路10
3.5声光报警电路12
四、系统软件设计12
4.1主程序设计12
4.2中断服务程序设计13
4.3部分主要子程序设计16
五、系统调试18
六、总结18
参考文献:
18
附件A19
附件B20
一、引言
随着家用电器的增多,人们也越来越关心用电器的保护和用电安全的问题。
因此自动断电保护系统,逐步广泛应用于家庭用电器的保护设施,它能够实现开机后自动恢复供电功能。
当内部电路短路,用电功率超过设定值时,自动断电保护系统就会自动断开用电器的供电回路,使用电器停止工作,能够防止用电器进一步的损坏,避免发生一些不必要的损失。
该设计采用电流互感器,来采样线路上的电流值,然后与用户设定值进行比较,控制继电器的常闭点的断开与闭合,从而控制用电器的供电回路的断开与闭合。
同时该设计还提供了声光报警,用户可以及时的处理事故。
用户还可以通过键盘来设置限制电流的大小,同时电流的采样值和设置值都会通过液晶显示器显示出来,以供用户方便的使用和观察。
二、总体方案设计
按照任务要求和系统设计要求,控制系统包括以下几个部分:
1.控制器。
作为系统的核心元件,我们采用AT89C51单片机。
2.电流采样。
通过一个互感器进行电流的采样,将线路上的大电流转换为小电流值进行采样。
通过一个电阻将其转换成电压信号,方便单片机的读取。
3.A/D转换。
A/D转换芯片采用ADC0804八位模数转化器。
A/D转换器可以把测得的模拟量转化成数字量输出,可以直接读取。
4.继电器。
当电流超过设定值时,继电器断开,电路回路断开。
继电器在电路中起到断电保护作用,是系统的安全保障。
5.声光报警。
当电流值超过设定值时,进行报警
6.键盘。
通过键盘可以设置限制电流大小。
7.液晶显示器显示。
可以显示设置电流以及实时电流值大小。
总体设计结构图如图2-1所示:
图2-1总体设计结构图
三、硬件电路设计
3.1单片机最小系统
微控制器采用AT89C51,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器。
其主要特性如下:
·与MCS-51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
其最小系统主要包括复位电路,时钟电路。
AT89C51芯片电路图如图3-1所示:
图3-1AT89C51单片机芯片电路图
复位电路图如图3-2所示:
图3-2复位电路图
复位电路与AT89C51的访问外部程序存储器控制引脚EA和复位信号输入引脚RST相连。
此电路可以实现上电复位和手动复位,复位电路工作原理如上图所示,采用5V供电,+5V的VCC上电时,C3充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C3充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。
工作期间,按下S0,C3放电,在10K电阻上出现电压,使得单片机复位。
S0松手,C3又充电,几个毫秒后,单片机进入工作状态。
每次启动都需要重新设置限制电流大小,否则则默认为初始设置10A。
当微控制器运行发生错误时,可以对其手动复位,使其重新启动运行,再进行设置限制电流大小。
时钟电路图如图3-3:
图3-3时钟电路图
时钟电路接AT89C51的18和19引脚。
X1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入;X2接外部晶振和微调电容的另一端;此电路采用12M晶振给单片机提供时钟信号。
本设计时钟电路采用12M的晶振。
晶振的作用是给单片机正常工作提供稳定的时钟信号。
单片机的晶振并不是只能用12M,只要不超过20M就行,在准许的范围内,晶振越大,单片机运行越快,还有用12M的就是好算时间,因为一个机器周期为12个时钟周期,所以这样用12M的话,一个时钟周期为1/12us,那么机器周期为1us即定时器计一次数就是1us了,电容范围在20-40pF之间,这里连接的是30pF的电容。
机器周期=12*系统时钟周期。
3.2电流采样电路和继电器控制电路
电流采样电路,电路正常工作时继电器常闭触点闭合接通电流互感器,通过电流互感器按一定比例采样线路上的电流值大小,通过一个电阻,将电流信号转换为电压信号,方便单片机进行A/D转换,
继电器控制电路,当线路上的电流值大于设定电流值时,将P2.4端口置1,控制导通的信号置于高电平,使三极管饱和导通即Q2形成通路,则继电器常闭点断开,用电器电路回路断开,则用电器停止工作。
继电器两端单向并联一个二极管(负极接在VCC端,正极接在三极管集电极上),起到吸收电磁线圈断电后产生的反向电动势,保护三极管。
电路图如图3-4所示:
图3-4电流采样转换电路和继电器控制电路
3.3A/D采样电路
A/D采样电路采用集成A/D转换器ADC0804。
ADC0804是一款8位、单通道、低价格A/D转换器,主要特点是:
模数转换时间大约100us;方便TTL或CMOS标准接口;可以满足差分电压输入;具有参考电压输入端;内含时钟发生器;单电源工作时(0~5)V输入电压范围是0~5V;不需要调零。
1.芯片参数:
工作电压:
+5V,即VCC=+5V。
模拟转换电压范围:
0~+5V,即0≤Vin≤+5V。
分辨率:
8位,即分辨率为1/28=1/256,转换值介于0~255之间。
转换时间:
100us(fCK=640KHz时)。
转换误差:
±1LSB。
参考电压:
2.5V,即Vref=2.5V。
2.各个引脚名称及作用:
Vin(+)、Vin(-):
两个模拟信号输入端,可以接收单极性、双极性和差模输入信号。
DB0-DB7:
具有三态特性数字信号输出端,输出结果为八位二进制结果。
CLKIN:
时钟信号输入端。
CLKR:
内部时钟发生器的外接电阻端,与CLK端配合可由芯片自身产生时钟脉冲,其频率计算方式是:
fck=1/(1.1RC)。
CS:
片选信号输入端,低电平有效。
WR:
写信号输入端,低电平启动AD转换。
RD:
读信号输入端,低电平输出端有效。
INTR:
转换完毕中断提供端,AD转换结束后,低电平表示本次转换已完成。
VREF/2:
参考电平输入,决定量化单位。
VCC:
芯片电源5V输入。
AGND:
模拟电源地线。
DGND:
数字电源地线。
ADC0804外围电路如图3-5所示:
图3-5ADC0804外围电路
图3-5为ADC0804外围电路原理图,其中,VCC=5V,因此ADC转换的参考电压为VCC的值,即5V。
IN-接地,而IN+通过插座ANIN连接滑动变阻器
Re2的输出,因此IN+的电压输入范围为0V~5V,正好处于参考电压范围内。
引脚CS、WR和RD分别连接单片机的12,17以及16脚,而DB0~DB7连接单片机的P1脚。
3.4键盘和液晶显示电路
液晶显示电路采用带中文字库的12864液晶显示器。
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
12864液晶具有如下的特性:
1提供8位,4位并行接口及串行接口可选
2并行接口适配M6800时序
3自动电源启动复位功能
4内部自建振荡源
64×16位字符显示RAM(DDRAM最多16字符×4行,LCD显示范围16×2行)(改为
半角输入)
2M位中文字型ROM(CGROM),总共提供8192个中文字型(16×16点阵)
16K位半宽字型ROM(HCGROM),总共提供126个西文字型(16×8点阵)
64×16位字符产生RAM(CGRAM)
15×16位总共240点的ICONRAM(ICONRAM)
液晶显示电路如图3-6所示:
图3-6液晶显示电路
键盘电路采用3个独立的按键,一个功能切换键、一个加按键、一个减按键通过这三个按键可以来合理的设置限制电流的数值。
键盘电路与单片机的连接电路图如图3-7所示:
图3-7键盘电路与单片机的连接电路图
3.5声光报警电路
声光报警电路,采用三极管驱动音频放大器实现音频报警,当采样电流值大于电流设定值时,单片机P2.3引脚即FM端口产生100HZ的方波信号,控制Q1的通断,实现蜂鸣器报警;单片机P3.0端口变成高电平,则发光二极管点亮,实现报警功能。
此装置具有以下优点:
1、在远距离是可以通过声音及时通知
2、在近距离可以通过视听觉做出反应
3、在嘈杂的环境中可以通过视觉通知
4、两种器件配合更加安全可靠
电路图如图3-8所示:
图3-8声光报警电路
四、系统软件设计
软件设计包括主程序,中断服务程序等其它子程序
4.1主程序设计
主程序是系统上电或复位后首先要执行的程序,主程序主要完成系统的初始化、扫描显示、扫描键盘,A/D转换等工作。
主程序上电自动复位,也可手动复位;
主程序执行时,分别进行键盘扫描,A/D转换,以及液晶显示。
主程序流程图如图4-1所示:
图4-1主程序流程图
当系统上电或者手动复位时,首先进行系统初始化,设置堆栈地址,定时器0工作方式,中断触发方式以及其它系统初始化。
然后启动定时器和A/D转换。
然后进行不停的扫描键盘和显示。
4.2中断服务程序设计
外部中断服务程序流程图如图4-2所示:
图4-2外部中断服务程序流程图
当A/D转换结束时,ADC0804模数转换器INTR引脚输出一个低电平信号,使AT89C51产生外部中断,进入外部中断服务程序。
首先保护现场,然后读取AD值,进行数据的转换然后存储,并与设定的电流值进行大小比较,如果超过设定值,则继电器断开,用电器回路断开,并置1报警标志位。
恢复现场,中断返回。
定时器0中断服务程序流程图如图4-3所示:
图4-3定时器0中断服务程序流程图
定时器设置为10ms定时,每10ms中断一次,进入中断之后,首先保护现场,重装初值,判断是否处在报警状态,如果是,取反P2.4口,驱动扬声器进行声音报警。
如果没有处于报警状态在判断是否到1S,到1S,则重置1S计数初值,启动A/D转换然后恢复现场,中断返回,如果不到1S,则直接恢复现场,中断返回。
4.3部分主要子程序设计
系统主要子程序主要包括键盘子程序、键盘扫描子程序,显示子程序。
(1)键盘子程序设计
键盘子程序设计,采用三个独立按键来设置限制电流值的大小,第一次按下键1,启动限制电流大小的设置,最大限制电流处的液晶光标闪烁,按第二下键1液晶光标不再闪烁,表示调节结束。
按键2,则实现限制电流的增加,最大限制电流20A;按键3,则实现限制电流的减小,最小限制电流为0A。
(2)键盘扫描子程序设计流程图如图4-4所示:
图4-4键盘扫描子程序设计流程图
(3)显示子程序设计
系统上电后,即开始在默认的最大限制参考电流的第一行设置限制电流,第二行为系统测量电流即:
CIV:
20A
CTV:
00A
(CIV:
currentlimitvalue限制电流值。
CTV:
currenttestvalue测试电流值)
显示子程序设计流程图如图4-5所示:
图4-5显示子程序设计流程图
五、系统调试
由于硬件的限制,我们不能对互感器电流采样部分电路的测试,但是通过直接给ADC0804一个模拟信号进行了以下测试。
1、上电开始默认显示正常。
2、按键S1功能切换键、按键S2数值增键、按键S1数值减键正常。
3、上下限最值测试正常。
4、A/D转换结果测试正常。
5、声光报警装置测试正常。
六、总结
通过本次的单片机课程设计,使我更好的掌握了单片机的使用,更好地理解了单片机内部的数据存储,中断和定时器的应用,单片机外部电路的接口技术,数据总线的运用,也更深入的了解了汇编语言,熟悉了汇编指令的功能以及程序的编写。
让我知道想设计好一个完整稳定的系统,需要考虑很多的细节,并不是那么容易,对我以后进入工作起到很大的帮助。
参考文献:
[1]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:
国防工业出版社,2004
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
[3]阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006
附件A
附件B
程序:
ORG0000H
LJMPMAIN
ORG0003H
LJMPTS
ORG000BH
LJMPT_0
ORG0030H
MAIN:
MOVSP,#3FH;设置堆栈
MOV60H,#0;采集数据显示缓冲区
MOV70H,#10;设置数据显示缓冲区
MOVR0,#60H
MOVR1,#70H
MOVR6,#50
MOVR7,#200;1S计数值
CLR20H;报警状态标志位
CLR21H;设置数据标志位
CLRP2.3;音频报警
CLRP2.4;继电器
CLRP3.0;LED
MOVTH0,#0F6H;定时器0装初值
MOVTL0,#3CH
SETBIT0;外部中断触发方式设置
MOVIE,#83H;开总中断,外部中断0,定时器中断0
SETBTR0;启动定时器
MOVA,#0
MOVDPTR,#8000H;片选ADC0804
MOVX@DPTR,A;启动AD
LOOP:
LCALLDISPLAY;调用显示
LCALLKEY;扫描键盘
LJMPLOOP
KEY:
PUSHACC;保护现场
PUSHPSW
PUSHDPH
PUSHDPL
LCALLKEY_VALUE
JB21H,KEY0_0;判断是否处于设置数据状态
KEY0:
CJNEA,#01H,RETURN;判断键值
LCALLDISPLAY;调用显示延时,消抖
CJNEA,#01H,RETURN
LCALLKEY_VALUE
JNZKEY0;等键释放
SETB21H;设置数据状态标志位置1
LJMPRETURN;返回
KEY0_0:
CJNEA,#01H,KEY1;判断键值
LCALLDISPLAY;调用显示延时消抖
CJNEA,#01H,KEY1
LCALLKEY_VALUE
JNZKEY0_0;等键释放
CLR21H;设置完成,清除标志位
LJMPRETURN;返回
KEY1:
CJNEA,#02H,KEY2;判断键值
LCALLDISPLAY;调用显示延时,消抖
CJNEA,#02H,KEY2
LCALLKEY_VALUE
JNZKEY1;等键释放
INC70H;设置数据缓冲区加1
CJNE@R1,#20,RETURN;判断是否到最大值20
MOV70H,#0;是,归0
LJMPRETURN;返回
KEY2:
CJNEA,#04H,RETURN;判断键值
LCALLDISPLAY;调用显示延时,消抖
CJNEA,#04H,RETURN
LCALLKEY_VALUE
JNZKEY2;等键释放
DEC70H;设置数据缓冲区加1
CJNE@R1,#0,RETURN;判断是否到最小值0
MOV70H,#20;是,变为20
RETURN:
POPDPL;恢复现场
POPDPH
POPPSW
POPACC
RET
KEY_VALUE:
;读键值子程序
MOVDPTR,#09002H;送键盘列码地址
MOVA,#00H
MOVX@DPTR,A;扫描键盘
MOVDPTR,#08001H;送行码地址
MOVXA,@DPTR
ANLA,#0FH;读键值
RET
DISPLAY:
RSEQUP3.5
R/WEQUP3.6
EEQUP3.4
PSBEQUP3.7
DO-D7EQUP0
ORG0000H
AJMPMAIN
ORG0100H
;以下是主程序,进行初始化
MAIN:
MOVSP,#60H
MOVA,#00111000B;功能设置指令,8位接口,显示两行,5*7字符
LCALLWriteIR;调写指令寄存器子程序
MOVA,#00001110B;显示开关控制指令,显示器开,光标开,光标不闪烁
LCALLWriteIR
MOVA,#00000110B;输入方式设置指令,字符不动,光标自动右移一格
LCALLWriteIR
MOVA,#00000001B;清屏指令,将DDRAM数据全部填入“空白”
LCALLWriteIR
MOVA,#10000000B;DDRAM地址设置指令,写入显示地址为第1行第1位
ACALLWriteIR
MOVDPTR,#TAB1;指向TAB1表首
ACALLSTRING;调字符串处理子程序
MOVA,#11000000B;DDRAM地址设置指令,写入显示地址为第2行第1位
ACALLWriteIR
MOVDPTR,#TAB2;指向TAB2表首
ACALLSTRING;调字符串处理子程序
SJMP$
;检查忙碌子程序
CheckBusy:
PUSHACC
LOOP:
CLRRS;选择指令寄存器
SETBRW;选择读模式
MOVD0-D7,#0FFH;P0口写1,准备写入
SETBE;使能LCD
MOVAD0-D7;将LCD的D0—D7由P0口送A,以便查第7位BF是否为0
CLRE;禁止LCD
JBACC.7,LOOP;判断由LCD读入第7位BF是否为1,若为1表示LCD忙
ACALLDELAY;调延时子程序
POPACC
RET
;写入IR寄存器子程序
WriteIR:
PUSHACC
ACALLCheckBusy;调检查忙碌子程序
CLRE;禁止LCD
CLRRS;选择指令寄存器
CLRRW;选择写模式
STEBE;使能LCD
MOVD0-D7,A;将控制指令写入LCD
SETBE;使能LCD
CLRE;禁止LCD
POPACC
RET
;写入DR寄存器子程序
WriteIR:
PUSHACC
ACALLCheckBusy;调检查忙碌子程序
CLRE;禁止LCD
SETBRS;选择数据寄存器
CLRRW;选择写模式
STEBE;使能LCD
MOVD0-D7,A;将控制指令写入LCD
SETBE;使能LCD
CLRE;禁止LCD
POPACC
RET
;以下是字符串处理子程序
STRING:
PUSHACC
LOOP1:
MOVA,#00H
MOVCA,@A+DPTR
JZPROC
ACALLWriteDDR
INCDPTR
AJMPLOOP1
PROC:
POPACC
RET
;以下是2.5ms延时子程序
DELAY:
MOVR5,#5
D2:
MOVR4,#248
D1:
DJNZR4,D1
DINZR5,D2
RET
TAB1:
DB43H,49H,56H,3AH,32H,30H,41H,00H;CIV:
20A的代码,00H表示结束
TAB2:
DB43H,54H,56H,3AH,30H,30H,41H,00H;CTV:
00AD代码,00H表示结束
DELAY:
;延时函数
MOVR6,#50
DELAY_LOOP:
DJNZR6,DELAY_LOOP
RET
TS:
PUSHACC;保护现场
PUSHPSW
PUSHDPH
PUSHDPL
MOVDPTR,#8000H;