微电脑可编程定时开关的设计

上传人:仙*** 文档编号:33891931 上传时间:2021-10-19 格式:DOC 页数:48 大小:1.83MB
返回 下载 相关 举报
微电脑可编程定时开关的设计_第1页
第1页 / 共48页
微电脑可编程定时开关的设计_第2页
第2页 / 共48页
微电脑可编程定时开关的设计_第3页
第3页 / 共48页
点击查看更多>>
资源描述
摘要摘 要可编程定时器是24小时工作的电器定时开关,可使用按键来设定10组定时开和定时关的时间,按日循环控制,并可随时改变开关通断状态,特别适合用于家庭定时开、关用电器(如热水器、电饭锅、空调器等)。例如在晚上电费低的时段定时开启热水器,烧热几十升热水,在白天电费高的时段用水,就能节省许多电费。可编程定时器的控制核心是单片机,本设计选用AT89S52单片机来制作,它是一个40脚的8位单片机,片内含8kB的可反复擦写1000次的Flash只读存储器,可储存工作程序。有4个8位并行输入/输出口,可用于多个按键信号的输入及控制信号、数字显示信号、声音信号的输出。单片机有两个外中断输入端及三个内置定时器/计数器,为软件设计与电路设计相配合提供了方便。可编程定时器的控制电路除了单片机电路外还有5V稳压电源电路、按键输入电路、数码管显示电路、输出电源控制电路等,实现多次编程定时通断控制。关键词:可编程定时器;单片机;数码管显示;输出电源控制IAbstractAbstractProgrammable timer on a 24-hour regular work of the electrical switches, buttons can be used to set the 10 groups regularly opened and timing of the Commissioner of time, daily cycle of control and can change at any time on-off switch, especially suitable for family time Kai, the Commissioner used electrical appliances (such as water heaters, rice cookers, air conditioners, etc.). For example, in the low tariff at the time regularly open water heaters, hot dozens or hot water, electricity during the day during high water, we can save a lot of electricity.Programmable timer control is the core of SCM, the choice of design to create AT89S52 SCM, which is a 40-foot 8-bit microcontrollers, the film contains 8 kB can be repeated erase the Flash CD-1000 Memory, can store work procedures. There are four 8-bit parallel input / output, multiple keys can be used for the input signal and control signals, the figures showed that signal, the sound signal output. SCM has two external interrupt input and the two built-in timer / counters for software design and circuit design provides a convenient fit. Programmable timer control circuits in addition to the MCU circuit, there are 5 V power supply circuit, the key input circuit, the digital display circuit, the output power control circuit, regular programming several times to achieve on-off control. Key words:Programmable timer; SCM;Digital indicators; Output power control.V目录目 录第1章 概述11.1 课题的目的与意义11.2 采取的研究方法、技术路线、实验方案及可行性分析11.3 课题的发展现状和前景展望11.4 特色或创新之处1第2章 微电脑控制可编程定时器简介22.1 功能22.2 设定开关时间的步骤和方法2第3章 相关知识介绍33.1 单片机33.1.1 功能特性描述33.1.2 硬件结构图及接口介绍33.1.3 存储器结构介绍53.1.4 中断53.1.5 晶振特性63.2 数码管的介绍63.2.1 7段LED数码管的发光原理73.2.2 LED显示器的参数73.3 稳压电源83.3.1 稳压电源的技术指标及对稳压电源的要求83.4 继电器的介绍93.4.1 电磁继电器的工作原理和特性93.4.2 固态继电器(SSR)的工作原理和特性9第4章 微电脑控制可编程定时器的电路设计104.1 电源电路104.2 单片机时钟和复位电路104.3 按键输入电路114.4 数码显示电路114.5 输出电源通断控制电路12第5章 微电脑控制按摩器的软件编程构思145.1 怎样设置时钟145.2 按键输入程序145.3 显示程序145.4 怎样进行定时通断145.5 总程序框图155.5.1 总程序框图:155.5.2 各程序框图16第6章 软件编程226.1 准备程序226.1.1 定义各输入位和输出位226.1.2 各中断服务程序入口236.2 主程序246.2.1 对输出位初始化246.2.2 设置1分钟定时器程序(设置定时器T0)246.2.3 设置2MS的定时器程序246.3 时钟子程序256.4 比较定时子程序266.5 各中断服务程序286.5.1 定时器T0的中断服务程序(1分钟定时处理程序)286.5.2 外中断INT1服务程序(对各按键进行扫描及处理)286.5.3 时钟调整程序296.5.4 定时设定程序316.5.5 清除处理程序336.5.6 定时器T1的中断服务程346.6 延时1MS子程序36第7章 结束语37致谢38参考文献39附录A:元器件清单40附录B: 微电脑控制可编程定时器41附录C:总电路图42III微电脑控制可编程定时开关的设计第1章 概述1.1 课题的目的与意义本课题是微电脑可编程定时器的设计,根据可编程定时器的原理,试用AT89S52单片机(市售可编程定时器不采用该单片机,但这种单片机比较新颖和常用,适合学生试用)把硬件电路及软件编程进行一次自主的设计,要求能达到产品规定的功能。可编程定时器由单片机作为控制器,加上各种控制电路、显示电路及功率驱动电路、控制程序用汇编语言编写,适合已掌握电子技术和计算机技术的学生作为毕业设计课题。该设计方案能使学生把所学到的电子技术及计算机技术结合起来,运用到智能化家电产品的电路设计及软件设计上,为学生将来踏上工作岗位,走上工程技术道路是一个很好的练兵机会。1.2 采取的研究方法、技术路线、实验方案及可行性分析先寻找现成的微电脑可编程定时器的电路图及工作原理说明(可从单片机学习网上寻找),再复习单片机MCS-51系列的硬件构成及命令系统,拟采取硬件电路和软件编程联合研究的方法,根据微电脑可编程定时器的工作原理及参考电路图改用AT89S52单片机来重新设计硬件电路;再利用网上介绍的微电脑可编程定时器的控制过程来设计出主程序流程图及各子程序流程图,然后用汇编语言编制单片机AT89S52的控制软件。要求控制软件能使硬件电路正常运行,达到已有产品同样的可编程定时器的各种功能。1.3 课题的发展现状和前景展望微电脑可编程定时器是用单片机作为主控芯片,再配以固定的控制程序,可编程定时器的控制电路由除单片机外还有按键输入、显示电路、交流功率控制和电源电路等部分组成。随着市场的发展,越来越多的企业利用微电脑(单片机)技术来提高它们的产品竞争力,单片机技术会越来越受到广泛的应用的。 1.4 特色或创新之处使用我们比较熟悉51系列单片机,选择AT89S52作为可编程定时器的控制单片机,设计绘制电原路图,再绘制出主程序流程图及各子程序流程图,然后用汇编语言编制控制软件。用最简单的硬件来实现比较复杂的软件。第2章 微电脑控制可编程定时器简介2.1 功能 微电脑控制可编程定时器是24小时工作的电器定时开关,可使用按键来设定3组定时开和定时关的时间,按日循环控制,并可随时改变开关通断状态,特别适合用于家庭定时开、关用电器(如热水器、电饭锅、空调器等)。例如在晚上电费低的时段定时开启热水器,烧热几十升热水,在白天电费高的时段用水,就能节省许多电费。定时器体积不大,背后有电源插头,插在电源插座上使用。其正面上部是显示单元(平时显示时间,可作电子钟用),中部是几个按键,下部是一个电源插座(插定时通断的用电器插头),插座的最大输出电流为10A或16A(由选用的继电器功率决定)。市售定时器是使用 LCD(液晶)作显示的,由于该液晶屏是专用器件,要定制,本设计改为用LED(6位数码管)显示,功能基本相似。定时器平时使用220V交流电工作,内部装有可充电电池,停电后可照常走时。2.2 设定开关时间的步骤和方法1. 按“设定”键,进入定时开设定(数码管前二位显示:O,1)。2. 分别按“时”键和“分”键,设定第“1”次“开”的时间。3. 再按“设定”键,进入定时关设定(数码管前二位显示:F,1)。4. 分别按“时”键和“分”键,设定第“1”次“关”的时间。如设定错误或需取消设定按“清除”键.,即将全部定时记录清零,再按 “设定”键可重新设定。5. 重复2.12.4 步骤设定第2次、第3次的开关时间。6. 按“时钟”键,结束时间设定,显示当前的时间。7. 时钟校正:同时按住“时钟”键和“时”键或“分”键校正时间。8. 手动开、关控制:当需要马上改变定时器的通断状态时,可按一下“开”键或“关”键,第1个数码管显示“O”(ON)或“F”(OFF),表示“开”或“关”状态。“O”表示有电源有输出,“F”表示无电源输出,定时器平时应设置在“自动”档,让定时器自动工作,需要的时候可用手动来控制定时器的开、关状态。9. 恢复自动控制: 按一下“自动”键,第1个数码管显示“A”(AUTO),即恢复为“自动”状态。第3章 相关知识介绍3.1 单片机市售的可编程定时器使用的单片机一般为PIC专用芯片,该芯片的结构及编程方法对于初学者来说不易掌握,故指导老师要求我把单片机改为常用的51系列的AT89S52。 它是40脚的8位单片机,片内含8kB的可反复擦写1000次的Flash只读存储器,可储存工作程序。有4个8位并行输入/输出口,可用于多个按键信号的输入及控制信号、显示信号、声音信号的输出。它还有2个外中断输入端及3个内置定时器/计数器,为软件设计与电路设计相配合提供了方便。3.1.1 功能特性描述AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。3.1.2 硬件结构图及接口介绍VCC : 电源 GND : 地P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表3-1所示。在flash编程和校验时,P1口接收低8位地址字节。表3-1 P1口的第二功能引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表3-2所示。在flash编程和校验时,P3口也接收一些控制信号。 表3-2 P3口的第二功能引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断0)P3.3INT0(外部中断0)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置 “1”,ALE操作将无效。这一位置 “1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3.1.3 存储器结构介绍MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。(1)程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于89S52,如果EA 接VCC,程序读写先从内部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH。(2)数据存储器:AT89S52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。使用间接寻址方式访问高128 字节RAM。堆栈操作也是简介寻址方式。因此,高128字节数据RAM也可用于堆栈空间。(3)看门狗定时器:WDT是一种需要软件控制的复位方式。WDT 由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。WDT 在默认情况下无法工作;为了激活WDT,户用必须往WDTRST 寄存器(地址:0A6H)中依次写入01EH 和0E1H。当WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周期依赖于外部时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。当WDT溢出,它将驱动RSR引脚一个高个电平输出。3.1.4 中断AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中断源有效或无效。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2 或EXF2激活中断,标志位也必须由软件清0。定时器0和定时器1标志位TF0 和TF1在计数溢出的那个周期的S5P2被置位。它们的值一直到下一个周期被电路捕捉下来。然而,定时器2 的标志位TF2 在计数溢出的那个周期的S2P2被置位,在同一个周期被电路捕捉下来。3.1.5 晶振特性AT89S52 单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2 可以不接,而从XTAL1 接入,由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。图3-1 内部振荡电路连接图3.2 数码管的介绍最常用的数码管为LED数码管,LED就是light emitting diode ,发光二极管的英文缩写。它是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。它的优点:亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。 图3-2 LED数码管单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路。3.2.1 7段LED数码管的发光原理LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将“b”和“c”段接上正电源,其它端接地或悬空,那么“b”和“c”段发光,此时,数码管显示将显示数字“1”。而将“a”、“b”、“d”、“e”和“g”段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同。图3-3 数码管原理图3.2.2 LED显示器的参数由于LED显示器是以LED为基础的,所以它的光、电特性及极限参数意义大部分与发光二极管的相同。但由于LED显示器内含多个发光二极管,所以需有如下特殊参数:a.发光强度比由于数码管各段在同样的驱动电压时,各段正向电流不相同,所以各段发光强度不同。所有段的发光强度值中最大值与最小值之比为发光强度比。比值可以在1.52.3间,最大不能超过2.5。b.脉冲正向电流若笔画显示器每段典型正向直流工作电流为IF,则在脉冲下,正向电流可以远大于IF。脉冲占空比越小,脉冲正向电流可以越大。c.驱动控制控制数码管驱动级的控制电路(也称驱动电路)有静态式和动态式两类。 静态驱动:静态驱动也称直流驱动。静态驱动是指每个数码管各用一个笔画译码器(如BCD码二-十进制译码器)译码驱动 动态驱动:动态驱动是将所有数码管使用一个专门的译码驱动器,使各位数码管逐个轮流受控显示,这就是动态驱动。由于扫描速度极快。显示效果与静态驱动相同。3.3 稳压电源稳压电源一般由变压器、整流器和稳压器三大部分组成。变压器把市电交流电压变为所需要的低压交流电。整流器把交流电变为直流电。经滤波后,稳压器再把不稳定的直流电压变为稳定的直流电压输出。3.3.1 稳压电源的技术指标及对稳压电源的要求稳压电源的技术指标可以分为两大类:一类是特性指标,如输出电压、输出电滤及电压调节范围;另一类是质量指标,反映一个稳压电源的优劣,包括稳定度、等效内阻(输出电阻)、纹波电压及温度系数等。对稳压电源的性能,主要有以下四个万面的要求:a.稳定性好当输入电压Usr (整流、滤波的输出电压)在规定范围内变动时,输出电压Usc 的变化应该很小一般要求 。由于输入电压变化而引起输出电压变化的程度,称为稳定度指标,常用稳压系数S 来表示:S的大小,反映一个稳压电源克服输入电压变化的能力。在同样的输入电压变化条件下,S越小,输出电压的变化越小,电源的稳定度越高。通常S约为。 公式(3-1) b. 输出电阻小负载变化时(从空载到满载),输出电压Usc ,应基本保持不变。稳压电源这方面的性能可用输出电阻表征。输出电阻(又叫等效内阻)用rn 表示,它等于输出电压变化量和负载电流变化量之比。rn 反映负载变动时,输出电压维持恒定的能力,rn 越小,则Ifz 变化时输出电压的变化也越小。性能优良的稳压电源,输出电阻可小到1欧,甚至001欧。c. 电压温度系数小当环境温度变化时,会引起输出电压的漂移。良好的稳压电源,应在环境温度变化时,有效地抑制输出电压的漂移,保持输出电压稳定,输出电压的漂移用温度系数KT来表示.e. 输出电压纹波小所谓纹波电压,是指输出电压中50赫或100赫的交流分量,通常用有效值或峰值表示。经过稳压作用,可以使整流滤波后的纹波电压大大降低,降低的倍数反比于稳压系数S 。3.4 继电器的介绍继电器是一种电气控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。按作用原理分 1电磁继电器 2.固态继电器3.时间继电器4.温度继电器 5.风速继电器 6.加速度继电器 7.光继电器8.声继电器9.热继电器等等。 3.4.1 电磁继电器的工作原理和特性电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。3.4.2 固态继电器(SSR)的工作原理和特性固态继电器是一种两个接线端为输入端,另两个接线端为输出端的四端器件,中间采用隔离器件实现输入输出的电隔离。固态继电器按负载电源类型可分为交流型和直流型。按开关型式可分为常开型和常闭型。按隔离型式可分为混合型、变压器隔离型和光电隔离型,以光电隔离型为最多。综上所述继电器是一种以小电流、低电压、直流电、单回路信号形式通过电磁作用进行吸合或弹开,达到控制大电流、高电压、交流电、多回路信号切换的开关器件。第4章 微电脑控制可编程定时器的电路设计微电脑控制按摩器的控制核心是单片机AT89S52,除了单片机电路外还有5V稳压电源电路、按键输入电路、数码管显示电路、输出电源控制电路等。4.1 电源电路220V交流电经电源变压器2T1降压、桥式整流器2B1整流和电解电容2C2滤波后,再经由5V稳压集成电路2U1稳压后得到+5V直流电压作为单片机及其它电路的电源Vcc,2BT1是可充电电池(作为临时停电时的后备电源),2LED1是电源指示灯。如图4-1。图4-1 5V稳压电源4.2 单片机时钟和复位电路在单片机的XTAL1和XTAL2端接石英晶体振荡器1Y1(12MHz)和电容1C2、1C3,为单片机提供12MHz的时钟信号。晶体振荡器用来控制单片机的时钟信号,使单片机里的各个部件可以按时序运作,AT89S52单片机常用的晶振频率为12MHz,这样一个机器周期正好是1微秒。单片机RST端为复位端,接有电容1C1和电阻1R2,开机通电时,电容1C1两端相当于短路,RST引脚上为高电平,然后电源通过电阻1R2对电容1C1充电,RST端电压慢慢下降,降到一定电压值以下,即为低电平,单片机开始工作。1S1是复位按键(调试用),按下后RST引脚上为高电平,1S1放开后,电容1C1重复充电过程,当RST端电压降到低电平时,单片机程序从头开始执行。如图4-2。图4-2 复位电路图和单片机电路图4.3 按键输入电路定时器面板上有8个轻触按键,按键值由单片机的P0.0P0.7端输入,按键3S13S8分别是“时钟”按键、“设定”按键、“小时”按键、“分钟”按键、“清除”按键、“开”按键、“关”按键和“自动”按键。当无按键按下时,单片机的P0.0P0.7端读入的应是高电平;若有按键按下时,单片机P0.0P0.7的某位为低电平,并设置电路同时触发单片机的外中断输入端INT0,使控制程序转入中断服务程序,来扫描P0.0P0.7的各位是哪个按键被按下,然后转入相应的按键处理程序。如图4-3。图4-3 按键电路图4.4 数码显示电路显示电路采用6位LED数码管,6个数码管的8段字符负极与单片机P2并口的8位对应相连。6位数码管有6个正极引线。由于数码管推动正极所需要的电流较大,而单片机P1.2P1.7不能直接带动,就用三极管组成的放大电路来推动。数码管8段字符是用单片机软件来译码的,由P2并口输出所需的字符数据,6个数码管的正极是快速(频率为500Hz)轮流导通的。当第1位数码管的正极导通时(其它数码管的正极处于截止),P2口输出的是第1位要显示的数据;过了2MS,当第2位数码管的正极导通时(第1位和其它数码管的正极处于截止),P2口输出的是第2位要显示的数据。因此6个数码管则快速轮流显示各自的字符,由于人眼有视觉暂留特性,所以看到的就是6个数码管在固定地显示各自的字符。如图4-4。图4-4 LED显示电路图4.5 输出电源通断控制电路单片机受定时程序的控制,通过P1.1端输出高电平或低电平,经三极管5Q1控制继电器5K1的通断,使电源插座5P1有电源输出或无电源输出,完成定时通断的功能。如图4-5。图4-5 输出电源通断电路图第5章 微电脑控制按摩器的软件编程构思AT89S52单片机有两个外中断输入端及两个内置定时器/计数器,本设计为了捕捉按键信号的输入,及时启动按键扫描程序,使用了INT0外中断端;为了以分钟为单位进行时钟显示及定时,使用了定时器T0作为1分钟定时器;为了使6个数码管每隔2MS轮流显示各自的数据,使用了定时器T1作为2MS定时器。所以本设计共使用了单片机的一个外中断输入端及两个内置定时器。5.1 怎样设置时钟在数据存储区设置分钟数(2单元)和小时数(2单元)的存储单元,当1分钟定时器T0中断时,中断服务程序就把“1分钟寄存器”R5置1,然后中断返回。由时钟程序对R5进行巡检,当发现R5为1时(先把R5清0),然后把分钟数取出加1,再送回存储单元,检查分钟数满60时,再进位到小时,然后分钟数清零,当小时数满24清零。5.2 按键输入程序按摩器有6个按键,当有按键输入信号时,按键电路同时触发外中断INT0,INT0的中断服务程序就启动按键扫描程序。该程序依次扫描P0口的各位,哪位是低电平就转入相应的子程序进行处理。5.3 显示程序6个数码管是轮流显示数据的,每个显示2MS,因此设置定时器T1作为2MS定时。在初始状态,把一个数码管置为导通,其它数码管置为截止,然后启动T1定时器。当定时时间到时,T1的中断服务程序就把当前导通数码管及下一个数码管的状态分别取反,然后从P2并口发送导通数码管对应的数据供数码管显示,再启动T1定时器。5.4 怎样进行定时通断 在数据存储区设置6组定时通、断数据的存储单元,定时比较程序不断地将当前时间数据与定时数据进行比较,当发现某组定时数据与当前时间一致时,即发出通断指令,使继电器通断工作。5.5 总程序框图 5.5.1 总程序框图:各中断服务程序时钟子程序比较定时子程序开始准备程序主程序结束1分钟定时处理程序对各按键扫描及处理程序时钟调整程序定时设定程序清除处理程序轮流显示数码管程序图5-1 总程序框图5.5.2 各程序框图 准备程序定义各输入位开始定义各输出位定义各存贮单元定位各中断程序入口对各输出位初始化主程序设置2MS定时器程序调用时钟子程序主程序结束设置1分钟定时器程序调用比较定时子程序分钟单元数增1时钟子程序:数据=0?YesNo返回主程序取出R5中数据Yes分钟=60?No返回主程序分钟单元数清0小时单元数增1Yes小时=24?No返回主程序小时单元数清0子程序返回R5清0图5-2 主程序框图图5-3 时钟子程序框图比较定时子程序:取小时显示数据子程序返回与定时开小时比接通电源输出数据相等?NoYes取分钟显示数据与定时开分钟比数据相等?NoYes取小时显示数据子程序返回与定时关小时比关断电源输出数据相等?NoYes子程序返回取分钟显示数据与定时关分钟比数据相等?NoYes子程序返回设置堆栈指针定时器T0工作方式1设置定时初值开中断计数器R6,R7清0启动定时器T0开定时器T0允许设置1分钟定时器程序 (设置定时器T0):设置堆栈指针定时器T1工作方式0设置定时初值开中断启动定时器T1开定时器T1允许设置2MS定时器程序 (设置定时器T1):图5-4 比较子程序框图图5-5 设置定时器程序框图ACC、PSW入栈保护外中断INT1的中断服务程序(对各按键进行扫描及处理):延时1MS输入时钟按键信号时钟调整程序CY=1?NoYes延时1MS输入设定按键信号定时设定程序CY=1?NoYes延时1MS输入清除按键信号清除处理程序CY=1?NoYes延时1MS输入开按键信号开处理程序CY=1?NoYes延时1MS输入关按键信号关处理程序CY=1?NoYes延时1MS输入自动按键信号自动处理程序CY=1?NoYesPSW、ACC出栈恢复中断返回图5-6 外中断服务子程序框图ACC、PSW入栈保护R7增1R7清0(R7)=20?NoYesR6清0中断返回R6增1(R6)=60?NoYesR5置1重设定定时初值PSW、ACC出栈恢复定时器T0的中断服务程序(1分钟定时处理程序):设置堆栈指针定时器T0工作方式0设置定时初值开中断计数器R6,R7清0启动定时器T0开定时器T0允许设置1分钟定时器程序 (设置定时器T0):图5-7 1分钟定时器程序框图图5-8 T0定时器的中断服务子程序框图延时1MS输入按键分钟信号延时1MSCY=0?NoYes时钟调整子程序输入按键分钟信号调用调整分钟子程序CY=1?NoYes延时1MSINT1-1输入按键时钟信号CY=1?NoYesINT1-1AINT1-1DINT1-1B延时1MS输入按键时钟信号CY=0?NoYes延时1MS输入按键小时信号CY=0?NoYesINT1-1C调用调整小时子程序开始图5-9 时钟调整子程序框图取分钟1单元数清A+1A=10?NoYes子程序返回调整分钟子程序:送回分钟2单元A+1A=6?NoYes分钟1单元清0分钟2单元清0送回分钟1单元取分钟2单元数清取小时1单元数清A+1A=10?NoYes子程序返回调整小时子程序:送回小时2单元A+1A=2?NoYes小时1单元清0小时1单元清0送回小时1单元取小时2单元数清取小时1单元数A=4?NoYes小时2单元清0图5-10 调整分钟子程序框图图5-11 调整小时子程序框图第6章 软件编程6.1 准备程序6.1.1 定义各输入位和输出位AJSZ BIT P0.0 ;把P0.0定义为按键AJSZ(时钟)的接通输入AJSD BIT P0.1 ;把P0.1定义为按键AJSD(设定)的接通输入AJXS BIT P0.2 ;把P0.2定义为按键AJXS(小时)的接通输入AJFZ BIT P0.3 ;把P0.3定义为按键AJFZ(分钟)的接通输入AJQC BIT P0.4 ;把P0.4定义为按键AJQC(清除)的接通输入AJK BIT P0.5 ;把P0.5定义为按键AJK(开)的接通输入AJG BIT P0.6 ;把P0.6定义为按键AJG(关)的接通输入AJZD BIT P0.7 ;把P0.7定义为按键AJZD(自动)的接通输入 LED1 BIT P1.7 ;把P1.7位定义为数码管1的正极输出LED2 BIT P1.6 ;把P1.6位定义为数码管2的正极输出LED3 BIT P1.5 ;把P1.5位定义为数码管3的正极输出LED4 BIT P1.4 ;把P1.4位定义为数码管4的正极输出LED5 BIT P1.3 ;把P1.3位定义为数码管5的正极输出LED6 BIT P1.2 ;把P1.2位定义为数码管6的正极输出TDKZ BIT P1.1 ;把P1.1位定义为TDKZ (通断控制)信号输出 SMG1 DATA 31H ;定义31H为SMG1(数码管1)(显示:定时序号)的存储单元SMG2 DATA 32H ;定义32H为SMG2(数码管2)(显示:开/自动/关状态)的存储单元SMG3 DATA 33H ;定义33H为SMG3(数码管3)(显示:小时2位)的存储单元SMG4 DATA 34H ;定义34H为SMG4(数码管4)(显示:小时1位)的存储单元SMG5 DATA 35H ;定义35H为SMG5(数码管5)(显示:分钟2位)的存储单元SMG6 DATA 36H ;定义36H为SMG6(数码管6)(显示:分钟1位)的存储单元1KFZ1 DATA 39H ;定义39H为1KFZ1(定时:1开分钟1)的存储单元1KFZ2 DATA 3AH ;定义3AH为1KFZ2(定时:1开分钟2)的存储单元1KXS1 DATA 3BH ;定义3BH为1KXS1(定时:1开小时1)的存储单元1KXS2 DATA 3CH ;定义3CH为1KXS2(定时:1开小时2)的存储单元1GFZ1 DATA 3DH ;定义3DH为1GFZ1(定时:1关分钟1)的存储单元1GFZ2 DATA 3EH ;定义3EH为1GFZ2(定时:1关分钟2)的存储单元1GXS1 DATA 3FH ;定义3FH为1GXS1(定时:1关小时1)的存储单元1GXS2 DATA 40H ;定义3EH为1GXS2(定时:1关小时2)的存储单元2KFZ1 DATA 41H ;定义41H为2KFZ1(定时:2开分钟1)的存储单元2KFZ2 DATA 42H ;定义42H为2KFZ2(定时:2开分钟2)的存储单元2KXS1 DATA 43H ;定义43H为2KXS1(定时:2开小时1)的存储单元2KXS2 DATA 44H ;定义44H为2KXS2(定时:2开小时2)的存储单元2GFZ1 DATA 45H ;定义45H为2GFZ1(定时:2关分钟1)的存储单元2GFZ2 DATA 46H ;定义46H为2GFZ2(定时:2关分钟2)的存储单元2GXS1 DATA 47H ;定义47H为2GXS1(定时:2关小时1)的存储单元2GXS2 DATA 48H ;定义48H为2GXS2(定时:2关小时2)的存储单元3KFZ1 DATA 49H ;定义49H为3KFZ1(定时:3开分钟1)的存储单元3KFZ2 DATA 4AH ;定义4AH为3KFZ2(定时:3开分钟2)的存储单元3KXS1 DATA 4BH ;定义4BH为3KXS1(定时:3开小时1)的存储单元3KXS2 DATA 4CH ;定义4CH为3KXS2(定时:3开小时2)的存储单元3GFZ1 DATA 4DH ;定义4DH为3GFZ1(定时:3关分钟1)的存储单元3GFZ2 DATA 4EH ;定义4EH为3GFZ2(定时:3关分钟2)的存储单元3GXS1 DATA 4FH ;定义4FH为3GXS1(定时:3关小时1)的存储单元3GXS2 DATA 50H ;定义50H为3GXS2(定时:3关小时2)的存储单元CODE: DB 03H,9FH,21H,0DH,99H ,49H,41H,1FH ;数码管八段代码表DB 01H,09H,11H,0C1H,63H,85H,61H,71H ;数码管八段代码表6.1.2 各中断服务程序入口 ORG 0000H ;定位以下指令的起始位置AJMP START ;跳转到START处执行ORG 0003H ;外中断INT0地址入口LJMP INT0 ;转外中断INT0的中断服务程序(按键触发信号处理程序)ORG 000BH ;定时器T0中断地址入口LJMP T0 ;转定时器T0的中断服务程序(每分钟触发时钟程序)ORG 0013H ;外中断INT1地址入口LJMP T1 ;转定时器T1的中断服务程序(6个数码管每2MS轮流显示程序)ORG 00A0H ;定位主程序的起始位置6.2 主程序6.2.1 对输出位初始化START: ;MOV XSDY1,#03H ;往显示单元1送“O”的8段码MOV XSDY2,#9FH ;往显示单元2送“1”的8段码MOV XSDY3,#03H ;往显示单元3送“0”的8段码MOV XSDY4,#03H ;往显示单元4送“0”的8段码MOV XSDY5,#03H ;往显示单元5送“0”的8段码MOV XSDY6,#03H ;往显示单元6送“0”的8段码CLR TDKZ ;对TDKZ(通断控制)位输出低电平MOV R5,#0 ;对1分钟寄存器R5清0 MOV R4,#6 ;对显示寄存器R4送66.2.2 设置1分钟定时器程序(设置定时器T0)1MDSQ: ; MOV SP,#90H ;设置堆栈指针 MOV R7, #0 ;软件计数器R7清0MOV R6, #0 ;软件计数器R6清0 MOV TMOD,#01H ;定时器/计数器0工作于方式1 MOV TH0,#03CH ;设置定时初值 MOV TL0,#0B0H ;3CB0H即十进制数15536;作50MS定时器 SETB EA ;开总中断允许 SETB ET0 ;开定时/计数器0允许 SETB TR0 ;定时/计数器0开始运行6.2.3 设置2MS的定时器程序2MSDSQ: ; MOV SP,#90H ;设置堆栈指针MOV TMOD,#01H ;定时器/计数器1工作于方式0MOV TH0,#18H ;设置定时初值:TC=8192-2000=6192=1830H(2MS)MOV TL0,#30H ;SETB EA ;开中断允许SETB ER1 ;开定时器/计数器1允许SETB TR1 ;启动定时器/计数器1
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!