题目:基于MCS-51单片机的智能控制开关的设计目录摘要 (I)Abstract (II)1 绪论 (1)2 设计原理和方法 (2)2.1 系统的硬件构成及功能 (2)2.2 AT89C51单片机及其引脚说明 (2)2.3 键盘控制电路 (3)2.4 实时显示电路 (3)2.5 电源电路 (5)2.6开关控制电路 (6)3系统的设计 (7)3.1 总电路设计 (7)3.2 系统的软件设计 (7)4 系统各模块的仿真 (8)4.1 键盘控制模块仿真 (8)4.2掉电储存电路的仿真 (8)5 心得体会 (10)参考文献 (11)附录一 (12)附录二 (13)摘要单片机发展到今天已经是一项很成熟的技术,使用单片机控制能实现长达几小时的定时操作,有较好的市场发展前景和技术应用价值。
针对自动测控系统的要求,设计了一种基于MCS-51单片机控制的智能控制开关, 可以满足长时间无人值守的测控系统的要求。
设计电路主要由单片机89C51控制电路、掉电存储电路、按键与LCD显示电路以及电源电路组成。
系统能实现实时显示和定时控制显示、定时断电保护、准时对开关进行控制等的功能,是一款比较实用的智能开关。
关键词:智能控制;开关;单片机;定时AbstractSCM has been developed to a very mature technology, using SCM to achieve up to a few hours of regular operation, there are good prospects for market development and technology application. The requirements for the automatic control system, designed based on MCS-51 MCU intelligent control switch, to meet long unattended measurement and control systems. Circuit design is composed of 89C51 control circuit, power-down memory circuit, buttons and LCD display circuit and power circuit. System that can display real-time display and timing control, timing power-off protection time of the switch control function, is a more practical intelligent switch.Key words: Intelligent Control; Switch; SCM; Timing1 绪论在自动测控系统中,特别是长时间无人值守的测控系统中,经常需要进行长达几小时的定时操作。
若采用专门的计时芯片设计,一方面控制复杂,占用硬件资源,另一方面也不经济,一般的时钟芯片价格都比较贵。
由于单片机内部有定时器,因此,可以基于单片机设计一款智能控制开关。
由于使用了单片机来控制,因此使得该系统具有很强的灵活性和智能性。
单片机发展到今天已经是一项很成熟的技术了,采用单片机控制的产品也比比皆是,虽然单片机的价格比较便宜,但是功能却很强大,因此选择单片机来控制是绰绰有余的!人性化的显示设计更是该系统一大特色,能实时显示当前开关的工作状况。
2 设计原理和方法2.1 系统的硬件构成及功能智能开关控制的原理框图如图2-1所示。
它由以下几个部件组成:单片机89C51、电源电路、掉电存储电路、开关控制、键盘输入和显示以及电源电路组成。
时间显示采用LCD1602,以降低对单片机端口数的要求,同时也降低系统的功耗。
时间控制电路和键盘输入以及掉电存储都通过89C51的I/O口控制。
电源部分:电源部分由整流、滤波和集成稳压器组成,以保证系统稳定工作。
图2-1 智能开关控制系统原理框图2.2 AT89C51单片机及其引脚说明AT89C51单片机是51系列单片机的一个成员,内部自带4K字节可编程FLASH可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。
由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C51构成的单片机系统是具有结构简单、造价低廉、效率高的微控制系统,减少了硬件开销,节省了成本,提高了系统的性价比。
AT89C51是一个有40个引脚的芯片,与8031相比,AT89C51自带4K的ROM和128B的RAM,因此编写中小型系统就无需任何硬件进行扩展。
2.3 键盘控制电路由于采用软定时器计时,长时间运行会产生一些误差,就要通过按键修改实时时间,根据定时需要只要能够调整小时和分钟即可。
采用独立按键占用了单片机I/O 口,因此在设计该系统时,为了减少单片机I/O 口的使用,采用了行列式键盘,如下图2-2所示。
图2-2 行列式键盘原理图2.4 实时显示电路实时控制和显示分别采用了89C51和1602LCD 液晶。
首先设计实时时钟,系统利用定时器产生实时时钟,采用中断子程序实现实时时钟的功能,采用软定时的方式产生实时时钟,由定时器T0工作在50ms 定时模式,采用中断的响应方式,对50ms 中断计数,每20次为1秒,秒计数单元的值加1,每60秒分钟单元计数单元加“1”,同理,完成小时计数单元的改变,从而实现时钟功能。
为了减小整个系统的功耗,不采用数码管作为显示器件,而用1602LCD 作为来显示时间和要定时的时间,1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A ”的代码是01000001B (41H ),显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母“A ”。
它具有经济、方便、编程容易等优点,设计中显示的数据较少。
11111602液晶一共可以显示两行,每行可以显示16个字符。
设计中,1602的第一行显示实时时间,第二行显示定时的时间,显示通过编程实现,液晶的外面要接10K的可调电阻,用来调节液晶显示的对比度。
并且这两个芯片接通电源可以直接用单片机编程对它进行操作。
下图2-3为实时控制和显示电路原理图。
图2-3 实时控制和显示电路原理图2.5 时间掉电存储电路由于系统要显示的内容比较简单,但是定时的时间设置好了,断电了之后什么都没了,因此为了保护时间,该系统就需要有断电存储电路,由于显示量不多,所以选用I2C器件AT24C02。
AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节,CATAL YST公司的先进CMOS技术实质上减少了器件的功耗。
AT24C02有一个16字节页写缓冲器。
该器件通过IIC总线接口进行操作,有一个专门的写保护功能。
AT24C02在单片机应用中,作为EEPROM储存器用,与单片机通过I2C 通信。
优点是掉电后仍可以保存数据。
比如单片机运行时,手动设置了一些参数,可以用它保存起来。
该存储电路如图2-4所示。
图2-4 时间掉电存储电路2.5 电源电路为了给该数据采集系统提供一个比较稳定的工作环境,就此为该系统设计了一个稳压电源模块,电路原理如下图2-5所示,该电源模块5V固定输出,采用了稳压模块7805,该系列集成稳压模块具有过流、过热和调整管安全工作区保护,以防止过载而损坏。
对于整个系统的工作而言,增加了电路的可靠性能和稳定性能。
T1220V ~TRANS3图2-5 电源电路原理图2.6开关控制电路该电路采用5V继电器进行隔离控制,JDQ继电器耐压为300V,它的输出级由一个常开开关构成,它控制着主电路的导通与关断,原理图如下图2-6所示。
开关3系统的设计3.1 总电路设计本系统的软件系统主要完成修改时间、定时通断电等功能。
在程序设计过程中,加强了部分软件抗干扰措施,以达到按键的灵活性,确保整个系统的正常运行。
系统流程图如图3-1所示。
总电路图见附录一。
图3-1 程序流程图3.2 系统的软件设计在本次电路设计中,电源及按键控制电路均为硬件设计,实时显示电路由1602LCD液晶显示器完成,1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,只需使用单片机对其进行控制,所以本次设计之中的软件设计均为单片机系统的软件设计,软件设计采用汇编语言,程序见附录二。
4 系统各模块的仿真4.1 键盘控制模块仿真本次设计中的键盘采用矩阵键盘,其仿真图形如图4-1所示。
图4-1 矩阵键盘仿真图在仿真过程中,将pw1,pw2,pw3,pw4依次分别接+5V ,pw5,pw6,pw7,pw8依次分别接地,如当pw1接+5V ,pw6接地时,分别按下各个开关,通过观察8个引脚的高低电平情况(高显示红,低显示绿)可验证按键pw5导通,并且其他按键无短路情况。
4.2掉电储存电路的仿真掉电储存电路仿真图如图4-2所示。
图4-2 掉电电路仿真图由于本次设计采用AT24C02芯片进行掉电电路数据储存,所以只需对照其引脚功能图进行相应仿真即可,其引脚功能如表4-1所示。
VCC GNDA1 A2 A3 WPSCL SDASDAR10 R11 10K I2C U3 10KSCL表4-1 AT24C02管脚功能表在对芯片进行断电、上电后,其内部储存数据不变。
5 心得体会在此次课设过程中,本人经历了电路的设计、仿真,回顾了以前学的C语言、模电、数电知识,并且能综合起来运用单片机的知识。
做完课设后,作者对很多知识的记忆都加深了。
亲身感觉到仿真在设计电路中的作用,运用软件的仿真,能够不断纠正本人在构思中所疏忽的一些软件或者硬件问题。
在仿真过程中,经常遇到一些问题,譬如疏忽了仿真软件中管脚的接线特点,在连线时某根线连错或者未接上,还有限流电阻阻值多大等等。
在仿真结束后,自己对Protues和Keil软件的应用变得更加熟练了,而且对硬件设计中需要注意的问题也有了初步的了解,这对于以后电子线路的设计与制作是很有帮助的。
通过这次做课程设计的锻炼,使我学到了许多书本中没有的东西!从选题到构思设计方案,尤其是在确立设计方案的过程中了解到了很多东西!特别是在芯片的选择上,了解到了许多平时很少接触的芯片的功能及优缺点!通过这次锻炼也给自己树立起了信心!同时也深刻体会到了“遇到困难,解决困难!”这句话的含义,只有这样才能真正提高自己的水平,真正的把学到的知识应用到实际中去!真正做到学以至用!参考文献[1]徐爱钧《单片机原理实用教程:基于Proteus虚拟仿真》电子工业出版社2008.7[2]郭天祥《51单片机C语言教程》电子工业出版社2009.1[3]邹振春《单片机原理及接口技术》机械工业出版社2005.1[4]于晓东主编《80C51单片机原理、开发与应用实例》中国电力出版社2008.10[5]伍时和主编《数字电子技术基础》清华大学出版社2009.4[6]谭浩强《C语言设计》清华大学出版社2005.7附录一总电路图:附录二单片机程序FM BIT 20H ;分钟到的标志,由中断子程序产生RING BIT P1.0 ;开关接通标志,由比较子程序产生PLUS BIT P3.5MINUS BIT P3.4STP BIT P3.3PWR BIT P2.7MS EQU 7FHSECN EQU 7EHMINU EQU 7DHHOUR EQU 7CHBCDH EQU 7BH ;伪指令定义压缩BCD码的小时表示,用于比较BCDM EQU 7AH ;伪指令定义压缩BCD码的分钟表示,用于比较NUMB EQU 6BUFF EQU 60HTT EQU 20 ;伪指令设定开关接通的时间长度,设为20秒ORG 0000H ;程序起始地址LJMP STARTORG 000BHLJMP INTT0START: LCALL CLEARLCALL INITMAIN: LCALL BTBCDLCALL DISPJBC FM, MAINALCALL KEYJNB RING, MAINMOV A, SECNSUBB A, #TTJC MAINCLR RINGSETB PWRLJMP MAINMAINA: LCALL BTBCDLCALL COMPLJMP MAIN-------------------------------------------------------------------- 清零子程序CLEAR: MOV R0,#7FHMOV R7,#20HCLEA1: MOV @R0, #0H ;全部清零DEC R0DJNZ R7, CLEA1RET-------------------------------------------------------------------- 初始化子程序INIT: MOV TMOD, #01HMOV TH0, #3CHMOV TL0, #0B0HMOV MS, #20;SETB TR0SETB EASETB ET0MOV SP, #30HRET-------------------------------------------------------------------- 数码转换子程序BTBCD: MOV A, SECNMOV B, #10DIV ABMOV BUFF, BMOV BUFF+1, AMOV A, MINUMOV B, #10DIV ABMOV BUFF+2, BMOV BUFF+3, ASW AP AORL A, BMOV BCDM, AMOV A, HOURMOV B, #10DIV ABMOV BUFF+4, BMOV BUFF+5, ASW AP AORL A, BMOV BCDH, ARET-------------------------------------------------------------------- 按键扫描子程序KEY: MOV B, MINUINC BINC BSETB STPJNB STP, KEY11SETB PLUSJB PLUS, KEY2ALCALL BTBCDLCALL DDISPSETB PLUSJNB PLUS, KEY22 ;加一分钟KEY2A: SETB MINUSJB MINUS, KEYDD ;减一分钟LCALL DDISPLCALL BTBCDLCALL DDISPSETB MINUSJNB MINUS, KEY33KEYDD: LJMP KEYDKEY11: LCALL DDISPLCALL DDISPSETB STPJNB STP, KEY1SJMP KEYDDKEY22: LJMP KEY2KEY33: LJMP KEY3KEY1: LCALL DDISPLCALL BTBCDMOV BUFF+2, #11HMOV BUFF+3, #11HMOV BUFF, #11HMOV BUFF+1, #11HSETB PLUSJNB PLUS, KEY5 ;判断小时+SETB MINUSJNB MINUS, KEY4 ;判断小时-SETB STPJB STP, KEY1LCALL DDISPLCALL BTBCDSETB STPJB STP, KEY1KEY6: LCALL DDISPLCALL BTBCDSETB STPJNB STP, KEY6LJMP KEYDKEY5: LCALL DDISPLCALL DDISPSETB PLUSJB PLUS, KEY1INC HOURMOV A, HOURCLR CSUBB A, #24JC KEY1MOV HOUR, #00LJMP KEY1KEY4: LCALL DDISPLCALL DDISPSETB MINUSJB MINUS, KEY1DEC HOUR;MOV A, HOURCLR CSUBB A, #24JC KEY1MOV HOUR, #23LJMP KEY1KEY2: LCALL DDISPSETB PLUSJB PLUS, KEYDINC MINUMOV A, MINUCLR CSUBB A, #60JC KEYDMOV MINU, #00LJMP KEYDKEY3: LCALL DDISPSETB MINUSJB MINUS, KEYDDEC MINUMOV A, MINUCLR CSUBB A, #60JC KEYDMOV MINU, #59KEYD: RET-------------------------------------------------------------------- 比较子程序COMP: PUSH DPHPUSH DPLPUSH ACCMOV DPTR, #ALARMCOMP1: CLR AMOVC A, @A+DPTRINC DPTRCJNE A, BCDH, COMP0CLR AMOVC A, @A+DPTRCJNE A, BCDM, COMP0SETB RINGCLR PWR ;定时时间到COMP0: INC DPTR ;指向下一个定时时间COMP2: DJNZ R6, COMP1COMPD: POP ACCPOP DPLPOP DPHRET-------------------------------------------------------------------- 扫描显示子程序DISP: MOV R0, #BUFFMOV R2, #06HMOV R3, #01H;MOV DPTR, #TABLEDISP1: MOV A, R3MOV P2, ARL AMOV R3, AMOV A, @R0MOVC A, @A+DPTRMOV P0, AINC R0LCALL DELAYDJNZ R2, DISP1RETTABLE: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FH-------------------------------------------------------------------- 调用3次显示子程序DDISP: MOV R1, #03HDDIS1: LCALL DISPDJNZ R1, DDIS1RET-------------------------------------------------------------------- 延时子程序DELAY: MOV R7, #100DELAY0: MOV R6, #10DELAY1: DJNZ R6, DELAY1RET-------------------------------------------------------------------- 时钟中断程序INTT0: PUSH PSWPUSH ACCMOV TL1, #0B0HMOV TH1, #3CHDJNZ MS, INTDMOV MS, #14 ;恢复计数值INC SECNMOV A, SECNCJNE A, #60, INTDMOV SECN, #0INC MINUSETB FMMOV A, MINUCJNE A, #60, INTDMOV MINU, #0INC HOURMOV A, HOURCJNE A, #24, INTDMOV HOUR, #00HINTD: POP ACCPOP PSWRETIALARM: DW 0800H,0900H,0930H,1000H,1200H,1500HEND。