1.方案设计 1.1.设计要求 设计一个电子秒表,4位数码管显示时间,显示时间范围00.00秒到99.99秒,共计100秒。利用按键修改时间,按键一按下加一秒,按键二按下减一秒,按键三按下置零,按键四启动或暂停计时。 1.2.方案讨论 本系统用STC89C51RC为主控,利用4位共阴数码管显示,避免了用4个独立的数码管造成单片机IO口不够用和资源的浪费。单片机驱动4位共阴数码管用两块74HC573芯片,当使能端为高电平时,输出将随数据输入而变。当使能为低电平时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,原来的数据可以保持,甚至当输出被关闭时,新的数据也可以置入。74HC573可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。利用4个独立按键就可以满足时间的设置。
2.硬件设计 2.1.主控制器 主 CPU 电路选用 STC89C51RC 系列单片机,STC89C51RC 是采用 8051 核的 ISP(In System Programming)在系统可编程芯片,最高工作时钟频率为 80MHz,片内含4KB的可反复擦写 1000 次的 Flash 只读程序存储器,器件兼容标准 MCS-51 指令系统及 80C51 引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。 STC89C52RC 系列单片机是单时钟/ 机器周期(1T)的兼容 8051 内核单片机,是高速/低功耗的新一代 8051 单片机,全新的流水线/ 精简指令集结构,内部集成 MAX810 专用复位电路。 STC89C51 系列单片机的特点: (1) 增强型 1T 流水线/ 精简指令集结构 8051 CPU (2) 工作电压:3.4V-5.5V(5V 单片机/2.0V-3.8V(3V 单片机) (3) 工作频率范围:0 - 35 MHz,相当于普通 8051 的 0~420MHz.实际工作频率可达48MHz. (4)用户应用程序空间 12K / 10K / 8K / 6K / 4K / 2K 字节 (5) 片上集成 512 字节 RAM (6) 通用 I/O 口(27/23 个),复位后为: 准双向口/ 弱上拉(普通 8051 传统 I/O 口)可设置成四种模式:准双向口/ 弱上拉,推挽/ 强上拉,仅为输入/ 高阻,开漏每个 I/O 口驱动能力均可达到 20mA,但整个芯片最大不得超过 55mA (7) ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片 (8) EEPROM 功能 (9) 看门狗 (10)内部集成 MAX810 专用复位电路(外部晶体 20M 以下时,可省外部复位电路) (11)时钟源:外部高精度晶体/ 时钟,内部 R/C 振荡器。用户在下载用户程序时,可选择是使用内部 R/C 振荡器还是外部晶体/ 时钟。常温下内部 R/C 振荡器频率为:5.2MHz ~ 6.8MHz。精度要求不高时,可选择使用内部时钟,因为有温漂,请选 4MHz ~ 8MHz (12)有 2 个 16 位定时器/ 计数器 (13)外部中断 2 路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平触发中断方式唤醒 (14)PWM ( 4 路)/ P C A(可编程计数器阵列),也可用来再实现 4 个定时器或 4 个外部中断(上升沿中断/ 下降沿中断均可支持) (15) STC89Cc516AD 具有 ADC 功能。 10 位精度 ADC,共 8 路 (16) 通用异步串行口(UART) (17) SPI 同步通信口, 主模式/ 从模式 (18)工作温度范围: 0 - 75℃ / -40 - +85℃ (19)封装: PDIP-28,SOP-28,PDIP-20,SOP-20,STC89C52RC系列单片机为真正的看门狗,缺省为关闭(冷启动),启PLCC-32,TSSOP-20(超小封状,定货)动后无法关闭,可省去外部看门狗。此系列单片机P4口地址为E8H,并有2个附加外部中断,P4.2/INT3,P4.3/INT2。 2.2.晶振及复位模块 晶振电路部分,使用12MHz 晶振,和两个30PF电容。在复位电路中,采用按键电平复位,电容为 10uF,电阻为10k。当系统处于正常状态时,如果RST引脚上有一个高电平并维持2个机器周期,CPU响应并将系统复位。晶振及复位电路如右图。 2.3.按键模块 系统设计有四路独立的输入按键,按键直接接入到单片机的 P3 口,当按键未按下时,单片机检测到引脚为高电平;当按键被按下时,单片机检测到引脚为低电平,执行相应的程序。所以只要通过检测相应端口的状态的变化,就可以检测到是否有按键按下。键盘电路如下图所示。 数码管采用四段的共阴数码管,通过两块74HC573分别控制数码管的段选和位选。 当第一块74HC573的LE端为高电平时,第二块74HC573的LE端为低电平时,P0口控制段选,数码管可以显示内容。显示数字可以给0到9十个数字编码,再把要显示的数字通过这个编码送到P0口即可。当第二块74HC573的LE端为高电平时,第一块74HC573的LE端为低电平时,P0口控制位选,可以控制数码管第几位显示。由于P0口作为I/O口使用时,P0口内部的场效应管截止,输出为漏极开路,必须要接上拉电阻才能有高电平输出。在本系统中,P0口接了10K的排阻作为上拉电阻。显示电路如下图所示。 3.系统仿真图 利用Proteus仿真软件绘制的系统仿真图如下: 4.软件设计 在Keil软件中,利用C51编程实现电子秒表的功能。程序包括主函数、延时函数、定时器初始化、数码管显示、键盘扫描和中断服务程序。程序从主函数执行,先初始化定时器,然后一直循环调用数码管显示和键盘扫描函数。 4.1.软件流程图 4.2.参考程序
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
sbit K1=P3^4;
sbit K2=P3^5;
sbit K3=P3^6;
sbit K4=P3^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code table2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
uint num,sec1=0,sec2=0;
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void begin()
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
}
void display(uchar sec1,uchar sec2)
{
wei=1;
P0=0xf7;
wei=0;
duan=1;
P0=table[sec1%10];
duan=0;
P0=0xff;
delay(2);
wei=1;
P0=0xfb;
wei=0;
duan=1;
P0=table[sec1/10];
duan=0;
P0=0xff;
delay(2);
wei=1;
P0=0xfd;
wei=0;
duan=1;
P0=table2[sec2%10];
duan=0;
P0=0xff;
delay(2);
wei=1;
P0=0xfe;
wei=0;
duan=1;
P0=table[sec2/10];
duan=0;
P0=0xff;
delay(2);
}
void keyscan()
{
if(K1==0)
{
delay(5);
if(K1==0)
{
sec2++;
if(sec2==100)
sec2=0;
while(!K1);
}
}
if(K2==0)
{
delay(5);
if(K2==0)
{
sec2--;
if(sec2==-1)
sec2=99;
while(!K2);
}
}
if(K3==0)
{
delay(5);
if(K3==0)
{
sec1=0;
sec2=0;
}
while(!K3);
}
if(K4==0)
{
delay(5);
if(K4==0)
{
TR0=~TR0;
while(!K4);
}
}
}
void main()
{
begin();
while(1)
{
display(sec1,sec2);
keyscan();
}
}
void time0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
num++;
if(num==10)
{
num=0;
sec1++;
if(sec1==100)
{
sec1=0;
sec2++;
if(sec2==100)
sec2=0;
}
}
}
5.系统验证及分析 下图为仿真效果图。 下图为开始仿真的效果图。当前显示数字表示计时到3.02秒. 下图为即将计时到99.99秒的效果。到达99.99秒后会全部清零。 通过以上Proteus的仿真效果图可以看出,系统实现了所有基本功能,达到了预期的效果。但是在仿真过程中,由于仿真软件运行有一定延时,所以计时的精度不够准确,比正常的秒表慢。此外,小数点后面两位数码管计数时间很快,人眼难以分辨数码管的变化。
6.结论 本设计是基于单片机控制的数字秒表,系统的成本较低,但实用价值很高而且采用的技术较为稳定而且成熟,另外系统的应用要求不是很高。通过这次秒表的设计,我们学到了许多知识,还学到了许多思考问题的方法,同时也提高了分析问题、解决问题的能力。
|