多功能数据钟课程设计.docx

上传人:b****4 文档编号:27193733 上传时间:2023-06-28 格式:DOCX 页数:17 大小:155.03KB
下载 相关 举报
多功能数据钟课程设计.docx_第1页
第1页 / 共17页
多功能数据钟课程设计.docx_第2页
第2页 / 共17页
多功能数据钟课程设计.docx_第3页
第3页 / 共17页
多功能数据钟课程设计.docx_第4页
第4页 / 共17页
多功能数据钟课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

多功能数据钟课程设计.docx

《多功能数据钟课程设计.docx》由会员分享,可在线阅读,更多相关《多功能数据钟课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

多功能数据钟课程设计.docx

多功能数据钟课程设计

 

微型计算机技术专业方向设计

 

任务书

 

题目名称:

多功能数字钟

 

专业班级

姓名学号

 

课程设计任务书

课程名称:

微型计算机技术

设计题目:

多功能数字钟

系统硬件要求:

1、配置单片机的外部程序ROM空间,容量为16K(使用27128芯片)。

2、使用51单片机内部时钟信号为系统提供计时信号。

3、配置LED数码管或液晶显示器显示时间,设置操作按键。

系统功能要求:

1、在LED数码显示器或液晶显示器上显示:

时:

分:

秒。

2、按键功能自定义,实现按键调整时间功能。

3、具有闹钟功能(选做)。

4、具有秒表功能(选做)。

其他要求:

1、每位同学独立完成本设计。

2、依据题目要求,提出系统设计方案。

3、设计系统电路原理图。

5、调试系统硬件电路、功能程序。

6、编制课程设计报告书并装订成册,报告书内容(按顺序)

(1)报告书封面

(2)课程设计任务书

(3)系统设计方案的提出、分析

(4)系统中典型电路的分析

(5)系统软件结构框图

(6)系统电路原理图

(7)源程序

(8)课设字数不少于2000字

成绩

评语

一、系统方案选择

①数字时钟选择:

方案一:

本方案采用Dallas公司的专用时钟芯片DS12887A。

该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。

为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。

当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。

而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。

方案二:

本方案完全用软件实现数字时钟。

原理为:

利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。

该方案具有硬件电路简单的特点。

但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。

而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。

基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。

②显示方案选择:

方案一:

采用6段数码管动态显示,数码管动态扫描时,是利用人的视觉暂留使显示看起来连续变化,优点是程序操作简单缺点:

可操作性不强,并不美观。

方案二:

采用液晶1602,1602的特点是有两行显示,每行显示16个字符,显示比较清晰美观,缺点是操作较为复杂。

出于显示的考虑,本实验选择方案二。

③键盘方案选择:

方案一:

采用独立按键,独立按键的特点是检测较为简单,比较容易知道哪个按键被按下了,但是后续的键值处理较为复杂.。

方案二:

采用矩阵键盘,矩阵键盘的特点是检测较为复杂,但便于后续程序使用键值比较简单。

出于硬件的考虑本实验采用方案一。

二、系统典型电路分析

复位电路:

单片机复位的条件是:

必须使RST/VPD或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。

例如,若时钟频率为12MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。

单片机常见的复位如图所示。

电路为上电复位电路,它是利用电容充电来实现的。

在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。

只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。

该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。

②晶振电路:

右图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。

时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。

 

③液晶电路:

右图为液晶电路,将电源地和背光地连在一起,将电源和背光电源连在一起,数据口与51单片机的p0口相连,作为数据的传送口,而液晶的读写和使能则采用其它普通IO口来连接

 

④按键电路:

采用4个独立按键分别用P1口的0,1,2,3来进行连接

,通过

检测这四个管脚的电平的变化,来确定按键是否被按下。

 

三、系统软件结构图:

 

开始

 

启动T0中断

设置中断允许

设中断100次

设置定时

10ms初值

设置显示初值为

00:

00:

00

定时器T0初始化

 

按键4?

按键2?

Flag=1,用于模式选择

按键1?

进入秒表模式

进入时钟模式,默认

进入闹钟模式

液晶进行显示

结束

四、系统总体硬件电路图:

五、源程序代码:

#include"reg52.h"

#include"stdio.h"

#include"string.h"

#definerssbitp1^4

#definerwsbitp1^5

#defineesbitp1^6

sbitkey1=P1^0;

sbitkey2=P1^1;

sbitkey3=P1^2;

sbitkey4=P1^3;

sbitbell=P1^7;

unsignedcharnum;

unsignedintm=0;

unsignedintsh=0;

unsignedintfen=0;

unsignedintt1=0;

unsignedintt2=0;

unsignednfalg=0;

voiddelay(unsignedintz)

{

unsignedintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

////////////////////////////////////////////////////液晶初始化/////////////////////////////////////////////////////////////////////

voidwrite_com(unsignedcharcom)

{

rs=0;

P0=com;

delay(5);

e=1;

delay(5);

e=0;

}

write_data(unsignedchardata)

{

rs=1;

P0=data;

delay(5);

e=1;

delay(5)

e=0

}

voidds(unsignedchardzunsignedcharshu)

{

unsignedcharge,shi;

ge=shu%10;

shi=shu/10;

wirte_com(dz+0x80);

write_data(0x30+shi);

write_data(0x30+ge);

delay(5);

}

voidlcd_init()

{

e=0;

write_com(0x38);//设置1602正常显示

write_com(0x0c);//设置开显示,不显示光标

write_com(0x06);//写一个字符后,指针加1

write_com(0x01);//显示清0,数据指针清0;

write_com(0x80);//首地址

}

//////////////////////////////////////////////////////////////////////////////定时器初始化////////////////////////////////////////////////

voidshizhong(void)

{

ds(0x06,m)

if(m==60)

{m=0;

fen++;

ds(0x03,f);

if(fen==60)

{fen=0;

sh++;

ds(0,sh);

if(sh==24)

{sh=0;}

}

}

if(sh=t2;)

{if(fen=t1)

{

bell=1;

}

}

nflag++;

if(nflag=10)

{bell=0;

nfalg=0;}

}

voidmiaobiao(void)

{

ds(0x06,m)

if(m==60)

{m=0;

fen++;

ds(0x03,f);

if(fen==60)

{fen=0;

sh++;

ds(0,sh);

if(sh==60)

{sh=0;}

}

}

}

voidnaozhong()

{

if(key3=0)

{delay(5);

if(key3=0)

{write_com(0x0f);//显示光标

write_com(0x04);//光标左移一次

}

}

if(key1=0)

{delay(5);

if(key1=0)

{

fen++;

ds(0x03,fen);

if(fen==60)

{fen=0;}

}}

if(key2=0)

{delay(5);

if(key2=0)

{

fen--;

ds(0x03,fen);

if(fen==0)

{fen=60;}

}

 

}

if(key1=0)

{delay(5);

if(key1=0)

{

sh++;

ds(0,sh);

if(sh==24)

{sh=0;}

}}

if(key2=0)

{delay(5);

if(key2=0)

{sh--;

ds(0,sh);

if(sh==0)

{sh=24;}

}

 

}

t1=fen;

t2=sh;

}

voidmain()

{

unsignedinti=0;

unsignedcharflag;

unsignedcharm1[]="00:

00:

00";

lcd_init();//液晶初始化

TMOD=0x01;//设置定时器工作在方式1

TH0=(65536-9174)/256;

TL0=(65536-9174)%256;//10ms时间间隔,便于正常时钟和秒表通用

EA=1;//开总中断

ET0=1;//开定时器0中断

TR0=1;//启动定时器0

write_com(0x80);

for(i=0;i<8;i++)

{

write_data(m1[i]);

delay(5);

}

while

(1)

{

shizhong();

if(key4=0)

{

delay(5);

if(key4=0)

{

flag=1;

}

}

if(flag=1)

{if(key1=0)

{

delay(5);

if(key4=0)

{

flag1=1;

}

}

if(key2=0)

{

delay(5);

if(key2=0)

{

flag1=2;

}

}

if(key3=0)

{

delay(5);

if(key3=0)

{

flag1=0;

}

}

flag=0;

}

switch(flag1)

{case0:

{shizhong();falg2=0;break;}

case1:

{naozhong();break;}

case2:

{miaobiao();flag2=1;break;}

}

}

}

voidT0_tmie()interrupt1

{

TH0=(65536-9174)/256;

TL0=(65536-9174)%256;//10ms时间间隔,便于正常时钟和秒表通用

if(flag2=0)

{num++;

if(num=100)

{

num=0;

m++;

}

}

if(flag2=1)

{m++;

}

}

 

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

当前位置:首页 > 工作范文 > 演讲主持

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

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