09325313可调式定时器的设计与制作
- 格式:doc
- 大小:1.14 MB
- 文档页数:21
利用单片机DIY制作的数显可调定时器(附制作的全部资料)详细说明
摘要:
随着电子技术的不断发展,人们生活水平的不断提高,充电型电子设备的种类和数量也跟着迅猛发展,尤其是电动车和手机。
这些电子设备在给我们生活和工作带来便捷的同时,充电的问题也使得人们不厌其烦,电动车大约需要充电8小时左右,手机大约需要充电3小时左右,然而当充电结束后,人们经常忘记拔掉电源,更有甚者给电池充电达数天,这对电池的功能和使用寿命无疑是一种破坏。
介于此,笔者萌生了自己动手设计制作一个数显可调定时器的想法,来解决一些生活中的问题。
数显可调定时器原理介绍
通过小时和分钟的“加”“、减”按键对需要的定时时间进行预设,确定无误后,按下启动按键,定时开始,这时,数码管便会从预设时间开始倒计时,同时充电发光二极管每秒闪烁一次,当计时到零后,充电发光二极管由闪烁状态变成常亮,继电器动作,切断充电电源。
假如电路在运行时出现故障或者运行错误,需要按单片机的
复位键,然后对定时时间重新调整后,按启动按键,重新开始定时。
电路框图如图1所示。
电路原理图如图2所示。
图1 电路方框图
图2 电路原理图。
简易定时装置制作方法
在生活中,常常需要使用定时器来控制某些设备的启动和停止时间,
比如智能灯带、排气扇等,而现成的定时器价格并不便宜,或者说功
能可能并不符合要求。
因此,DIY一个简易的定时器是一个很好的选择。
下面,就来阐述一下这种方法。
步骤一:准备材料
在制作定时器之前,首先要准备好相关的材料。
这里我们需要准备一
个12V直流电源、一个继电器、一个数码管时钟模块,一些跳线、杜
邦线及插针等电子元件。
步骤二:切割外壳
将塑料外壳沿着纵向和横向各自切割一个小口,成"U"字形,这样就能
将电源和电路板插入。
步骤三:接线
将12V直流电源的正极接到继电器上的NO(常开)接头,负极接到继
电器上的COM(公用)接头,数码管时钟模块上的VCC、GND分别接到
直流电源的正负极上,另外,数码管时钟模块上也有几个引脚需要接,如CLK引脚、DIO引脚等。
跟据线路图,将这些引脚分别连接起来。
步骤四:设置定时时间
将数码管时钟模块的按键按下,进入设置时间模式,通过按键设置好
定时时间,然后按下“OK”键进行确定即可。
步骤五:测试
使用万能表或者直接连接需要控制的设备进行测试,检测是否达到预
期效果。
除了这种基本的DIY定时器制作方法,还可以根据不同的要求增加一些额外的元件和功能,如增加温度传感器,控制设备的温度,或者添加蜂鸣器,让定时器在倒计时结束时提醒用户等。
总之,通过DIY制作简易的定时器,不仅能够满足个人需求,还可以加深对电子原理的了解,并且相较于已有的定时器,价格更优惠。
《综合设计实训I》可调式数字时钟姓名:学号:班级:实训地点:指导教师:通信与电子学院编制年月日一、设计要求数字时钟是采用数字电路实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人,家庭,车站,码头,办公室等公共场所,成为人们日常生活中的必需品。
1,、设计时可以利用单片机内部定时器,也可以利用外部实时时钟芯片。
(I/O,I2C总线)2、有年,月,日,时,分,秒功能,而且要能够校正前面五项。
3、显示时可以用8位数码管,也可以用LCD液晶屏。
(年只需显示后2位)4、可选功能:闹钟功能。
二、设计方案1、芯片分析AT89C51引脚图管脚说明:VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
电子定时开关的设计与制作
一.任务
设计制作一个电子定时开关电路,主要由计时控制部分、键盘输入部分、状态显示部分、时间显示部分、声音提示部分组成。
示意图如下:
二.要求
1.基本要求
(1)在上电或手动按复位键时,定时开关处于待机状态,时间显示电路显示00-00-00。
(2)具有6位时间预置电路,最大预设数为23时59分59秒。
(3)满足最大能控制250V-5A的负载的要求。
(4)若在待机状态时按测试键,则数码管交替显示全亮和全灭两种状态,以检测显示电路及声音提示电路的好坏。
(5)设定初值后,按开启键,计时电路以秒为单位作倒计时。
当计时到时间为0则输出相关开关状态(可通过按键设置),并给出声音提示,即扬声器输出2~3s提示音(可通过按键选择)。
(6)实现工作步骤:复位待机——〉检测显示电路及声音提示电路——〉设置输出功能和定时器初值——〉启动定时、开始——〉输出、音响提示。
2.发挥部分
(1)控制时序及控制对象的扩展。
(2)增加红外遥控或无线遥控的输入。
(3)增加传感器的智能控制(光、声、温度等)。
定时器设计方案引言在许多应用中,需要使用定时器来进行时间控制。
无论是在嵌入式系统中还是在电子设备中,定时器都扮演着重要的角色。
本文将介绍定时器的基本原理,并提供一个简单的定时器设计方案。
定时器的基本原理定时器是一种用于测量时间间隔的设备。
它可以通过设置特定的参数来触发任务或事件。
定时器通常包含以下几个基本组件:计时器计时器是定时器的核心组件。
它负责测量时间间隔,并通过特定的时钟信号来更新计数器的值。
计时器可以是硬件计时器,也可以是软件计时器。
时钟源时钟源提供定时器所需的时钟信号。
在许多系统中,时钟源可以是外部晶体振荡器或内部时钟发生器。
时钟源的频率决定了定时器的精度和分辨率。
预分频器预分频器将时钟源的频率分频到合适的范围,以适应不同的定时器要求。
通过设置预分频器的参数,可以调整定时器的计时单位和最大计数值。
比较器比较器用于比较计时器的计数值与预设值。
当计数值与预设值相等时,比较器会触发一个中断或产生一个输出信号,表示达到了预定的时间间隔。
定时器设计方案下面是一个基于单片机的定时器设计方案,使用软件计时器和比较中断来实现定时功能。
#include <msp430.h>#define TIMER_PERIOD 1000 // 周期为 1ms#define TIMER_COUNT 500 // 计数值为 500volatile unsigned int timer_count = 0; // 计数器void timer_init() {TA0CCR0 = TIMER_PERIOD - 1; // 设置计数器的计数上限TA0CCTL0 = CCIE; // 启用比较中断TA0CTL = TASSEL_2 + MC_1; // 选择时钟源为SMCLK, 运行模式为Up Mode}#pragma vector=TIMER0_A0_VECTOR__interrupt void timer_isr(void) {timer_count++; // 每次中断计数器加1if (timer_count >= TIMER_COUNT) {// 达到预设的时间间隔,执行相应的任务或事件// ...timer_count = 0; // 重置计数器}}int mn(void) {// 系统初始化// ...timer_init(); // 定时器初始化// 主循环while (1) {// 其他任务处理// ...}}上述代码使用MSP430单片机的定时器模块来实现定时功能。
电子可调定时器课程设计一、设计要求 二、设计思路1、电子可调定时器的基本框架电子可调定时器的电路基本应包括秒指示电路、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分。
电子闹钟的系统框架如图2-1示图2-1时钟系统电路原理框图2、电子可调定时器的设计原理其电路设计具体可包括:闹铃指示电路、系统时钟电路、时间显示电路、系统复位电路等的设计。
2.1闹铃指示电路的设计本系统采用声音指示,其电路如图4-2所示。
其关键元件是蜂鸣器。
蜂鸣器有无源和有源两种,有源的只需外加适当直流电源电压即可,元件内部已封装了音频振荡电路,在得电状态下即起振发声。
给予本电路的特点及实现功能的要求,我们选用有源的蜂鸣器。
2.2系统时钟电路设计振荡电路用于产生单片机工作所需要的时钟信号。
单片机内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2 。
在芯片的外部有XTAL1和XTAL2之间跨接的晶体振荡器和微调电容,共同构成了一个稳定的自激振荡器。
图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,应正确选择参数(30±10 pF ),并保证其对称性。
CPU按键与按钮电路复位等辅助电路4位数码管显示电路闹铃声光指示电路 电源系统图4-2 闹铃指示电路图4-3系统时钟电路2.3 显示电路设计本设计采用显示译码器作为译码电路。
在数字系统和装置中,显示器和译码器配合使用,或者直接利用译码器驱动显示器,这类译码器叫做显示译码器。
本设计采用74LS47译码电路。
图4-474LS47引脚图中规模集成电路74LS47,是一种常用的七段显示译码器,该电路的输出为低电平有效,即输出为0时,对应字段点亮;输出为1时对应字段熄灭。
该译码器能够驱动七段显示器显示0~15共16个数字的字形。
输入A3、A2、A1和A0接收4位二进制码,输出Qa、Qb、Qc、Qd、Qe、Qf和Qg分别驱动七段显示器的a、b、c、d、e、f和g段。
淮北师范大学硬件课程设计可编程作息时间系统目录引言 (3)1、概述 (3)1.1、概要设计报告 (3)1.2、时间运行系统功能实现 (3)1.3、报时时间设置及调时功能实现 (3)1.4、时分显示系统 (4)2、总体设计 (4)2.1、业务流程图 (4)2.2、所需芯片介绍及芯片原理图及控制字 (5)2.2.1、8255A的结构和功能 (5)2.2.2、8255A的控制字 (7)2.2.3、8255A的工作方式 (8)2.3、可编程计数器/定时器8253介绍 (9)2.3.1、8253的内部结构和引脚信号 (9)2.3.2、8253的初始化步骤和门控信号的功能 (10)2.4、0832D/A转换器芯片介绍 (13)3、芯片详细设计 (15)3.1、软件程序流程图及详解 (15)3.2、功能说明 (18)4、分析与测试 (18)5、课程设计结论 (18)5.1、本设计的可行性与优点分析 (18)5.2、设计中的不足分析与改进 (19)6、课程设计体会 (19)参考文献 (19)致谢 (20)引言随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化,智能化发展,作为高新技术之一的单片机以其体积小,功能强,价格低廉,使用灵活等优势,显示出很强的生命力。
其功耗低,超高型,成本低,功能完整,在国内越来越受到用户的重视和广泛使用1、概述1.1、概要设计报告作息时间控制系统主要有四大子系统功能实现:1.时间运行系统 2.报时时间值设置及调时系统 3.时分显示系统 4.报时响应系统。
时间运行系统让时间一直运行着;报时时间值设置及调时系统使得用户可以随时设置时间;时分显示系统让用户可以清楚知晓当前系统时间,报时响应系统完成当当前时间与报时时间值一致时进行响应(如LED 闪烁)。
四大子系统的协调有序的运行,保证了作息时间控制系统具有报时,调时,显时功能,还达到了与用户可交互的目的.1.2、时间运行系统功能实现时间运行与调节利用可编程的计数器/定时器8255芯片的可编程使时钟频率经过在8253的处理而产生符合要求的脉冲送入8255,进而执行计时子程序使得改变时间参数而计时,进行时间计算,并用实时检测程序将时间参数用数码管显示电路显示出小时与分钟以及秒钟数。
摘要随着产业结构的不断调整、生产工艺的飞速发展、人们生活水平的不断提高及家用电器的逐渐普及,市场对定时控制系统的需求越来越大.如,定时自动报警、定时自动打铃、定时开关烘箱、定时通断动力设备以及各种电气的定时启动等都属于定时控制系统.定时控制系统的实现方法很多,本设计硬件使用Atmel89S52单片机为控制核心,DS1302作为时钟芯片并同时在掉电时存贮资料,LCD1602液晶作为显示与用户交互,使用5V继电器控制外接电器电源的开启或关闭。
软件采用模块化设计,驱动、控制、引脚、变量定义等采用多文件编译,既方便自己设计修改也方便他人理解。
功能上主要实现了日期和时间等的显示和设定,定时控制功能,并且能随时输入、修改定时时间,定时时间输入后便进入定时状态。
当到达定时时间时会自动启动报警系统,闪烁电路以及蜂鸣器将开始工作,在LCD显示屏上会有“Alarm”的字样予以提示,同时切断继电器外部电源并点亮继电器电路上绿灯。
在报警半分钟后如果没有人操作该系统,则报警结束,表示系统整个工作已经结束。
关键词 :AT89S52;LCD1602;DS1302;继电器大学本科毕业设计(论文)AbstractWith the constantly adjustment of industrial structure, the rapid development of the production process, the rising of our living standard and the growing popularity of the home appliances, market timing control system of needs more and more. Such as, timing, timing automatic automatic alarm ringing the bell, timer switch oven, timing on-off power equipment and various electrical time start-up belong to timing control system. Timing control system and the realization method of many, this design using Atmel89S52 micro-controller hardware as control core, DS1302 as the clock and at the same time in power lost chip when storage material, LCD1602 liquid crystal display and as a user interaction, using 5 V relay control external electric power supply open or closed. Software modular design, driving, control, pins, variables such as defined by file compiler, go to the lavatory already own design modification is also easy to understand others.Function mainly display and set the date and time, the timing control functio n, and can enter at any time, modify the regular time, regular time input after the timed state. Alarm system will start automatically when the time is reached, the flashing circuit and buzzer will start work on the LCD monitor will have the word "Alarm" be prompt, and cut off the green relay external power and turn on the relay circuit . In the alarm after half a minute if there is no person to operate the system, the alarm to the end of said system as a whole has been completed.Key words :A T89S52;LCD1602;DS1302;relayII目录目录 (I)1 绪论 (1)1.1 本设计目的意义 (1)1.2 本设计发展及现状 (1)2 方案设计 (3)2.3 软件方案选择 (3)3 系统硬件设计 (4)3.1 单片机外围电路设计 (4)3.1.1 单片机引脚功能 (5)3.1.2 定时器的定时实现 (7)3.2 时钟电路的设计 (9)3.2.1 时钟电路外围设计 (9)3.2.2 时钟芯片引脚功能 (9)3.3 LCD1602 液晶显示电路的设计 (10)3.3.1 LCD1602芯片显示功能 (11)3.3.2 LCD1602引脚功能 (11)3.4 继电器控制电路的设计 (11)3.4.1 继电器和三极管的基功能 (12)3.4.2 继电器电路驱动原理 (13)3.5 报警电路和按键电路的设计 (13)3.5.1 报警电路 (13)3.5.2 按键电路 (14)3.6 彩灯电路的设计 (14)4 系统软件设计 (15)4.1系统主程序设计及流程图 (15)4.2 子程序流程图 (16)4.2.1 时钟模块流程图 (16)4.2.2 LCD显示模块流程图 (17)5 系统的软硬件调试 (18)5.1 硬件调试 (18)5.2 软件调试 (18)5.2.1 Keil C51调试 (18)5.2.2 Proteus 仿真 (19)6 结论与展望 (21)6.1 结论 (21)6.2 展望 (21)I谢辞 (22)参考文献 (23)附录 (24)附录一程序 (24)附录二系统原理图 (44)II定时控制器的设计与制作1 绪论1.1 本设计目的意义我们在日常生活中,经常碰到一些需要定时的事情,例如:空调可以定时开启与关闭,可以定在任何时间,洗衣机洗涤衣物需要定在几分钟到几十分钟的时间,电风扇需要定在数十分钟的时间。
4科技创新科技风2017年3月上:D01:10.19392/ki.l671-7341.201705015浅谈可调式充电定时器的设计王晓曦石家庄市第二中学河北石家庄050000摘要:目前,人们日常生活中很多电器需要充电使用,电器设备充电时往往无人看守,造成电池过度充电,继而造成电池和电器长时间出于发 热状态,影响电器和电池的寿命。
基于此背景,笔者研制发明了一款可调式充电定时器,可以实现电器(手机、电动车等)的定时充电控制,充电前可 以设定充电时间,启动后控制充电器在此时间段内进行充电,到达规定时间后自动结束充电器充电,使电器免于因长时间充电而造成损坏。
关键词:多档位可调式;充电;定时一、设计背景在日常生活中,很多电器(电动车、手机)需要充电。
电器设备在充 电时,往往处于无人看守的状态,经常会出现由于学习和工作忙等原因 忘记拔掉电源的现象。
当电器充电结束后,如果不能及时地对电器停止 充电,就会引起电池过度充电,继而造成电池和充电器长时间处于发热 状态。
这种现象不利有三:一是电池长时间处于发热状态,容易起鼓变 形,影响电池的稳定性,降低电池的使用寿命,甚至报废。
二是充电器长 时间出于工作状态,加速充电器的老化。
三是长时间充电造成不必要的 浪费。
在实际应用中,大多电器每次充电3 ~ 6小时即可,长时间充电是 毫无意义的。
针对这种情况,笔者研制了这款可调式充电定时器。
二、功能介绍这款“可调式充电定时器”可以实现短到1秒,长到6小时的定时 充电,当需要充电时通过旋转钮设定充电时间,按压启动按钮开始充 电,当设定的时间到达后,定时装置自动断电,充电结束。
具体功能如 下:1)充电前可预设定充电时间,设定时间到达后,自动使充电器断电。
2)设定时间有60s、10Min、60Min、6h多个档位可以选择,方便不同电器 使用。
3 )在每个档位的可调范围内可以任意进行时间设定,方便使用。
4)有效保护电器电池及充电器,延长电池和充电器的使用寿命。
可调式定时器的设计与制作姓名: 姜梦琦专业: 电子信息工程班级: 093253学号: 09325313指导老师: 王晓荣本次设计在以STC89C52单片机为核心的系统板上利用C语言设计电子定时器。
该电子定时器能定时给电器供电或断电,最大定时时间可以长达六十分钟且可以再一分钟到六十分钟之间任意调节时间长短,操作使用方便。
采用STC89C52单片机控制,5位共阳数码管显示时间,蜂鸣器提示,继电器作电器电源输出控制。
该定时器可预置定时时间,可通过矩阵键盘上的四个按键来选定定时器预定时间和开始和暂停,然后结合继电器对电器进行供电和断电;利用单片机内部的定时器T0,成功实现了计时器的计时功能;本电子定时器会在定时时间到达零时通过蜂鸣器进行报警,以此提醒用户电器即将断电,方便用户对电器进行其它的操作。
关键词:电子定时器;供电或断电;继电器;60分钟;数码显示;8255设计要求 (1)1 方案论证与对比 (1)1.1 方案一 (1)1.2 方案二 (2)1.3 方案对比与选择 (2)2 单元电路设计与计算 (3)2.1 STC89C52与8255电路设计 (3)2.2 矩阵键盘电路的设计 (3)2.3 继电器电路的设计 (4)2.4 蜂鸣器电路的设计 (5)2.5 数码管显示电路设计 (5)3 系统软件工作流程图 (6)3.1 系统工作流程 (6)3.2 定时器T0中断服务流程及分析 (6)4 系统调试及性能分析 (7)5 详细仪器清单 (8)6 总结与思考及致谢 (9)参考文献 (10)附录一:单片机系统板原理图 (12)附录二:详细系统源程序 (13)电子定时器设计要求利用单片机为核心,设计并制作电子定时器,具有以下功能:(1) 电子定时器能定时给电器供电或断电;(2) 给电最大时间可以长达30min;(3) 四位数码管显示时间;(4) 继电器作电器电源输出控制。
1 方案论证与对比1.1方案一该方案由待命状态、预定定时时间、定时器开始与暂停系统、系统处理、DS1302处理时间、蜂鸣器报警、数码显示等模块组成。
系统的计时部分采用了一块时钟芯片DS1302,用其实现系统通过继电器对电器供电的计时工作。
原理框图如图1所示:图 1 方案一系统方框图1.2方案二该方案仅由待命状态、预定时间、定时器开始与暂停系统、系统处理、继电器供电或断电、蜂鸣器报警、数码显示四个模块组成。
整个系统的计时功能皆由STC89C52内部自带的定时器T0来实现。
同样,结合继电器给电器供电,并利用蜂鸣器进行断电报警。
原理框图如图2所示:图 2 方案二系统方框图1.3方案对比与选择以上两个方案在原理上显然都可以完成该电子定时器的设计。
但方案一中利用DS1302时钟芯片进行计时,虽然可达到题目的计时要求,但题目要求最大计时需达到30分钟,而该芯片的计时周期规定了为24小时制,所以如果采用该方案的话,程序的设计处理复杂度将会大大增加。
在方案二中,利用STC89C52单片机内部的定时器T0循环溢出中断,从而完成定时器的计时功能,5位共阴数码管显示时间,继电器作电器电源输出控制,其电路简单,操作使用方便,大大减轻了设计的工作量。
所以选定该方案来进行本次课程设计。
2 单元电路设计与计算2.1 STC89C52与8255路设计在本次设计中,需用到多个输出端口,所以熟悉单片机的接口也是至关重要的。
本系统采用8255I/O 扩展,P0、P2口为总线控制I/O 扩展;在扩展的IO 口中,PA 口作为数码管的位选端口;PB 作为数码管的段选端口;P1^2口连接继电器,P3口分别用以控制各个中断、蜂鸣器等各个模块的控制。
在XTAL2引脚和XTAL1引脚之间接有一块12M 的晶振,从而使芯片内部的定时器能实现计时功能。
单片机接口分配电路如图3所示:RESET P32I/O P36P35RESET P36P35PA0PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7PA1P26P10P11P12P13P14P15P16P17XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1STC89C52D034D133D232D331D430D529D628D727RD 5WR 36A09A18RESET 35CS6PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710U28255AX1CRYSTALC130pC230pSW1SW-SPSTC31uFR11k图 3 STC89C52与8255电路设计2.2 矩阵键盘电路的设计根据设计要求,需要通过按键来选择系统的工作方式,所以我从4×4矩阵键盘上定义了四个按键,可以通过按键S4、S8来设定定时时间;通过按键S12、S16来控制系统工作的开始和暂停。
矩阵键盘电路如图4所示:图 4 矩阵键盘电路原理图在程序中,先将第一列的公共线拉高,即给PC4口赋一个值(如0x10)。
然后如果这一排有键被按下的话,PC3口的值就会发生改变,例如按下S4号键,PC3口的值就会由低电平变成高电平,依次类推,我们就可以根据PC3-PC0口值的变化来获得各个键值。
2.3继电器电路的设计由P1^2 引脚输出高低电平经S2控制三极管的通断,从而控制继电器的吸合与释放,继电器的输出端采用分离方式,即输出端不与内电路连接,直接连接端子,这样会增加更多利用功能,可控制更高电压设备的开和关,图上的S2单刀双掷开关控制继电器电路的电源。
继电器电路原理图如图5所示:图 5 继电器电路原理图2.4蜂鸣器电路的设计为了提醒用户对电器供电或断电后的其它工作,设计中用到了蜂鸣器的报警功能。
定时器1用来控制蜂鸣器响应的频率。
在电路中蜂鸣器由P3.3 脚控制,当将所预置的时间倒数完毕后数码管进行模拟警报器声发出警报。
蜂鸣器设计电路如图6示:图 6 蜂鸣器电路原理图2.5 数码管显示电路设计由于该设计需用到五位数码管来显示时间,所以必须要有一个数码管显示电路。
电路数码管为共阳型。
数码管位的选择由8255 PA口来处理,每次只选择其中一位数码管显示。
用动态扫描技术对五个数码管进行扫描,由PA控制位选。
利用快速的循环显示,人眼看到的就是多位了。
用PB口控制数码管的段选,根据不同的显示时间选择不同的段码。
每显示一位数码管都进行消隐,消除暗瘾。
数码管连接图如下:图7 数码管显示电路原理图3系统软件工作流程图3.1 系统工作流程程序采用模块化、结构化设计,并采用了软件抗干扰技术,其软件的可靠性较好,可维护性强。
在本主程序中有3个状态:待命状态、计时工作状态和到点工作状态。
当系统进入待命状态时,数码管上会显示“30—00”样符号;通过按键S4和S8来预置定时时间,时间可调范围是0到59分59秒。
只要按下S12定时器打开开始倒计时。
在工作中如果按下S16就可以暂停倒计时。
在工作中,都结合数码管显示时间,继电器给电器供电,当时间显示到00—00时蜂鸣器就会报警,表示继电器给电器断电了。
系统程序流程图如下图所示:图 8 系统程序流程图3.2 定时器T0中断工作分析定时器T0用于时间计时。
定时溢出中断周期设为50ms,中断进入后先进行定时中断值校正,当中断累计20次(即50ms×20=1s)时,对秒计数单元进行减1操作;当到了0s时,分计数单元减1操作;直到计时完毕。
4 系统调试及性能分析先检查印制板及焊接的质量情况,在检查无误后通电检查数码管的点亮状况。
至于矩阵键盘的调试,关键是把握好按键的去抖效果。
当出现按键“不灵”情况,一般是由于程序中用于按键去抖的延时时间不够。
将程序编辑编译完成后,将生成的hex 文件通过串口下载软件下载到STC89C52单片机芯片中去。
在进行调试之前,还应注意操作的顺序:先进行定时时间的预置,然后选定工作方式。
下表所列的是系统定时功能测试结果。
表1系统计时测试结果测量序号理论值测量值1分钟1分钟1分钟5分钟5分钟4分59秒10分钟10分钟9 分58秒15分钟15分钟14分57秒30分钟30分钟29分56秒误差分析:由于程序中使用了一些延时语句,所以如果计时时间过长的话,就会在时间上产生一定的误差。
因为我们的计时完全是通过单片要内部的计时器来完成的,所以该误差是不可避免的。
5 详细仪器清单表2 仪器清单仪器名称数量STC89C52开发板1块串口下载线1根电源线1根万用表1块6 总结与思考及致谢课程设计是针对某一理论课程的要求,对学生进行综合性实践训练的实践教学环节,可以提高学生运用课程中所学的理论知识与实践紧密结合,独立地解决实际问题的能力。
在这次课程设计过程中使我从中学到许多以前在课本和课堂上所无法学到的,特别是在课程设计过程中查找资料的过程中从中学到了许多东西并从中体会到许多的乐趣,从而丰富了自己,使自己无论是上课时还是在课余都感到很充实。
在本次课程设计的过程中,曾得到过老师与几位同学的悉心指导与帮助,才使得我的设计非常圆满的完成,在此对他们表示我们最衷心的感谢,谢谢你们!因学习知识的能力和时间有限,并且此次单片机原理及应用课程设计对于我们来说还只是初体验,因此在本次的课程设计过程中,难免存在错误,恳请老师给以批评和指正,并再次感谢曾帮助过我的老师和同学。
参考文献[1] 楼然苗,李光飞编著.单片机课程设计指导[M].北京:北京航空航天大学出版社,2007[2] 朱定华,戴汝平编著.单片微机原理与应用[M].北京:清华大学出版社,2003[3] 胡汉才编著.单片机原理及接口技术[M].北京:清华大学出版社,2004[4] 谭浩强编著.C程序设计(第三版)[M].北京:清华大学出版社,2005[5] 李大友.姜秀芳主编.单片微型硬件.软件及应用[M].北京:高等教出版社,2003[6] 沈红卫编著.单片机应用系统设计实例与分析[M].北京:北京航空航天大学出版社,2002附录一:单片机系统板原理图附录二:详细系统源程序#include<reg52.h>#include <absacc.h>#define PA XBYTE[0xD1FF] /*PA口地址*/#define PB XBYTE[0xD2FF] /*PB口地址*/#define PC XBYTE[0xD5FF] /*PC口地址*/#define CON XBYTE[0xD7FF] /*控制字地址*/#define uint unsigned int#define uchar unsigned charsbit RELAY=P1^2; /****定义继电器接口****/sbit been=P3^3;//*******************数码管段******************//uchar code TAB_CODE[]={0XA0,0XBB,0X62,0X2A,0X39,0X2C,0X24,0XBA,0X20, 0X28,0X30,0X25,0XE4,0X23,0X64,0X74};uchar num,t,s,m=30;//**小延时函数**//void delay(uint a){while(a--);}void Time();void Start();void keyscan();void main(){TMOD=0x21;//定时器工作方式设置TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;ET1=1;CON=0x81;//控制字设置while(1){keyscan();Time();Start();}}//**数码管显示函数***//void Start(){PB=0xff;//***消影***//delay(100);PA=0xfe; //***位选通***//PB=TAB_CODE[m/10];//***分十位显示***//delay(150);PB=0xff;delay(150);PA=0xfd;PB=TAB_CODE[m%10];//***分个位显示***//delay(150);PB=0xff;delay(150);PA=0xfb;PB=0x7f; //***时间分隔-显示***//delay(150);PB=0xff;delay(150);PA=0xf7;PB=TAB_CODE[s/10];//***秒十位显示***//delay(150);PB=0xff;delay(150);PA=0xef;PB=TAB_CODE[s%10];//***秒个位显示***//delay(150);PB=0xff;delay(50);while(s==0&&m==0)//***判断时间是否走完***// {TR0=0;//***定时器关闭***//TR1=1;//***定时器1打开***//RELAY=1;//***继电器断电***//delay(350);PA=0;PB=0xa0;num+=2;}}//****键盘扫描函数******//void keyscan(){uchar k,j=0x10;CON=0x81;//***初始化8255控制器***//PC=0x10;//*****把PC.4口拉高*****//k=PC;k=k&0x0f;//***判断是否有键按下***//if(k!=0){delay(50);Start();if(k!=0){while(PC!=0x10)//******松手检测******// Start();}k=k+j;if(k==0x18)m++;if(m==60)m=0;if(k==0x14){if(m==0)m=60;m--;}if(k==0x12)//开始键{TR0=1;RELAY=0;}if(k==0x11)//暂停键{TR0=0;RELAY=1;}P1=PC;}}//***倒计时控制函数***//void Time(){if(t==20){t=0;if(s==0){s=60;if(m==0)m=60;m--;}s--;}}void Ser0() interrupt 1{TH0=(65535-50000)/256;TL0=(65535-50000)%256;t++;}//定时器中断1设计蜂鸣器响应的频率void Ser1() interrupt 3{TH1=0x01;TL1=num;been=!been;}/************************************END********************************* **********/18。