数显可调定时器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数显可调定时器原理介绍
通过小时和分钟的“加”“、减”按键对需要的定时时 间进行预设,确定无误后,按下启动按键,定时开始,这时, 数码管便会从预设时间开始倒计时,同时充电发光二极管每秒 闪烁一次,当计时到零后,充电发光二极管由闪烁状态变成常 亮,继电器动作,切断充电电源。
假如电路在运行时出现故障或者运行错误,需要按单片机 的复位键,然后对定时时间重新调整后,按启动按键,重新开
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
40
39 38 37 36 35 34 33 32
1 2 3 4 5 6 7 8 P1.7
21 22 23 24 25 26 27 28
VCC
U2
4 5 3 7 1 2 6
IN7 IN6 IN5 IN4 IN3 IN2 IN1
ULN2003A
VCC
8
7 6 5 4 3 2 1
9 31 29 30
RST EA/VPP PSEN ALE
10 11 P3.0/RxD 12 P3.1/TxD 13 P3.2/INT0 14 P3.3/INT1 15 P3.4/T0 16 P3.5/T1 17 P3.6/WR
P3.0/RxD P3.1/TxD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
R7
20 VSS
AT89S51
单片机最小系统
VCC
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
52 2011. 09 www.ele169.com
实用小制作
HANDS ON PROJECTS
程序分析
#include <AT89X51.H> #define uchar unsigned char #define uint unsigned int uchar bbit[]={0x04,0x02,0x01}; uchar buffer[]={0,0,0}; uchar hour=8,minute;//小时初始值为8,分钟为00 uint count; void delay(uchar ms)//毫秒级延时子程序 { uchar j; for(;ms>0;ms--) for(j=0;j<120;j++); } void tt0() interrupt 1 using 1//定时器T0中断子程序 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; if(count==1200) //50ms*1200=60s(秒) { count=0; if(hour==0&&minute==0) { P3_0=1; //继电器动作 while(1){P1_7=0;}//充电完成 灯由闪烁变常亮 } if(minute==0) { minute=60; hour--; if(hour>=9)hour=9; } minute--; if(minute>=59)minute=59; } buffer[0]=minute%10;//秒的低位放入显示缓冲区 buffer[1]=minute/10;//秒的高位放入显示缓冲区 buffer[2]=hour; //小时放入显示缓冲区 count++; if(count%10==0) P1_7=!P1_7; //正在充电 充电指示灯每秒闪烁一次 } void display()//数码管显示子程序 {uchar i; for(i=2;i!=0xff;i--) { P0=buffer[i]; P2=bbit[i]; delay(10); P0=0XFF;
com1 com2 com3
10 GND
SN74HC244N
VCC
VCC
YELLOW RED
P1.7
显示部分
图5
始定时。 电路框图如图1所示。电路原理图如图2所示。
1. 输入部分
输入部分有五个按键组成,分别是分钟+10、分钟-10、
小时+1、小时-1和设置完成按键。定时器的初始值是8小时。 使用前,先通过这五个按键进行定时时间的设置,分钟设
实物图及PCB版图如图7~图9所示。
4.输出部分
输出部分主要是一个能控制220V市电通断的继电器。继电 器的驱动部分则采用达林顿晶体管阵列ULN2003A(见图6)。
} } void main()//主函数 { P1=0xff; //初始化 P3=0; TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; ET0=1; while(1) { buffer[0]=minute%10; buffer[1]=minute/10; buffer[2]=hour; display(); if(P1_0==0)//分钟“加十” { delay(5); if(P1_0==0) {minute+=10;if(minute>=59)minute=0;} while(P1_0==0); } if(P1_1==0)//分钟“减十” { delay(5); if(P1_1==0) {minute-=10;if(minute>=59)minute=0;}while(P1_1==0); } if(P1_3==0)//小时“加一” //P1_3和P1_2互换位置,完全是因为PCB布局的需要 { delay(5); if(P1_3==0) {hour++;if(hour>=9)hour=9;} while(P1_3==0); } if(P1_2==0)//小时“减一” { delay(5); if(P1_2==0) {hour--;if(hour>=9)hour=9;}while(P1_2==0); } if(P1_4==0)break; //如果按下设置键,跳出本循环,定时开始 } TR0=1; while(1) { display(); } }
控制部分的主要工作原理就是利用了单片机内部 的定时/计数器T0,由于它的最大定时时间只有65ms 左右,所以,本制作利用T0的方式一,每次定时50ms,循环
1200次,来实现精确的一分钟定时。误差在微秒级。
3. 显示部分
显示部分由两个发光二极管和一个三位一体的数码管组成。 红色发光二极管为电源指示灯,当电源通电其发光,断电 其熄灭。黄色发光二极管为充电指示灯,充电开始后,它每秒 亮灭一次,充电完成后,其亮灭闪烁变为常亮。在设计阶段, 笔者还建议在输出继电器加第三个发光二极管,作为继电器吸 合或断开的指示灯,切忌一开始就加接强电,危险极大。 数码管是三位一体共阳极封装,高位数码管显示小时,其 它两个数码管显示分钟。 数码管电路的主要工作原理就是电路驱动和动态扫描。 如图5所示,数码管的段驱动采用自带BCD译码的4线7段译 码驱动器74LS247。位驱动则采用八同相三态缓冲器/线驱动器 的74HC244,由于它集成了八个同相驱动器,所以可以驱动八 个数码管。 数码管动态扫描就是利用人眼的视觉暂留现象,某一时刻 只有一位数码管显示,其它熄灭,通过位选切换,快速的在三 个数码管上依次显示所需信息,由于速度很快,加上数码管的 余辉现象和人眼的视觉暂留现象,使得人们能够看到完整流畅 的三个数字。
BI/RBO a
RBI
b
LT
c
A
d
B
e
C
f
D
g
74LS247
13 R13 12 11 10 9 15 14
R19
R1 R2 R3 R4 R5
P1.0 P1.1 P1.2 P1.3 P1.4
U3
1 19
OE1 VCC OE2
2 4 6 8 11 13 15 17
A1 A2 A3 A4 A5 A6 A7 A8
P3.7/RD
20 VSS AT89S51
P1.7
ቤተ መጻሕፍቲ ባይዱ
VCC VCC
R9 R10 R11 R12
VCC
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P1.0/T2 P1.1/T2EX
P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P1.0/T2 P1.1/T2EX
P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
VCC 40
39 38 37 36 35 34 33 32
1 2 3 4 5 6 7 8
实用小制作
HANDS ON PROJECTS
数显可调定时器
●●●
作者 / 宋占坡
随着电子技术的不断发展,人们生活水平的不断提高,充 电型电子设备的种类和数量也跟着迅猛发展,尤其是电动车和 手机。这些电子设备在给我们生活和工作带来便捷的同时,充 电的问题也使得人们不厌其烦,电动车大约需要充电8小时左 右,手机大约需要充电3小时左右,然而当充电结束后,人们 经常忘记拔掉电源,更有甚者给电池充电达数天,这对电池的 功能和使用寿命无疑是一种破坏。介于此,笔者萌生了自己动 手设计制作一个数显可调定时器的想法,来解决一些生活中的 问题。
21 22 23 24 25 26 27 28
图4
com1 1 com1
a2 3
f
com2 4 com2 com3 5 com3
b6
3LED VCC
11 e 10 d 9h 8c 7g
R9
P0.0 P0.1 P0.2 P0.3
R12
U2
4 5 3 7 1 2 6
BI/RBO a
RBI
b
LT
c
A
d
B
e
输入部分的电路工作原理就是单片机对按键的识别,如 图3所示,单片机的P1口通过上拉电阻接高电平,当没有按键 按下时,P1.0~P1.4的管脚电压为高电平,如果某一个按键按 下,相应的单片机并口就会被拉低为低电平。编程时,只要扫 描P1.0~P1.4的状态,便能完成对按键的识别。
2. 控制部分
控制部分采用AT89S51单片机作为控制器,它把按键的信 息采集过来后,经过单片机内部的定时计数器T0运算,完成相 应的定时,同时单片机的并口也会将信息输出给显示部分和输 出部分。
C
f
D
g
13 R13 12 11 10 9 15 14
74LS247
R19
U3
VCC
1 19
OE1 VCC OE2
20
P2.0 P2.1 P2.2
2 4 6 8 11 13 15 17
A1 A2 A3 A4 A5 A6 A7 A8
Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
18 16 14 12 9 7 5 3
VCC VCC
VCC
R8 C4 Cap
VCC
C5 Cap2
C3 Cap Pol1
S6
VDS2
C1
U1
12
R7
Y1 XTAL
19 18
XTAL1 XTAL2
C2
P7
2 1
Header 2
2 K1
1
3
VCC
4
5 Relay
U4 9 COM GND
10 11 12 13 14 15 16
OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1
置键的分辨率之所以10分钟为一个步进阶梯完全是考虑的实际 的需要,因为无论是电动车还是手机,都没有必要以一分钟为
www.ele169.com 2011. 09 51
实用小制作
HANDS ON PROJECTS
P7
2 1
Header 2
2 K1
1
3
VCC
4
5 Relay
U4 9 COM GND 8
10 11 12 13 14 15 16
3led 3led
图2
50 2011. 09 www.ele169.com
实用小制作
HANDS ON PROJECTS
输入部分 (五个按键)
继电器
微控制器 ( MCU)
数码管段驱动 ( 74LS247)
数码管位驱动 ( 74HC244)
继电器驱动 ( ULN2003A)
电源指示灯 充电指示灯
电路方框图
R1 R2 R3 R4 R5
P1.0 P1.1 P1.2 P1.3 P1.4
输入部分
VCC
S1 S2 S3 S4
S5
三位一体 数码管 图1
图3
C1
U1
12
Y1 XTAL
19 18
XTAL1 XTAL2
C2
VCC
VCC
9 31 29 30
RST EA/VPP PSEN ALE
C3
Cap Pol1
S6
10 11 12 13 14 15 16 17
Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
10 GND
SN74HC244N
VCC 20
18 com1 16 com2 14 com3 12 9 7 5 3
VCC
S1 S2 S3 S4
S5
11 e
10 d
9 h
8 c
7 g
com1 com2 com3
com1 com2 com3
6b 5 4 3f 2a 1
OUT7 OUT6 OUT5 OUT4 OUT3 OUT2 OUT1
IN7 IN6 IN5 IN4 IN3 IN2 IN1
7 6 5 4 3 2 1
ULN2003A
输出部分
图6
图8
图7
图9
单位,当然,使用者可以根据自己的需要动手修改程序,已达 到自己的要求。
本制作所使用的按键均为四脚封装常开型按键,使用前需 通过万用表对引脚进行测量来确定那组引脚作为开关使用,当 然也可以直接使用对角线引脚作为开关按键,另外两个引脚悬 空,便不会出现问题。同时需要提醒的是,电路板上另外一个 按键是单片机的复位按键,电路正常工作时不要去触摸。
相关文档
最新文档