《基于89C51的自动断电保护系统单片机课程设计.doc》由会员分享,可在线阅读,更多相关《基于89C51的自动断电保护系统单片机课程设计.doc(27页珍藏版)》请在三一办公上搜索。
1、单片机系统课 程 设 计成绩评定表设计课题 : 基于89C51的自动断电保护系统 学院名称 : 电气工程学院 专业班级 : 学生姓名 : 学 号 : 指导教师 : 设计地点 : 设计时间 : 指导教师意见:成绩: 签名: 年 月 日单片机系统课 程 设 计课程设计名称: 基于89C51的自动断电保护系统 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计地点: 课程设计时间: 单片机系统 课程设计任务书学生姓名专业班级学号题 目课题性质工程设计课题来源选题指导教师 主要内容 (参数)利用89C51设计自动断电保护系统,实现以下功能:1、实现开机后自动供电;2、内部
2、短路或超载时会自动断开电源;3、利用互感,通过采集电流来控制继电器的常开,常闭触头。4、采用警报,声音来提醒使用者来处理紧急事故任务要求(进度)第1-2天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第3-4天:按照确定的方案设计单元电路。要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。第5-6天:软件设计,编写程序。第7-8天:实验室调试。第9-10天:撰写课程设计报告。要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。主要参考资料1 张迎新单片微型计算机原理、应用及接口技术(第2版)M北京:国防工业出版社,20042伟福LAB6
3、000系列单片机仿真实验系统使用说明书3 阎石数字电路技术基础(第五版)北京:高等教育出版社,2006审查意见系(教研室)主任签字: 年 月 日 目录一、引言3二、总体方案设计4三、硬件电路设计53.1 单片机最小系统53.2 电流采样电路和继电器控制电路73.3 A/D采样电路83.4键盘和液晶显示电路103.5声光报警电路12四、系统软件设计124.1主程序设计124.2中断服务程序设计134.3部分主要子程序设计16五、系统调试18六、总结18参考文献:18附件A19附件B20一、引言随着家用电器的增多,人们也越来越关心用电器的保护和用电安全的问题。因此自动断电保护系统,逐步广泛应用于家
4、庭用电器的保护设施,它能够实现开机后自动恢复供电功能。当内部电路短路,用电功率超过设定值时,自动断电保护系统就会自动断开用电器的供电回路,使用电器停止工作,能够防止用电器进一步的损坏,避免发生一些不必要的损失。该设计采用电流互感器,来采样线路上的电流值,然后与用户设定值进行比较,控制继电器的常闭点的断开与闭合, 从而控制用电器的供电回路的断开与闭合。同时该设计还提供了声光报警,用户可以及时的处理事故。用户还可以通过键盘来设置限制电流的大小,同时电流的采样值和设置值都会通过液晶显示器显示出来,以供用户方便的使用和观察。二、总体方案设计按照任务要求和系统设计要求,控制系统包括以下几个部分:1. 控
5、制器。作为系统的核心元件,我们采用AT89C51单片机。2. 电流采样。通过一个互感器进行电流的采样,将线路上的大电流转换为小电流值进行采样。通过一个电阻将其转换成电压信号,方便单片机的读取。3. A/D转换。A/D转换芯片采用ADC0804八位模数转化器。A/D转换器可以把测得的模拟量转化成数字量输出,可以直接读取。4. 继电器。当电流超过设定值时,继电器断开,电路回路断开。继电器在电路中起到断电保护作用,是系统的安全保障。5. 声光报警。当电流值超过设定值时,进行报警6. 键盘。通过键盘可以设置限制电流大小。7. 液晶显示器显示。可以显示设置电流以及实时电流值大小。总体设计结构图如图2-1
6、所示:图2-1 总体设计结构图三、硬件电路设计3.1 单片机最小系统微控制器采用AT89C51,AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器。其主要特性如下: 与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24MHz 三级程序存储器锁定 128*8位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器
7、和时钟电路其最小系统主要包括复位电路,时钟电路。AT89C51芯片电路图如图3-1所示: 图3-1 AT89C51单片机芯片电路图复位电路图如图3-2所示:R1710KR161KC310uS0VCCRST图3-2 复位电路图复位电路与AT89C51的访问外部程序存储器控制引脚EA和复位信号输入引脚RST相连。此电路可以实现上电复位和手动复位,复位电路工作原理如上图所示,采用5V供电,+5V的VCC上电时,C3充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C3充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下S0,C3放电,在10K电阻上出现电压,使得单
8、片机复位。S0松手,C3又充电,几个毫秒后,单片机进入工作状态。每次启动都需要重新设置限制电流大小,否则则默认为初始设置10A。当微控制器运行发生错误时,可以对其手动复位,使其重新启动运行,再进行设置限制电流大小。时钟电路图如图3-3:图3-3 时钟电路图时钟电路接AT89C51的18和19引脚。X1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入;X2接外部晶振和微调电容的另一端;此电路采用12M晶振给单片机提供时钟信号。本设计时钟电路采用12M的晶振。晶振的作用是给单片机正常工作提供稳定的时钟信号。单片机的晶振并不是只能用12M,只要不超过20M就行,在准许的范围内,晶振越大,
9、单片机运行越快,还有用12M的就是好算时间,因为一个机器周期为12个时钟周期,所以这样用12M的话,一个时钟周期为1/12us,那么机器周期为1us即定时器计一次数就是1us了,电容范围在20-40pF之间,这里连接的是30pF的电容。机器周期=12*系统时钟周期。3.2 电流采样电路和继电器控制电路 电流采样电路,电路正常工作时继电器常闭触点闭合接通电流互感器,通过电流互感器按一定比例采样线路上的电流值大小,通过一个电阻,将电流信号转换为电压信号,方便单片机进行A/D转换,继电器控制电路,当线路上的电流值大于设定电流值时,将P2.4端口置1,控制导通的信号置于高电平,使三极管饱和导通即Q2形
10、成通路,则继电器常闭点断开,用电器电路回路断开,则用电器停止工作。继电器两端单向并联一个二极管(负极接在VCC端,正极接在三极管集电极上),起到吸收电磁线圈断电后产生的反向电动势,保护三极管。电路图如图3-4所示: 图3-4 电流采样转换电路和继电器控制电路3.3 A/D采样电路A/D采样电路采用集成A/D转换器ADC0804 。ADC0804是一款8位、单通道、低价格A/D转换器,主要特点是:模数转换时间大约100us;方便TTL或CMOS标准接口;可以满足差分电压输入;具有参考电压输入端;内含时钟发生器;单电源工作时(05)V输入电压范围是05V;不需要调零。1.芯片参数:工作电压:+5V
11、,即VCC=+5V。模拟转换电压范围:0+5V,即0Vin+5V。分辨率:8位,即分辨率为1/28=1/256,转换值介于0255之间。转换时间:100us(fCK=640KHz时)。转换误差:1LSB。参考电压:2.5V,即Vref=2.5V。2.各个引脚名称及作用:Vin(+)、Vin(-):两个模拟信号输入端,可以接收单极性、双极性和差模输入信号。DB0-DB7:具有三态特性数字信号输出端,输出结果为八位二进制结果。CLKIN:时钟信号输入端。CLKR:内部时钟发生器的外接电阻端,与CLK端配合可由芯片自身产生时钟脉冲,其频率计算方式是:fck=1/(1.1RC)。CS:片选信号输入端,
12、低电平有效。WR:写信号输入端,低电平启动AD转换。RD:读信号输入端,低电平输出端有效。INTR:转换完毕中断提供端,AD转换结束后,低电平表示本次转换已完成。VREF/2:参考电平输入,决定量化单位。VCC:芯片电源5V输入。AGND:模拟电源地线。DGND:数字电源地线。ADC0804外围电路如图3-5所示:VCC20INTR5DB018DB117DB216DB315DB414DB513DB612DB711CS1RD2WR3CLK IN4CLK OUT19REF/29IN+6IN-7AGND8DGND10R1510kR1210kR1410kR131kC1110412ADINRe210kV
13、CCVCCCSDARDWRVCCDB1DB2DB3DB4DB5DB6DB7DB8ADC0804图3-5 ADC0804外围电路图3-5为ADC0804外围电路原理图,其中,VCC=5V,因此ADC转换的参考电压为VCC的值,即5V。IN-接地,而IN+通过插座ANIN连接滑动变阻器Re2的输出,因此IN+的电压输入范围为0V5V,正好处于参考电压范围内。引脚CS、WR和RD分别连接单片机的12,17以及16脚,而DB0DB7连接单片机的P1脚。3.4键盘和液晶显示电路 液晶显示电路采用带中文字库的12864液晶显示器。带中文字库的128X64 是一种具有4 位/8 位并行、2 线或3 线串行多
14、种接口方式,内部含有国标一级、二级简体 中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192 个16*16 点汉字,和128 个16*8 点ASCII 字符 集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84 行1616 点 阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶 显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。12864 液晶具有如下的特性:1 提供 8 位,4 位并行接口及串行接口可选2 并行接口适配 M6
15、800 时序3 自动电源启动复位功能4 内部自建振荡源6416 位字符显示 RAM(DDRAM 最多 16 字符4 行,LCD 显示范围 162 行)(改为半角输入)2M 位中文字型 ROM(CGROM) ,总共提供 8192 个中文字型(1616 点阵)16K 位半宽字型 ROM(HCGROM),总共提供 126 个西文字型(168 点阵)6416 位字符产生 RAM(CGRAM)1516 位总共 240 点的 ICON RAM(ICONRAM) 液晶显示电路如图3-6所示:图3-6 液晶显示电路键盘电路采用3个独立的按键,一个功能切换键、一个加按键、一个减按键通过这三个按键可以来合理的设置
16、限制电流的数值。键盘电路与单片机的连接电路图如图3-7所示: S1S2S3SDASCL18B20图3-7 键盘电路与单片机的连接电路图3.5声光报警电路声光报警电路,采用三极管驱动音频放大器实现音频报警,当采样电流值大于电流设定值时,单片机P2.3引脚即FM端口产生100HZ的方波信号,控制Q1的通断,实现蜂鸣器报警;单片机P3.0端口变成高电平,则发光二极管点亮,实现报警功能。此装置具有以下优点:1、 在远距离是可以通过声音及时通知2、 在近距离可以通过视听觉做出反应3、 在嘈杂的环境中可以通过视觉通知4、 两种器件配合更加安全可靠电路图如图3-8所示:图3-8声光报警电路四、系统软件设计软
17、件设计包括主程序,中断服务程序等其它子程序4.1主程序设计主程序是系统上电或复位后首先要执行的程序,主程序主要完成系统的初始化、扫描显示、扫描键盘,A/D转换等工作。主程序上电自动复位,也可手动复位;主程序执行时,分别进行键盘扫描,A/D转换,以及液晶显示。主程序流程图如图4-1所示:图4-1 主程序流程图当系统上电或者手动复位时,首先进行系统初始化,设置堆栈地址,定时器0工作方式,中断触发方式以及其它系统初始化。然后启动定时器和A/D转换。然后进行不停的扫描键盘和显示。4.2中断服务程序设计外部中断服务程序流程图如图4-2所示:图4-2 外部中断服务程序流程图当A/D转换结束时,ADC080
18、4模数转换器INTR引脚输出一个低电平信号,使AT89C51产生外部中断,进入外部中断服务程序。首先保护现场,然后读取AD值,进行数据的转换然后存储,并与设定的电流值进行大小比较,如果超过设定值,则继电器断开,用电器回路断开,并置1报警标志位。恢复现场,中断返回。 定时器0中断服务程序流程图如图4-3所示:图4-3 定时器0中断服务程序流程图定时器设置为10ms定时,每10ms中断一次,进入中断之后,首先保护现场,重装初值,判断是否处在报警状态,如果是,取反P2.4口,驱动扬声器进行声音报警。如果没有处于报警状态在判断是否到1S,到1S,则重置1S计数初值,启动A/D转换然后恢复现场,中断返回
19、,如果不到1S,则直接恢复现场,中断返回。4.3部分主要子程序设计系统主要子程序主要包括键盘子程序、键盘扫描子程序,显示子程序。(1)键盘子程序设计键盘子程序设计,采用三个独立按键来设置限制电流值的大小,第一次按下键1,启动限制电流大小的设置,最大限制电流处的液晶光标闪烁,按第二下键1液晶光标不再闪烁,表示调节结束。按键2,则实现限制电流的增加,最大限制电流20A;按键3,则实现限制电流的减小,最小限制电流为0A。(2)键盘扫描子程序设计流程图如图4-4所示: 图4-4 键盘扫描子程序设计流程图(3)显示子程序设计系统上电后,即开始在默认的最大限制参考电流的第一行设置限制电流,第二行为系统测量
20、电流即:CIV:20ACTV:00A(CIV:current limit value 限制电流值。 CTV:current test value测试电流值)显示子程序设计流程图如图4-5所示:图4-5 显示子程序设计流程图五、系统调试由于硬件的限制,我们不能对互感器电流采样部分电路的测试,但是通过直接给ADC0804一个模拟信号进行了以下测试。1、上电开始默认显示正常。2、按键S1功能切换键、按键S2数值增键、按键S1数值减键正常。3、上下限最值测试正常。4、A/D转换结果测试正常。5、声光报警装置测试正常。六、总结通过本次的单片机课程设计,使我更好的掌握了单片机的使用,更好地理解了单片机内部
21、的数据存储,中断和定时器的应用,单片机外部电路的接口技术,数据总线的运用,也更深入的了解了汇编语言,熟悉了汇编指令的功能以及程序的编写。让我知道想设计好一个完整稳定的系统,需要考虑很多的细节,并不是那么容易,对我以后进入工作起到很大的帮助。参考文献:1 张迎新单片微型计算机原理、应用及接口技术(第2版)M北京:国防工业出版社,20042伟福LAB6000系列单片机仿真实验系统使用说明书3 阎石数字电路技术基础(第五版)北京:高等教育出版社,2006附件A附件B程序:ORG 0000HLJMP MAINORG 0003HLJMP TSORG 000BHLJMP T_0ORG 0030HMAIN:
22、 MOV SP,#3FH;设置堆栈 MOV 60H,#0;采集数据显示缓冲区 MOV 70H,#10;设置数据显示缓冲区 MOV R0,#60H MOV R1,#70H MOV R6,#50 MOV R7,#200;1S计数值 CLR 20H;报警状态标志位 CLR 21H;设置数据标志位 CLR P2.3;音频报警 CLR P2.4;继电器 CLR P3.0;LED MOV TH0,#0F6H;定时器0装初值 MOV TL0,#3CH SETB IT0;外部中断触发方式设置 MOV IE,#83H;开总中断,外部中断0,定时器中断0 SETB TR0;启动定时器 MOV A,#0 MOV D
23、PTR,#8000H;片选ADC0804 MOVX DPTR,A;启动ADLOOP: LCALL DISPLAY;调用显示 LCALL KEY;扫描键盘 LJMP LOOPKEY: PUSH ACC;保护现场 PUSH PSW PUSH DPH PUSH DPL LCALL KEY_VALUE JB 21H,KEY0_0;判断是否处于设置数据状态KEY0: CJNE A,#01H,RETURN;判断键值 LCALL DISPLAY;调用显示延时,消抖 CJNE A,#01H,RETURN LCALL KEY_VALUE JNZ KEY0;等键释放 SETB 21H;设置数据状态标志位置1 LJ
24、MP RETURN;返回KEY0_0: CJNE A,#01H,KEY1;判断键值 LCALL DISPLAY;调用显示延时消抖 CJNE A,#01H,KEY1 LCALL KEY_VALUE JNZ KEY0_0;等键释放 CLR 21H;设置完成,清除标志位 LJMP RETURN;返回KEY1: CJNE A,#02H,KEY2;判断键值 LCALL DISPLAY;调用显示延时,消抖 CJNE A,#02H,KEY2 LCALL KEY_VALUE JNZ KEY1;等键释放 INC 70H;设置数据缓冲区加1 CJNE R1,#20,RETURN;判断是否到最大值20 MOV 70
25、H,#0;是,归0 LJMP RETURN;返回KEY2: CJNE A,#04H,RETURN;判断键值 LCALL DISPLAY;调用显示延时,消抖 CJNE A,#04H,RETURN LCALL KEY_VALUE JNZ KEY2;等键释放 DEC 70H;设置数据缓冲区加1 CJNE R1,#0,RETURN;判断是否到最小值0 MOV 70H,#20;是,变为20RETURN: POP DPL;恢复现场 POP DPH POP PSW POP ACC RETKEY_VALUE:;读键值子程序 MOV DPTR,#09002H;送键盘列码地址 MOV A,#00H MOVX DP
26、TR,A;扫描键盘 MOV DPTR,#08001H;送行码地址 MOVX A,DPTR ANL A,#0FH;读键值 RET DISPLAY: RS EQU P3.5 R/W EQU P3.6 E EQU P3.4 PSB EQU P3.7 DO-D7 EQU P0 ORG 0000H AJMP MAIN ORG 0100H;以下是主程序,进行初始化MAIN:MOV SP,#60H MOV A,#00111000B ;功能设置指令,8位接口,显示两行,5*7字符 LCALL WriteIR ;调写指令寄存器子程序MOV A,#00001110B ;显示开关控制指令,显示器开,光标开,光标不闪
27、烁 LCALL WriteIRMOV A,#00000110B ;输入方式设置指令,字符不动,光标自动右移一格LCALL WriteIRMOV A,#00000001B ;清屏指令,将DDRAM数据全部填入“空白”LCALL WriteIRMOV A,#10000000B ;DDRAM地址设置指令,写入显示地址为第1行第1位ACALL WriteIR MOV DPTR, #TAB1 ;指向TAB1表首 ACALL STRING ;调字符串处理子程序MOV A,#11000000B ;DDRAM地址设置指令,写入显示地址为第2行第1位ACALL WriteIR MOV DPTR, #TAB2 ;
28、指向TAB2表首 ACALL STRING ;调字符串处理子程序 SJMP $ ;检查忙碌子程序CheckBusy:PUSH ACC LOOP:CLR RS ;选择指令寄存器SETB RW ;选择读模式MOV D0-D7,#0FFH ;P0口写1,准备写入SETB E ;使能LCDMOV A D0-D7 ;将LCD的D0D7由P0口送A,以便查第7位BF是否为0CLR E ;禁止LCDJB ACC.7,LOOP ;判断由LCD读入第7位BF是否为1,若为1表示LCD忙ACALL DELAY ;调延时子程序POP ACCRET;写入IR寄存器子程序WriteIR:PUSH ACCACALL Ch
29、eckBusy ;调检查忙碌子程序CLR E ;禁止LCDCLR RS ;选择指令寄存器CLR RW ;选择写模式STEB E ;使能LCDMOV D0-D7,A ;将控制指令写入LCDSETB E ;使能LCDCLR E ; 禁止LCDPOP ACCRET;写入DR寄存器子程序WriteIR:PUSH ACCACALL CheckBusy ;调检查忙碌子程序CLR E ;禁止LCDSETB RS ;选择数据寄存器CLR RW ;选择写模式STEB E ;使能LCDMOV D0-D7,A ;将控制指令写入LCDSETB E ;使能LCDCLR E ; 禁止LCDPOP ACCRET;以下是字符
30、串处理子程序STRING:PUSH ACCLOOP1:MOV A,#00HMOVC A,A+DPTRJZ PROCACALL WriteDDRINC DPTRAJMP LOOP1 PROC: POP ACC RET;以下是2.5ms延时子程序DELAY: MOV R5,#5D2 :MOV R4 , #248D1 :DJNZ R4,D1 DINZ R5,D2 RETTAB1:DB 43H,49H,56H,3AH,32H,30H,41H,00H; CIV:20A的代码,00H表示结束TAB2:DB 43H,54H,56H,3AH,30H,30H,41H,00H; CTV:00AD代码,00H表示结
31、束DELAY:;延时函数 MOV R6, #50DELAY_LOOP: DJNZ R6,DELAY_LOOP RETTS: PUSH ACC;保护现场 PUSH PSW PUSH DPH PUSH DPL MOV DPTR,#8000H;AD片选 MOVX A,DPTR;读取AD值 MOV B,#5;数据转换 DIV AB MOV B,#2 MUL AB MOV B,#5 DIV AB MOV R0,A;送入采样数据显示缓冲区 SETB C CJNE A,70H,NEXT;判断是否达到报警值NEXT: JNC NEXT0;是,转到NEXT0 CLR 20H;清除报警标志位,正常工作 CLR P
32、1.1;清除报警,继电器正常 CLR P1.2 LJMP BACK;返回NEXT0: SETB 20H;报警标志位置1 SETB P1.1;继电器断开 SETB P1.2;LED亮 LJMP BACK;返回T_0: PUSH ACC;保护现场 PUSH PSW PUSH DPH PUSH DPL MOV TH0,#0F6H;重装初值 MOV TL0,#3CH JB 20H,NEXT1;判断报警标志位,是1,转到NEXT1NEXT2: DJNZ R7,BACK;判断是否够1S,不到,返回 MOV R7,#200;重置1S计数初值 MOV A,#0;启动AD MOV DPTR,#8000H MOVX DPTR,ABACK:;中断返回函数 POP DPL;恢复现场 POP DPH POP PSW POP ACC RETINEXT1: CPL P1.0;扬声器驱动 LJMP NEXT2;跳转到NFTX2,判断是否到1S