自动化1001班高洪亮.docx
《自动化1001班高洪亮.docx》由会员分享,可在线阅读,更多相关《自动化1001班高洪亮.docx(31页珍藏版)》请在冰豆网上搜索。
自动化1001班高洪亮
单片机系统
课程设计
成绩评定表
设计课题:
基于89C51的自动断电保护系统
学院名称:
专业班级:
学生姓名:
学号:
目录
一、引言.......................................2
二、总体方案论证与设计......................3
三、硬件电路设计
3.1时钟电路...............................6
3.2复位电路...............................7
3.3电流采样电路和继电器控制电路............7
3.4A/D采样电路...........................9
3.5键盘和显示接口电路....................10
3.5声光报警电路............................11
四、系统软件设计
4.1主程序设计流程图.........................12
4.2中断服务程序设计.........................12
4.3键盘和显示子程序设计.....................14
五、系统调试................................15
六、总结....................................15
参考文献....................................15
附件A.......................................17
附件B..........................................18
一、引言
现在人们生活离不开家用电器,并对家用电器的安全使用等提出了更高的要求。
自动断电保护系统不仅可以因为电路内部短路或者用电器超载时自动切断,防止发生用电事故,减少不必要的损失,而且系统中使用电流互感器,通过比较电流的采集值与设定值来自动控制继电器的通断,从而可以控制回路中电流的通断。
该系统中还设定了声光报警装置,使用户及时发现和处理用电事故。
二、总体方案论证与设计
按照任务要求和系统设计要求,控制系统包括以下几个部分:
1.控制器。
由于89c51单片机比较便宜,而且性能可以满足该系统的使用,因此可以作为该系统的控制核心。
2.A/D转换器。
ADC0809转换器模拟输入电压范围0~+5V,不需零点和满刻度校准,而且能耗低,工作温度范围宽,所以可以作为该系统的转换器。
3.电流采样。
可以通过一个互感器把大电流转换成小的电流,同时可以通过传感器把电流值转化成电压值输出。
4.继电器。
使用过电流电流继电器,当电流超过设定值时,继电器断开,电路回路断开,一般电流过电流继电器的工作电流为系统干路电流的2.2倍。
5.声光报警。
当电流值超过设定值时,进行报警。
6.键盘。
通过键盘可以设置限制电流大小。
7.数码管显示。
可以显示设置电流以及实时电流值大小。
图2.1就是总体设计图:
构
图:
图2-1总体设计结构图
三、硬件电路设计
3.1时钟电路
单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。
在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常C1和C2一般取30pF,晶振的频率取值在1.2MHz~12MHz之间。
对于外接时钟电路,要求XTAL1接地,XTAL2脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于12MHz即可。
晶体振荡器的振荡信号从XTAL2端送入内部时钟电路,它将该振荡信号二分频,产生一个两相时钟信号P1和P2供单片机使用。
时钟信号的周期称为状态时间S,它是振荡周期的2倍,P1信号在每个状态的前半周期有效,在每个状态的后半周期P2信号有效。
CPU就是以两相时钟P1和P2为基本节拍协调单片机各部分有效工作。
如图3.1和3.2为单片机内时钟电路:
图3.1内部自激震荡电路
图3.2时钟电路
3.2复位电路
在上电或复位过程中,控制CPU的复位状态:
这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
单片机系统的复位方式有:
手动按钮复位和上电复位。
复位方式有手动复位、上电复位和积分型复位。
图3.3就是上电复位电路图:
图3.3上电复位电路图
3.3A/D转换电路
ADC0809CMOS工艺为8通道,8位逐次逼近式A/D模数转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
其主要特性:
·8路输入通道,8位A/D转换器,即分辨率为8位。
·具有转换起停控制端。
·转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)
·单个+5V电源供电
·模拟输入电压范围0~+5V,不需零点和满刻度校准。
·工作温度范围为-40~+85摄氏度
·低功耗,约15mW
引脚功能
ADC0809芯片有28条引脚,采用双列直插式封装。
下面说明各引脚功能。
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
VCC:
电源,单一+5V。
GND:
地。
A/D转换采样电路。
CS0接面板上的CS0端口,选择ADC0809芯片地址,A0,A1,A2接AD转换通道选择段,因为本设计只涉及一个通道0,所以可以赋值0即可,数据输出端接单片机AD0-AD7口,当ADC0809数据转换结束时,EOC端口输出一个高电平。
经过一个反相器,接单片机的外部中断输入口。
向单片机申请中断,读取数据。
图3.4就是A/D转换电路图:
图3.4A/D转换电路
3.4电流采样电路和继电器控制电路
采样电路采用电流互感器进行,并通过一定的放大和转换电路,把电流值转化成对应的电压值输出。
当电流值大于设定值后继电器会自动断开使用电器停止工作并保护电路。
图3.5就是电流采样和转换电路:
图3.5电流采样和转化电路
3.5显示电路设计
本系统中来实现段码和位码数据所存采用74LS374锁存器。
该电路会使用户设置的电流值和采集的电流值清晰的显示出来。
键盘电路会对74LS374输入低电平并读取74LS245的数值断定键是否按下,并识别按哪个键。
图3.6就是键盘显示电路:
图3.6键盘显示电路
3.6声光报警电路
声光报警电路中采用三极管驱动音频放大器实现音频报警,当电流大于设定值时就会在P1.0端口产生100HZ的方波信号,来有效的控制Q2通断,同时P1.2端口输出高电平,发光二级管发光而报警。
图3.7就是声光报警电路:
图3.7声光报警电路
四、软件设计
4.1主程序流程图
主程序主要完成初始化、扫面显示、扫描键盘等,是系统首先执行的程序。
图4.1就是主程序流程图:
图4.1主程序流程图
4.2中断服务程序流程图
图4-2外部中断服务程序
当A/D转换结束时,ADC0809模数转换器EOC引脚输出一个高电平信号,经过一个反向器,使89C51产生外部中断,进入外部中断服务程序。
首先保护现场,然后读取AD值,进行数据的转换然后存储,并与设定的电流值进行大小比较,如果超过设定值,则继电器断开,用电器回路断开,并置1报警标志位。
恢复现场,中断返回。
定时器0中断服务程序流程图如图4-3所示:
图4-3定时器0中断服务程序
定时器设置为10ms定时,每10ms中断一次,进入中断之后,首先保护现场,重装初值,判断是否处在报警状态,如果是,取反P1.0口,驱动扬声器进行声音报警。
如果没有处于报警状态在判断是否到1S,到1S,则重置1S计数初值,启动A/D转换然后恢复现场,中断返回,如果不到1S,则直接恢复现场,中断返回。
4.3键盘和显示子程序设计
键盘程序,采用三个独立按键来设置限制电流值的大小,第一次按下键1,启动限制电流大小的设置,此时按键2,则实现限制电流的增加,最大限制电流20A;若按键3,则实现限制电流的减小。
再次按下键1,则关闭对限制电流大小的设置。
显示程序,首先要将数据缓冲区的要显示的数据进行十位和个位的分离,进行查表,找到相应的段码,向数据总线送入段码地址,再送段码数据,接下来送位码地址和位码数据。
分别将电流采样值和设定值进行显示。
五、系统调试
由于硬件的限制,我们不能对互感器电流采样部分电路的测试,但是我们通过直接给ADC0809一个模拟信号可以实现当电压达到一定值时,蜂鸣器响起进行报警,同时发光二极管点亮进行报警。
键盘能够正常的对限制电流大小进行设置,显示部分能够正确显示出电流的设定值和采样值。
六、总结
通过这次课程设计,让我深刻地掌握了单片机的使用,了解了单片机内部的数据存储和定时器以及A/D转换的作用。
同时也知道了单片机外部电路的接口技术,数据总线的运用。
通过做这次设计,让我更好了解和掌握了汇编语言,喂以后的学习和应用奠定了坚实的基础。
参考文献:
[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
CLR20H
CLR21H
CLRP1.0
CLRP1.1
CLRP1.2
MOVTH0,#0F6H
MOVTL0,#3CH
SETBIT0
MOVIE,#83H
SETBTR0
MOVA,#0
MOVDPTR,#8000H
MOVX@DPTR,A
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
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
CJNE@R1,#20,RETURN
MOV70H,#0
LJMPRETURN
KEY2:
CJNEA,#04H,RETURN
LCALLDISPLAY
CJNEA,#04H,RETURN
LCALLKEY_VALUE
JNZKEY2
DEC70H
CJNE@R1,#0,RETURN
MOV70H,#20
RETURN:
POPDPL
POPDPH
POPPSW
POPACC
RET
KEY_VALUE:
MOVDPTR,#09002H
MOVA,#00H
MOVX@DPTR,A
MOVDPTR,#08001H
MOVXA,@DPTR
ANLA,#0FH
RET
DISPLAY:
PUSHACC
PUSHPSW
PUSHDPH
PUSHDPL
MOVA,@R0
MOVB,#10
DIVAB
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#09004H
MOVX@DPTR,A
MOVDPTR,#09002H
MOVA,#02H
MOVX@DPTR,A
MOVA,B
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#09004H
MOVX@DPTR,A
MOVDPTR,#09002H
MOVA,#01H
MOVX@DPTR,A
MOVA,#0
MOVX@DPTR,A
MOVA,@R1
MOVB,#10
DIVAB
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#09004H
MOVX@DPTR,A
MOVDPTR,#09002H
MOVA,#08H
MOVX@DPTR,A
MOVA,B
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVDPTR,#09004H
MOVX@DPTR,A
MOVDPTR,#09002H
MOVA,#04H
MOVX@DPTR,A
LJMPRETURN
DELAY:
MOVR6,#50
DELAY_LOOP:
DJNZR6,DELAY_LOOP
RET
TS:
PUSHACC
PUSHPSW
PUSHDPH
PUSHDPL
MOVDPTR,#8000H
MOVXA,@DPTR
MOVB,#5
DIVAB
MOVB,#2
MULAB
MOVB,#5
DIVAB
MOV@R0,A
SETBC
CJNEA,70H,NEXT
NEXT:
JNCNEXT0
CLR20H
CLRP1.1
CLRP1.2
LJMPBACK
NEXT0:
SETB20H
SETBP1.1
SETBP1.2
LJMPBACK
T_0:
PUSHACC
PUSHPSW
PUSHDPH
PUSHDPL
MOVTH0,#0F6H
MOVTL0,#3CH
JB20H,NEXT1
NEXT2:
DJNZR7,BACK
MOVR7,#200
MOVA,#0
MOVDPTR,#8000H
MOVX@DPTR,A
BACK:
POPDPL
POPDPH
POPPSW
POPACC
RETI
NEXT1:
CPLP1.0
LJMPNEXT2
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
图3-4键盘和显示电路
3.5声光报警电路
声光报警电路,采用三极管驱动音频放大器实现音频报警,当采样电流值大于电流设定值时,单片机P1.0端口产生100HZ的方波信号,控制Q2的通断,实现蜂鸣器报警;单片机P1.2端口变成高电平,则发光二极管点亮,实现报警功能。
电路图如图3-5所示:
图3-5声光报警电路
四、系统软件设计
软件设计包括主程序,中断服务程序等其它子程序
4.1主程序设计
主程序是系统上电或复位后首先要执行的程序,主程序主要完成系统的初始化、扫描显示、扫描键盘等工作。
主程序流程图如图4-1所示:
图4-1主程序流程图
当系统上电或者手动复位时,首先进行系统初始化,设置堆栈地址,定时器0工作方式,中断触发方式以及其它系统初始化。
然后启动定时器和AD转换。
然后进行不停的扫描键盘和显示。
4.2中断服务程序设计
外部中断服务程序流程图如图4-2所示:
图4-2外部中断服务程序
当A/D转换结束时,ADC0809模数转换器EOC引脚输出一个高电平信号,经过一个反向器,使89C51产生外部中断,进入外部中断服务程序。
首先保护现场,然后读取AD值,进行数据的转换然后存储,并与设定的电流值进行大小比较,如果超过设定值,则继电器断开,用电器回路断开,并置1报警标志位。
恢复现场,中断返回。
定时器0中断服务程序流程图如图4-3所示:
图4-3定时器0中断服务程序
定时器设置为10ms定时,每10ms中断一次,进入中断之后,首先保护现场,重装初值,判断是否处在报警状态,如果是,取反P1.0口,驱动扬声器进行声音报警。
如果没有处于报警状态在判断是否到1S,到1S,则重置1S计数初值,启动A/D转换然后恢复现场,中断返回,如果不到1S,则直接恢复现场,中断返回。
4.3键盘和显示子程序设计
键盘程序,采用三个独立按键来设置限制电流值的大小,第一次按下键1,启动限制电流大小的设置,此时按键2,则实现限制电流的增加,最大限制电流20A;若按键3,则实现限制电流的减小。
再次按下键1,则关闭对限制电流大小的设置。
显示程序,首先要将数据缓冲区的要显示的数据进行十位和个位的分离,进行查表,找到相应的段码,向数据总线送入段码地址,再送段码数据,接下来送位码地址和位码数据。
分别将电流采样值和设定值进行显示。
五、系统调试
由于硬件的限制,我们不能对互感器电流采样部分电路的测试,但是我们通过直接给ADC0809一个模拟信号可以实现当电压达到一定值时,蜂鸣器响起进行报警,同时发光二极管点亮进行报警。
键盘能够正常的对限制电流大小进行设置,显示部分能够正确显示出电流的设定值和采样值。
六、总结
通过本次的单片机课程设计,使我更好的掌握了单片机的使用,更好地理解了单片机内部的数据存储,中断和定时器的应用,单片机外部电路的接口技术,数据总线的运用,也更深入的了解了汇编语言,熟悉了汇编指令的功能以及程序的编写。
让我知道想设计好一个完整稳定的系统,需要考虑很多的细节,并不是那么容易,对我以后进入工作起到很大的帮助。
参考文献:
[1]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:
国防工业出版社,2004
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
[3]阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006
附件A
程序:
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;设置数据标志位
CLRP1.0;音频报警
CLRP1.1;继电器
CLRP1.2;LED
MOVTH0,#0F6H;定时器0装初值
MOVTL0,#3CH
SETBIT0;外部中断触发方式设置
MOVIE,#83H;开总中断,外部中断0,定时器中断0
SETBTR0;启动定时器
MOVA,#0
MOVDPTR,#8000H;片选ADC0809
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:
;读键值子程序
MOVD