用单片机语言设计电子时钟.docx

上传人:b****5 文档编号:8244244 上传时间:2023-01-30 格式:DOCX 页数:12 大小:77.35KB
下载 相关 举报
用单片机语言设计电子时钟.docx_第1页
第1页 / 共12页
用单片机语言设计电子时钟.docx_第2页
第2页 / 共12页
用单片机语言设计电子时钟.docx_第3页
第3页 / 共12页
用单片机语言设计电子时钟.docx_第4页
第4页 / 共12页
用单片机语言设计电子时钟.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

用单片机语言设计电子时钟.docx

《用单片机语言设计电子时钟.docx》由会员分享,可在线阅读,更多相关《用单片机语言设计电子时钟.docx(12页珍藏版)》请在冰豆网上搜索。

用单片机语言设计电子时钟.docx

用单片机语言设计电子时钟

电子时钟设计

 

课程设计:

单片机原理与应用课程设计

专业:

计算机应用技术

班级:

10级计算机应用技术

(2)班

指导教师:

张慧

小组成员:

李威(1060310060)

饶从兴(1060310071)

程四海(1060310065)

李普元(1060310072)

陈津(10603100041)

二零一二年四月二十六号

 

设计内容:

设计一个简易时钟,内容包括以下

(1)利用8051单片机片内定时器设计一个简易时钟

(2)使用8位LED对测量结果进行显示

(3)能通过键盘对对时钟

设计要求:

(1)确定系统设计方案

(2)进行系统的硬件设计

(3)完成必要的参数计算与元器件选择

(4)完成应用程序设计

(5)进行软硬件调试

 

一、系统方案选择与说明

1、系统方案的选择:

该课程设计是利用MCS-51单片机内部定时器/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。

设计的电子时钟通过数码管显示,并能通过按键实现设置时间的暂停、启动控制等,用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为50000.形成定时时间为50ms。

计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。

因此,一个基本的数字钟电路主要由显示器“时”“分”“秒”和单片机,还有校时电路组成。

8个数码管的段选接到单片机的PO口,位选接到单片机的P2口,数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单位”,秒单元采用30进制计数器,每累计60秒发出一个“分脉冲”的信号,该信号60分钟,发出一个“时脉冲”信号,该信号被送到“时单元”。

时单元采用24进制计时器,可实现对一天24小时的累计。

显示电路将“时”“分”“秒”显示数字进行校对调整,校时电路时用来对“时“分“秒“显示数字进行校对调整,按一下second秒单元就叫1,按一下minute,分就叫1,按hour,时就加1。

2、说明

2.1、系统由AT89C51、LED数码管、按键、电容、电阻等部分构成,能实现时间的调整、输出、调整时间等功能。

系统中按钮BUTTON能对时间进行调整功能按钮,采用单键控制调时功能,运用软件去抖判断按键的时间从而选择完成相对应的功能

2.2、时钟显示:

在此部分的设计中,在显示时,首先将时间十进制数据转化为显示段码,然后送往数码管显示。

显示段码采用动态扫描的方式。

2.3、时间调整:

该设计需要校对时间,所以用三个按键来实现。

按hour来调节小时的时间,按minute来调节分针的时间,按second来调整节秒的时间。

按键处理是先检测按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,时针就加1;如果没有按下,就把时间显示出来。

2.4、中断技术在单片系统中有着十分重要的作用,它不信可以提高单片机CPU的效率,也可以对突发时间处理。

所谓中断就是当CPU正在执行程序A,发生了另一个急需处理的事件B,这是CPU暂停当年执行的程序A,立即转去执行程序B的事件,处理完B事件之后,再返回到程序A急需执行,这个过程叫中断。

关于中断的概念有下列几个名词:

(1)程序A称为主程序,

(2)处理事件B的程序称为中断服务程序,(3)主程序中转向中断服务程序的地方称为断点,(4)引起中断的原因即事件B称为中断源,(5)转去执行中断服务程序称为中断响应.关于中断的概念可以打个如下的比喻.领导(CPU)在自己的房间办公(执行主程序),下属(外设)有问题打电话来请示(中断源),领导停下正在进行的工作,通过电话给下属做指示(执行中断服务程序),指示完后,领导挂断电话,继续做自己的工作(返回主程序继续执行).

 

二、系统结构框图与工作原理

1、结构图:

2、工作原理:

工作原理软时钟是利用单片机内部的定时器\计数器来实现的,它的处理过程如下:

首先设定单片机内部的一个定时器\计数器工作于定时方式,对机器周期计数形成基准时间,然后用另一个定时器\计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天.然后通过数码管把它们的内容在相应位置显示出来即可。

数码管显示可以采用静态显示方法或动态显示方法.静态显示方法需要数据锁存器等硬件,接口复杂,时钟显示用8个数码管。

由于系统没有其他的复杂的任务处理,而且显示的时钟信息随时都可能变化,一般采用动态显示方式.动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,信息看起来才稳定.译码方式可分为软件译码和硬件译码,软件译码通过译码程序查得显示信息的字段码;硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。

在具体处理时,定时器计数器采用中断方式工作,对时钟的形成在中断服务程序中实现.在主程序中只需对定时器计数器初始化,调用显示子程序和控制子程序.另外,为了使用方便,设计了简单的按键,可以通过按键实现时,分的调整,这样在主程序中就加入了键盘设置子程序。

单片机应用系统由硬件系统和软件系统两部分组成.硬件系统是指单片机以及扩展的存储器,I\O接口,外围扩展的功能芯片以及接口电路.软件系统包括监控程序和各种应用程序,在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入,处理,信息输出进行控制.与单片机配套的有相应的复位电路,时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行。

在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器.在单片机应用系统中,一般都根据系统的要求配置相应的。

3、键盘和显示器:

配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED指示灯就可以进行处理了。

在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘.显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD显示器,还可以使用CRT显示器,单片机应用系统中键盘一般用的比较多的是矩阵键盘,显示器用的比较多的是LED数码管还LCD显示器。

三、各单元硬件设计说明及计算方法

1、定时器\计数器定时器\1,MCS-51系列中51子系列有两个16位的可编程定时\计数器可:

定时\计数器T0和定时\计数器T1.它由加法计数器,方式寄存器TMOD,控制寄存器TCON等组成.方式寄存器用于设定定时计数器T0和T1的工作方式,控制寄存器用于对定时计数器启动,停止进行控制.

2、每个定时计数器既可以对系统时钟计数实现定时,也可以外部信号计数实现计数功能通过编程设定来实现。

3、每个定时计数器都有多种工作方式,其中T0有四种工作方式,T1有三种工作方式,T2有三种工作方式.通过编程可设定工作于某种方式.四种工作方式为:

13位定时\计数器,16位定时\计数器,8位自动重置定时\计数器,两个8位定时\计数器(只有T0有)。

4、每一个定时计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。

5、中断系统:

5.1.MCS-51单片机提供5个硬件中断源,2个外部中断源,2个定时计数器T0和T1的溢出中断TF0和TF1,1个串行口发送TI和接收RI中断。

5.2.MCS-51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许寄存器IE的各位来控制的.中断允许寄存器IE的字节地址为A8H,可以进行位寻址.系统复位时,中断允许寄存器IE的内容为00H,如果要开放某个中断源,则必须使IE中的总控置位和对应的中断允许位置"1".

5.3.MCS-51单片机有5个中断源,为了处理方便,每个中断源有两级控制,高优先级和低优先级.通过由内部的中断优先级寄存器IP来设置,中断优先级寄存器IP的字节地址为B8H,可以进行位寻址.如果某位被置"1",则对应的中断源被设为高优先级;如果某位被清零,则对应的中断源被设为低优先级.对于同级中断源,系统有默认的优先权顺序,从高到低优先权顺序为外部中断0,定时计数器T0中断,外部中断1,定时计数器T1中断,串行口中断.通过设置中断优先级寄存器IP能够改变系统默认的优先级顺序。

5.4.MCS-51单片机响应中断的条件为:

中断源有请求且中断允许。

5.5.键盘是单片机应用系统中最常用的输入设备,在单片机应用系统中,操作人员一般都是通过键盘向单片机系统输入指令,地址和数据,实现简单的人机通信.键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。

键盘的结构形式一般有两种:

独立式键盘和矩阵式键盘.矩阵式键盘的工作方式有3种:

查询工作方式,定时扫描工作方式和中断工作方式。

5.6.数码管显示器:

LED数码管显示器:

LED数码管显示器在单片机应用系统中,经常用到LED数码管作为显示输出设备,LED数码管显示器虽然显示信息简单,但它具有显示清晰,亮度高,使用电压低,寿命长,与单片机接口方便等特点,基本上能够满足单片机应用系统的需要,所以在单片机应用系统中经常用到.LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件.在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共阴极和共阳极两种.所谓译码方式是指由显示字符转换得到对应的字段码的方式.对于LED数码管显示器,通常的译码方式有两种:

硬件译码方式和软件译码方式.LED数码管在显示时,通常有两种显示方式:

静态显示方式和动态显示方式.在使用时可以把它们组合起来.在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。

四、软件设计与说明

软件设计与说明(包括流程图)电子时钟的软件系统由主程序和子程序组成,主程序程序包含初始化参数设置,按键处理,数码管显示模块等。

1、主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下,则转入相应的功能程序.8开始显示单元清零T0,T1设为16位计数模式允许T0中断调用显示子程序否按下键否?

是进入功能程序图主程序执行流程

2、数码管显示模块本系统共用8个数码管,从右到左依次显示秒个位,秒十位,横线,分个位,分十位,横线,时个位和时十位.采用软件译码动态显示.流程图如下图所示:

图3数码管显示程序流程图

开始否50ms计数器=20?

是秒单元加1,50ms计数器清0,秒写入秒个位和秒十位否秒单元=60?

是分单元加1,秒单元清0,分写入分个位和分十位否分单元=60?

是时单元加1,分单元清0,时写入时个位和时十位否时单元=24?

时单元清0是结束。

定时器/计数器T0中断服务程序定时器/定时器/计数器T0用于时间计时.选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满.在对各单元计数的同时,把它们的值放到存储单元的指定位置.定时器/计时器T0中断服务程序流程图如下图:

图4定时器/计数器T0中断服务程序流程图:

开始现场保护,重置初值启动下一个50ms50ms计数器加1中断返回:

图4定时器/计数器T0中断服务程序流程图

按键处理模块按键处理模块按键处理设置为:

如没有按键,则时钟正常走时.当按下K0按键时,进入调分状态,时钟停止走动;按K1可K2按键可进行加1或减1操作;继续按K0键可分别进行分和小时的调整;最后按K0键将退出调整状态,时钟开始计时运行11开始Nsceond按键按下?

Ysceond加1Nminute按键按下?

Yminute加1Nhour按键按下?

Yhour加1显示时间结束

图5按键控制程序流程图:

五、程序清单采用

8位LED软件译码动态显示程序使用AT89C52单片机,12MHZ晶振,P0输出字段码,P2口输出位选码,用共阳LED数码管,P1.0为调时位选择按键,P1.1为加1键,P1.2为减1键.

1、中断子程序:

timer0(void)interrupt1using1

{

u++;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

}

2、延时程序:

voiddelay()

{

unsignedinttime,p;

for(time=30;time>0;time--)

for(p=0;p<10;p++);

}

3、主程序和定时器中断子程序:

#include

charmod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

charsceond,minute,hour=12,i,k,l,j,x,y;

intu;

sbitcaidan=P3^4;

sbitjia=P3^5;

sbitjian=P3^6;

voidmain()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

do

{

kongzhi();

xianshi();

}

while

(1);

}4、LED显示子程序:

voidxianshi()

{

if(u==20)

{

u=0;

sceond++;

while(sceond==60)

{

sceond=0;

minute++;

if(minute==60)

{

minute=0;

hour++;

if(hour==24)

{

hour=0;

}

}

}

}

x=hour%10;

y=hour/10;

l=minute%10;

j=minute/10;

i=sceond%10;

k=sceond/10;

P2=0x7f;

P0=mod[i];

delay();

P2=0xbf;

P0=mod[k];

delay();

P2=0xdf;

P0=0x40;

delay();

P2=0xef;

P0=mod[l];

delay();

P2=0xf7;

P0=mod[j];

delay();

P2=0xfb;

P0=0x40;

delay();

P2=0xfd;

P0=mod[x];

delay();

P2=0xfe;

P0=mod[y];

delay();

}5、按键控制子程序:

voidkongzhi()

{

if(caidan==0)

{

TR0=0;

while(caidan==0);

while

(1)

{

if(jia==0)

{

sceond++;

if(sceond==60)

{

sceond=0;

}

}

while(jia==0);

if(jian==0)

{

sceond--;

if(sceond<0)

{

sceond=0;

}

}

while(jian==0);

i=sceond%10;

k=sceond/10;

P2=0x7f;;

P0=mod[i];

delay();

P2=0xbf;

P0=mod[k];

delay();

if(caidan==0)

{

while(caidan==0);

while

(1)

{

if(jia==0)

{

minute++;

while(minute==60)

{

minute=0;

}

}

while(jia==0);

if(jian==0)

{

minute--;

if(minute<0)

{

minute=0;

}

}

while(jian==0);

l=minute%10;

j=minute/10;

P2=0xef;

P0=mod[l];

delay();

P2=0xf7;

P0=mod[j];

delay();

if(caidan==0)

{

while(caidan==0);

while

(1)

{

if(jia==0)

{

hour++;

while(hour==24)

{

hour=0;

}

}

while(jia==0);

if(jian==0)

{

hour--;

if(hour<0)

{

hour=0;

}

}

while(jian==0);

x=hour%10;

y=hour/10;

P2=0xfd;

P0=mod[x];

delay();

P2=0xfe;

P0=mod[y];

delay();

if(caidan==0)

{

while(caidan==0);

TR0=1;

return;

}

}

}

}

}

}

}

}6、数字电子时钟系统PROTUES仿真

数字电子用PROTUES软件,根据数字电子钟的原理图,仿真程序得如图(6)所示:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1