作息时钟设计.docx

上传人:b****8 文档编号:10660887 上传时间:2023-02-22 格式:DOCX 页数:26 大小:195.98KB
下载 相关 举报
作息时钟设计.docx_第1页
第1页 / 共26页
作息时钟设计.docx_第2页
第2页 / 共26页
作息时钟设计.docx_第3页
第3页 / 共26页
作息时钟设计.docx_第4页
第4页 / 共26页
作息时钟设计.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

作息时钟设计.docx

《作息时钟设计.docx》由会员分享,可在线阅读,更多相关《作息时钟设计.docx(26页珍藏版)》请在冰豆网上搜索。

作息时钟设计.docx

作息时钟设计

课题名称

作息时钟设计

课题工作内容

“作息时钟设计”的硬件电路主要由单片机控制电路、数码管显示电路、DS1302、主要实现:

1、单片机驱动数码管显示时间。

2、到设定的闹钟时间后蜂鸣器响。

指标要求

1、单片机驱动数码管显示现在时间。

2、设定闹钟

进程安排

第一天:

下达任务、理解课题要求、收集和消化相关资料;第二天:

方案论证和制定,元器件采购;第三~四天:

硬件制作、调试第五~八天:

软件设计、调试第九天:

根据设计内容,撰写设计报告第十天:

作品演示、答辩考核

主要参考文献

《单片机应用系统设计技术》张齐著电子工业出版社《单片机原理及应用技术》范力旻电子工业出版社《例说8051》谢亮、陈敌北、张义和人民邮电出版社《单片机C语言应用100例》王东锋王会良电子工业出版社《51系列单片机设计实例》楼然苗李光飞北航出版社

地点

秋白楼

起止日期

2012.6.10-6.23

 

目录

一、设计背景.............................................1

1.1单片机技术的发展及应用............................1

1.1.1单片机技术的发展................................1

1.1.2单片机技术的应用................................2

二、系统工作原理及总休设计...............................2

2.1系统总体方框图.....................................2

2.2DS1302............................................3

2.3数码管显示.........................................3

2.4AT89C5............................................4

2.5晶振...............................................5

三、原理图...............................................5

四、总结.................................................6

五、程序清单.............................................7

六、原件清单..............................................12

七、实物..................................................12

一、设计背景

1.1单片机技术的发展及应用

现代的计算机都是大规模集成电路计算机,具有功能强、结构紧凑、系统可靠等特征。

随着半导体技术的发展,能够在一个硅片上制造出上百万个品体管,于是出现了以一个大规模集成电路为主的中央处理器—微处理器(up),以及大容量的集成电路半导体存储器,通用和专用的输入输出接口电路,由这些大规模集成电路组成各种类型的微型计算机。

1.1.1单片机技术的发展

所谓单片机(microcontroller)是指在一个集成芯片中,集成微处理器(CPU)、存储器、基本的I/O接口以及定时/计数、通信部件,即在一个芯片上实现一台微型计算机的基本功能。

1970年微型计算机研制成功之后,随着就出现了单片机(即单片微型计算机)。

美国Intel公司1971年生产的4位单片机4004和1972年生产的雏形8位单片机8008,特别是1976MCS-48单片机问世以来,在短短的二十几年间,经历了四次更新换代,其发展速度大约每二、三年要更新一代、集成度增加一倍、功能翻一番。

其发展速度之快、应用范围之广,己达到了惊人的地步,它己渗透到生产和生活的各个领域。

尽管目前单片机的品种很多,但其中最具典型性的当数Intel公司的MCS-51系列单片机。

MCS-51是在MCS-48的基础上于80年代初发展起来的,虽然它仍然是8位的单片机,但其功能有很大的增强。

由于PHILIPS.ATMEL,WELBORD,LG等近百家IC制造商都主产51系列兼容产品,具有品种全、兼容性强、软硬件资料丰富等特点。

因此,MCS-51应用非常广泛,成为继MCS-48之后最重要的单片机品种。

直到现在MCS-51仍不失为单片机中的主流机型。

国内尤以Intel的MCS-51系列单片机应用最广。

由于8位单片机的高性能价格比,估计近十年内,8位单片机仍将是单片机中的主流机型。

1.1.2单片机技术的应用

随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出很强的生命力。

它和一般的集成电路相比有较好的抗干扰能力,对环境的温度和湿度都有较好的适应性,可以在工业条件下稳定工作。

且单片机广泛地应用于各种仪器仪表,使仪器仪表智能化,提高它们的测量速度和测量精度,加强控制功能。

如MCS-51系列.单片机控制的“船舶航行状态自动记录仪”、“烟叶水分测试仪”、“智能超声波测厚仪”等。

单片机也广泛地应用于实时控制系统中,例如对工业上各种窑炉的温度、酸度、化学成分的测量和控制。

将测量技术、自动控制技术和单片机技术相结合,充分发挥其数据处理功能和实时控制功能,使系统工作处于最佳状态,提高系统的生产效率和产品质量。

从航空航天、地质石油、冶金采矿、机械电子、轻工纺织等行业的分布系统与智能控制以及机电一体化设备和产品,到邮电通信、日用设备和器械,单片机都发挥了巨大作用。

其应用大致可分为以下几方面:

(1)机电一体化设备的控制核心

机电一体化是机械设备发展的方向。

单片机的出现促进了机电一体化技术的发展,它作为机电产品的控制器,充分发挥其自身优点,大大强化了机器的功能,提高了机器的自动化、智能化程度。

最典型的机电产品机器人,每个关节或动作部位都是一个单片机控制系统。

(2)数据采集系统的现场采集单元

大型数据采集系统,要求数据采集的同步性和实时性要好。

使用单片机作为系统的前端采集单元,由主控计算机发出采集命令,再将采集到的数据逐一送到主计算机中进行处理。

如有些气象部门、油田采油部门以及电厂等均可采用这样的系统。

(3)分布控制系统的前端控制器

在直接控制级的计算机分布控制系统(DCS)中,单片机作为过程控制中每一分部操作或控制的控制器,进行数据采集、反馈计算、控制输出,并在上位机命令的指挥下进行相应协调工作。

(4)智能化仪表的机芯

自动化仪表的智能化程度越来越高。

采用单片机的智能化仪表可具有自整定、自校正、自动补偿和自适应功能,还可进行数字PID调节,软件消除电流热噪声等等,解决传统仪表所不能解决的难题。

单片机的应用使这种性能如虎添翼,如自动计费电度表、燃气表中己有这方面的应用。

许多工业仪表中的智能流量计,气体分析仪、成分分析仪等也采用了这项技术。

甚至有的保健治疗仪中也采用了单片机控制。

(5)消费类电子产品控制

该应用主要反映在家电领域,如洗衣机、空调器、保安系统、VCD视盘机、电子秤、IC卡、手机、BP机等。

这些设备中使用了单片机机芯后,大大提高了其控制功能和性能,并实现了智能化、最优化控制。

(6)终端及外围设备控制

计算机网络终端设备,如银行终端、商业POS(自动收款机)以及计算机外围设备如打印和L、通信终端和智能化UPS等。

在这些设备中使用单片机,使其具有计算、存储、显示、输入等功能,具有和计算机连接的接口,使计算机的能力及应用范围大大提高。

二、系统工作原理及总体设计

2.1系统总体方框图

本次设计实现的功能主要有:

使用2个4位七段数码管来显示现在的时间,显示格式为“时分秒”,中间用小数点分隔。

能够根据预先设定好的作息时间表自动启停控制电路,完成对外部设备的实时控制。

2.2DS1302

DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由Vcc1或Vcc2两者中的较大者供电。

当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。

当Vcc2小于Vcc1时,DS1302由Vcc1供电。

X1和X2是振荡源,外接32.768kHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。

下图为DS1302的引脚功能图:

要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。

虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。

可以用老式电脑主板上的3.6V充电电池。

如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。

100μF就可以保证1小时的正常走时。

DS1302在第一次加电后,必须进行初始化操作。

初始化后就可以按正常方法调整时间。

2.3数码管

数码管采用的是共阳管,输出高电平时相应的灯亮。

则显示0~9输出的数应为0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff。

2.4AT89C52

图2-2AT89C52单片机引脚图

AT89C52的工作特性:

·内含4KB的FLASH存储器檫写次数1000次;

·内含128字节的RAM;

·具有32根可编程I/O线;

·具有2个16位编程定时器

·具有6个中断源,5个中断矢量,2级优先权的中断结构;

·具有1个全双工的可编程串行通信接口;

·具有1个数据指针DPTR;

·具有可编程3级程序锁定位;

·AT89C52的工作电源为5(1±0.2)V且典型值为5V;

·AT89C52最高工作频率为24MHZ;

·AT89C52的编程频率为3~24MHZ,编程启动电流和启动电压分别为1mA、5或12V。

 

2.5晶振电路:

  

晶振在数字电路的基本作用是提供一个时序控制的标准时刻。

数字电路的工作是根据电路设计,在某个时刻

没完成特定的任务,如果没有一个时序控制的标准时刻,整个数字电路就会成为“聋子”,不知道什么时刻该做什么事情了。

晶振的作用是为系统提供基本的时钟信号。

通常一个系统共用一个晶振,便于各部分保持同步。

有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。

晶振的工作原理:

主板时钟芯片即分频器的原始工作振荡频率,由石英晶体多谐振荡器的谐振频率来产生,晶振其实是一个频率产生器,他主要把传进去的电压转化为频率信号。

提供给分频率一个基准的14.318MHZ的振荡频率,它是一个多谐振荡器的正回馈环电路,也就是说它把输入作为输出,把输出作为输入的回馈频率,像这样一个永无休止的循环自激过程。

三、原理图

四、总结

本次课程设计是对单片机理论学习的检验,是将理论应用到实践中的一个平台。

通过本课程设计,使我们进一步学习与理解计算机控制系统的构成原理、接口电路与应用程序,进一步巩固与综合专业基础知识和相关专业课程知识,提高了我们运用理论知识解决实际问题的实践技能;也更加知道了查阅资料的重要性。

自此对单片机更有了感性的认识,提高了对次的兴趣,对以后的发展很有帮助。

五、程序清单

#include

#definew_second0x80//秒写入地址

#definew_minute0x82//分写入地址

#definew_hour0x84//时写入地址

#definew_day0x86//日写入地址

#definew_month0x88//月写入地址

#definew_week0x8a//星期写入地址

#definew_year0x8c//年写入地址

#definer_second0x81//秒读出地址

#definer_minute0x83//分读出地址

#definer_hour0x85//时读出地址

#definer_day0x87//日读出地址

#definer_month0x89//月读出地址

#definer_week0x8b//星期读出地址

#definer_year0x8d//年读出地址

#definew_wp0x8e//指令写允许端地址

#defineucharunsignedchar

uchartable[]=

{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//7段数码管编码

ucharsecond;//秒指针

ucharminute;//分指针

ucharhour;//时指针

ucharday;//日指针

ucharmonth;//月指针

ucharweek;//星期指针

ucharyear;//年指针

ucharcc;

ucharh_clock,m_clock,h,m;

sbitchange=P1^0;//选择按钮

sbitok=P1^2;//确定更改按钮

sbitcrrect=P1^1;//更改按钮

sbitlook=P1^3;//时间和年月日查看切换按钮

sbitclock=P1^4;//闹钟设定

sbitce=P3^2;//ds1302片选端

sbitsclk=P3^0;//ds1302时控端

sbitio=P3^1;//ds1302串口端

sbitclock_beef=P3^7;//蜂鸣器控制端

sbitclock_button=P1^5;//闹钟启停按钮

voidwrite_ds1302(ucharaddr,uchardat)//写程序

{uchari,temp;

ce=0;sclk=0;ce=1;

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

{sclk=0;

temp=addr;

io=(bit)(temp&0x01);//每一次只传送一位数据

addr>>=1;

sclk=1;

}

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

{sclk=0;

temp=dat;

io=(bit)(temp&0x01);

dat>>=1;

sclk=1;

}

ce=0;

}

ucharread_ds1302(ucharaddr)//读程序

{uchari,temp;

ce=0;sclk=0;ce=1;

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

{sclk=0;

temp=addr;

io=(bit)(temp&0x01);

addr>>=1;

sclk=1;

}

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

{temp>>=1;

sclk=0;

if(io)temp=temp|0x80;

elsetemp=temp&0x7f;

sclk=1;

}

returntemp;

}

voidset_ds1302()//初始化ds1302

{write_ds1302(w_wp,0x00);

write_ds1302(w_second,second);

write_ds1302(w_minute,minute);

write_ds1302(w_hour,hour);

write_ds1302(w_day,day);

write_ds1302(w_month,month);

write_ds1302(w_week,week);

write_ds1302(w_year,year);

write_ds1302(w_wp,0x80);

}

voidview1()//时间显示

{uchari;

P0=table[second%16];//秒显示

P2=0x01;

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

P2=0;

P0=table[second/16];

P2=0x02;

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

P2=0;

P0=table[minute%16]-0x80;//分显示,(-0x80表示dp点亮)

P2=0x04;

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

P2=0;

P0=table[minute/16];

P2=0x08;

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

P2=0;

P0=table[hour%16]-0x80;//时显示

P2=0x10;

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

P2=0;

P0=table[hour/16];

P2=0x20;

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

P2=0;

}

voidview2()//日期显示

{uchari;

P2=0;

P0=table[week%16];//星期显示

P2=0x01;

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

P2=0;

P0=table[week/16];

P2=0x02;

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

P2=0;

P0=table[day%16]-0x80;//日显示

P2=0x04;

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

P2=0;

P0=table[day/16];

P2=0x08;

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

P2=0;

P0=table[month%16]-0x80;//月显示

P2=0x10;

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

P2=0;

P0=table[month/16];

P2=0x20;

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

P2=0;

P0=table[year%16]-0x80;//年显示

P2=0x40;

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

P2=0;

P0=table[year/16];

P2=0x80;

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

P2=0;

}

voidview3()//闹钟设定程序

{uchari;

P0=table[m%16];

P2=0x01;

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

P2=0;

P0=table[m/16];

P2=0x02;

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

P2=0;

P0=table[h%16]-0x80;

P2=0x04;

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

P2=0;

P0=table[h/16];

P2=0x08;

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

P2=0;

}

voidbeep()//蜂鸣器启动程序

{inti;

clock_beef=~clock_beef;

for(i=1;i<=50;i++)

{second=read_ds1302(r_second);

minute=read_ds1302(r_minute);

hour=read_ds1302(r_hour);

view1();

}

}

voiddisplay1()//读秒,分,时程序

{second=read_ds1302(r_second);

minute=read_ds1302(r_minute);

hour=read_ds1302(r_hour);

view1();

if((h_clock==read_ds1302(r_hour))&&

(m_clock==read_ds1302(r_minute)))//判断时分

{while(~clock_button)

{beep();

}

clock_beef=0;

}

}

voiddisplay2()//读星期,日,月,年程序

{week=read_ds1302(r_week);

day=read_ds1302(r_day);

month=read_ds1302(r_month);

year=read_ds1302(r_year);

view2();

if((h_clock==read_ds1302(r_hour))&&

(m_clock==read_ds1302(r_minute))&&(~clock_button))

{while(~clock_button)

{beep();

}

clock_beef=0;

}

}

voidcrrect_ds1302(ucharcc)//更改程序

{

while(~crrect);

switch(cc)

{

case1:

if(read_ds1302(r_minute)==0x59)

minute=0x00;

else{if(read_ds1302

(r_minute)%16==9){minute=read_ds1302

(r_minute)/16;minute=(minute+1)*16;}

else

minute=read_ds1302(r_minute)+1;

}

set_ds1302();

break;

case2:

if(read_ds1302(r_hour)==0x23)

hour=0x00;

else{if(read_ds1302(r_hour)

<0x20)

{if

(read_ds1302(r_hour)%16==9){hour=read_ds1302

(r_hour)/16;hour=(hour+1)*16;}

elsehour=read_ds1302(r_hour)+1;

}

else

hour=read_ds1302(r_hour)+1;

}

set_ds1302();

break;

case3:

if(read_ds1302(r_week)==0x07)

week=0x01;

elseweek=read_ds1302(r_week)+1;

set_ds1302();

break;

case4:

if(read_ds1302(r_day)==0x31)

day=0x01;

else{if(read_ds1302

(r_day)%16==9){day=read_ds1302(r_day)/16;day=(day+1)

*16;}

else

day=read_ds1302(r_day)+1;

}

set_ds1302();

break;

case5:

if(read_ds1302(r_month)==0x12)

month=0x01;

else{if(read_ds1302

(r_month)%16==9){month=read_ds1302

(r_month)/16;month=(month+1)*16;}

else

month=read_

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

当前位置:首页 > 求职职场 > 简历

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

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