资源描述
目录
1 引言 1
2 设计任务和要求 2
2.1. 设计题目 2
2.2. 设计要求 2
3 系统功效分析和设计方案 3
3.1. 系统关键功效 3
3.2. 系统设计方案 3
3.3. 数码管显示工作原理 4
3.4. 电路硬件设计 5
3.4.1. 设计原理框图 5
3.4.2. 电源部分 5
3.4.3. 复位电路 6
3.4.4. 指示灯电路 6
3.4.5. 按键电路 6
3.4.6. 时钟电路 8
3.4.7. 驱动电路 8
3.4.8. 数码管连接电路 9
3.4.9. 主控模块AT89S52 9
3.4.10. 材料清单 10
3.4.11. 电路原理图、PCB图及实物图 11
3.5. 软件设计 13
3.5.1. 软件设计步骤 13
3.5.2. 完整源程序 15
4 系统安装和调试 21
4.1. 硬件电路安装 21
4.2. 软件调试 21
5 课程设计总结 22
参考文件 23
致谢 24
摘 要
单片机自20世纪70年代问世以来,以其极高性能价格比,受到大家重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为轻易。因为含有上述优点,在中国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面。这次课程设计经过对它学习、应用,以AT89S52芯片为关键,辅以必需电路,设计了一个简易单片机电子时钟,包含硬件电路原理实现方案设计、软件程序编辑实现、电子时钟正常工作步骤、硬件制作和软件调试过程。电子时钟由5.0V直流电源供电,数码管能够比较正确显示时间,经过按键能够调整时间,从而抵达学习、设计、开发软、硬件能力。
关键词:单片机;AT89S52;电子时钟;数码管;按键
1 引言
1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟基础。伴随时间推移,科学技术不停发展,大家对时间计量精度要求越来越高,为了让时钟愈加好为人民服务,就要求大家不停设计出新型时钟。现代电子时钟是基于单片机一个计时工具,采取延时程序产生一定时间中止,用于一秒定义,经过计数方法进行满六十秒分钟加一,满六十分小时加一,满二十四小时小时清零。从而达成计时功效,是人民日常生活补课缺乏工具。、现在高精度计时工具大多数全部使用了石英晶体振荡器,因为电子钟,石英表,石英钟全部采取了石英技术,所以走时精度高,稳定性好,使用方便,不需要常常调校,数字式电子钟用集成电路计时时,译码替换机械式传动,用LED显示器替换显示器替换指针显示进而显示时间,减小了计时误差,这种表含有时、分、秒显示时间功效,还能够进行时和分校对,片选灵活性好。
时钟电路在计算机系统中起着很关键作用,是确保系统正常工作基础。在一个单片机应用系统中,时钟有两方面含义:一是指为保障系统正常工作基准振荡定时信号,关键由晶振和外围电路组成,晶振频率大小决定了单片机系统工作快慢;二是指系统标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部可编程定时/计数器来实现,但误差很大,关键用在对时间精度要求不高场所;二是用专门时钟芯片实现,在对时间精度要求很高情况下,通常采取这种方法。
本文关键介绍用单片机内部定时/计数器来实现电子时钟方法,本设计由单片机AT89S52芯片和LED数码管为关键,辅以必需电路,组成了一个单片机电子时钟。
2 设计任务和要求
2.1. 设计题目
利用单片机定时器制作数字时钟并能够实现时钟控制。
2.2. 设计要求
(1) 基础要求
① 制作数字时钟系统;
② 能够控制时钟电路,P1.0选择时、分、秒,P1.1对时、分、秒进行自加;
③ 灯亮灭显示控制端,P3.7口黄灯亮表示控制时,P3.3口红灯亮表示控制分,红灯、黄灯一起亮表示控制秒。
(2) 发挥部分
① 时间精度为0.5秒。
3 系统功效分析和设计方案
3.1. 系统关键功效
利用AT89S52单片机内部定时/计数器、中止系统、和行列键盘和LED显示器等部件,设计一个单片机电子时钟。设计电子时钟经过数码管显示,并能经过按键实现设置时间和复位控制等。
另外还要实现对时间调整功效,AT89S5P1.0、P1.1、RST外接三个独立按键,当按下P1.0按键时,系统进入调时间状态或开启时间显示功效;当按下P1.1按键时,对显示数码管进行加一功效,达成调整时间目标;当按下RST按键时,实现对电子时钟进行复位功效。
3.2. 系统设计方案
整个系统采取应用广泛AT89S52作为时钟控制芯片,利用单片机内部定时器\计数器来实现,它处理过程以下:首先设定单片机内部一个定时器\计数器工作于定时方法,对机器周期计数形成基按时间,然后用另一个定时器\计数器或软件计数方法对基按时间计数形成秒,秒计60次形成份,分计60次形成小时,小时计24次则计满一天。然后经过数码管把它们内容在对应位置显示出来即可。
数码管显示能够采取静态显示方法或动态显示方法。静态显示方法需要数据锁存器等硬件,接口复杂,时钟显示通常见6个或8个数码管。因为系统没有其它复杂任务处理,而且显示时钟信息随时全部可能改变,通常采取动态显示方法。动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,信息看起来才稳定。译码方法可分为软件译码和硬件译码,软件译码经过译码程序查得显示信息字段码;硬件译码经过硬件译码器得到显示信息字段码,实际中通常采取软件译码。
在具体处理时,定时器计数器采取中止方法工作,对时钟形成在中止服务程序中实现。在主程序中只需对定时器计数器初始化、调用显示子程序和控制子程序。另外,为了使用方便,设计了简单按键,能够经过按键实现时间调整和复位。
3.3. 数码管显示工作原理
数码管是一个把多个LED显示段集成在一起显示设备。有两种类型,一个是共阳型,一个是共阴型。共阳型就是把多个LED显示段阳极接在一起,又称为公共端。共阴型就是把多个LED显示段阴极接在一起,即为公共商。阳极即为二极管正极,又称为正极,阴极即为二极管负极,又称为负极。通常数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段。而多位数码管,除某一位公共端会连接在一起,不一样位数码管相同端也会连接在一起。即,全部A段全部会连在一起,其它段也是如此,这是实际最常见使用方法。数码管显示方法可分为静态显示和动态显示两种。
静态显示:所谓静态显示,就是当显示器显示某一字符时,对应发光二极管恒定导通或截止。该方法每一位全部需要一个8 位输出口控制。静态显示时较小电流能取得较高亮度,且字符不闪烁。但当所显示位数较多时,静态显示所需I/O口太多,造成了资源浪费。
动态显示:所谓动态显示,就是一位一位轮番点亮各个位,对于显示器每一位来说,每隔一段时间点亮一次。利用人视觉暂留功效能够看到整个显示,但必需确保扫描速度足够快,字符才不闪烁。显示器亮度既和导通电流相关,也于点亮时间和间隔时间百分比相关。调整参数能够实现较高稳定度显示。动态显示节省了I/O口,降低了能耗。
从节省I/O口和降低能耗出发,本设计采取动态显示。
3.4. 电路硬件设计
3.4.1. 设计原理框图
此设计原理框图图1所表示,此电路包含以下六个部分:单片机,按键,指示灯,复位电路,晶振及显示电路。
按键
单 片 机
显示电路
指示灯
晶振
复位电路
图1设计原理框图
3.4.2. 电源部分
图2所表示,从外部引入5.0V直流电,为单片机、复位电路等提供电源。
图2电源部分
3.4.3. 复位电路
图3所表示,复位电路采取上电自动复位和按键手动复位设计在一起,关键由型号为10uF电解电容,8.2K和220电阻和按键S3组成,当开关按下时引脚RST为高电平1,断开时引脚为低电平0。
图3复位电路
3.4.4. 指示灯电路
图4所表示,指示灯电路关键由两个发光二极管组成,端口低电平有效。灯亮灭显示控制端,P3.7口黄灯亮表示控制时,P3.3口红灯亮表示控制分,红灯、黄灯一起亮表示控制秒。
图4指示灯电路
3.4.5. 按键电路
图5所表示,按键开关S1、S2分别接P1.0、P1.1端,S1选择时、分、秒,S2对时、分、秒进行自加,低电平有效。
图5按键电路
3.4.6. 时钟电路
图6所表示,单片机外接石英晶体和微调电容实现了使用其内部时钟产生时钟脉冲,其中晶振为12M,电容均为30pF无极性电容。
图6时钟电路
3.4.7. 驱动电路
图7所表示,从实物制作简易程度和驱动数码管段码能力角度出发,本数字电子钟设计采取数码管位选端和三极管集电极相连,三极管发射极接5V直流电源,三极管基极和单片机芯片P0口,数码管段选端和P2口相连。经过编程,单片机芯片即可经过控制端口电平来控制数码管位、段控制。
图7驱动电路
3.4.8. 数码管连接电路
图8为三位一体数码管引脚功效图,数码管引脚和单片机芯片引脚和三极管对应相接。数字电子钟显示模块用2个三位一体数码管实现,数码管从左到右依次显示时十位、个位,分十位、个位,秒十位和个位,采取软件译码动态显示。
图8数码管连接电路
3.4.9. 主控模块AT89S52
AT89S52是美国ATMEL企业生产低功耗,高性能CMOS八位单片机,片内ROM全部采取FLASH ROM技术,片内含4K bytes可系统编程Flash只读程序存放器,器件采取ATMEL企业高密度,非易失性存放技术生产,兼容标准8051指令系统及引脚。AT89S52提供以下标准功效:4K字节Flash闪速存放器,128字节内部RAM,32I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中止结构,一个全双工串行通信口,片内振荡器立即钟电路。它是标准40引脚双列直插式集成电路芯片,晶振时钟为12MHz,第31引脚需要接高电位使单片机选择内部程序存放器;第40脚为电源端VCC,接5V电源,第20引脚为接地端GND。
3.4.10. 材料清单
Bill of Material for 电子钟原理图.Bom
Used Part Type Designator Footprint
==== ================ ========== ==========
6 4.7k R1 R2 R3 AXIAL0.4
R4 R5 R6
1 8.2k R9 AXIAL0.4
1 10uF C1 RB.2/.4
1 12MHz Y1 XTAL1
2 30pF C2 C3 RAD0.2
2 220 R7 R8 AXIAL0.4
2 ARK AR1 AR2 SP410361K
1 AT89S52 U1 DIP40
1 CON2 J1 SIP2
1 HEADER 5X2 JP1 DIP10
1 RED LED2 DIODE0.4
6 S8550 Q1 Q2 Q3 TO-92B
Q4 Q5 Q6
3 SW-PB S1 S2 S3 SW
1 YELLOW LED1 DIODE0.4
3.4.11. 电路原理图、PCB图及实物图
图9为单片机电子时钟电路原理图,图10为其PCB图,图11为实物图。
图9电路原理图
图10 PCB图
图11实物图
3.5. 软件设计
3.5.1. 软件设计步骤
电子时钟软件系统由主程序和子程序组成,主程序程序包含初始化参数设置、按键处理、数码管显示模块等,
(1)主程序
主程序先对显示单元和定时器/计数器初始化,然后反复调用数码管显示模块和按键处理模块,当有键按下,则转入对应功效程序。主程序实施步骤图12。
图12主程序步骤图
(2)定时器/计数器T0中止程序
定时器/计数器T0用于时间计时。选择方法1,反复定时,定时时间设为20ms,定时时间到则中止,在中止程序中用一个计数器对20ms计数,计50次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数同时,把它们值放到存放单元指定位置。定时器/计数器T0中止程序步骤图图13。
图13中止程序步骤图
3.5.2. 完整源程序
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void KeyHandle(void); /*按键处理模块*/
void Delay (); /*10ms延时*/
void DispClock();
uchar Control[6]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//数码管控制选通
uchar DisplayArray[6]={0x00,0x00,0x00,0x00,0x00,0x00};//中间存放变量
uchar code CodeNum[16]={0x28,0xEB,0x32,0xA2,0xE1,
0xA4,0x24,0xE8,0x20,0xA0};//0-f段码
uchar Keyflag=0;/*按键处理标识*/
uchar SetFlag=0;//=0,Normal;=1,调秒; =2,调分;=3,调时;
uchar Msecond,Second,Minite,Hour;
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P3_7 = P3^7;
sbit P3_3 = P3^3;
void main(void)
{
EA=1;
ET0=1;
ET1=1;
P1_1=1;
P3_7=1;
P3_3=1;
TMOD = 0x11;
TH0=(65536-0)/256;
TL0=(65536-0)%256; //设定时值为20ms
TH1=(65536-500)/256;
TL1=(65536-500)%256; //设定时值为500us
TR0=1;
TR1=1; //开始定时
for(;;)//while(1)
{
DispClock();
KeyHandle();
}
}
void Time0(void) interrupt 1
{
TH0=(65536-0)/256;
TL0=(65536-0)%256;
Msecond++;
if(Msecond>=50)
{
Msecond=0;
Second++;
if(Second>=60)
{
Second=0;
Minite++;
if(Minite>=60)
{
Minite=0;
Hour++;
if(Hour>=24)
{
Hour=0;
}
}
}
}
}
void Time1(void) interrupt 3
{
static uchar s_count=0;//变量定义在其它语句之前,keil c(非C语言规则)
uchar temp;
TH1=(65536-500)/256;
TL1=(65536-500)%256; //设定时值为500us
P0=Control[s_count];
temp=DisplayArray[s_count];
P2=CodeNum[temp];
s_count++;
if(s_count>5)
{
s_count=0;
}
}
void KeyHandle(void) /*按键处理*/
{
P1_0=1;
if(P1_0==0)
{
Delay();
if(P1_0==0)
{
SetFlag++;
if(SetFlag>3)
SetFlag=0;
switch (SetFlag)
{ case 1:
P3_7 = 0;
P3_3 = 0;
break;
case 2:
P3_7 = 1;
P3_3 = 0;
break;
case 3:
P3_7 = 0;
P3_3 = 1;
break;
default:
P3_7 = 1;
P3_3 = 1;
break;
}
}
P1_0=1; //预防按键不放
while((P1_0&0x01)!=0x01);
}
//加法处理
P1_1=1;
if(P1_1==0)
{
Delay();
if(P1_1==0)
{
switch (SetFlag)
{
case 1:
Second++;
if(Second>=60) Second=0;
break;
case 2:
Minite++;
if(Minite>=60) Minite=0;
break;
case 3:
Hour++;
if(Hour>=24) Hour=0;break;
default: break;
}
P1_1=1; //预防按键不放
while((P1_1&0x01)!=0x01);
}
}
}
void DispClock()
{
uchar tempData=0;
tempData=Second;//秒钟分解
DisplayArray[0]=tempData%10;
DisplayArray[1]=tempData/10;
tempData=Minite;//分钟分解
DisplayArray[2]=tempData%10;
DisplayArray[3]=tempData/10;
tempData=Hour;//小时分解
DisplayArray[4]=tempData%10;
DisplayArray[5]=tempData/10;
}
void Delay()//10ms延时
{
uchar i,j;
for(i=20;i>0;i--)
for(j=249;j>0;j--);
}
4 系统安装和调试
4.1. 硬件电路安装
根据电路PCB图把元器件安装到已腐蚀好铜板对应位置,再用电烙铁和焊锡将元器件各引脚焊接好。
注意事项:(1)元器件布局在合理前提下应尽可能集中,尽可能使用单面板,双面板顶层走线要尽可能少,各个元器件间引脚连线应尽可能短。(2)各个元器件引脚安装要正确,焊接时不要有虚焊。
4.2. 软件调试
将电路板接上5V直流电源,再将用程序调试软件Keil编译好目标程序代码下载到单片机芯片AT89S52,即开始进行软件调试工作。假如显示结果不符合设计要求,先检验电路各连接点是否正确连接、是否有虚焊,硬件无问题再检验程序代码是否符合硬件电路设计,再进行硬件电路调试工作。如此反复操作,直到调试出正确结果。
5 课程设计总结
经过几周时间和对单片机知识总结,把课程设计分成了硬件和软件两大模块。总来说,硬件部分很好入手,电路也较简单,关键包含是简单按键、电容、电阻、晶振和数码管。整个设计过程中碰到最大问题是软件编写,软件部分细分为了按键模块、定时/计数模块、显示模块,最终把多个模块整合在主程序模块中,最终实现了电子时钟功效。
在此次课程设计过程中,将在课程中学到理论知识利用到实际作品设计、操作中,更深入地熟悉了单片机芯片结构及掌握了其工作原理和具体使用方法和相关元器件参数计算方法、使用方法,了解了电路开发和制作及课程设计汇报编写。加深了对相关理论知识及专业知识掌握度,增强本身动手能力,锻炼及提升了了解问题、分析问题、处理问题能力,更深刻体会到了理论联络实际关键性,深入掌握画图软件使用和提升对应画图操作水平及技巧。在整个设计过程中还学到了团体合作精神和分析、处理问题关键性,为以后求职之路打下了基础。
参考文件
[1] 黄正谨.综合电子设计和实践[M].东南大学出版社.-3.
[2] 夏路易,石宗义.电路原理图和电路设计教程Protel 99SE[M] .北京期望电子出版社..
[3]谢嘉奎.电子线路[M].高等教育出版社.-2.
[4] 王毓银.数字电路逻辑设计[M].高等教育出版社.-2.
[5] 李光才.单片机课程设计实例指导[M]. 北京:北京航空航天大学出版社 .
[6] 杨欣等.电子设计从零开始[M].清华大学出版社.-10.
[7] 刘湘涛.江世明.单片机原理和应用[M]. 北京:电子工业出版社,.
致谢
本课程设计能够顺利完成,是因为有各指导老师耐心指导、讲解和同学热心帮助和支持。在此,衷心感谢在此次课程设计过程中指点和帮助我各指导老师和同学!
这和父母多年来一如既往支持和关心是分不开。在此,向任劳任怨、含辛茹苦父母致以衷心感谢!
感谢学院为我们提供了齐全课程设计仪器设备和良好学习环境。
展开阅读全文